@uiapplibct/ngx-reusa-app-lib 0.0.15 → 0.0.16

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.
@@ -609,6 +609,19 @@ export class HeaderComponent extends BasePage {
609
609
  this.openPage('cp', 'v3/weeklies');
610
610
  }
611
611
  }
612
+ onClickDisplayLogo() {
613
+ if (this.context == 'audit') {
614
+ let userModel = this.ls.getUser();
615
+ var tempVal = JSON.stringify({ param1: "taxAudit" });
616
+ var encVal = btoa(tempVal);
617
+ var date = new Date();
618
+ date.setTime(date.getTime() + 60000);
619
+ const domain = ".dol.ct.gov";
620
+ var expires = "expires=" + date.toUTCString();
621
+ document.cookie = "parApToM=" + encVal + ";path=/;expires=" + expires + ";domain=" + domain + ";SameSite=Lax;";
622
+ window.open(`${LibConstants.taxUrlExternal}/faces/virtual/contextswitch.xhtml?a=${userModel.access_token}&v=2299&TAXAUDIT_PORTAL=true`, '_self');
623
+ }
624
+ }
612
625
  openAuditDashboard() {
613
626
  if (this.context == 'audit') {
614
627
  if (this.ls.isTaxAuditSupervisor() || this.ls.isTaxAuditDirector()) {
@@ -719,6 +732,11 @@ export class HeaderComponent extends BasePage {
719
732
  }
720
733
  openHome() {
721
734
  //this.nav.navigateRoot("/welcome");
735
+ if (this.context == 'audit') {
736
+ let userModel = this.ls.getUser();
737
+ this.util.showLoader();
738
+ window.open(`${LibConstants.taxUrlExternal}/faces/virtual/contextswitch.xhtml?a=${userModel.access_token}&r=${userModel.refresh_token}&v=2299`, '_self');
739
+ }
722
740
  if (this.ls.isClaimant()) {
723
741
  this.util.openPageByContextRoot(this.util.getClaimantAppContextRoot(), "welcome", this.nav);
724
742
  }
@@ -804,7 +822,7 @@ export class HeaderComponent extends BasePage {
804
822
  i0.ɵɵtemplate(4, HeaderComponent_ion_menu_button_4_Template, 1, 1, "ion-menu-button", 2);
805
823
  i0.ɵɵelementEnd();
806
824
  i0.ɵɵelementStart(5, "ion-buttons", 3);
807
- i0.ɵɵlistener("click", function HeaderComponent_Template_ion_buttons_click_5_listener() { return ctx.openAuditDashboard(); });
825
+ i0.ɵɵlistener("click", function HeaderComponent_Template_ion_buttons_click_5_listener() { return ctx.onClickDisplayLogo(); });
808
826
  i0.ɵɵelement(6, "img", 4);
809
827
  i0.ɵɵpipe(7, "translate");
810
828
  i0.ɵɵelementEnd();
@@ -846,7 +864,7 @@ export class HeaderComponent extends BasePage {
846
864
  }
847
865
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HeaderComponent, [{
848
866
  type: Component,
849
- args: [{ selector: 'app-header', template: "<mat-progress-bar mode=\"determinate\" [value]=\"util.loader.value$ | async\" *ngIf=\"(util.loader.value$ | async) != 0\">\r\n</mat-progress-bar>\r\n<ion-toolbar>\r\n <ion-buttons slot=\"start\" style=\"margin-left: -5px;\">\r\n <ion-menu-button autoHide=\"false\" pTooltip=\"Menu\" tooltipPosition=\"bottom\"\r\n *ngIf=\"ls.isLoggedIn() && !ls.isEmployer()\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xl hide-lg' : ''\"></ion-menu-button>\r\n </ion-buttons>\r\n <ion-buttons slot=\"start\" [ngClass]=\"displayLogo ? 'header_button_white' : 'header_button hide-xs hide-md'\" (click)=\"openAuditDashboard()\">\r\n <img alt=\"logo\" pTooltip=\"{{'ReEmployMS Logo' | translate}}\" tooltipPosition=\"bottom\"\r\n src=\"assets/icon/ReEmploy{{util.getState()}}.svg\" [ngClass]=\"displayLogo ? 'header_logo' : 'header_logo hide-xs hide-md'\"/>\r\n </ion-buttons>\r\n <ng-content></ng-content>\r\n <ion-buttons slot=\"start\" *ngIf=\"ls.isLoggedIn()\">\r\n <ion-button (click)=\"openHome()\" pTooltip=\"Home\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('welcome') ? 'header-button' : ''\" *ngIf=\"this.context!='audit' || ls.isEmployer()\">Home</ion-button>\r\n\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false'\" (click)=\"openWeeklies()\" class=\"hide-xs hide-md\">{{legacyMenu == 'true' ? 'Weekly' : 'Weekly'}}</ion-button>\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'true' && !util.isState('ME')\" (click)=\"openWeeklies()\">{{legacyMenu == 'true' ? 'Weekly' : 'Weekly'}}</ion-button>\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'true' && util.isState('ME')\" (click)=\"openWeeklies()\">{{legacyMenu == 'true' ? 'Weekly Claim' : 'Weekly'}}</ion-button>\r\n \r\n \r\n <ion-button pTooltip=\"History\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '') == 'history' ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && interimHomePage == 'false'\" (click)=\"openPage('cp', 'history')\" class=\"hide-xs hide-md\">History</ion-button>\r\n <ion-button id=\"btnAuditEmployerDashboard\" pTooltip=\"EmployerDashboard\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('employer-dashboard') ? 'header-button' : ''\" *ngIf=\"ls.isEmployer()\" (click)=\"openEmployerDashboard()\">Audit Dashboard</ion-button>\r\n <ion-button id=\"btnAuditMyQ\" pTooltip=\"MyQ\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('myq') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorMyQ()\">MyQ</ion-button>\r\n <ion-button id=\"btnAuditDashboard\" pTooltip=\"Dashboard\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('dashboard') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor()|| ls.isTaxAuditDirector())\" (click)=\"openAuditDashboard()\">Dashboard</ion-button>\r\n <ion-button id=\"btnAuditWorkList\" pTooltip=\"WorkList\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-work-list') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditAuditor()\" (click)=\"openAuditorWorkList()\">Work List</ion-button>\r\n <ion-button id=\"btnAuditInquiry\" pTooltip=\"Inquiry\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('inquiry') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector()) || ls.hasRole('taxauditagencystaff')\" (click)=\"openSupervisorInquiry()\">Inquiry</ion-button>\r\n <ion-button id=\"btnAuditUploadDocuments\" pTooltip=\"Upload Documents\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('upload-documents') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isEmployer()\" (click)=\"openUploadDocuments()\" [disabled]=\"!isEmployerLoaded\">Upload Documents</ion-button>\r\n <ion-button id=\"btnAuditQuestionnaire\" pTooltip=\"Questionnaire\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-questionnaire') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditAuditor())\" (click)=\"openQuestionnaire()\">Questionnaire</ion-button>\r\n <ion-button id=\"btnAuditQuestionnaire\" pTooltip=\"Questionnaire\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-questionnaire') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isEmployer())\" (click)=\"openQuestionnaire()\" [disabled]=\"!isQuestionnaireDataLoaded\">Questionnaire</ion-button>\r\n <ion-button id=\"btnAuditReferrals\" pTooltip=\"Referrals\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('referrals') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector()) || ls.hasRole('taxauditagencystaff')\" (click)=\"openSupervisorReferrals()\">Referrals</ion-button>\r\n <ion-button id=\"btnAuditAssign\" pTooltip=\"Assign\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('assign') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditSupervisor()\" (click)=\"openSupervisorAssign()\">Assign</ion-button>\r\n <ion-button id=\"btnAuditTeam\" pTooltip=\"Team\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('team') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditSupervisor()\" (click)=\"openSupervisorTeam()\">Team</ion-button>\r\n <ion-button id=\"btnAuditConfig\" pTooltip=\"Config\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('config') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorConfig()\">Config</ion-button>\r\n <ion-button id=\"btnAuditAnalytics\" pTooltip=\"Analytics\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('analytics') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorAnalytics()\">Analytics</ion-button>\r\n\r\n\r\n </ion-buttons>\r\n\r\n \r\n <div class=\"toolbar-content hide-xs\" *ngIf=\"ls.isLoggedIn() && ls.isCsr() && this.context !='audit' && contextRoot ==='ss'\">\r\n <p-autoComplete appendTo=\"body\" [(ngModel)]=\"searchText\" [suggestions]=\"results\"\r\n (completeMethod)=\"search($event)\" placeholder=\"Search Claimants\" (onSelect)=\"onSelectAction($event)\"\r\n emptyMessage=\"No Results Found.\" size=\"25\">\r\n <ng-template let-user pTemplate=\"item\">\r\n <ion-row class=\".ion-wrap\" >\r\n <ion-col size-auto>\r\n <ion-text>{{user.firstName | properCase}} {{user.lastName | properCase}}</ion-text>\r\n </ion-col>\r\n <ion-col size-auto>\r\n <ion-text>{{user.userId}}</ion-text>\r\n </ion-col>\r\n <ion-col size-auto>\r\n <ion-text>{{util.maskSsn(user.ssn)}}</ion-text>\r\n </ion-col>\r\n </ion-row>\r\n </ng-template>\r\n </p-autoComplete>\r\n </div>\r\n <ion-buttons slot=\"end\" *ngIf=\"ls.isLoggedIn()\" >\r\n <ion-button (click)=\"presentMyProfilePopover($event)\" pTooltip=\"Account\" tooltipPosition=\"bottom\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() && showProfilePopup ? 'hide-xs hide-md header-button' : (legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : '')\">\r\n <ion-title style=\"font-size: 20px; padding: 0px;\" class=\"hide-xs\">{{ls.getFullName() | properCase}}</ion-title>\r\n <ion-icon slot=\"end\" name=\"person-circle-outline\"></ion-icon>\r\n </ion-button>\r\n <ion-button (click)=\"openPage('cp', 'documents')\" pTooltip=\"Notices\" tooltipPosition=\"bottom\" *ngIf=\"!ls.isCsr() && legacyMenu == 'false' && !util.isState('ME')\" [ngClass]=\"r.url.replace('/', '') == 'documents' ? 'header-button hide-xs hide-md' : 'hide-xs hide-md'\">\r\n <i class='pi pi-file font-bold' style=\"font-size: 1.3rem; font-weight: 500 !important;\"></i>\r\n </ion-button>\r\n <ion-button (click)=\"openPage('cp', 'documents')\" pTooltip=\"Notices\" tooltipPosition=\"bottom\" *ngIf=\"!ls.isCsr() && legacyMenu == 'true'\">\r\n <ion-icon name=\"document-text-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n \r\n <!-- <ion-button (click)=\"presentJobSearchResultPopup()\" pTooltip=\"Show job search result\" tooltipPosition=\"bottom\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && util.isState('MS')\">\r\n <ion-icon name=\"briefcase\" fill=\"outline\"></ion-icon>\r\n </ion-button> -->\r\n \r\n \r\n <ion-button (click)=\"presentMyNotificationPopover($event)\" pTooltip=\"Notification\" tooltipPosition=\"bottom\"\r\n *ngIf=\"!ns.showNotificationLoader && !util.isState('ME')\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : ''\">\r\n <ion-icon name=\"notifications-outline\"></ion-icon>\r\n <ion-badge color=\"dark\" *ngIf=\"ns.notificationCount.getValue() > 0\">\r\n <ion-label>{{ns.notificationCount.getValue()}}</ion-label>\r\n </ion-badge>\r\n </ion-button>\r\n <ion-spinner name=\"crescent\" *ngIf=\"ns.showNotificationLoader\"></ion-spinner>\r\n\r\n <ion-button (click)=\"this.hs.show()\" pTooltip=\"Help\" tooltipPosition=\"bottom\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && (hs.shouldDisplayHelpButton() | async)\">\r\n <ion-icon name=\"help-circle-outline\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n <ion-buttons slot=\"secondary\" *ngIf=\"!ls.isLoggedIn() && ls.getUser()\">\r\n <ion-button (click)=\"logout()\" pTooltip=\"Logout\" tooltipPosition=\"bottom\">\r\n <ion-icon name=\"log-out-sharp\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n <ion-buttons slot=\"end\" *ngIf=\"showLanguageOption === 'true' && (!ls.getUser() && legacyMenu == 'false')\">\r\n <p-menu #menu [popup]=\"true\" [model]=\"items\" appendTo=\"body\"></p-menu>\r\n <ion-button (click)=\"menu.toggle($event)\" pTooltip=\"Language\" tooltipPosition=\"bottom\">\r\n <ion-icon name=\"language\" slot=\"end\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n</ion-toolbar>\r\n<ion-toolbar color=\"light\" id=\"secondToolbar\" *ngIf=\"secondToolbar\">\r\n <ion-buttons slot=\"start\">\r\n <ion-back-button pTooltip=\"Back\" alt=\"Back\" tooltipPosition=\"bottom\" [defaultHref]=\"backPage ? backPage : '/welcome'\"></ion-back-button>\r\n <ion-title color=\"primary\" *ngIf=\"title\" style=\"font-size: 18px\">{{title}}</ion-title>\r\n </ion-buttons>\r\n <ng-content></ng-content>\r\n <ion-buttons slot=\"end\">\r\n <ion-title color=\"primary\" style=\"font-size: xx-small; float: right; padding-right: 8px;\" *ngIf=\"pageId\">\r\n {{pageId}}</ion-title>\r\n </ion-buttons>\r\n</ion-toolbar>\r\n<p-toast>\r\n <ng-template let-message pTemplate=\"message\">\r\n <i *ngIf=\"message.severity === 'error'\" class=\"pi pi-times-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'success'\" class=\"pi pi-check-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'warn'\" class=\"pi pi-exclamation-circle\"style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'info'\" class=\"pi pi-info-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n\r\n <div [innerHTML]=\"'<strong style=\\'font-size: 22px;font-weight: bold;\\'>' + message.summary + '</strong><br><br>' + \r\n '<span style=\\'font-size: 18px;\\'>' + message.detail + '</span>'\">\r\n </div>\r\n </ng-template>\r\n </p-toast>\r\n\r\n<ng-container *ngIf=\"showProfilePopup\">\r\n <app-profile *ngIf=\"showProfilePopup\" (onCancel)=\"showProfilePopup = !showProfilePopup\"></app-profile>\r\n</ng-container>\r\n\r\n<app-job-search-result-page *ngIf=\"showjobSearchResultPopup\" (onCancel)=\"showjobSearchResultPopup = !showjobSearchResultPopup\"></app-job-search-result-page>\r\n\r\n\r\n\r\n", styles: ["#secondToolbar{--min-height: 45px !important}#header_reemployms_logo{margin-right:10px;margin-left:-5px;padding:5px;height:40px}.header_logo{height:35px}.header_button_white,.header_button{background:#fff;height:56px;margin:0;padding:8px}.toolbar-content{text-align:center}ion-toolbar{--ion-toolbar-background: var(--ion-color-primary) !important;--color: white !important;--font-weight: 500;--font-size: 13px;--position: relative;--z-index: 10;--text-align: center;--letter-spacing: .004em}ion-button{--color-hover: var(--ion-color-yellow) !important;text-transform:none!important;font-size:20px}.header-button{--color: var(--ion-color-yellow) !important;text-transform:none!important;font-weight:700;font-size:20px}.ios ion-button::part(native){color:#fff!important}ion-menu-button::part(native){color:#fff!important}ion-popover{--width: 40% !important}img{visibility:visible;position:relative}:host ::ng-deep p-autoComplete .p-inputtext{height:40px;color:#000}:host ::ng-deep p-autoComplete .p-autocomplete-item{padding:.5rem!important}:host ::ng-deep .p-toast-bottom-center,:host ::ng-deep .p-toast-top-center{transform:none!important;z-index:100001!important}:host ::ng-deep .p-toast .p-toast-icon{font-size:48px!important}:host ::ng-deep .p-toast-icon-close{position:absolute!important;top:0;right:0;margin:5px}:host ::ng-deep .p-toast-summary{font-weight:700;display:block;margin-bottom:5px}:host ::ng-deep .p-toast-message,:host ::ng-deep .p-toast-detail{display:block;font-size:14px}@media (min-width: 768px){:host ::ng-deep .header-popover{--width: 55%}}@media (min-width: 992px){:host ::ng-deep .header-popover{--width: 40%}}@media (min-width: 1200px){:host ::ng-deep .header-popover{--width: 35%}}@media (min-width: 1400px){:host ::ng-deep .header-popover{--width: 30%}}\n"] }]
867
+ args: [{ selector: 'app-header', template: "<mat-progress-bar mode=\"determinate\" [value]=\"util.loader.value$ | async\" *ngIf=\"(util.loader.value$ | async) != 0\">\r\n</mat-progress-bar>\r\n<ion-toolbar>\r\n <ion-buttons slot=\"start\" style=\"margin-left: -5px;\">\r\n <ion-menu-button autoHide=\"false\" pTooltip=\"Menu\" tooltipPosition=\"bottom\"\r\n *ngIf=\"ls.isLoggedIn() && !ls.isEmployer()\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xl hide-lg' : ''\"></ion-menu-button>\r\n </ion-buttons>\r\n <ion-buttons slot=\"start\" [ngClass]=\"displayLogo ? 'header_button_white' : 'header_button hide-xs hide-md'\" (click)=\"onClickDisplayLogo()\">\r\n <img alt=\"logo\" pTooltip=\"{{'ReEmployMS Logo' | translate}}\" tooltipPosition=\"bottom\"\r\n src=\"assets/icon/ReEmploy{{util.getState()}}.svg\" [ngClass]=\"displayLogo ? 'header_logo' : 'header_logo hide-xs hide-md'\"/>\r\n </ion-buttons>\r\n <ng-content></ng-content>\r\n <ion-buttons slot=\"start\" *ngIf=\"ls.isLoggedIn()\">\r\n <ion-button (click)=\"openHome()\" pTooltip=\"Home\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('welcome') ? 'header-button' : ''\" *ngIf=\"this.context!='audit' || ls.isEmployer()\">Home</ion-button>\r\n\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false'\" (click)=\"openWeeklies()\" class=\"hide-xs hide-md\">{{legacyMenu == 'true' ? 'Weekly' : 'Weekly'}}</ion-button>\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'true' && !util.isState('ME')\" (click)=\"openWeeklies()\">{{legacyMenu == 'true' ? 'Weekly' : 'Weekly'}}</ion-button>\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'true' && util.isState('ME')\" (click)=\"openWeeklies()\">{{legacyMenu == 'true' ? 'Weekly Claim' : 'Weekly'}}</ion-button>\r\n \r\n \r\n <ion-button pTooltip=\"History\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '') == 'history' ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && interimHomePage == 'false'\" (click)=\"openPage('cp', 'history')\" class=\"hide-xs hide-md\">History</ion-button>\r\n <ion-button id=\"btnAuditEmployerDashboard\" pTooltip=\"EmployerDashboard\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('employer-dashboard') ? 'header-button' : ''\" *ngIf=\"ls.isEmployer()\" (click)=\"openEmployerDashboard()\">Audit Dashboard</ion-button>\r\n <ion-button id=\"btnAuditMyQ\" pTooltip=\"MyQ\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('myq') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorMyQ()\">MyQ</ion-button>\r\n <ion-button id=\"btnAuditDashboard\" pTooltip=\"Dashboard\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('dashboard') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor()|| ls.isTaxAuditDirector())\" (click)=\"openAuditDashboard()\">Dashboard</ion-button>\r\n <ion-button id=\"btnAuditWorkList\" pTooltip=\"WorkList\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-work-list') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditAuditor()\" (click)=\"openAuditorWorkList()\">Work List</ion-button>\r\n <ion-button id=\"btnAuditInquiry\" pTooltip=\"Inquiry\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('inquiry') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector()) || ls.hasRole('taxauditagencystaff')\" (click)=\"openSupervisorInquiry()\">Inquiry</ion-button>\r\n <ion-button id=\"btnAuditUploadDocuments\" pTooltip=\"Upload Documents\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('upload-documents') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isEmployer()\" (click)=\"openUploadDocuments()\" [disabled]=\"!isEmployerLoaded\">Upload Documents</ion-button>\r\n <ion-button id=\"btnAuditQuestionnaire\" pTooltip=\"Questionnaire\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-questionnaire') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditAuditor())\" (click)=\"openQuestionnaire()\">Questionnaire</ion-button>\r\n <ion-button id=\"btnAuditQuestionnaire\" pTooltip=\"Questionnaire\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-questionnaire') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isEmployer())\" (click)=\"openQuestionnaire()\" [disabled]=\"!isQuestionnaireDataLoaded\">Questionnaire</ion-button>\r\n <ion-button id=\"btnAuditReferrals\" pTooltip=\"Referrals\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('referrals') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector()) || ls.hasRole('taxauditagencystaff')\" (click)=\"openSupervisorReferrals()\">Referrals</ion-button>\r\n <ion-button id=\"btnAuditAssign\" pTooltip=\"Assign\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('assign') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditSupervisor()\" (click)=\"openSupervisorAssign()\">Assign</ion-button>\r\n <ion-button id=\"btnAuditTeam\" pTooltip=\"Team\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('team') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditSupervisor()\" (click)=\"openSupervisorTeam()\">Team</ion-button>\r\n <ion-button id=\"btnAuditConfig\" pTooltip=\"Config\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('config') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorConfig()\">Config</ion-button>\r\n <ion-button id=\"btnAuditAnalytics\" pTooltip=\"Analytics\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('analytics') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorAnalytics()\">Analytics</ion-button>\r\n\r\n\r\n </ion-buttons>\r\n\r\n \r\n <div class=\"toolbar-content hide-xs\" *ngIf=\"ls.isLoggedIn() && ls.isCsr() && this.context !='audit' && contextRoot ==='ss'\">\r\n <p-autoComplete appendTo=\"body\" [(ngModel)]=\"searchText\" [suggestions]=\"results\"\r\n (completeMethod)=\"search($event)\" placeholder=\"Search Claimants\" (onSelect)=\"onSelectAction($event)\"\r\n emptyMessage=\"No Results Found.\" size=\"25\">\r\n <ng-template let-user pTemplate=\"item\">\r\n <ion-row class=\".ion-wrap\" >\r\n <ion-col size-auto>\r\n <ion-text>{{user.firstName | properCase}} {{user.lastName | properCase}}</ion-text>\r\n </ion-col>\r\n <ion-col size-auto>\r\n <ion-text>{{user.userId}}</ion-text>\r\n </ion-col>\r\n <ion-col size-auto>\r\n <ion-text>{{util.maskSsn(user.ssn)}}</ion-text>\r\n </ion-col>\r\n </ion-row>\r\n </ng-template>\r\n </p-autoComplete>\r\n </div>\r\n <ion-buttons slot=\"end\" *ngIf=\"ls.isLoggedIn()\" >\r\n <ion-button (click)=\"presentMyProfilePopover($event)\" pTooltip=\"Account\" tooltipPosition=\"bottom\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() && showProfilePopup ? 'hide-xs hide-md header-button' : (legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : '')\">\r\n <ion-title style=\"font-size: 20px; padding: 0px;\" class=\"hide-xs\">{{ls.getFullName() | properCase}}</ion-title>\r\n <ion-icon slot=\"end\" name=\"person-circle-outline\"></ion-icon>\r\n </ion-button>\r\n <ion-button (click)=\"openPage('cp', 'documents')\" pTooltip=\"Notices\" tooltipPosition=\"bottom\" *ngIf=\"!ls.isCsr() && legacyMenu == 'false' && !util.isState('ME')\" [ngClass]=\"r.url.replace('/', '') == 'documents' ? 'header-button hide-xs hide-md' : 'hide-xs hide-md'\">\r\n <i class='pi pi-file font-bold' style=\"font-size: 1.3rem; font-weight: 500 !important;\"></i>\r\n </ion-button>\r\n <ion-button (click)=\"openPage('cp', 'documents')\" pTooltip=\"Notices\" tooltipPosition=\"bottom\" *ngIf=\"!ls.isCsr() && legacyMenu == 'true'\">\r\n <ion-icon name=\"document-text-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n \r\n <!-- <ion-button (click)=\"presentJobSearchResultPopup()\" pTooltip=\"Show job search result\" tooltipPosition=\"bottom\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && util.isState('MS')\">\r\n <ion-icon name=\"briefcase\" fill=\"outline\"></ion-icon>\r\n </ion-button> -->\r\n \r\n \r\n <ion-button (click)=\"presentMyNotificationPopover($event)\" pTooltip=\"Notification\" tooltipPosition=\"bottom\"\r\n *ngIf=\"!ns.showNotificationLoader && !util.isState('ME')\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : ''\">\r\n <ion-icon name=\"notifications-outline\"></ion-icon>\r\n <ion-badge color=\"dark\" *ngIf=\"ns.notificationCount.getValue() > 0\">\r\n <ion-label>{{ns.notificationCount.getValue()}}</ion-label>\r\n </ion-badge>\r\n </ion-button>\r\n <ion-spinner name=\"crescent\" *ngIf=\"ns.showNotificationLoader\"></ion-spinner>\r\n\r\n <ion-button (click)=\"this.hs.show()\" pTooltip=\"Help\" tooltipPosition=\"bottom\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && (hs.shouldDisplayHelpButton() | async)\">\r\n <ion-icon name=\"help-circle-outline\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n <ion-buttons slot=\"secondary\" *ngIf=\"!ls.isLoggedIn() && ls.getUser()\">\r\n <ion-button (click)=\"logout()\" pTooltip=\"Logout\" tooltipPosition=\"bottom\">\r\n <ion-icon name=\"log-out-sharp\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n <ion-buttons slot=\"end\" *ngIf=\"showLanguageOption === 'true' && (!ls.getUser() && legacyMenu == 'false')\">\r\n <p-menu #menu [popup]=\"true\" [model]=\"items\" appendTo=\"body\"></p-menu>\r\n <ion-button (click)=\"menu.toggle($event)\" pTooltip=\"Language\" tooltipPosition=\"bottom\">\r\n <ion-icon name=\"language\" slot=\"end\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n</ion-toolbar>\r\n<ion-toolbar color=\"light\" id=\"secondToolbar\" *ngIf=\"secondToolbar\">\r\n <ion-buttons slot=\"start\">\r\n <ion-back-button pTooltip=\"Back\" alt=\"Back\" tooltipPosition=\"bottom\" [defaultHref]=\"backPage ? backPage : '/welcome'\"></ion-back-button>\r\n <ion-title color=\"primary\" *ngIf=\"title\" style=\"font-size: 18px\">{{title}}</ion-title>\r\n </ion-buttons>\r\n <ng-content></ng-content>\r\n <ion-buttons slot=\"end\">\r\n <ion-title color=\"primary\" style=\"font-size: xx-small; float: right; padding-right: 8px;\" *ngIf=\"pageId\">\r\n {{pageId}}</ion-title>\r\n </ion-buttons>\r\n</ion-toolbar>\r\n<p-toast>\r\n <ng-template let-message pTemplate=\"message\">\r\n <i *ngIf=\"message.severity === 'error'\" class=\"pi pi-times-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'success'\" class=\"pi pi-check-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'warn'\" class=\"pi pi-exclamation-circle\"style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'info'\" class=\"pi pi-info-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n\r\n <div [innerHTML]=\"'<strong style=\\'font-size: 22px;font-weight: bold;\\'>' + message.summary + '</strong><br><br>' + \r\n '<span style=\\'font-size: 18px;\\'>' + message.detail + '</span>'\">\r\n </div>\r\n </ng-template>\r\n </p-toast>\r\n\r\n<ng-container *ngIf=\"showProfilePopup\">\r\n <app-profile *ngIf=\"showProfilePopup\" (onCancel)=\"showProfilePopup = !showProfilePopup\"></app-profile>\r\n</ng-container>\r\n\r\n<app-job-search-result-page *ngIf=\"showjobSearchResultPopup\" (onCancel)=\"showjobSearchResultPopup = !showjobSearchResultPopup\"></app-job-search-result-page>\r\n\r\n\r\n\r\n", styles: ["#secondToolbar{--min-height: 45px !important}#header_reemployms_logo{margin-right:10px;margin-left:-5px;padding:5px;height:40px}.header_logo{height:35px}.header_button_white,.header_button{background:#fff;height:56px;margin:0;padding:8px}.toolbar-content{text-align:center}ion-toolbar{--ion-toolbar-background: var(--ion-color-primary) !important;--color: white !important;--font-weight: 500;--font-size: 13px;--position: relative;--z-index: 10;--text-align: center;--letter-spacing: .004em}ion-button{--color-hover: var(--ion-color-yellow) !important;text-transform:none!important;font-size:20px}.header-button{--color: var(--ion-color-yellow) !important;text-transform:none!important;font-weight:700;font-size:20px}.ios ion-button::part(native){color:#fff!important}ion-menu-button::part(native){color:#fff!important}ion-popover{--width: 40% !important}img{visibility:visible;position:relative}:host ::ng-deep p-autoComplete .p-inputtext{height:40px;color:#000}:host ::ng-deep p-autoComplete .p-autocomplete-item{padding:.5rem!important}:host ::ng-deep .p-toast-bottom-center,:host ::ng-deep .p-toast-top-center{transform:none!important;z-index:100001!important}:host ::ng-deep .p-toast .p-toast-icon{font-size:48px!important}:host ::ng-deep .p-toast-icon-close{position:absolute!important;top:0;right:0;margin:5px}:host ::ng-deep .p-toast-summary{font-weight:700;display:block;margin-bottom:5px}:host ::ng-deep .p-toast-message,:host ::ng-deep .p-toast-detail{display:block;font-size:14px}@media (min-width: 768px){:host ::ng-deep .header-popover{--width: 55%}}@media (min-width: 992px){:host ::ng-deep .header-popover{--width: 40%}}@media (min-width: 1200px){:host ::ng-deep .header-popover{--width: 35%}}@media (min-width: 1400px){:host ::ng-deep .header-popover{--width: 30%}}\n"] }]
850
868
  }], () => [{ type: i1.LoginService }, { type: i2.UtilService }, { type: i3.Router }, { type: i4.PopoverController }, { type: i5.ClaimantService }, { type: i4.NavController }, { type: i4.ModalController }, { type: i6.NotificationService }, { type: i7.HelpService }, { type: i8.TranslateService }, { type: i9.AuditService }], { title: [{
851
869
  type: Input,
852
870
  args: ['title']
@@ -870,4 +888,4 @@ export class HeaderComponent extends BasePage {
870
888
  args: ['context']
871
889
  }] }); })();
872
890
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HeaderComponent, { className: "HeaderComponent", filePath: "lib\\components\\header\\header.component.ts", lineNumber: 26 }); })();
873
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUWhGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNkaEQsdUNBQ21COzs7O0lBRGtCLHVFQUFvQzs7O0lBSWpFLHNDQUNnSjs7O0lBQWhHLHlHQUE2RTs7OztJQVE3SCxzQ0FBeU07SUFBN0wsd0xBQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFBeUssb0JBQUk7SUFBQSxpQkFBYTs7O0lBQWhKLG1HQUE2RTs7OztJQUV2SixzQ0FBOFI7SUFBakQsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQXlCLFlBQThDO0lBQUEsaUJBQWE7OztJQUF4VCxtRkFBa0Q7SUFBMEIsb0dBQThFO0lBQW1HLGVBQThDO0lBQTlDLHdFQUE4Qzs7OztJQUM1VSxzQ0FBNFI7SUFBekIsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQUMsWUFB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QWlEO1lBQUMseUZBQXVFO1lBR25HLGVBQXFCO1lBQXJCLDBDQUFxQjtZQTJCVixlQUFvRjtZQUFwRixrSEFBb0Y7WUFtQmpHLGVBQXFCO1lBQXJCLDBDQUFxQjtZQWdDZixlQUFzQztZQUF0QywrREFBc0M7WUFNNUMsZUFBK0U7WUFBL0UsNEdBQStFO1lBUTdELGVBQW1CO1lBQW5CLHdDQUFtQjtZQXdCbkQsZUFBc0I7WUFBdEIsMkNBQXNCO1lBSVIsZUFBOEI7WUFBOUIsbURBQThCOzs7aUZEM0c5QyxlQUFlO2NBTDNCLFNBQVM7MkJBQ0UsWUFBWTswVUFjTixLQUFLO2tCQUFwQixLQUFLO21CQUFDLE9BQU87WUFFRyxNQUFNO2tCQUF0QixLQUFLO21CQUFDLFFBQVE7WUFFUyxhQUFhO2tCQUFwQyxLQUFLO21CQUFDLGVBQWU7WUFFQSxXQUFXO2tCQUFoQyxLQUFLO21CQUFDLGFBQWE7WUFFRSxXQUFXO2tCQUFoQyxLQUFLO21CQUFDLGFBQWE7WUFFRCxRQUFRO2tCQUExQixLQUFLO21CQUFDLFVBQVU7WUFFQyxPQUFPO2tCQUF4QixLQUFLO21CQUFDLFNBQVM7O2tGQXRCTCxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBOYXZDb250cm9sbGVyLCBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xuaW1wb3J0IHsgQ2xhaW1hbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGFpbWFudC9DbGFpbWFudE1vZGVsJztcbmltcG9ydCB7IE15Tm90aWZpY2F0aW9uc1BhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9wb3BvdmVycy9teS1ub3RpZmljYXRpb25zL215LW5vdGlmaWNhdGlvbnMucGFnZSc7XG5pbXBvcnQgeyBNeVByb2ZpbGVQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvcG9wb3ZlcnMvbXktcHJvZmlsZS9teS1wcm9maWxlLnBhZ2UnO1xuaW1wb3J0IHsgQ2xhaW1hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xhaW1hbnQvY2xhaW1hbnQuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2hlbHAvaGVscC5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9CYXNlUGFnZSc7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGVTZWxlY3RFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IFNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUXVlc3Rpb25uYWlyZUZvcm0nO1xuaW1wb3J0IHsgQXVkaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXVkaXQvYXVkaXQuc2VydmljZSc7XG5pbXBvcnQgeyBBdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvQXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCAge1xuXG4gIGl0ZW1zOiBNZW51SXRlbVtdO1xuXG4gIHNlYXJjaFRleHQ7XG5cbiAgcmVzdWx0czogQ2xhaW1hbnRNb2RlbFtdO1xuXG4gIGNvbnRleHRSb290OnN0cmluZztcblxuICBASW5wdXQoJ3RpdGxlJykgdGl0bGU6IHN0cmluZztcblxuICBASW5wdXQoJ3BhZ2VJZCcpIHBhZ2VJZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgnc2Vjb25kVG9vbGJhcicpIHNlY29uZFRvb2xiYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ2Rpc3BsYXlMb2dvJykgZGlzcGxheUxvZ286IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ3Nob3dIaXN0b3J5Jykgc2hvd0hpc3Rvcnk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ2JhY2tQYWdlJykgYmFja1BhZ2U6IHN0cmluZztcblxuICBASW5wdXQoJ2NvbnRleHQnKSBjb250ZXh0OiBzdHJpbmc7XG5cbiAgcHVibGljIHNob3dOb3RpZmljYXRpb25Mb2FkZXIgPSBmYWxzZTtcblxuICBwdWJsaWMgbGVnYWN5TWVudSA9IExpYkNvbnN0YW50cy5sZWdhY3lNZW51O1xuXG4gIHB1YmxpYyBpbnRlcmltSG9tZVBhZ2UgPSBMaWJDb25zdGFudHMuaW50ZXJpbUhvbWVQYWdlO1xuXG4gIHB1YmxpYyBzaG93UHJvZmlsZVBvcHVwIDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93am9iU2VhcmNoUmVzdWx0UG9wdXAgOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHNob3dMYW5ndWFnZU9wdGlvbiA9IExpYkNvbnN0YW50cy5lbmFibGVMYW5ndWFnZUNoYW5nZTtcblxuICBpc0VtcGxveWVyTG9hZGVkID0gZmFsc2U7XG4gIGlzUXVlc3Rpb25uYWlyZURhdGFMb2FkZWQgPSBmYWxzZTtcblxuXG4gIHNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhOlNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhW107XG4gIHNlbGVjdGVkUXVlc3Rpb25uYWlyZURhdGE6IFNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhW107XG4gIGF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbDogQXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsO1xuXG5cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbHMgOiBMb2dpblNlcnZpY2UsIHB1YmxpYyB1dGlsIDogVXRpbFNlcnZpY2UsIHB1YmxpYyByIDogUm91dGVyLCBwdWJsaWMgcG9wdXA6IFBvcG92ZXJDb250cm9sbGVyLCBcbiAgICAgICAgICAgICAgcHVibGljIGNzIDogQ2xhaW1hbnRTZXJ2aWNlLCBwcml2YXRlIG5hdiA6IE5hdkNvbnRyb2xsZXIsIHB1YmxpYyBtb2RhbENvbnRyb2xsZXI6IE1vZGFsQ29udHJvbGxlcixcbiAgICAgICAgICAgICAgcHVibGljIG5zIDogTm90aWZpY2F0aW9uU2VydmljZSwgcHVibGljIGhzOiBIZWxwU2VydmljZSwgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2UgOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHFzOiBBdWRpdFNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgICAgICAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vdGhpcy5sb2FkTm90aWZpY2F0aW9uQ291bnQoKTtcbiAgICB0aGlzLnNldE1lbnVJdGVtcyhsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpKTtcbiAgICBpZih0aGlzLmxzLmlzRW1wbG95ZXIoKSlcbiAgICB7XG4gICAgICAgICAgdGhpcy5sb2FkRW1wbG95ZXJEZXRhaWxzKClcbiAgICB9XG4gICAgdGhpcy5jb250ZXh0Um9vdCA9IHRoaXMuZ2V0Q29udGV4dFJvb3QoKTtcbiAgfVxuICBcbiAgLypKb2IgU2VhcmNoIFJlc3VsdCBJY29uIFBvcHVwXG4gICBwcmVzZW50Sm9iU2VhcmNoUmVzdWx0UG9wdXAoKSB7XG4gICAgaWYodGhpcy5scy5pc0NsYWltYW50KCkpe1xuICAgICAgdGhpcy5zaG93am9iU2VhcmNoUmVzdWx0UG9wdXAgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICAqL1xuICBnZXRDb250ZXh0Um9vdCgpe1xuICAgIGxldCBwYXJ0cyA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgnLycpO1xuICAgIGxldCBjb250ZXh0Um9vdCA9IHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0c1sxXSA6ICcnO1xuICAgIHJldHVybiBjb250ZXh0Um9vdDtcbiAgfVxuICBzZXRNZW51SXRlbXMobGFuZ3VhZ2UgOiBzdHJpbmcpe1xuICAgIHRoaXMuaXRlbXMgPSBbe1xuICAgICAgbGFiZWwgOiAnQ2hvb3NlIGxhbmd1YWdlJyxcbiAgICAgIGl0ZW1zOiBbe1xuICAgICAgICBsYWJlbDogJ0VuZ2xpc2gnLFxuICAgICAgICBpY29uIDogdGhpcy5nZXRJY29uKGxhbmd1YWdlLCdlbicpLFxuICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmd1YWdlKCdlbicsICdFbmdsaXNoJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnRXNwYe+/vW9sJyxcbiAgICAgICAgaWNvbiA6IHRoaXMuZ2V0SWNvbihsYW5ndWFnZSwnZXMnKSxcbiAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRMYW5ndWFnZSgnZXMnLCAnZXNwYe+/vW9sJyk7XG4gICAgICAgIH1cbiAgICAgIH1dXG4gICAgfV07XG4gIH1cblxuICBnZXRJY29uKHNlbGVjdGVkTGFuZyA6IHN0cmluZywgbGFuZ3VhZ2UgOiBzdHJpbmcpe1xuICAgIGlmKGxhbmd1YWdlID09IHNlbGVjdGVkTGFuZyl7XG4gICAgICByZXR1cm4gXCJwaSBwaS1mdyBwaS1jaGVja1wiO1xuICAgIH1lbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNldExhbmd1YWdlKGxhbmd1YWdlIDogc3RyaW5nLCBuYW1lIDogc3RyaW5nKXtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmd1YWdlKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZ3VhZ2UnLCBsYW5ndWFnZSk7XG4gICAgdGhpcy51dGlsLnRvYXN0KCdMYW5ndWFnZSBwcmVmZXJlbmNlIGNoYW5nZWQgdG8gJyArIG5hbWUpO1xuICAgIHRoaXMuc2V0TWVudUl0ZW1zKGxhbmd1YWdlKTtcbiAgfVxuXG4gIGFzeW5jIHByZXNlbnRNeVByb2ZpbGVQb3BvdmVyKGV2ZW50KSB7XG5cbiAgICBpZih0aGlzLmxzLmlzQ2xhaW1hbnQoKSAmJiAgKHRoaXMubGVnYWN5TWVudSA9PSAnZmFsc2UnIHx8IHRoaXMudXRpbC5pc1N0YXRlKCdNRScpIHx8ICh0aGlzLnV0aWwuaXNTdGF0ZSgnTVMnKSAmJiBMaWJDb25zdGFudHMuaW50ZXJpbUhvbWVQYWdlID09ICd0cnVlJykpKXtcbiAgICAgIHRoaXMuc2hvd1Byb2ZpbGVQb3B1cCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9wb3ZlciA9IGF3YWl0IHRoaXMucG9wdXAuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogTXlQcm9maWxlUGFnZSxcbiAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgY3NzQ2xhc3M6ICdoZWFkZXItcG9wb3ZlcidcbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIGFzeW5jIHByZXNlbnRNeU5vdGlmaWNhdGlvblBvcG92ZXIoZXZlbnQpIHtcbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3B1cC5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBNeU5vdGlmaWNhdGlvbnNQYWdlLFxuICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICBjc3NDbGFzczogJ2hlYWRlci1wb3BvdmVyJ1xuICAgIH0pO1xuXG4gICAgcG9wb3Zlci5vbkRpZERpc21pc3MoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMubnMudXBkYXRlUmVhZEZsYWcoKTtcbiAgICB9KVxuXG4gICAgcmV0dXJuIGF3YWl0IHBvcG92ZXIucHJlc2VudCgpO1xuICB9XG5cbiAgbG9nb3V0KCl7XG4gICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCcvbGFuZGluZycpO1xuICAgIHRoaXMubHMubG9nb3V0KCk7XG4gIH1cblxuICBvcGVuV2Vla2xpZXMoKXtcbiAgICBpZih0aGlzLmxlZ2FjeU1lbnUgPT0gJ3RydWUnICYmIHRoaXMuaXNNUygpICYmIHRoaXMuaW50ZXJpbUhvbWVQYWdlID09ICdmYWxzZScpe1xuICAgICAgdGhpcy5vcGVuUGFnZSgnY3AnLCAndjIvd2Vla2xpZXMnKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdjcCcsICd2My93ZWVrbGllcycpXG4gICAgfVxuICB9XG5cbiAgb3BlbkF1ZGl0RGFzaGJvYXJkKCl7XG4gICAgaWYodGhpcy5jb250ZXh0PT0nYXVkaXQnKXtcbiAgICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvZGFzaGJvYXJkJyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvbXlxJyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy8nKTsgLy9BZGQgdGhlIGFjdHVhbCB1cmwgZm9yIGVtcGxveWVyIGF1ZGl0IGRhc2hib2FyZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW5BdWRpdG9yV29ya0xpc3QoKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLXdvcmstbGlzdCcpO1xuICB9XG5cbiAgIG9wZW5RdWVzdGlvbm5haXJlKCl7XG4gICAgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2F1ZGl0b3ItcXVlc3Rpb25uYWlyZScpO1xuICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzRW1wbG95ZXIoKSl7XG4gICAgICBpZih0aGlzLnNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhICYmIHRoaXMuc2VhcmNoUXVlc3Rpb25uYWlyZURhdGEubGVuZ3RoID4gMClcbiAgICAgIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFF1ZXN0aW9ubmFpcmVEYXRhID0gdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YTtcbiAgICAgICAgdGhpcy5xcy5zZXRRdWVzdGlvbm5haXJlRGF0YSh0aGlzLnNlbGVjdGVkUXVlc3Rpb25uYWlyZURhdGEpO1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2F1ZGl0b3ItcXVlc3Rpb25uYWlyZS1mb3JtJywge1xuICAgICAgICBzdGF0ZTogeyBhdWRpdDogdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSB9XG4gICAgICB9KTsvL0FkZCB0aGUgYWN0dWFsIHVybCBmb3IgZW1wbG95ZXIgcXVlc3Rpb25uYWlyZVxuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIk5vIGFjdGl2ZSBhdWRpdC4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYXQgdGhpcyBwb2ludC5cIilcbiAgICAgIH1cbiAgICAgIFxuICAgIH1cbiAgfVxuICBvcGVuVXBsb2FkRG9jdW1lbnRzKCl7XG5cbiAgICBpZih0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCAmJiB0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbC5hdWRpdElkICE9IG51bGwpXG4gICAge1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2VtcGxveWVyLWRvY3VtZW50cycsIHtcbiAgICAgICAgc3RhdGU6IHsgYXVkaXQ6IHRoaXMuYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNle1xuICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIk5vIGFjdGl2ZSBhdWRpdC4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYXQgdGhpcyBwb2ludC5cIilcbiAgICB9XG4gIH1cblxuICBvcGVuRW1wbG95ZXJEYXNoYm9hcmQoKVxuICB7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2VtcGxveWVyLWRhc2hib2FyZCcsIHtcbiAgICAgIH0pO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JNeVEoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpe1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvbXlxJyk7XG4gICAgfVxuICB9XG5cbiAgb3BlblN1cGVydmlzb3JJbnF1aXJ5KCl7XG4gICAgIGlmKHRoaXMuY29udGV4dD09J2F1ZGl0Jyl7XG4gICAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKXx8dGhpcy5scy5oYXNSb2xlKCd0YXhhdWRpdGFnZW5jeXN0YWZmJykpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9pbnF1aXJ5Jyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXVkaXRvci1pbnF1aXJ5Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvaW5xdWlyeScpO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JSZWZlcnJhbHMoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9yZWZlcnJhbHMnKTtcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IHRoaXMubHMuaXNUcGEoKSB8fCB0aGlzLmxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKSl7Ly9BZ2VuY3kgRW1wbG95ZWUgRGVmYXVsdCAtIGNoZWNrIHJvbGUgd2l0aCBjaWp1XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9uZXctcmVmZXJyYWwnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvckNvbmZpZygpe1xuICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2NvbmZpZycpO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JBbmFseXRpY3MoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hbmFseXRpY3MnKTtcbiAgICB9XG4gICAgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpICYmICEodGhpcy5scy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpKXsgXG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLWFuYWx5dGljcycpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TdXBlcnZpc29yQXNzaWduKCl7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXNzaWduJyk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvclRlYW0oKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy90ZWFtJyk7XG4gIH1cblxuXG4gIGxvYWRFbXBsb3llckRldGFpbHMoKVxuICB7XG4gICAgdGhpcy5pc0VtcGxveWVyTG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5pc1F1ZXN0aW9ubmFpcmVEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgbGV0IHVzZXJNb2RlbCA9IHRoaXMubHMuZ2V0VXNlcigpXG5cbiAgICB0aGlzLnFzLnNlYXJjaFF1ZXN0aW9ubmFpcmUobnVsbCwgbnVsbCwgbnVsbCx1c2VyTW9kZWwudXNlcm5hbWUpXG4gICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSA9IHJlcztcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNRdWVzdGlvbm5haXJlRGF0YUxvYWRlZCA9IHRydWVcbiAgICB9LCAoZXJyKSA9PiB7XG5cbiAgICB9KTtcblxuICAgIHRoaXMucXMuZmluZEVtcGxveWVyRGF0YVdpdGhVc2VySUQodXNlck1vZGVsLnVzZXJuYW1lKVxuICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcylcbiAgICAgIHtcbiAgICAgICAgdGhpcy5hdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwgPSByZXM7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRW1wbG95ZXJMb2FkZWQgPSB0cnVlOyBcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgIFxuICAgIH0pXG5cbiAgfVxuICBvcGVuSG9tZSgpe1xuICAgIC8vdGhpcy5uYXYubmF2aWdhdGVSb290KFwiL3dlbGNvbWVcIik7XG4gICAgaWYodGhpcy5scy5pc0NsYWltYW50KCkpe1xuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdCh0aGlzLnV0aWwuZ2V0Q2xhaW1hbnRBcHBDb250ZXh0Um9vdCgpLCBcIndlbGNvbWVcIiwgdGhpcy5uYXYpOyBcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc0NzcigpKXtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGhpcy51dGlsLmdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSxcIndlbGNvbWVcIiwgdGhpcy5uYXYpOyBcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpe1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvJyk7Ly9BZGQgdGhlIGFjdHVhbCB1cmwgZm9yIGVtcGxveWVyIHF1ZXN0aW9ubmFpcmVcbiAgICAgIC8vdGhpcy5sb2FkRW1wbG95ZXJEZXRhaWxzKCk7XG4gICAgfSBcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChcIi93ZWxjb21lXCIpO1xuICAgIH1cbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xuICB9XG5cbiAgc2VhcmNoKGV2ZW50KSB7XG4gICAgbGV0IGRvU2VhcmNoID0gZmFsc2U7XG4gICAgbGV0IGNsYWltYW50U2VhcmNoID0gbmV3IENsYWltYW50TW9kZWwoKTtcbiAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeSArICcnO1xuICAgIGlmKHF1ZXJ5LmluY2x1ZGVzKFwiIFwiKSl7XG4gICAgICBsZXQgZk5hbWUgPSBxdWVyeS5zcGxpdChcIiBcIilbMF07XG4gICAgICBsZXQgbE5hbWUgPSBxdWVyeS5zcGxpdChcIiBcIilbMV07XG4gICAgICBjbGFpbWFudFNlYXJjaC5maXJzdE5hbWUgPSBmTmFtZTtcbiAgICAgIGNsYWltYW50U2VhcmNoLmxhc3ROYW1lID0gbE5hbWU7XG4gICAgICBkb1NlYXJjaCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYocXVlcnkubGVuZ3RoID09IDkgJiYgdGhpcy5pc051bWJlcihxdWVyeSkgJiYgIWRvU2VhcmNoKXtcbiAgICAgIGNsYWltYW50U2VhcmNoLnNzbiA9IHF1ZXJ5O1xuICAgICAgZG9TZWFyY2ggPSB0cnVlO1xuICAgIH1lbHNlIGlmKCF0aGlzLmlzTnVtYmVyKHF1ZXJ5KSAmJiAhZG9TZWFyY2gpe1xuICAgICAgY2xhaW1hbnRTZWFyY2gudXNlcklkID0gcXVlcnk7XG4gICAgICBkb1NlYXJjaCA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmKGRvU2VhcmNoKXtcbiAgICAgIHRoaXMuY3Muc2VhcmNoKGNsYWltYW50U2VhcmNoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXN1bHRzID0gZGF0YTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNOdW1iZXIobnVtKXtcbiAgICByZXR1cm4gIWlzTmFOKG51bSk7XG4gIH1cblxuICBvblNlbGVjdEFjdGlvbihldmVudCA6IEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50KXtcbiAgICB0aGlzLnJlc3VsdHMgPSBudWxsO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IG51bGw7XG4gICAgdGhpcy5jcy5nZXRDbGFpbWFudCgpLm5leHQoZXZlbnQudmFsdWUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdCh0aGlzLnV0aWwuZ2V0U2VjdXJpdHlBcHBDb250ZXh0Um9vdCgpLFwicmVzZXQtcGFzc3dvcmRcIiwgdGhpcy5uYXYpO1xuICAgICAgLy90aGlzLm5hdi5uYXZpZ2F0ZUZvcndhcmQoJy9yZXNldC1wYXNzd29yZCcpO1xuICAgIH0sIDUwMClcbiAgICBcbiAgfVxuXG4gIG9wZW5CZW5lZml0c0FwcCgpe1xuICAgIGxldCB1c2VyTW9kZWwgPSB0aGlzLmxzLmdldFVzZXIoKVxuICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XG4gICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLmJlbmVmaXRzVXJsRXh0ZXJuYWx9L2ZhY2VzL3ZpcnR1YWwvY29udGV4dHN3aXRjaC54aHRtbD9hPSR7dXNlck1vZGVsLmFjY2Vzc190b2tlbn0mcj0ke3VzZXJNb2RlbC5yZWZyZXNoX3Rva2VufSZ2PTIyOTlgLCAnX3NlbGYnKTtcbiAgfVxuXG4gIG9wZW5QYWdlKGNvbnRleHRSb290LCB1cmksIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpe1xuICAgIGxldCBjdXJyZW50Q29udGV4dFJvb3QgPSB0aGlzLnV0aWwuZ2V0Q29udGV4dFJvb3QoKTtcbiAgICBsZXQgdGFyZ2V0ID0gYC8ke2NvbnRleHRSb290fWA7XG5cbiAgICBpZihjdXJyZW50Q29udGV4dFJvb3QgPT0gdGFyZ2V0KXtcbiAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChgLyR7dXJpfWAsIGV4dHJhcyk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnV0aWwub3BlblBhZ2VCeUNvbnRleHRSb290KHRhcmdldCwgdXJpKTtcbiAgICB9XG4gIH1cblxuICBnZXRDbGFzcyhuYW1lKXtcbiAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yLnVybC5yZXBsYWNlKCcvJywgJycpO1xuICAgIGNvbnNvbGUubG9nKGN1cnJlbnRSb3V0ZSwgbmFtZSwgY3VycmVudFJvdXRlID09IG5hbWUpO1xuICAgIHJldHVybiBjdXJyZW50Um91dGUgPT0gbmFtZSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnO1xuICB9XG5cbiAgb3BlbkNvbnRleHRIZWxwKCl7XG5cbiAgfVxuXG4gIGFzeW5jIGNoYW5nZUxhbmd1YWdlKGV2ZW50KSB7XG4gICAgXG4gIH1cbn1cbiIsIjxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJkZXRlcm1pbmF0ZVwiIFt2YWx1ZV09XCJ1dGlsLmxvYWRlci52YWx1ZSQgfCBhc3luY1wiICpuZ0lmPVwiKHV0aWwubG9hZGVyLnZhbHVlJCB8IGFzeW5jKSAhPSAwXCI+XHJcbjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPGlvbi10b29sYmFyPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC01cHg7XCI+XHJcbiAgICAgICAgPGlvbi1tZW51LWJ1dHRvbiBhdXRvSGlkZT1cImZhbHNlXCIgcFRvb2x0aXA9XCJNZW51XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJscy5pc0xvZ2dlZEluKCkgJiYgIWxzLmlzRW1wbG95ZXIoKVwiIFtuZ0NsYXNzXT1cImxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiBscy5pc0NsYWltYW50KCkgPyAnaGlkZS14bCBoaWRlLWxnJyA6ICcnXCI+PC9pb24tbWVudS1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiIFtuZ0NsYXNzXT1cImRpc3BsYXlMb2dvID8gJ2hlYWRlcl9idXR0b25fd2hpdGUnIDogJ2hlYWRlcl9idXR0b24gaGlkZS14cyBoaWRlLW1kJ1wiIChjbGljayk9XCJvcGVuQXVkaXREYXNoYm9hcmQoKVwiPlxyXG4gICAgICAgIDxpbWcgYWx0PVwibG9nb1wiIHBUb29sdGlwPVwie3snUmVFbXBsb3lNUyBMb2dvJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb24vUmVFbXBsb3l7e3V0aWwuZ2V0U3RhdGUoKX19LnN2Z1wiIFtuZ0NsYXNzXT1cImRpc3BsYXlMb2dvID8gJ2hlYWRlcl9sb2dvJyA6ICdoZWFkZXJfbG9nbyBoaWRlLXhzIGhpZGUtbWQnXCIvPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiAqbmdJZj1cImxzLmlzTG9nZ2VkSW4oKVwiPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvcGVuSG9tZSgpXCIgcFRvb2x0aXA9XCJIb21lXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2VsY29tZScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dCE9J2F1ZGl0JyB8fCBscy5pc0VtcGxveWVyKClcIj5Ib21lPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkZpbGVXZWVrbGllc1wiIHBUb29sdGlwPVwie3snaGVhZGVyLndlZWtseS50b29sdGlwJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2Vla2xpZXMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnXCIgKGNsaWNrKT1cIm9wZW5XZWVrbGllcygpXCIgY2xhc3M9XCJoaWRlLXhzIGhpZGUtbWRcIj57e2xlZ2FjeU1lbnUgPT0gJ3RydWUnID8gJ1dlZWtseScgOiAnV2Vla2x5J319PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuRmlsZVdlZWtsaWVzXCIgcFRvb2x0aXA9XCJ7eydoZWFkZXIud2Vla2x5LnRvb2x0aXAnIHwgdHJhbnNsYXRlfX1cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCd3ZWVrbGllcycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICd0cnVlJyAmJiAhdXRpbC5pc1N0YXRlKCdNRScpXCIgKGNsaWNrKT1cIm9wZW5XZWVrbGllcygpXCI+e3tsZWdhY3lNZW51ID09ICd0cnVlJyA/ICdXZWVrbHknIDogJ1dlZWtseSd9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkZpbGVXZWVrbGllc1wiIHBUb29sdGlwPVwie3snaGVhZGVyLndlZWtseS50b29sdGlwJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2Vla2xpZXMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAndHJ1ZScgJiYgdXRpbC5pc1N0YXRlKCdNRScpXCIgKGNsaWNrKT1cIm9wZW5XZWVrbGllcygpXCI+e3tsZWdhY3lNZW51ID09ICd0cnVlJyA/ICdXZWVrbHkgQ2xhaW0nIDogJ1dlZWtseSd9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgIDxpb24tYnV0dG9uIHBUb29sdGlwPVwiSGlzdG9yeVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykgPT0gJ2hpc3RvcnknID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgaW50ZXJpbUhvbWVQYWdlID09ICdmYWxzZSdcIiAoY2xpY2spPVwib3BlblBhZ2UoJ2NwJywgJ2hpc3RvcnknKVwiIGNsYXNzPVwiaGlkZS14cyBoaWRlLW1kXCI+SGlzdG9yeTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdEVtcGxveWVyRGFzaGJvYXJkXCIgcFRvb2x0aXA9XCJFbXBsb3llckRhc2hib2FyZFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2VtcGxveWVyLWRhc2hib2FyZCcpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cImxzLmlzRW1wbG95ZXIoKVwiIChjbGljayk9XCJvcGVuRW1wbG95ZXJEYXNoYm9hcmQoKVwiPkF1ZGl0IERhc2hib2FyZDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0TXlRXCIgcFRvb2x0aXA9XCJNeVFcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdteXEnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSlcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JNeVEoKVwiPk15UTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0RGFzaGJvYXJkXCIgcFRvb2x0aXA9XCJEYXNoYm9hcmRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdkYXNoYm9hcmQnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCl8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSlcIiAoY2xpY2spPVwib3BlbkF1ZGl0RGFzaGJvYXJkKClcIj5EYXNoYm9hcmQ8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFdvcmtMaXN0XCIgcFRvb2x0aXA9XCJXb3JrTGlzdFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2F1ZGl0b3Itd29yay1saXN0JykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIGxzLmlzVGF4QXVkaXRBdWRpdG9yKClcIiAoY2xpY2spPVwib3BlbkF1ZGl0b3JXb3JrTGlzdCgpXCI+V29yayBMaXN0PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRJbnF1aXJ5XCIgcFRvb2x0aXA9XCJJbnF1aXJ5XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnaW5xdWlyeScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCBscy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKSB8fCAgbHMuaGFzUm9sZSgndGF4YXVkaXRhZ2VuY3lzdGFmZicpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29ySW5xdWlyeSgpXCI+SW5xdWlyeTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0VXBsb2FkRG9jdW1lbnRzXCIgcFRvb2x0aXA9XCJVcGxvYWQgRG9jdW1lbnRzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygndXBsb2FkLWRvY3VtZW50cycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc0VtcGxveWVyKClcIiAoY2xpY2spPVwib3BlblVwbG9hZERvY3VtZW50cygpXCIgW2Rpc2FibGVkXT1cIiFpc0VtcGxveWVyTG9hZGVkXCI+VXBsb2FkIERvY3VtZW50czwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0UXVlc3Rpb25uYWlyZVwiIHBUb29sdGlwPVwiUXVlc3Rpb25uYWlyZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2F1ZGl0b3ItcXVlc3Rpb25uYWlyZScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSlcIiAoY2xpY2spPVwib3BlblF1ZXN0aW9ubmFpcmUoKVwiPlF1ZXN0aW9ubmFpcmU8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFF1ZXN0aW9ubmFpcmVcIiBwVG9vbHRpcD1cIlF1ZXN0aW9ubmFpcmVcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhdWRpdG9yLXF1ZXN0aW9ubmFpcmUnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzRW1wbG95ZXIoKSlcIiAoY2xpY2spPVwib3BlblF1ZXN0aW9ubmFpcmUoKVwiIFtkaXNhYmxlZF09XCIhaXNRdWVzdGlvbm5haXJlRGF0YUxvYWRlZFwiPlF1ZXN0aW9ubmFpcmU8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFJlZmVycmFsc1wiIHBUb29sdGlwPVwiUmVmZXJyYWxzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygncmVmZXJyYWxzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpIHx8ICBscy5oYXNSb2xlKCd0YXhhdWRpdGFnZW5jeXN0YWZmJylcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JSZWZlcnJhbHMoKVwiPlJlZmVycmFsczwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0QXNzaWduXCIgcFRvb2x0aXA9XCJBc3NpZ25cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhc3NpZ24nKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvckFzc2lnbigpXCI+QXNzaWduPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRUZWFtXCIgcFRvb2x0aXA9XCJUZWFtXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygndGVhbScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yVGVhbSgpXCI+VGVhbTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0Q29uZmlnXCIgcFRvb2x0aXA9XCJDb25maWdcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdjb25maWcnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yQ29uZmlnKClcIj5Db25maWc8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdEFuYWx5dGljc1wiIHBUb29sdGlwPVwiQW5hbHl0aWNzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYW5hbHl0aWNzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yQW5hbHl0aWNzKClcIj5BbmFseXRpY3M8L2lvbi1idXR0b24+XHJcblxyXG5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci1jb250ZW50IGhpZGUteHNcIiAqbmdJZj1cImxzLmlzTG9nZ2VkSW4oKSAmJiBscy5pc0NzcigpICYmIHRoaXMuY29udGV4dCAhPSdhdWRpdCcgJiYgY29udGV4dFJvb3QgPT09J3NzJ1wiPlxyXG4gICAgICAgIDxwLWF1dG9Db21wbGV0ZSBhcHBlbmRUbz1cImJvZHlcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiBbc3VnZ2VzdGlvbnNdPVwicmVzdWx0c1wiXHJcbiAgICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIENsYWltYW50c1wiIChvblNlbGVjdCk9XCJvblNlbGVjdEFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiTm8gUmVzdWx0cyBGb3VuZC5cIiBzaXplPVwiMjVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC11c2VyIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwiLmlvbi13cmFwXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemUtYXV0bz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0Pnt7dXNlci5maXJzdE5hbWUgfCBwcm9wZXJDYXNlfX0ge3t1c2VyLmxhc3ROYW1lIHwgcHJvcGVyQ2FzZX19PC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZS1hdXRvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+e3t1c2VyLnVzZXJJZH19PC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZS1hdXRvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+e3t1dGlsLm1hc2tTc24odXNlci5zc24pfX08L2lvbi10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3AtYXV0b0NvbXBsZXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiICpuZ0lmPVwibHMuaXNMb2dnZWRJbigpXCIgPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJwcmVzZW50TXlQcm9maWxlUG9wb3ZlcigkZXZlbnQpXCIgcFRvb2x0aXA9XCJBY2NvdW50XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwibGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSAmJiBzaG93UHJvZmlsZVBvcHVwID8gJ2hpZGUteHMgaGlkZS1tZCBoZWFkZXItYnV0dG9uJyA6IChsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJylcIj5cclxuICAgICAgICAgICAgPGlvbi10aXRsZSBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgcGFkZGluZzogMHB4O1wiIGNsYXNzPVwiaGlkZS14c1wiPnt7bHMuZ2V0RnVsbE5hbWUoKSB8IHByb3BlckNhc2V9fTwvaW9uLXRpdGxlPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJwZXJzb24tY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlblBhZ2UoJ2NwJywgJ2RvY3VtZW50cycpXCIgcFRvb2x0aXA9XCJOb3RpY2VzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKm5nSWY9XCIhbHMuaXNDc3IoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgIXV0aWwuaXNTdGF0ZSgnTUUnKVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykgPT0gJ2RvY3VtZW50cycgPyAnaGVhZGVyLWJ1dHRvbiBoaWRlLXhzIGhpZGUtbWQnIDogJ2hpZGUteHMgaGlkZS1tZCdcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9J3BpIHBpLWZpbGUgZm9udC1ib2xkJyBzdHlsZT1cImZvbnQtc2l6ZTogMS4zcmVtOyAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50O1wiPjwvaT5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5QYWdlKCdjcCcsICdkb2N1bWVudHMnKVwiIHBUb29sdGlwPVwiTm90aWNlc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICpuZ0lmPVwiIWxzLmlzQ3NyKCkgJiYgbGVnYWN5TWVudSA9PSAndHJ1ZSdcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC10ZXh0LW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgPCEtLSA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicHJlc2VudEpvYlNlYXJjaFJlc3VsdFBvcHVwKClcIiBwVG9vbHRpcD1cIlNob3cgam9iIHNlYXJjaCByZXN1bHRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiB1dGlsLmlzU3RhdGUoJ01TJylcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJicmllZmNhc2VcIiBmaWxsPVwib3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicHJlc2VudE15Tm90aWZpY2F0aW9uUG9wb3ZlcigkZXZlbnQpXCIgcFRvb2x0aXA9XCJOb3RpZmljYXRpb25cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFucy5zaG93Tm90aWZpY2F0aW9uTG9hZGVyICYmICF1dGlsLmlzU3RhdGUoJ01FJylcIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm5vdGlmaWNhdGlvbnMtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJkYXJrXCIgKm5nSWY9XCJucy5ub3RpZmljYXRpb25Db3VudC5nZXRWYWx1ZSgpID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57e25zLm5vdGlmaWNhdGlvbkNvdW50LmdldFZhbHVlKCl9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgICA8L2lvbi1iYWRnZT5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiICpuZ0lmPVwibnMuc2hvd05vdGlmaWNhdGlvbkxvYWRlclwiPjwvaW9uLXNwaW5uZXI+XHJcblxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0aGlzLmhzLnNob3coKVwiIHBUb29sdGlwPVwiSGVscFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiAoaHMuc2hvdWxkRGlzcGxheUhlbHBCdXR0b24oKSB8IGFzeW5jKVwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImhlbHAtY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzZWNvbmRhcnlcIiAqbmdJZj1cIiFscy5pc0xvZ2dlZEluKCkgJiYgbHMuZ2V0VXNlcigpXCI+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImxvZ291dCgpXCIgcFRvb2x0aXA9XCJMb2dvdXRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsb2ctb3V0LXNoYXJwXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCIgKm5nSWY9XCJzaG93TGFuZ3VhZ2VPcHRpb24gPT09ICd0cnVlJyAmJiAoIWxzLmdldFVzZXIoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScpXCI+XHJcbiAgICAgICAgPHAtbWVudSAjbWVudSBbcG9wdXBdPVwidHJ1ZVwiIFttb2RlbF09XCJpdGVtc1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpXCIgcFRvb2x0aXA9XCJMYW5ndWFnZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsYW5ndWFnZVwiIHNsb3Q9XCJlbmRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgPC9pb24tYnV0dG9ucz5cclxuXHJcbjwvaW9uLXRvb2xiYXI+XHJcbjxpb24tdG9vbGJhciBjb2xvcj1cImxpZ2h0XCIgaWQ9XCJzZWNvbmRUb29sYmFyXCIgKm5nSWY9XCJzZWNvbmRUb29sYmFyXCI+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XHJcbiAgICAgICAgPGlvbi1iYWNrLWJ1dHRvbiBwVG9vbHRpcD1cIkJhY2tcIiBhbHQ9XCJCYWNrXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW2RlZmF1bHRIcmVmXT1cImJhY2tQYWdlID8gYmFja1BhZ2UgOiAnL3dlbGNvbWUnXCI+PC9pb24tYmFjay1idXR0b24+XHJcbiAgICAgICAgPGlvbi10aXRsZSBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cInRpdGxlXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHhcIj57e3RpdGxlfX08L2lvbi10aXRsZT5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxyXG4gICAgICAgIDxpb24tdGl0bGUgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJmb250LXNpemU6IHh4LXNtYWxsOyBmbG9hdDogcmlnaHQ7IHBhZGRpbmctcmlnaHQ6IDhweDtcIiAqbmdJZj1cInBhZ2VJZFwiPlxyXG4gICAgICAgICAgICB7e3BhZ2VJZH19PC9pb24tdGl0bGU+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG48L2lvbi10b29sYmFyPlxyXG48cC10b2FzdD5cclxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnZXJyb3InXCIgY2xhc3M9XCJwaSBwaS10aW1lcy1jaXJjbGVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTRweDsgZm9udC1zaXplOiAzOHB4IFwiPjwvaT5cclxuICAgICAgICA8aSAqbmdJZj1cIm1lc3NhZ2Uuc2V2ZXJpdHkgPT09ICdzdWNjZXNzJ1wiIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnd2FybidcIiBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwic3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnaW5mbydcIiBjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcblxyXG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCInPHN0cm9uZyBzdHlsZT1cXCdmb250LXNpemU6IDIycHg7Zm9udC13ZWlnaHQ6IGJvbGQ7XFwnPicgKyBtZXNzYWdlLnN1bW1hcnkgKyAnPC9zdHJvbmc+PGJyPjxicj4nICsgXHJcbiAgICAgICAgICAgICc8c3BhbiBzdHlsZT1cXCdmb250LXNpemU6IDE4cHg7XFwnPicgKyBtZXNzYWdlLmRldGFpbCArICc8L3NwYW4+J1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b2FzdD5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UHJvZmlsZVBvcHVwXCI+XHJcbiAgICA8YXBwLXByb2ZpbGUgKm5nSWY9XCJzaG93UHJvZmlsZVBvcHVwXCIgKG9uQ2FuY2VsKT1cInNob3dQcm9maWxlUG9wdXAgPSAhc2hvd1Byb2ZpbGVQb3B1cFwiPjwvYXBwLXByb2ZpbGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGFwcC1qb2Itc2VhcmNoLXJlc3VsdC1wYWdlICpuZ0lmPVwic2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwXCIgKG9uQ2FuY2VsKT1cInNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cCA9ICFzaG93am9iU2VhcmNoUmVzdWx0UG9wdXBcIj48L2FwcC1qb2Itc2VhcmNoLXJlc3VsdC1wYWdlPlxyXG5cclxuXHJcblxyXG4iXX0=
891
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUWhGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNkaEQsdUNBQ21COzs7O0lBRGtCLHVFQUFvQzs7O0lBSWpFLHNDQUNnSjs7O0lBQWhHLHlHQUE2RTs7OztJQVE3SCxzQ0FBeU07SUFBN0wsd0xBQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFBeUssb0JBQUk7SUFBQSxpQkFBYTs7O0lBQWhKLG1HQUE2RTs7OztJQUV2SixzQ0FBOFI7SUFBakQsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQXlCLFlBQThDO0lBQUEsaUJBQWE7OztJQUF4VCxtRkFBa0Q7SUFBMEIsb0dBQThFO0lBQW1HLGVBQThDO0lBQTlDLHdFQUE4Qzs7OztJQUM1VSxzQ0FBNFI7SUFBekIsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQUMsWUFB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LHlGQUF1RTtZQUduRyxlQUFxQjtZQUFyQiwwQ0FBcUI7WUEyQlYsZUFBb0Y7WUFBcEYsa0hBQW9GO1lBbUJqRyxlQUFxQjtZQUFyQiwwQ0FBcUI7WUFnQ2YsZUFBc0M7WUFBdEMsK0RBQXNDO1lBTTVDLGVBQStFO1lBQS9FLDRHQUErRTtZQVE3RCxlQUFtQjtZQUFuQix3Q0FBbUI7WUF3Qm5ELGVBQXNCO1lBQXRCLDJDQUFzQjtZQUlSLGVBQThCO1lBQTlCLG1EQUE4Qjs7O2lGRDNHOUMsZUFBZTtjQUwzQixTQUFTOzJCQUNFLFlBQVk7MFVBY04sS0FBSztrQkFBcEIsS0FBSzttQkFBQyxPQUFPO1lBRUcsTUFBTTtrQkFBdEIsS0FBSzttQkFBQyxRQUFRO1lBRVMsYUFBYTtrQkFBcEMsS0FBSzttQkFBQyxlQUFlO1lBRUEsV0FBVztrQkFBaEMsS0FBSzttQkFBQyxhQUFhO1lBRUUsV0FBVztrQkFBaEMsS0FBSzttQkFBQyxhQUFhO1lBRUQsUUFBUTtrQkFBMUIsS0FBSzttQkFBQyxVQUFVO1lBRUMsT0FBTztrQkFBeEIsS0FBSzttQkFBQyxTQUFTOztrRkF0QkwsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IENsYWltYW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhaW1hbnQvQ2xhaW1hbnRNb2RlbCc7XG5pbXBvcnQgeyBNeU5vdGlmaWNhdGlvbnNQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvcG9wb3ZlcnMvbXktbm90aWZpY2F0aW9ucy9teS1ub3RpZmljYXRpb25zLnBhZ2UnO1xuaW1wb3J0IHsgTXlQcm9maWxlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL3BvcG92ZXJzL215LXByb2ZpbGUvbXktcHJvZmlsZS5wYWdlJztcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50L2NsYWltYW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVscFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwL2hlbHAuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlU2VsZWN0RXZlbnQgfSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBTZWFyY2hRdWVzdGlvbm5haXJlRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1F1ZXN0aW9ubmFpcmVGb3JtJztcbmltcG9ydCB7IEF1ZGl0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1ZGl0L2F1ZGl0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0F1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQgIHtcblxuICBpdGVtczogTWVudUl0ZW1bXTtcblxuICBzZWFyY2hUZXh0O1xuXG4gIHJlc3VsdHM6IENsYWltYW50TW9kZWxbXTtcblxuICBjb250ZXh0Um9vdDpzdHJpbmc7XG5cbiAgQElucHV0KCd0aXRsZScpIHRpdGxlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdwYWdlSWQnKSBwYWdlSWQ6IHN0cmluZztcblxuICBASW5wdXQoJ3NlY29uZFRvb2xiYXInKSBzZWNvbmRUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdkaXNwbGF5TG9nbycpIGRpc3BsYXlMb2dvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdzaG93SGlzdG9yeScpIHNob3dIaXN0b3J5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdiYWNrUGFnZScpIGJhY2tQYWdlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdjb250ZXh0JykgY29udGV4dDogc3RyaW5nO1xuXG4gIHB1YmxpYyBzaG93Tm90aWZpY2F0aW9uTG9hZGVyID0gZmFsc2U7XG5cbiAgcHVibGljIGxlZ2FjeU1lbnUgPSBMaWJDb25zdGFudHMubGVnYWN5TWVudTtcblxuICBwdWJsaWMgaW50ZXJpbUhvbWVQYWdlID0gTGliQ29uc3RhbnRzLmludGVyaW1Ib21lUGFnZTtcblxuICBwdWJsaWMgc2hvd1Byb2ZpbGVQb3B1cCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwIDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93TGFuZ3VhZ2VPcHRpb24gPSBMaWJDb25zdGFudHMuZW5hYmxlTGFuZ3VhZ2VDaGFuZ2U7XG5cbiAgaXNFbXBsb3llckxvYWRlZCA9IGZhbHNlO1xuICBpc1F1ZXN0aW9ubmFpcmVEYXRhTG9hZGVkID0gZmFsc2U7XG5cblxuICBzZWFyY2hRdWVzdGlvbm5haXJlRGF0YTpTZWFyY2hRdWVzdGlvbm5haXJlRGF0YVtdO1xuICBzZWxlY3RlZFF1ZXN0aW9ubmFpcmVEYXRhOiBTZWFyY2hRdWVzdGlvbm5haXJlRGF0YVtdO1xuICBhdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWw6IEF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbDtcblxuXG5cbiAgY29uc3RydWN0b3IocHVibGljIGxzIDogTG9naW5TZXJ2aWNlLCBwdWJsaWMgdXRpbCA6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgciA6IFJvdXRlciwgcHVibGljIHBvcHVwOiBQb3BvdmVyQ29udHJvbGxlciwgXG4gICAgICAgICAgICAgIHB1YmxpYyBjcyA6IENsYWltYW50U2VydmljZSwgcHJpdmF0ZSBuYXYgOiBOYXZDb250cm9sbGVyLCBwdWJsaWMgbW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBucyA6IE5vdGlmaWNhdGlvblNlcnZpY2UsIHB1YmxpYyBoczogSGVscFNlcnZpY2UsIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlIDogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBxczogQXVkaXRTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICAgICAgIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvL3RoaXMubG9hZE5vdGlmaWNhdGlvbkNvdW50KCk7XG4gICAgdGhpcy5zZXRNZW51SXRlbXMobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSk7XG4gICAgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpXG4gICAge1xuICAgICAgICAgIHRoaXMubG9hZEVtcGxveWVyRGV0YWlscygpXG4gICAgfVxuICAgIHRoaXMuY29udGV4dFJvb3QgPSB0aGlzLmdldENvbnRleHRSb290KCk7XG4gIH1cbiAgXG4gIC8qSm9iIFNlYXJjaCBSZXN1bHQgSWNvbiBQb3B1cFxuICAgcHJlc2VudEpvYlNlYXJjaFJlc3VsdFBvcHVwKCkge1xuICAgIGlmKHRoaXMubHMuaXNDbGFpbWFudCgpKXtcbiAgICAgIHRoaXMuc2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgKi9cbiAgZ2V0Q29udGV4dFJvb3QoKXtcbiAgICBsZXQgcGFydHMgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKTtcbiAgICBsZXQgY29udGV4dFJvb3QgPSBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbMV0gOiAnJztcbiAgICByZXR1cm4gY29udGV4dFJvb3Q7XG4gIH1cbiAgc2V0TWVudUl0ZW1zKGxhbmd1YWdlIDogc3RyaW5nKXtcbiAgICB0aGlzLml0ZW1zID0gW3tcbiAgICAgIGxhYmVsIDogJ0Nob29zZSBsYW5ndWFnZScsXG4gICAgICBpdGVtczogW3tcbiAgICAgICAgbGFiZWw6ICdFbmdsaXNoJyxcbiAgICAgICAgaWNvbiA6IHRoaXMuZ2V0SWNvbihsYW5ndWFnZSwnZW4nKSxcbiAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRMYW5ndWFnZSgnZW4nLCAnRW5nbGlzaCcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ0VzcGHvv71vbCcsXG4gICAgICAgIGljb24gOiB0aGlzLmdldEljb24obGFuZ3VhZ2UsJ2VzJyksXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UoJ2VzJywgJ2VzcGHvv71vbCcpO1xuICAgICAgICB9XG4gICAgICB9XVxuICAgIH1dO1xuICB9XG5cbiAgZ2V0SWNvbihzZWxlY3RlZExhbmcgOiBzdHJpbmcsIGxhbmd1YWdlIDogc3RyaW5nKXtcbiAgICBpZihsYW5ndWFnZSA9PSBzZWxlY3RlZExhbmcpe1xuICAgICAgcmV0dXJuIFwicGkgcGktZncgcGktY2hlY2tcIjtcbiAgICB9ZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzZXRMYW5ndWFnZShsYW5ndWFnZSA6IHN0cmluZywgbmFtZSA6IHN0cmluZyl7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5ndWFnZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmd1YWdlJywgbGFuZ3VhZ2UpO1xuICAgIHRoaXMudXRpbC50b2FzdCgnTGFuZ3VhZ2UgcHJlZmVyZW5jZSBjaGFuZ2VkIHRvICcgKyBuYW1lKTtcbiAgICB0aGlzLnNldE1lbnVJdGVtcyhsYW5ndWFnZSk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50TXlQcm9maWxlUG9wb3ZlcihldmVudCkge1xuXG4gICAgaWYodGhpcy5scy5pc0NsYWltYW50KCkgJiYgICh0aGlzLmxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyB8fCB0aGlzLnV0aWwuaXNTdGF0ZSgnTUUnKSB8fCAodGhpcy51dGlsLmlzU3RhdGUoJ01TJykgJiYgTGliQ29uc3RhbnRzLmludGVyaW1Ib21lUGFnZSA9PSAndHJ1ZScpKSl7XG4gICAgICB0aGlzLnNob3dQcm9maWxlUG9wdXAgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLnBvcHVwLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IE15UHJvZmlsZVBhZ2UsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNzc0NsYXNzOiAnaGVhZGVyLXBvcG92ZXInXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgcG9wb3Zlci5wcmVzZW50KCk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50TXlOb3RpZmljYXRpb25Qb3BvdmVyKGV2ZW50KSB7XG4gICAgY29uc3QgcG9wb3ZlciA9IGF3YWl0IHRoaXMucG9wdXAuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogTXlOb3RpZmljYXRpb25zUGFnZSxcbiAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgY3NzQ2xhc3M6ICdoZWFkZXItcG9wb3ZlcidcbiAgICB9KTtcblxuICAgIHBvcG92ZXIub25EaWREaXNtaXNzKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5zLnVwZGF0ZVJlYWRGbGFnKCk7XG4gICAgfSlcblxuICAgIHJldHVybiBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIGxvZ291dCgpe1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnL2xhbmRpbmcnKTtcbiAgICB0aGlzLmxzLmxvZ291dCgpO1xuICB9XG5cbiAgb3BlbldlZWtsaWVzKCl7XG4gICAgaWYodGhpcy5sZWdhY3lNZW51ID09ICd0cnVlJyAmJiB0aGlzLmlzTVMoKSAmJiB0aGlzLmludGVyaW1Ib21lUGFnZSA9PSAnZmFsc2UnKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2NwJywgJ3YyL3dlZWtsaWVzJylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuUGFnZSgnY3AnLCAndjMvd2Vla2xpZXMnKVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tEaXNwbGF5TG9nbygpXG4gIHtcbiAgICBpZih0aGlzLmNvbnRleHQ9PSdhdWRpdCcpe1xuIFx0ICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKCk7XG4gICAgdmFyIHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh7IHBhcmFtMTogXCJ0YXhBdWRpdFwifSk7XG4gICAgdmFyIGVuY1ZhbCA9IGJ0b2EodGVtcFZhbCk7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIDYwMDAwKTtcbiAgICBjb25zdCBkb21haW4gPSBcIi5kb2wuY3QuZ292XCJcbiAgICB2YXIgZXhwaXJlcyA9IFwiZXhwaXJlcz1cIiArIGRhdGUudG9VVENTdHJpbmcoKTtcbiAgICBkb2N1bWVudC5jb29raWUgPSBcInBhckFwVG9NPVwiICsgZW5jVmFsICsgXCI7cGF0aD0vO2V4cGlyZXM9XCIgKyBleHBpcmVzICsgXCI7ZG9tYWluPVwiICsgZG9tYWluICsgXCI7U2FtZVNpdGU9TGF4O1wiO1xuICAgIHdpbmRvdy5vcGVuKGAke0xpYkNvbnN0YW50cy50YXhVcmxFeHRlcm5hbH0vZmFjZXMvdmlydHVhbC9jb250ZXh0c3dpdGNoLnhodG1sP2E9JHt1c2VyTW9kZWwuYWNjZXNzX3Rva2VufSZ2PTIyOTkmVEFYQVVESVRfUE9SVEFMPXRydWVgLCAnX3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICAgb3BlbkF1ZGl0RGFzaGJvYXJkKCl7XG4gICAgaWYodGhpcy5jb250ZXh0PT0nYXVkaXQnKXtcbiAgICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvZGFzaGJvYXJkJyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvbXlxJyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy8nKTsgLy9BZGQgdGhlIGFjdHVhbCB1cmwgZm9yIGVtcGxveWVyIGF1ZGl0IGRhc2hib2FyZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW5BdWRpdG9yV29ya0xpc3QoKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLXdvcmstbGlzdCcpO1xuICB9XG5cbiAgIG9wZW5RdWVzdGlvbm5haXJlKCl7XG4gICAgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2F1ZGl0b3ItcXVlc3Rpb25uYWlyZScpO1xuICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzRW1wbG95ZXIoKSl7XG4gICAgICBpZih0aGlzLnNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhICYmIHRoaXMuc2VhcmNoUXVlc3Rpb25uYWlyZURhdGEubGVuZ3RoID4gMClcbiAgICAgIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFF1ZXN0aW9ubmFpcmVEYXRhID0gdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YTtcbiAgICAgICAgdGhpcy5xcy5zZXRRdWVzdGlvbm5haXJlRGF0YSh0aGlzLnNlbGVjdGVkUXVlc3Rpb25uYWlyZURhdGEpO1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2F1ZGl0b3ItcXVlc3Rpb25uYWlyZS1mb3JtJywge1xuICAgICAgICBzdGF0ZTogeyBhdWRpdDogdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSB9XG4gICAgICB9KTsvL0FkZCB0aGUgYWN0dWFsIHVybCBmb3IgZW1wbG95ZXIgcXVlc3Rpb25uYWlyZVxuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIk5vIGFjdGl2ZSBhdWRpdC4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYXQgdGhpcyBwb2ludC5cIilcbiAgICAgIH1cbiAgICAgIFxuICAgIH1cbiAgfVxuICBvcGVuVXBsb2FkRG9jdW1lbnRzKCl7XG5cbiAgICBpZih0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCAmJiB0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbC5hdWRpdElkICE9IG51bGwpXG4gICAge1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2VtcGxveWVyLWRvY3VtZW50cycsIHtcbiAgICAgICAgc3RhdGU6IHsgYXVkaXQ6IHRoaXMuYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNle1xuICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIk5vIGFjdGl2ZSBhdWRpdC4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYXQgdGhpcyBwb2ludC5cIilcbiAgICB9XG4gIH1cblxuICBvcGVuRW1wbG95ZXJEYXNoYm9hcmQoKVxuICB7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2VtcGxveWVyLWRhc2hib2FyZCcsIHtcbiAgICAgIH0pO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JNeVEoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpe1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvbXlxJyk7XG4gICAgfVxuICB9XG5cbiAgb3BlblN1cGVydmlzb3JJbnF1aXJ5KCl7XG4gICAgIGlmKHRoaXMuY29udGV4dD09J2F1ZGl0Jyl7XG4gICAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKXx8dGhpcy5scy5oYXNSb2xlKCd0YXhhdWRpdGFnZW5jeXN0YWZmJykpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9pbnF1aXJ5Jyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXVkaXRvci1pbnF1aXJ5Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvaW5xdWlyeScpO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JSZWZlcnJhbHMoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9yZWZlcnJhbHMnKTtcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IHRoaXMubHMuaXNUcGEoKSB8fCB0aGlzLmxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKSl7Ly9BZ2VuY3kgRW1wbG95ZWUgRGVmYXVsdCAtIGNoZWNrIHJvbGUgd2l0aCBjaWp1XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9uZXctcmVmZXJyYWwnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvckNvbmZpZygpe1xuICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2NvbmZpZycpO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JBbmFseXRpY3MoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hbmFseXRpY3MnKTtcbiAgICB9XG4gICAgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpICYmICEodGhpcy5scy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpKXsgXG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLWFuYWx5dGljcycpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TdXBlcnZpc29yQXNzaWduKCl7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXNzaWduJyk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvclRlYW0oKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy90ZWFtJyk7XG4gIH1cblxuXG4gIGxvYWRFbXBsb3llckRldGFpbHMoKVxuICB7XG4gICAgdGhpcy5pc0VtcGxveWVyTG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5pc1F1ZXN0aW9ubmFpcmVEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgbGV0IHVzZXJNb2RlbCA9IHRoaXMubHMuZ2V0VXNlcigpXG5cbiAgICB0aGlzLnFzLnNlYXJjaFF1ZXN0aW9ubmFpcmUobnVsbCwgbnVsbCwgbnVsbCx1c2VyTW9kZWwudXNlcm5hbWUpXG4gICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSA9IHJlcztcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNRdWVzdGlvbm5haXJlRGF0YUxvYWRlZCA9IHRydWVcbiAgICB9LCAoZXJyKSA9PiB7XG5cbiAgICB9KTtcblxuICAgIHRoaXMucXMuZmluZEVtcGxveWVyRGF0YVdpdGhVc2VySUQodXNlck1vZGVsLnVzZXJuYW1lKVxuICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcylcbiAgICAgIHtcbiAgICAgICAgdGhpcy5hdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwgPSByZXM7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRW1wbG95ZXJMb2FkZWQgPSB0cnVlOyBcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgIFxuICAgIH0pXG5cbiAgfVxuICBvcGVuSG9tZSgpe1xuICAgIC8vdGhpcy5uYXYubmF2aWdhdGVSb290KFwiL3dlbGNvbWVcIik7XG4gXHRpZih0aGlzLmNvbnRleHQ9PSdhdWRpdCcpe1xuICAgICAgICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKClcbiAgICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcbiAgICAgICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLnRheFVybEV4dGVybmFsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5YCwgJ19zZWxmJyk7XG4gICAgfVxuICAgIGlmKHRoaXMubHMuaXNDbGFpbWFudCgpKXtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGhpcy51dGlsLmdldENsYWltYW50QXBwQ29udGV4dFJvb3QoKSwgXCJ3ZWxjb21lXCIsIHRoaXMubmF2KTsgXG4gICAgfSBlbHNlIGlmKHRoaXMubHMuaXNDc3IoKSl7XG4gICAgICB0aGlzLnV0aWwub3BlblBhZ2VCeUNvbnRleHRSb290KHRoaXMudXRpbC5nZXRTZWN1cml0eUFwcENvbnRleHRSb290KCksXCJ3ZWxjb21lXCIsIHRoaXMubmF2KTsgXG4gICAgfSBlbHNlIGlmKHRoaXMubHMuaXNFbXBsb3llcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnLycpOy8vQWRkIHRoZSBhY3R1YWwgdXJsIGZvciBlbXBsb3llciBxdWVzdGlvbm5haXJlXG4gICAgICAvL3RoaXMubG9hZEVtcGxveWVyRGV0YWlscygpO1xuICAgIH0gXG4gICAgZWxzZSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCIvd2VsY29tZVwiKTtcbiAgICB9XG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudCkge1xuICAgIGxldCBkb1NlYXJjaCA9IGZhbHNlO1xuICAgIGxldCBjbGFpbWFudFNlYXJjaCA9IG5ldyBDbGFpbWFudE1vZGVsKCk7XG4gICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnkgKyAnJztcbiAgICBpZihxdWVyeS5pbmNsdWRlcyhcIiBcIikpe1xuICAgICAgbGV0IGZOYW1lID0gcXVlcnkuc3BsaXQoXCIgXCIpWzBdO1xuICAgICAgbGV0IGxOYW1lID0gcXVlcnkuc3BsaXQoXCIgXCIpWzFdO1xuICAgICAgY2xhaW1hbnRTZWFyY2guZmlyc3ROYW1lID0gZk5hbWU7XG4gICAgICBjbGFpbWFudFNlYXJjaC5sYXN0TmFtZSA9IGxOYW1lO1xuICAgICAgZG9TZWFyY2ggPSB0cnVlO1xuICAgIH1cblxuICAgIGlmKHF1ZXJ5Lmxlbmd0aCA9PSA5ICYmIHRoaXMuaXNOdW1iZXIocXVlcnkpICYmICFkb1NlYXJjaCl7XG4gICAgICBjbGFpbWFudFNlYXJjaC5zc24gPSBxdWVyeTtcbiAgICAgIGRvU2VhcmNoID0gdHJ1ZTtcbiAgICB9ZWxzZSBpZighdGhpcy5pc051bWJlcihxdWVyeSkgJiYgIWRvU2VhcmNoKXtcbiAgICAgIGNsYWltYW50U2VhcmNoLnVzZXJJZCA9IHF1ZXJ5O1xuICAgICAgZG9TZWFyY2ggPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBpZihkb1NlYXJjaCl7XG4gICAgICB0aGlzLmNzLnNlYXJjaChjbGFpbWFudFNlYXJjaCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHRoaXMucmVzdWx0cyA9IGRhdGE7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTnVtYmVyKG51bSl7XG4gICAgcmV0dXJuICFpc05hTihudW0pO1xuICB9XG5cbiAgb25TZWxlY3RBY3Rpb24oZXZlbnQgOiBBdXRvQ29tcGxldGVTZWxlY3RFdmVudCl7XG4gICAgdGhpcy5yZXN1bHRzID0gbnVsbDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBudWxsO1xuICAgIHRoaXMuY3MuZ2V0Q2xhaW1hbnQoKS5uZXh0KGV2ZW50LnZhbHVlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGhpcy51dGlsLmdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSxcInJlc2V0LXBhc3N3b3JkXCIsIHRoaXMubmF2KTtcbiAgICAgIC8vdGhpcy5uYXYubmF2aWdhdGVGb3J3YXJkKCcvcmVzZXQtcGFzc3dvcmQnKTtcbiAgICB9LCA1MDApXG4gICAgXG4gIH1cblxuICBvcGVuQmVuZWZpdHNBcHAoKXtcbiAgICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKClcbiAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xuICAgIHdpbmRvdy5vcGVuKGAke0xpYkNvbnN0YW50cy5iZW5lZml0c1VybEV4dGVybmFsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5YCwgJ19zZWxmJyk7XG4gIH1cblxuICBvcGVuUGFnZShjb250ZXh0Um9vdCwgdXJpLCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKXtcbiAgICBsZXQgY3VycmVudENvbnRleHRSb290ID0gdGhpcy51dGlsLmdldENvbnRleHRSb290KCk7XG4gICAgbGV0IHRhcmdldCA9IGAvJHtjb250ZXh0Um9vdH1gO1xuXG4gICAgaWYoY3VycmVudENvbnRleHRSb290ID09IHRhcmdldCl7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoYC8ke3VyaX1gLCBleHRyYXMpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdCh0YXJnZXQsIHVyaSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3MobmFtZSl7XG4gICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMuci51cmwucmVwbGFjZSgnLycsICcnKTtcbiAgICBjb25zb2xlLmxvZyhjdXJyZW50Um91dGUsIG5hbWUsIGN1cnJlbnRSb3V0ZSA9PSBuYW1lKTtcbiAgICByZXR1cm4gY3VycmVudFJvdXRlID09IG5hbWUgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJztcbiAgfVxuXG4gIG9wZW5Db250ZXh0SGVscCgpe1xuXG4gIH1cblxuICBhc3luYyBjaGFuZ2VMYW5ndWFnZShldmVudCkge1xuICAgIFxuICB9XG59XG4iLCI8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwidXRpbC5sb2FkZXIudmFsdWUkIHwgYXN5bmNcIiAqbmdJZj1cIih1dGlsLmxvYWRlci52YWx1ZSQgfCBhc3luYykgIT0gMFwiPlxyXG48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjxpb24tdG9vbGJhcj5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtNXB4O1wiPlxyXG4gICAgICAgIDxpb24tbWVudS1idXR0b24gYXV0b0hpZGU9XCJmYWxzZVwiIHBUb29sdGlwPVwiTWVudVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwibHMuaXNMb2dnZWRJbigpICYmICFscy5pc0VtcGxveWVyKClcIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteGwgaGlkZS1sZycgOiAnJ1wiPjwvaW9uLW1lbnUtYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiBbbmdDbGFzc109XCJkaXNwbGF5TG9nbyA/ICdoZWFkZXJfYnV0dG9uX3doaXRlJyA6ICdoZWFkZXJfYnV0dG9uIGhpZGUteHMgaGlkZS1tZCdcIiAoY2xpY2spPVwib25DbGlja0Rpc3BsYXlMb2dvKClcIj5cclxuICAgICAgICA8aW1nIGFsdD1cImxvZ29cIiBwVG9vbHRpcD1cInt7J1JlRW1wbG95TVMgTG9nbycgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgIHNyYz1cImFzc2V0cy9pY29uL1JlRW1wbG95e3t1dGlsLmdldFN0YXRlKCl9fS5zdmdcIiBbbmdDbGFzc109XCJkaXNwbGF5TG9nbyA/ICdoZWFkZXJfbG9nbycgOiAnaGVhZGVyX2xvZ28gaGlkZS14cyBoaWRlLW1kJ1wiLz5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJscy5pc0xvZ2dlZEluKClcIj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkhvbWUoKVwiIHBUb29sdGlwPVwiSG9tZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlbGNvbWUnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQhPSdhdWRpdCcgfHwgbHMuaXNFbXBsb3llcigpXCI+SG9tZTwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5GaWxlV2Vla2xpZXNcIiBwVG9vbHRpcD1cInt7J2hlYWRlci53ZWVrbHkudG9vbHRpcCcgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlZWtsaWVzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJ1wiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiIGNsYXNzPVwiaGlkZS14cyBoaWRlLW1kXCI+e3tsZWdhY3lNZW51ID09ICd0cnVlJyA/ICdXZWVrbHknIDogJ1dlZWtseSd9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkZpbGVXZWVrbGllc1wiIHBUb29sdGlwPVwie3snaGVhZGVyLndlZWtseS50b29sdGlwJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2Vla2xpZXMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAndHJ1ZScgJiYgIXV0aWwuaXNTdGF0ZSgnTUUnKVwiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiPnt7bGVnYWN5TWVudSA9PSAndHJ1ZScgPyAnV2Vla2x5JyA6ICdXZWVrbHknfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5GaWxlV2Vla2xpZXNcIiBwVG9vbHRpcD1cInt7J2hlYWRlci53ZWVrbHkudG9vbHRpcCcgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlZWtsaWVzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ3RydWUnICYmIHV0aWwuaXNTdGF0ZSgnTUUnKVwiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiPnt7bGVnYWN5TWVudSA9PSAndHJ1ZScgPyAnV2Vla2x5IENsYWltJyA6ICdXZWVrbHknfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICA8aW9uLWJ1dHRvbiBwVG9vbHRpcD1cIkhpc3RvcnlcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpID09ICdoaXN0b3J5JyA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGludGVyaW1Ib21lUGFnZSA9PSAnZmFsc2UnXCIgKGNsaWNrKT1cIm9wZW5QYWdlKCdjcCcsICdoaXN0b3J5JylcIiBjbGFzcz1cImhpZGUteHMgaGlkZS1tZFwiPkhpc3Rvcnk8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRFbXBsb3llckRhc2hib2FyZFwiIHBUb29sdGlwPVwiRW1wbG95ZXJEYXNoYm9hcmRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdlbXBsb3llci1kYXNoYm9hcmQnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0VtcGxveWVyKClcIiAoY2xpY2spPVwib3BlbkVtcGxveWVyRGFzaGJvYXJkKClcIj5BdWRpdCBEYXNoYm9hcmQ8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdE15UVwiIHBUb29sdGlwPVwiTXlRXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnbXlxJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yTXlRKClcIj5NeVE8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdERhc2hib2FyZFwiIHBUb29sdGlwPVwiRGFzaGJvYXJkXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnZGFzaGJvYXJkJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5BdWRpdERhc2hib2FyZCgpXCI+RGFzaGJvYXJkPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRXb3JrTGlzdFwiIHBUb29sdGlwPVwiV29ya0xpc3RcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhdWRpdG9yLXdvcmstbGlzdCcpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc1RheEF1ZGl0QXVkaXRvcigpXCIgKGNsaWNrKT1cIm9wZW5BdWRpdG9yV29ya0xpc3QoKVwiPldvcmsgTGlzdDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0SW5xdWlyeVwiIHBUb29sdGlwPVwiSW5xdWlyeVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2lucXVpcnknKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSkgfHwgIGxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvcklucXVpcnkoKVwiPklucXVpcnk8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFVwbG9hZERvY3VtZW50c1wiIHBUb29sdGlwPVwiVXBsb2FkIERvY3VtZW50c1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3VwbG9hZC1kb2N1bWVudHMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNFbXBsb3llcigpXCIgKGNsaWNrKT1cIm9wZW5VcGxvYWREb2N1bWVudHMoKVwiIFtkaXNhYmxlZF09XCIhaXNFbXBsb3llckxvYWRlZFwiPlVwbG9hZCBEb2N1bWVudHM8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFF1ZXN0aW9ubmFpcmVcIiBwVG9vbHRpcD1cIlF1ZXN0aW9ubmFpcmVcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhdWRpdG9yLXF1ZXN0aW9ubmFpcmUnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5RdWVzdGlvbm5haXJlKClcIj5RdWVzdGlvbm5haXJlPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRRdWVzdGlvbm5haXJlXCIgcFRvb2x0aXA9XCJRdWVzdGlvbm5haXJlXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYXVkaXRvci1xdWVzdGlvbm5haXJlJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc0VtcGxveWVyKCkpXCIgKGNsaWNrKT1cIm9wZW5RdWVzdGlvbm5haXJlKClcIiBbZGlzYWJsZWRdPVwiIWlzUXVlc3Rpb25uYWlyZURhdGFMb2FkZWRcIj5RdWVzdGlvbm5haXJlPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRSZWZlcnJhbHNcIiBwVG9vbHRpcD1cIlJlZmVycmFsc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3JlZmVycmFscycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCBscy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKSB8fCAgbHMuaGFzUm9sZSgndGF4YXVkaXRhZ2VuY3lzdGFmZicpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yUmVmZXJyYWxzKClcIj5SZWZlcnJhbHM8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdEFzc2lnblwiIHBUb29sdGlwPVwiQXNzaWduXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYXNzaWduJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKClcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JBc3NpZ24oKVwiPkFzc2lnbjwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0VGVhbVwiIHBUb29sdGlwPVwiVGVhbVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3RlYW0nKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvclRlYW0oKVwiPlRlYW08L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdENvbmZpZ1wiIHBUb29sdGlwPVwiQ29uZmlnXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnY29uZmlnJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvckNvbmZpZygpXCI+Q29uZmlnPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRBbmFseXRpY3NcIiBwVG9vbHRpcD1cIkFuYWx5dGljc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2FuYWx5dGljcycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCBscy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvckFuYWx5dGljcygpXCI+QW5hbHl0aWNzPC9pb24tYnV0dG9uPlxyXG5cclxuXHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xiYXItY29udGVudCBoaWRlLXhzXCIgKm5nSWY9XCJscy5pc0xvZ2dlZEluKCkgJiYgbHMuaXNDc3IoKSAmJiB0aGlzLmNvbnRleHQgIT0nYXVkaXQnICYmIGNvbnRleHRSb290ID09PSdzcydcIj5cclxuICAgICAgICA8cC1hdXRvQ29tcGxldGUgYXBwZW5kVG89XCJib2R5XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgW3N1Z2dlc3Rpb25zXT1cInJlc3VsdHNcIlxyXG4gICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoKCRldmVudClcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBDbGFpbWFudHNcIiAob25TZWxlY3QpPVwib25TZWxlY3RBY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIk5vIFJlc3VsdHMgRm91bmQuXCIgc2l6ZT1cIjI1XCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdXNlciBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cIi5pb24td3JhcFwiID5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplLWF1dG8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD57e3VzZXIuZmlyc3ROYW1lIHwgcHJvcGVyQ2FzZX19IHt7dXNlci5sYXN0TmFtZSB8IHByb3BlckNhc2V9fTwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemUtYXV0bz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0Pnt7dXNlci51c2VySWR9fTwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemUtYXV0bz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0Pnt7dXRpbC5tYXNrU3NuKHVzZXIuc3NuKX19PC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIiAqbmdJZj1cImxzLmlzTG9nZ2VkSW4oKVwiID5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicHJlc2VudE15UHJvZmlsZVBvcG92ZXIoJGV2ZW50KVwiIHBUb29sdGlwPVwiQWNjb3VudFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cImxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiBscy5pc0NsYWltYW50KCkgJiYgc2hvd1Byb2ZpbGVQb3B1cCA/ICdoaWRlLXhzIGhpZGUtbWQgaGVhZGVyLWJ1dHRvbicgOiAobGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSA/ICdoaWRlLXhzIGhpZGUtbWQnIDogJycpXCI+XHJcbiAgICAgICAgICAgIDxpb24tdGl0bGUgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7IHBhZGRpbmc6IDBweDtcIiBjbGFzcz1cImhpZGUteHNcIj57e2xzLmdldEZ1bGxOYW1lKCkgfCBwcm9wZXJDYXNlfX08L2lvbi10aXRsZT5cclxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwicGVyc29uLWNpcmNsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5QYWdlKCdjcCcsICdkb2N1bWVudHMnKVwiIHBUb29sdGlwPVwiTm90aWNlc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICpuZ0lmPVwiIWxzLmlzQ3NyKCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnICYmICF1dGlsLmlzU3RhdGUoJ01FJylcIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpID09ICdkb2N1bWVudHMnID8gJ2hlYWRlci1idXR0b24gaGlkZS14cyBoaWRlLW1kJyA6ICdoaWRlLXhzIGhpZGUtbWQnXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPSdwaSBwaS1maWxlIGZvbnQtYm9sZCcgc3R5bGU9XCJmb250LXNpemU6IDEuM3JlbTsgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcIj48L2k+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvcGVuUGFnZSgnY3AnLCAnZG9jdW1lbnRzJylcIiBwVG9vbHRpcD1cIk5vdGljZXNcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiAqbmdJZj1cIiFscy5pc0NzcigpICYmIGxlZ2FjeU1lbnUgPT0gJ3RydWUnXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG9jdW1lbnQtdGV4dC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIDwhLS0gPGlvbi1idXR0b24gKGNsaWNrKT1cInByZXNlbnRKb2JTZWFyY2hSZXN1bHRQb3B1cCgpXCIgcFRvb2x0aXA9XCJTaG93IGpvYiBzZWFyY2ggcmVzdWx0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwibGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSA/ICdoaWRlLXhzIGhpZGUtbWQnIDogJydcIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgdXRpbC5pc1N0YXRlKCdNUycpXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYnJpZWZjYXNlXCIgZmlsbD1cIm91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj4gLS0+XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInByZXNlbnRNeU5vdGlmaWNhdGlvblBvcG92ZXIoJGV2ZW50KVwiIHBUb29sdGlwPVwiTm90aWZpY2F0aW9uXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhbnMuc2hvd05vdGlmaWNhdGlvbkxvYWRlciAmJiAhdXRpbC5pc1N0YXRlKCdNRScpXCIgW25nQ2xhc3NdPVwibGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSA/ICdoaWRlLXhzIGhpZGUtbWQnIDogJydcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJub3RpZmljYXRpb25zLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICA8aW9uLWJhZGdlIGNvbG9yPVwiZGFya1wiICpuZ0lmPVwibnMubm90aWZpY2F0aW9uQ291bnQuZ2V0VmFsdWUoKSA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3tucy5ub3RpZmljYXRpb25Db3VudC5nZXRWYWx1ZSgpfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgPC9pb24tYmFkZ2U+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAqbmdJZj1cIm5zLnNob3dOb3RpZmljYXRpb25Mb2FkZXJcIj48L2lvbi1zcGlubmVyPlxyXG5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwidGhpcy5ocy5zaG93KClcIiBwVG9vbHRpcD1cIkhlbHBcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgKGhzLnNob3VsZERpc3BsYXlIZWxwQnV0dG9uKCkgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJoZWxwLWNpcmNsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic2Vjb25kYXJ5XCIgKm5nSWY9XCIhbHMuaXNMb2dnZWRJbigpICYmIGxzLmdldFVzZXIoKVwiPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJsb2dvdXQoKVwiIHBUb29sdGlwPVwiTG9nb3V0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibG9nLW91dC1zaGFycFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuXHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiICpuZ0lmPVwic2hvd0xhbmd1YWdlT3B0aW9uID09PSAndHJ1ZScgJiYgKCFscy5nZXRVc2VyKCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnKVwiPlxyXG4gICAgICAgIDxwLW1lbnUgI21lbnUgW3BvcHVwXT1cInRydWVcIiBbbW9kZWxdPVwiaXRlbXNcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KVwiIHBUb29sdGlwPVwiTGFuZ3VhZ2VcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibGFuZ3VhZ2VcIiBzbG90PVwiZW5kXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG48L2lvbi10b29sYmFyPlxyXG48aW9uLXRvb2xiYXIgY29sb3I9XCJsaWdodFwiIGlkPVwic2Vjb25kVG9vbGJhclwiICpuZ0lmPVwic2Vjb25kVG9vbGJhclwiPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxyXG4gICAgICAgIDxpb24tYmFjay1idXR0b24gcFRvb2x0aXA9XCJCYWNrXCIgYWx0PVwiQmFja1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtkZWZhdWx0SHJlZl09XCJiYWNrUGFnZSA/IGJhY2tQYWdlIDogJy93ZWxjb21lJ1wiPjwvaW9uLWJhY2stYnV0dG9uPlxyXG4gICAgICAgIDxpb24tdGl0bGUgY29sb3I9XCJwcmltYXJ5XCIgKm5nSWY9XCJ0aXRsZVwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4XCI+e3t0aXRsZX19PC9pb24tdGl0bGU+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cclxuICAgICAgICA8aW9uLXRpdGxlIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiB4eC1zbWFsbDsgZmxvYXQ6IHJpZ2h0OyBwYWRkaW5nLXJpZ2h0OiA4cHg7XCIgKm5nSWY9XCJwYWdlSWRcIj5cclxuICAgICAgICAgICAge3twYWdlSWR9fTwvaW9uLXRpdGxlPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuPC9pb24tdG9vbGJhcj5cclxuPHAtdG9hc3Q+XHJcbiAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxyXG4gICAgICAgIDxpICpuZ0lmPVwibWVzc2FnZS5zZXZlcml0eSA9PT0gJ2Vycm9yJ1wiIGNsYXNzPVwicGkgcGktdGltZXMtY2lyY2xlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnc3VjY2VzcydcIiBjbGFzcz1cInBpIHBpLWNoZWNrLWNpcmNsZVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxNHB4OyBmb250LXNpemU6IDM4cHggXCI+PC9pPlxyXG4gICAgICAgIDxpICpuZ0lmPVwibWVzc2FnZS5zZXZlcml0eSA9PT0gJ3dhcm4nXCIgY2xhc3M9XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGVcInN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxNHB4OyBmb250LXNpemU6IDM4cHggXCI+PC9pPlxyXG4gICAgICAgIDxpICpuZ0lmPVwibWVzc2FnZS5zZXZlcml0eSA9PT0gJ2luZm8nXCIgY2xhc3M9XCJwaSBwaS1pbmZvLWNpcmNsZVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxNHB4OyBmb250LXNpemU6IDM4cHggXCI+PC9pPlxyXG5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiJzxzdHJvbmcgc3R5bGU9XFwnZm9udC1zaXplOiAyMnB4O2ZvbnQtd2VpZ2h0OiBib2xkO1xcJz4nICsgbWVzc2FnZS5zdW1tYXJ5ICsgJzwvc3Ryb25nPjxicj48YnI+JyArIFxyXG4gICAgICAgICAgICAnPHNwYW4gc3R5bGU9XFwnZm9udC1zaXplOiAxOHB4O1xcJz4nICsgbWVzc2FnZS5kZXRhaWwgKyAnPC9zcGFuPidcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtdG9hc3Q+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1Byb2ZpbGVQb3B1cFwiPlxyXG4gICAgPGFwcC1wcm9maWxlICpuZ0lmPVwic2hvd1Byb2ZpbGVQb3B1cFwiIChvbkNhbmNlbCk9XCJzaG93UHJvZmlsZVBvcHVwID0gIXNob3dQcm9maWxlUG9wdXBcIj48L2FwcC1wcm9maWxlPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxhcHAtam9iLXNlYXJjaC1yZXN1bHQtcGFnZSAqbmdJZj1cInNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cFwiIChvbkNhbmNlbCk9XCJzaG93am9iU2VhcmNoUmVzdWx0UG9wdXAgPSAhc2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwXCI+PC9hcHAtam9iLXNlYXJjaC1yZXN1bHQtcGFnZT5cclxuXHJcblxyXG5cclxuIl19
@@ -83,7 +83,11 @@ export class LoginService {
83
83
  }
84
84
  }
85
85
  getFullName() {
86
- return this.getUser().firstName + (this.getUser().middleName != null ? ' ' + this.getUser().middleName : '') + ' ' + this.getUser().lastName;
86
+ const mid = this.getUser().middleName;
87
+ const last = this.getUser().lastName;
88
+ return this.getUser().firstName
89
+ + (mid != null && mid !== 'null' && mid !== '' ? ' ' + mid : '')
90
+ + (last != null && last !== 'null' && last !== '' ? ' ' + last : '');
87
91
  }
88
92
  getIsUserProfileComplete() {
89
93
  return this.getUser().userProfileComplete;
@@ -355,4 +359,4 @@ export class LoginService {
355
359
  providedIn: 'root'
356
360
  }]
357
361
  }], () => [{ type: i1.UtilService }, { type: i2.Storage }, { type: i3.ClaimantContextService }], null); })();
358
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBU25ELE1BQU0sT0FBTyxZQUFZO0lBWXZCLFdBQVcsQ0FBQyxRQUFpQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFlO1FBQzNCLElBQUcsR0FBRyxFQUFDO1lBQ0wsSUFBSSxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxR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QUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWE7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBWTtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQ0FBaUMsQ0FBQyxNQUFlO1FBQy9DLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFjLFlBQVksTUFBTSxFQUFFLENBQUM7aUJBQzNDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQzs2RUExWlUsWUFBWTt1RUFBWixZQUFZLFdBQVosWUFBWSxtQkFGWCxNQUFNOztpRkFFUCxZQUFZO2NBSHhCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IE90cEF1dGhNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9PdHBBdXRoTW9kZWwnO1xuaW1wb3J0IHsgVXNlckRldGFpbHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Vc2VyRGV0YWlsc01vZGVsJztcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Vc2VyTW9kZWwnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnQGlvbmljL3N0b3JhZ2UtYW5ndWxhcic7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IENsYWltYW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1jb250ZXh0L2NsYWltYW50LWNvbnRleHQuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luU2VydmljZSB7XG5cbiAgb3B0aW9ucyA9IHt9O1xuXG4gIHByaXZhdGUgdXNlckJzIDogQmVoYXZpb3JTdWJqZWN0PFVzZXJNb2RlbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBwcml2YXRlIHVzZXJJZEluVW5pdEJzIDogQmVoYXZpb3JTdWJqZWN0PFVzZXJNb2RlbFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHByaXZhdGUgbWVudUJzIDogQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBwcml2YXRlIHVzZXIgOiBVc2VyTW9kZWw7XG5cbiAgcHJpdmF0ZSBhdXRoQ29kZSA6IHN0cmluZztcblxuICBzZXRBdXRoQ29kZShhdXRoY29kZSA6IHN0cmluZyl7XG4gICAgdGhpcy5hdXRoQ29kZSA9IGF1dGhjb2RlO1xuICB9XG5cbiAgZ2V0QXV0aGNvZGUoKXtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29kZTtcbiAgfVxuXG4gIGdldFVzZXIoKSA6IFVzZXJNb2RlbHtcbiAgICByZXR1cm4gdGhpcy51c2VyQnMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldFVzZXJCcygpIDogQmVoYXZpb3JTdWJqZWN0PFVzZXJNb2RlbD57XG4gICAgcmV0dXJuIHRoaXMudXNlckJzO1xuICB9XG5cbiAgZ2V0TWVudUJzKCkgOiBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT57XG4gICAgcmV0dXJuIHRoaXMubWVudUJzO1xuICB9XG5cbiAgYXN5bmMgc2V0VXNlcihyZXMgOiBVc2VyTW9kZWwpe1xuICAgIGlmKHJlcyl7XG4gICAgICBsZXQgdXNlciA9IG5ldyBVc2VyTW9kZWwoKTtcbiAgICAgIHVzZXIuZmlyc3ROYW1lID0gcmVzLmZpcnN0TmFtZTtcbiAgICAgIHVzZXIubGFzdE5hbWUgPSByZXMubGFzdE5hbWU7XG4gICAgICB1c2VyLnVzZXJuYW1lID0gcmVzWyd1c2VyX25hbWUnXTtcbiAgICAgIHVzZXIubWlkZGxlTmFtZSA9IHJlcy5taWRkbGVOYW1lO1xuICAgICAgdXNlci5pc0FjdGl2ZSA9IHJlcy5pc0FjdGl2ZVxuICAgICAgdXNlci5yb2xlcyA9IHJlcy5yb2xlcztcbiAgICAgIHVzZXIuZnVuY3Rpb25zID0gcmVzLmZ1bmN0aW9ucztcbiAgICAgIHVzZXIuZG9iID0gcmVzLmRvYjtcbiAgICAgIHVzZXIudXNlclR5cGUgPSByZXMudXNlclR5cGU7XG4gICAgICB1c2VyLmdlbmRlciA9IHJlcy5nZW5kZXI7XG4gICAgICB1c2VyLmVtYWlsSWQ9cmVzLmVtYWlsSWQ7XG4gICAgICB1c2VyLnBhc3N3b3JkRXhwaXJhdGlvbkRhdGUgPSByZXMucGFzc3dvcmRFeHBpcmF0aW9uRGF0ZTtcbiAgICAgIHVzZXIuZW1haWxTdGF0dXMgPSByZXMuZW1haWxTdGF0dXM7XG4gICAgICB1c2VyLmlzTG9nZ2VkSW4gPSByZXMuaXNMb2dnZWRJbjtcbiAgICAgIHVzZXIuY2hhbmdlUHdkID0gcmVzLmNoYW5nZVB3ZDtcbiAgICAgIHVzZXIuZXhwaXJhdGlvbiA9IHJlcy5leHBpcmF0aW9uO1xuICAgICAgdXNlci5leHBpcmVzX2luID0gcmVzLmV4cGlyZXNfaW47XG4gICAgICB1c2VyLnNzbiA9IHJlcy5zc247XG4gICAgICB1c2VyLmNsYWltYW50SWQgPSByZXMuY2xhaW1hbnRJZDtcbiAgICAgIHVzZXIuZW1wbG95ZXJJZCA9IHJlcy5lbXBsb3llcklkO1xuICAgICAgdXNlci5jb29raWVOYW1lID0gcmVzLmNvb2tpZU5hbWU7XG4gICAgICB1c2VyLmNvb2tpZVZhbHVlID0gcmVzLmNvb2tpZVZhbHVlO1xuICAgICAgdXNlci51c2VyVW5pdCA9IHJlcy51c2VyVW5pdDtcbiAgICAgIHVzZXIuZG9tYWluTmFtZSA9IHJlcy5kb21haW5OYW1lO1xuICAgICAgdXNlci5pczJGQVJlcXVpcmVkID0gcmVzLmlzMkZBUmVxdWlyZWQ7XG4gICAgICB1c2VyLmRheXNUaWxsUGFzc3dvcmRFeHBpcmUgPSByZXMuZGF5c1RpbGxQYXNzd29yZEV4cGlyZTtcbiAgICAgIHVzZXIuaXNFbWFpbFZlcmlmaWNhdGlvblJlcXVpcmVkID0gcmVzLmlzRW1haWxWZXJpZmljYXRpb25SZXF1aXJlZDtcbiAgICAgIHVzZXIuY2VsbHBob25lTm8gPSByZXMuY2VsbHBob25lTm87XG4gICAgICB1c2VyLmNlbGxwaG9uZVN0YXR1cyA9IHJlcy5jZWxscGhvbmVTdGF0dXM7XG4gICAgICB1c2VyLnN1cHBvcnRlZE1mYVR5cGVzID0gcmVzLnN1cHBvcnRlZE1mYVR5cGVzO1xuICAgICAgaWYocmVzLmFjY2Vzc190b2tlbiAmJiByZXMucmVmcmVzaF90b2tlbil7XG4gICAgICAgIHVzZXIuYWNjZXNzX3Rva2VuID0gcmVzLmFjY2Vzc190b2tlbjtcbiAgICAgICAgdXNlci5yZWZyZXNoX3Rva2VuID0gcmVzLnJlZnJlc2hfdG9rZW47XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ2FjY2Vzc190b2tlbicsIHJlcy5hY2Nlc3NfdG9rZW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCdyZWZyZXNoX3Rva2VuJywgcmVzLnJlZnJlc2hfdG9rZW4pO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHVzZXIuYWNjZXNzX3Rva2VuID0gdGhpcy51c2VyLmFjY2Vzc190b2tlbjtcbiAgICAgICAgdXNlci5yZWZyZXNoX3Rva2VuID0gdGhpcy51c2VyLnJlZnJlc2hfdG9rZW47XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ2FjY2Vzc190b2tlbicsIHRoaXMudXNlci5hY2Nlc3NfdG9rZW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCdyZWZyZXNoX3Rva2VuJywgdGhpcy51c2VyLnJlZnJlc2hfdG9rZW4pO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldCgndXNlcm5hbWUnLCBidG9hKHVzZXIudXNlcm5hbWUpKTtcbiAgICAgIGxldCBzaG93X2Rpc2Nsb3N1cmUgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KCdzaG93X2Rpc2Nsb3N1cmUnKTtcbiAgICAgIGlmKHNob3dfZGlzY2xvc3VyZSA9PSBudWxsIHx8IHNob3dfZGlzY2xvc3VyZSA9PSB1bmRlZmluZWQgfHwgc2hvd19kaXNjbG9zdXJlICE9ICdmYWxzZScpe1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCdzaG93X2Rpc2Nsb3N1cmUnLCAndHJ1ZScpO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAgIHRoaXMudXNlckJzLm5leHQodGhpcy51c2VyKTtcbiAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdtcycpKXtcbiAgICAgICAgaWYoIXVzZXIuaXMyRkFSZXF1aXJlZCl7XG4gICAgICAgICAgdGhpcy5jcmVhdGVDb29raWUoTGliQ29uc3RhbnRzLnNzb0Nvb2tpZU5hbWUsIGBcIiR7dXNlci5jb29raWVWYWx1ZX1cImAsIHVzZXIuZXhwaXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpe1xuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKS5maXJzdE5hbWUgKyAodGhpcy5nZXRVc2VyKCkubWlkZGxlTmFtZSAhPSBudWxsID8gJyAnICsgdGhpcy5nZXRVc2VyKCkubWlkZGxlTmFtZSA6ICcnKSArICcgJyArIHRoaXMuZ2V0VXNlcigpLmxhc3ROYW1lO1xuICB9XG5cbiAgZ2V0SXNVc2VyUHJvZmlsZUNvbXBsZXRlKCl7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkudXNlclByb2ZpbGVDb21wbGV0ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsIDogVXRpbFNlcnZpY2UsIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSwgcHJpdmF0ZSBjbGFpbWFudENvbnRleHRTZXJ2aWNlIDogQ2xhaW1hbnRDb250ZXh0U2VydmljZSkgeyBcbiAgICBcbiAgfVxuXG4gIGdldFVzZXJQZXJzb25hbERldGFpbHMoKSA6IE9ic2VydmFibGU8VXNlckRldGFpbHNNb2RlbD57XG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQ8VXNlckRldGFpbHNNb2RlbD4oJ3VzZXIvZGV0YWlscy8nICsgdGhpcy51c2VyLnVzZXJuYW1lKTtcbiAgfVxuXG4gIGdlbmVyYXRlT3RwKHVzZXJJZCA6IHN0cmluZywgdHlwZSA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoYHVzZXIvdjIvb3RwLyR7dXNlcklkfT90eXBlPSR7dHlwZX1gKTtcbiAgfVxuXG4gIGxvZ2luKGF1dGggOiBPdHBBdXRoTW9kZWwpe1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgIC8vXCJBY2NlcHRcIiA6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJcbiAgICB9KTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcblxuICAgIGxldCBhdXRoRGF0YSA6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgYXV0aERhdGEuc2V0KCdncmFudF90eXBlJywgJ3Bhc3N3b3JkJyk7XG4gICAgYXV0aERhdGEuc2V0KCd1c2VybmFtZScsIGF1dGgudXNlcklkKTtcbiAgICBhdXRoRGF0YS5zZXQoJ3Bhc3N3b3JkJywgYXV0aC5wYXNzd29yZCk7XG5cbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3RGb3JtRGF0YTxVc2VyTW9kZWw+KCdvYXV0aC90b2tlbicsIGF1dGhEYXRhLHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBsb2dpbkFuZENoZWNrRm9yTUZBKGF1dGggOiBPdHBBdXRoTW9kZWwpe1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgIC8vXCJBY2NlcHRcIiA6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJcbiAgICB9KTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcblxuICAgIGxldCBhdXRoRGF0YSA6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgYXV0aERhdGEuc2V0KCdncmFudF90eXBlJywgJ21mYScpO1xuICAgIGF1dGhEYXRhLnNldCgndXNlcm5hbWUnLCBhdXRoLnVzZXJJZCk7XG4gICAgYXV0aERhdGEuc2V0KCdwYXNzd29yZCcsIGF1dGgucGFzc3dvcmQpO1xuICAgIGlmKGF1dGgub3RwKXtcbiAgICAgIGF1dGhEYXRhLnNldCgnbWZhX2NvZGUnLCBhdXRoLm90cCk7XG4gICAgICBhdXRoRGF0YS5zZXQoJ2lzX3RydXN0ZWRfZGV2aWNlJywgYXV0aC5pc3RydXN0ZWREZXZpY2UpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdEZvcm1EYXRhPFVzZXJNb2RlbD4oJ29hdXRoL3Rva2VuJywgYXV0aERhdGEsdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4pe1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgIFwiQWNjZXB0XCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgYCArIGJ0b2EoYCR7TGliQ29uc3RhbnRzLm9hdXRoQ2xpZW50VXNlcn06JHtMaWJDb25zdGFudHMub2F1dGhDbGllbnRTZWNyZXR9YClcbiAgICB9KTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcblxuICAgIGxldCBhdXRoRGF0YSA6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgYXV0aERhdGEuc2V0KCdncmFudF90eXBlJywgJ3JlZnJlc2hfdG9rZW4nKTtcbiAgICBhdXRoRGF0YS5zZXQoJ2NsaWVudF9pZCcsIExpYkNvbnN0YW50cy5vYXV0aENsaWVudFVzZXIpO1xuICAgIGF1dGhEYXRhLnNldCgncmVmcmVzaF90b2tlbicsIHJlZnJlc2hUb2tlbik7XG5cbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3RGb3JtRGF0YTxVc2VyTW9kZWw+KGBvYXV0aC90b2tlbmAsIGF1dGhEYXRhLCB0aGlzLm9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuV2luZ3MocmVmcmVzaFRva2VuKXtcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICBcIkFjY2VwdFwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIixcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJhc2ljIGAgKyBidG9hKGAke0xpYkNvbnN0YW50cy5vYXV0aFdpbmdzQ2xpZW50VXNlcn06JHtMaWJDb25zdGFudHMub2F1dGhXaW5nc0NsaWVudFNlY3JldH1gKVxuICAgIH0pO1xuICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xuXG4gICAgbGV0IGF1dGhEYXRhIDogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBhdXRoRGF0YS5zZXQoJ2dyYW50X3R5cGUnLCAncmVmcmVzaF90b2tlbicpO1xuICAgIGF1dGhEYXRhLnNldCgnY2xpZW50X2lkJywgTGliQ29uc3RhbnRzLm9hdXRoV2luZ3NDbGllbnRVc2VyKTtcbiAgICBhdXRoRGF0YS5zZXQoJ3JlZnJlc2hfdG9rZW4nLCByZWZyZXNoVG9rZW4pO1xuXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0Rm9ybURhdGE8VXNlck1vZGVsPihgb2F1dGgvdG9rZW5gLCBhdXRoRGF0YSwgdGhpcy5vcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVRva2VuUG9zdFNzb1ZhbGlkYXRpb24oKXtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgY29uc3QgYm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgZ3JhbnRfdHlwZTogJ2N1c3RvbV9zc28nXG4gICAgfSkudG9TdHJpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdEZvcm1EYXRhPFVzZXJNb2RlbD4oJ29hdXRoL3Rva2VuJywgYm9keSwgeyBoZWFkZXJzLHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRVc2VySW5mbygpe1xuICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICBcIkFjY2VwdFwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIlxuICAgICAgfSk7XG4gICAgICB0aGlzLm9wdGlvbnMgPSB7IGhlYWRlcnM6IGhlYWRlcnMgfTtcbiAgICAgIGxldCBhdXRoVG9rZW4gPSBhd2FpdCB0aGlzLmdldFN0b3JlZEFjY2Vzc1RvcGVuKCk7XG4gICAgICByZXR1cm4gdGhpcy51dGlsLmdldDxVc2VyTW9kZWw+KGBvYXV0aC9jaGVja190b2tlbj90b2tlbj0ke2F1dGhUb2tlbn1gKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFN0b3JlZEFjY2Vzc1RvcGVuKCl7XG4gICAgbGV0IGFjY2Vzc1Rva2VuID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldCgnYWNjZXNzX3Rva2VuJykudGhlbihyZXMgPT4gcmVzKTtcbiAgICByZXR1cm4gYWNjZXNzVG9rZW47XG4gIH1cblxuICBnZW5lcmF0ZU90cFVucmVnaXN0ZXJlZChtb2JpbGVObyA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoJ2F1dGgvb3RwL25ld3VzZXIvJyArIG1vYmlsZU5vKTtcbiAgfVxuXG4gIHNpZ25VcCh1c2VyTW9kZWwgOiBVc2VyTW9kZWwpe1xuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdCgndXNlcicsIHVzZXJNb2RlbCk7XG4gIH1cblxuICB1cGRhdGVQZXJzb25hbERldGFpbHModXNyRHRscyA6IFVzZXJEZXRhaWxzTW9kZWwpe1xuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdCgndXNlci9kZXRhaWxzJywgdXNyRHRscyk7XG4gIH1cblxuICByZXNldCgpe1xuICAgIHRoaXMudXNlciA9IG51bGw7XG4gICAgdGhpcy51c2VyQnMubmV4dChudWxsKTtcbiAgICB0aGlzLm1lbnVCcy5uZXh0KG51bGwpO1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoJ2FjY2Vzc190b2tlbicpO1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoJ3JlZnJlc2hfdG9rZW4nKTtcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCdzaG93X2Rpc2Nsb3N1cmUnKTtcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCd1c2VybmFtZScpO1xuICAgIHRoaXMuY2xhaW1hbnRDb250ZXh0U2VydmljZS5jbGVhckNvbnRleHQoKTtcbiAgICB0aGlzLnJlbW92ZUNvb2tpZXMoKTtcbiAgfVxuXG4gIHJlbW92ZUNvb2tpZXMoKXtcbiAgICB0aGlzLmRlbGV0ZUNvb2tpZSgnYXQnKTtcbiAgICB0aGlzLmRlbGV0ZUNvb2tpZSgncnQnKTtcbiAgICB0aGlzLmRlbGV0ZUNvb2tpZShMaWJDb25zdGFudHMuc3NvQ29va2llTmFtZSk7XG4gIH1cblxuICBkZWxldGVDb29raWUoY29va2llTmFtZSl7XG4gICAgbGV0IGNvb2tpZSA9IGAke2Nvb2tpZU5hbWV9PTsgTWF4LUFnZT0wOyBwYXRoPS87IGRvbWFpbj0ke0xpYkNvbnN0YW50cy5zc29Eb21haW59YDtcbiAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWU7XG4gIH1cblxuICBjcmVhdGVDb29raWUoY29va2llTmFtZSwgdmFsdWUsIGV4cGlyYXRpb24pe1xuICAgIGxldCBjb29raWUgPSBgJHtjb29raWVOYW1lfT0ke3ZhbHVlfTsgZXhwaXJlcz0ke2V4cGlyYXRpb24gKyAnLjAwMCd9OyBwYXRoPS87IGRvbWFpbj0ke0xpYkNvbnN0YW50cy5zc29Eb21haW59YDtcbiAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWU7XG4gIH1cblxuICBsb2dvdXQoKXtcbiAgICBpZih0aGlzLnVzZXIpe1xuICAgICAgdGhpcy51dGlsLmdldCgndXNlci9sb2dvdXQnKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1lbHNle1xuICAgICAgdGhpcy5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIGlzTG9nZ2VkSW4oKXtcbiAgICByZXR1cm4gdGhpcy51c2VyICYmIHRoaXMudXNlci5pc0xvZ2dlZEluO1xuICB9XG5cbiAgaXMyRkFSZXF1aXJlZCgpe1xuICAgIHJldHVybiB0aGlzLnVzZXIgJiYgdGhpcy51c2VyLmlzMkZBUmVxdWlyZWQ7XG4gIH1cblxuICB1cGRhdGVQcm9maWxlKHVzZXIgOiBVc2VyTW9kZWwpe1xuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdCgndXNlci9wcm9maWxlJywgdXNlcik7XG4gIH1cblxuICB1cGRhdGVQYXNzd29yZChvbGRQYXNzd29yZCwgbmV3UGFzc3dvcmQsIGNvbmZpcm1QYXNzd29yZCl7XG4gICAgbGV0IHB3ZENoYW5nZU1vZGVsIDoge29sZFBhc3N3b3JkOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNvbmZpcm1QYXNzd29yZDogc3RyaW5nfSA9IHtvbGRQYXNzd29yZDogb2xkUGFzc3dvcmQsIHBhc3N3b3JkOiBuZXdQYXNzd29yZCwgY29uZmlybVBhc3N3b3JkOiBjb25maXJtUGFzc3dvcmR9O1xuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdChgdXNlci9wYXNzd29yZC8ke3RoaXMuZ2V0VXNlcigpLnVzZXJuYW1lfWAsIHB3ZENoYW5nZU1vZGVsKTtcbiAgfVxuXG4gIGluaXRpYXRlRm9yZ290UGFzc3dvcmQodXNlcklkIDogc3RyaW5nKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci9wYXNzd29yZC9yZXNldC8ke3VzZXJJZH1gKTtcbiAgfVxuXG4gIGluaXRpYXRlRm9yZ290UGFzc3dvcmRWMih1c2VySWQgOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0KGB1c2VyL3YyL3Bhc3N3b3JkL3Jlc2V0LyR7dXNlcklkfWApO1xuICB9XG5cbiAgaGFzUm9sZShyb2xlTmFtZSA6IHN0cmluZykgOiBib29sZWFue1xuICAgIHJldHVybiB0aGlzLnVzZXIgJiYgdGhpcy51c2VyLnJvbGVzICYmIHRoaXMudXNlci5yb2xlcy5pbmNsdWRlcyhyb2xlTmFtZSk7XG4gIH1cblxuICBoYXNGdW5jdGlvbihmdW5jdGlvbk5hbWUgOiBzdHJpbmcpIDogYm9vbGVhbntcbiAgICByZXR1cm4gdGhpcy51c2VyICYmIHRoaXMudXNlci5mdW5jdGlvbnMgJiYgdGhpcy51c2VyLmZ1bmN0aW9ucy5pbmNsdWRlcyhmdW5jdGlvbk5hbWUpO1xuICB9XG5cbiAgaGFzUm9sZXMoLi4ucm9sZXMgOiBzdHJpbmdbXSl7XG4gICAgbGV0IGlzUHJlc2VudCA9IGZhbHNlO1xuICAgIGZvcih2YXIgaSA9IDAgOyBpIDwgcm9sZXMubGVuZ3RoIDsgaSsrKXtcbiAgICAgIGlmKHRoaXMuaGFzUm9sZShyb2xlc1tpXS50b1N0cmluZygpKSl7XG4gICAgICAgIGlzUHJlc2VudCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNQcmVzZW50O1xuICB9XG5cbiAgaGFzRnVuY3Rpb25zKC4uLmZ1bmN0aW9ucyA6IHN0cmluZ1tdKXtcbiAgICBsZXQgaXNQcmVzZW50ID0gZmFsc2U7XG4gICAgZm9yKHZhciBpID0gMCA7IGkgPCBmdW5jdGlvbnMubGVuZ3RoIDsgaSsrKXtcbiAgICAgIGlmKHRoaXMuaGFzRnVuY3Rpb24oZnVuY3Rpb25zW2ldKSl7XG4gICAgICAgIGlzUHJlc2VudCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNQcmVzZW50O1xuICB9XG5cbiAgY2hlY2tSb2xlcyhyb2xlcyA6IHN0cmluZ1tdKXtcbiAgICBsZXQgaXNQcmVzZW50ID0gZmFsc2U7XG4gICAgZm9yKHZhciBpID0gMCA7IGkgPCByb2xlcy5sZW5ndGggOyBpKyspe1xuICAgICAgaWYodGhpcy5oYXNSb2xlKHJvbGVzW2ldLnRvU3RyaW5nKCkpKXtcbiAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc1ByZXNlbnQ7XG4gIH1cblxuICBjaGVja0Z1bmN0aW9ucyhmdW5jdGlvbnMgOiBzdHJpbmdbXSl7XG4gICAgbGV0IGlzUHJlc2VudCA9IGZhbHNlO1xuICAgIGZvcih2YXIgaSA9IDAgOyBpIDwgZnVuY3Rpb25zLmxlbmd0aCA7IGkrKyl7XG4gICAgICBpZih0aGlzLmhhc0Z1bmN0aW9uKGZ1bmN0aW9uc1tpXSkpe1xuICAgICAgICBpc1ByZXNlbnQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzUHJlc2VudDtcbiAgfVxuXG4gIGlzQ3NyKCl7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpICYmIHRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnTURFUydcbiAgfVxuXG4gIGlzVGF4QXVkaXRTdXBlcnZpc29yKCl7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpICYmIHRoaXMuaGFzUm9sZSgndGF4YXVkaXRzdXBlcnZpc29yJykgJiZ0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ01ERVMnIFxuICB9XG5cbiAgaXNUYXhBdWRpdEF1ZGl0b3IoKXtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkgJiYgdGhpcy5oYXNSb2xlKCd0YXhhdWRpdHNwZWNpYWxpc3QnKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ01ERVMnXG4gIH1cblxuICBpc1RheEF1ZGl0RGlyZWN0b3IoKXtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkgJiYgdGhpcy5oYXNSb2xlKCd0YXhBdWRpdERpcmVjdG9yJykgJiYgdGhpcy5nZXRVc2VyKCkudXNlclR5cGUgPT09ICdNREVTJ1xuICB9XG5cbiAgaXNFbXBsb3llcigpe1xuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ0VNUEwnXG4gIH1cblxuICBpc1RwYSgpe1xuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ1RQQSdcbiAgfVxuXG4gIGlzQ2xhaW1hbnQoKXtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkgJiYgdGhpcy5nZXRVc2VyKCkudXNlclR5cGUgPT09ICdDTE1UJ1xuICB9XG5cbiAgaGFzU3NuQXNzb2NpYXRlZCgpIDogYm9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkgJiYgdGhpcy5nZXRVc2VyKCkudXNlclR5cGUgPT09ICdDTE1UJyAmJiB0aGlzLmdldFVzZXIoKS5zc24gIT09IHVuZGVmaW5lZCBcbiAgfVxuXG4gIGdldFVzZXJNZW51cygpe1xuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0PE1lbnVJdGVtW10+KGBtZW51L2ApO1xuICB9XG5cbiAgbWFya0ZhdihtZW51SWQgOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdDxNZW51SXRlbVtdPihgbWVudS9mYXYvJHttZW51SWR9YCwgbnVsbCk7XG4gIH1cblxuICByZW1vdmVGYXYobWVudUlkIDogc3RyaW5nKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLmRlbGV0ZTxNZW51SXRlbVtdPihgbWVudS9mYXYvJHttZW51SWR9YCk7XG4gIH1cblxuICBnZXRGYXZvdXJpdGVNZW51KCl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQ8TWVudUl0ZW1bXT4oYG1lbnUvZmF2YCk7XG4gIH1cblxuICBnZXRUcmVuZGluZ01lbnUoKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldDxNZW51SXRlbVtdPihgbWVudS90cmVuZGluZ2ApO1xuICB9XG5cbiAgdmVyaWZ5RW1haWwoY29kZSA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KGB1c2VyL2VtYWlsLyR7Y29kZX1gLCBudWxsKTtcbiAgfVxuXG4gIGdldE5ld0NvZGUoKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci9lbWFpbGApO1xuICB9XG5cbiAgdXBkYXRlRW1haWxBbmRHZXROZXdDb2RlKGVtYWlsIDogc3RyaW5nKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLnBhdGNoKGB1c2VyL2VtYWlsLyR7ZW1haWx9YCwgbnVsbCk7XG4gIH1cblxuICBnZXROZXdBdXRoQ29kZSh0eXBlIDogc3RyaW5nKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci9vdHA/dHlwZT0ke3R5cGV9YCk7XG4gIH1cblxuICBhc3NvY2lhdGVTc25Ub1VzZXJJZChzc24gOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdChgY2xhaW1hbnQvYXNzb2NpYXRlLXNzbi8ke3Nzbn1gLCBudWxsKTtcbiAgfVxuXG4gIGdldFVzZXJJZEluVW5pdEJzKCl7XG4gICAgcmV0dXJuIHRoaXMudXNlcklkSW5Vbml0QnM7XG4gIH1cblxuICBsb2FkVXNlcklkc0Zyb21Vbml0T2ZMb2dnZWRJblVzZXIodW5pdElkIDogc3RyaW5nKXtcbiAgICBpZih0aGlzLnVzZXJJZEluVW5pdEJzLmdldFZhbHVlKCkgPT0gbnVsbClcbiAgICAgIHRoaXMudXRpbC5nZXQ8VXNlck1vZGVsW10+KGB1c2VyL2FsbC8ke3VuaXRJZH1gKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHRoaXMudXNlcklkSW5Vbml0QnMubmV4dChyZXMpKTtcbiAgfVxufVxuIl19
362
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBU25ELE1BQU0sT0FBTyxZQUFZO0lBWXZCLFdBQVcsQ0FBQyxRQUFpQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFlO1FBQzNCLElBQUcsR0FBRyxFQUFDO1lBQ0wsSUFBSSxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxR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QUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBYTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELGlDQUFpQyxDQUFDLE1BQWU7UUFDL0MsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUk7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsWUFBWSxNQUFNLEVBQUUsQ0FBQztpQkFDM0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDOzZFQTlaVSxZQUFZO3VFQUFaLFlBQVksV0FBWixZQUFZLG1CQUZYLE1BQU07O2lGQUVQLFlBQVk7Y0FIeEIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xuaW1wb3J0IHsgT3RwQXV0aE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL090cEF1dGhNb2RlbCc7XG5pbXBvcnQgeyBVc2VyRGV0YWlsc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJEZXRhaWxzTW9kZWwnO1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJNb2RlbCc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uL3V0aWwvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2UgfSBmcm9tICdAaW9uaWMvc3RvcmFnZS1hbmd1bGFyJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ2xhaW1hbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LWNvbnRleHQvY2xhaW1hbnQtY29udGV4dC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5TZXJ2aWNlIHtcblxuICBvcHRpb25zID0ge307XG5cbiAgcHJpdmF0ZSB1c2VyQnMgOiBCZWhhdmlvclN1YmplY3Q8VXNlck1vZGVsPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHByaXZhdGUgdXNlcklkSW5Vbml0QnMgOiBCZWhhdmlvclN1YmplY3Q8VXNlck1vZGVsW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJpdmF0ZSBtZW51QnMgOiBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIHByaXZhdGUgdXNlciA6IFVzZXJNb2RlbDtcblxuICBwcml2YXRlIGF1dGhDb2RlIDogc3RyaW5nO1xuXG4gIHNldEF1dGhDb2RlKGF1dGhjb2RlIDogc3RyaW5nKXtcbiAgICB0aGlzLmF1dGhDb2RlID0gYXV0aGNvZGU7XG4gIH1cblxuICBnZXRBdXRoY29kZSgpe1xuICAgIHJldHVybiB0aGlzLmF1dGhDb2RlO1xuICB9XG5cbiAgZ2V0VXNlcigpIDogVXNlck1vZGVse1xuICAgIHJldHVybiB0aGlzLnVzZXJCcy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0VXNlckJzKCkgOiBCZWhhdmlvclN1YmplY3Q8VXNlck1vZGVsPntcbiAgICByZXR1cm4gdGhpcy51c2VyQnM7XG4gIH1cblxuICBnZXRNZW51QnMoKSA6IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPntcbiAgICByZXR1cm4gdGhpcy5tZW51QnM7XG4gIH1cblxuICBhc3luYyBzZXRVc2VyKHJlcyA6IFVzZXJNb2RlbCl7XG4gICAgaWYocmVzKXtcbiAgICAgIGxldCB1c2VyID0gbmV3IFVzZXJNb2RlbCgpO1xuICAgICAgdXNlci5maXJzdE5hbWUgPSByZXMuZmlyc3ROYW1lO1xuICAgICAgdXNlci5sYXN0TmFtZSA9IHJlcy5sYXN0TmFtZTtcbiAgICAgIHVzZXIudXNlcm5hbWUgPSByZXNbJ3VzZXJfbmFtZSddO1xuICAgICAgdXNlci5taWRkbGVOYW1lID0gcmVzLm1pZGRsZU5hbWU7XG4gICAgICB1c2VyLmlzQWN0aXZlID0gcmVzLmlzQWN0aXZlXG4gICAgICB1c2VyLnJvbGVzID0gcmVzLnJvbGVzO1xuICAgICAgdXNlci5mdW5jdGlvbnMgPSByZXMuZnVuY3Rpb25zO1xuICAgICAgdXNlci5kb2IgPSByZXMuZG9iO1xuICAgICAgdXNlci51c2VyVHlwZSA9IHJlcy51c2VyVHlwZTtcbiAgICAgIHVzZXIuZ2VuZGVyID0gcmVzLmdlbmRlcjtcbiAgICAgIHVzZXIuZW1haWxJZD1yZXMuZW1haWxJZDtcbiAgICAgIHVzZXIucGFzc3dvcmRFeHBpcmF0aW9uRGF0ZSA9IHJlcy5wYXNzd29yZEV4cGlyYXRpb25EYXRlO1xuICAgICAgdXNlci5lbWFpbFN0YXR1cyA9IHJlcy5lbWFpbFN0YXR1cztcbiAgICAgIHVzZXIuaXNMb2dnZWRJbiA9IHJlcy5pc0xvZ2dlZEluO1xuICAgICAgdXNlci5jaGFuZ2VQd2QgPSByZXMuY2hhbmdlUHdkO1xuICAgICAgdXNlci5leHBpcmF0aW9uID0gcmVzLmV4cGlyYXRpb247XG4gICAgICB1c2VyLmV4cGlyZXNfaW4gPSByZXMuZXhwaXJlc19pbjtcbiAgICAgIHVzZXIuc3NuID0gcmVzLnNzbjtcbiAgICAgIHVzZXIuY2xhaW1hbnRJZCA9IHJlcy5jbGFpbWFudElkO1xuICAgICAgdXNlci5lbXBsb3llcklkID0gcmVzLmVtcGxveWVySWQ7XG4gICAgICB1c2VyLmNvb2tpZU5hbWUgPSByZXMuY29va2llTmFtZTtcbiAgICAgIHVzZXIuY29va2llVmFsdWUgPSByZXMuY29va2llVmFsdWU7XG4gICAgICB1c2VyLnVzZXJVbml0ID0gcmVzLnVzZXJVbml0O1xuICAgICAgdXNlci5kb21haW5OYW1lID0gcmVzLmRvbWFpbk5hbWU7XG4gICAgICB1c2VyLmlzMkZBUmVxdWlyZWQgPSByZXMuaXMyRkFSZXF1aXJlZDtcbiAgICAgIHVzZXIuZGF5c1RpbGxQYXNzd29yZEV4cGlyZSA9IHJlcy5kYXlzVGlsbFBhc3N3b3JkRXhwaXJlO1xuICAgICAgdXNlci5pc0VtYWlsVmVyaWZpY2F0aW9uUmVxdWlyZWQgPSByZXMuaXNFbWFpbFZlcmlmaWNhdGlvblJlcXVpcmVkO1xuICAgICAgdXNlci5jZWxscGhvbmVObyA9IHJlcy5jZWxscGhvbmVObztcbiAgICAgIHVzZXIuY2VsbHBob25lU3RhdHVzID0gcmVzLmNlbGxwaG9uZVN0YXR1cztcbiAgICAgIHVzZXIuc3VwcG9ydGVkTWZhVHlwZXMgPSByZXMuc3VwcG9ydGVkTWZhVHlwZXM7XG4gICAgICBpZihyZXMuYWNjZXNzX3Rva2VuICYmIHJlcy5yZWZyZXNoX3Rva2VuKXtcbiAgICAgICAgdXNlci5hY2Nlc3NfdG9rZW4gPSByZXMuYWNjZXNzX3Rva2VuO1xuICAgICAgICB1c2VyLnJlZnJlc2hfdG9rZW4gPSByZXMucmVmcmVzaF90b2tlbjtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldCgnYWNjZXNzX3Rva2VuJywgcmVzLmFjY2Vzc190b2tlbik7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ3JlZnJlc2hfdG9rZW4nLCByZXMucmVmcmVzaF90b2tlbik7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgdXNlci5hY2Nlc3NfdG9rZW4gPSB0aGlzLnVzZXIuYWNjZXNzX3Rva2VuO1xuICAgICAgICB1c2VyLnJlZnJlc2hfdG9rZW4gPSB0aGlzLnVzZXIucmVmcmVzaF90b2tlbjtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldCgnYWNjZXNzX3Rva2VuJywgdGhpcy51c2VyLmFjY2Vzc190b2tlbik7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ3JlZnJlc2hfdG9rZW4nLCB0aGlzLnVzZXIucmVmcmVzaF90b2tlbik7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCd1c2VybmFtZScsIGJ0b2EodXNlci51c2VybmFtZSkpO1xuICAgICAgbGV0IHNob3dfZGlzY2xvc3VyZSA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoJ3Nob3dfZGlzY2xvc3VyZScpO1xuICAgICAgaWYoc2hvd19kaXNjbG9zdXJlID09IG51bGwgfHwgc2hvd19kaXNjbG9zdXJlID09IHVuZGVmaW5lZCB8fCBzaG93X2Rpc2Nsb3N1cmUgIT0gJ2ZhbHNlJyl7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoJ3Nob3dfZGlzY2xvc3VyZScsICd0cnVlJyk7XG4gICAgICB9XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgdGhpcy51c2VyQnMubmV4dCh0aGlzLnVzZXIpO1xuICAgICAgaWYodGhpcy51dGlsLmlzU3RhdGUoJ21zJykpe1xuICAgICAgICBpZighdXNlci5pczJGQVJlcXVpcmVkKXtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUNvb2tpZShMaWJDb25zdGFudHMuc3NvQ29va2llTmFtZSwgYFwiJHt1c2VyLmNvb2tpZVZhbHVlfVwiYCwgdXNlci5leHBpcmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCl7XG4gICAgY29uc3QgbWlkID0gdGhpcy5nZXRVc2VyKCkubWlkZGxlTmFtZTtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5nZXRVc2VyKCkubGFzdE5hbWU7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpLmZpcnN0TmFtZVxuICAgICAgKyAobWlkICE9IG51bGwgJiYgbWlkICE9PSAnbnVsbCcgJiYgbWlkICE9PSAnJyA/ICcgJyArIG1pZCA6ICcnKVxuICAgICAgKyAobGFzdCAhPSBudWxsICYmIGxhc3QgIT09ICdudWxsJyAmJiBsYXN0ICE9PSAnJyA/ICcgJyArIGxhc3QgOiAnJyk7XG4gIH1cblxuICBnZXRJc1VzZXJQcm9maWxlQ29tcGxldGUoKXtcbiAgICAgIHJldHVybiB0aGlzLmdldFVzZXIoKS51c2VyUHJvZmlsZUNvbXBsZXRlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHV0aWwgOiBVdGlsU2VydmljZSwgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlLCBwcml2YXRlIGNsYWltYW50Q29udGV4dFNlcnZpY2UgOiBDbGFpbWFudENvbnRleHRTZXJ2aWNlKSB7IFxuICAgIFxuICB9XG5cbiAgZ2V0VXNlclBlcnNvbmFsRGV0YWlscygpIDogT2JzZXJ2YWJsZTxVc2VyRGV0YWlsc01vZGVsPntcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldDxVc2VyRGV0YWlsc01vZGVsPigndXNlci9kZXRhaWxzLycgKyB0aGlzLnVzZXIudXNlcm5hbWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVPdHAodXNlcklkIDogc3RyaW5nLCB0eXBlIDogc3RyaW5nKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldChgdXNlci92Mi9vdHAvJHt1c2VySWR9P3R5cGU9JHt0eXBlfWApO1xuICB9XG5cbiAgbG9naW4oYXV0aCA6IE90cEF1dGhNb2RlbCl7XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgLy9cIkFjY2VwdFwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIlxuICAgIH0pO1xuICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xuXG4gICAgbGV0IGF1dGhEYXRhIDogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBhdXRoRGF0YS5zZXQoJ2dyYW50X3R5cGUnLCAncGFzc3dvcmQnKTtcbiAgICBhdXRoRGF0YS5zZXQoJ3VzZXJuYW1lJywgYXV0aC51c2VySWQpO1xuICAgIGF1dGhEYXRhLnNldCgncGFzc3dvcmQnLCBhdXRoLnBhc3N3b3JkKTtcblxuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdEZvcm1EYXRhPFVzZXJNb2RlbD4oJ29hdXRoL3Rva2VuJywgYXV0aERhdGEsdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIGxvZ2luQW5kQ2hlY2tGb3JNRkEoYXV0aCA6IE90cEF1dGhNb2RlbCl7XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgLy9cIkFjY2VwdFwiIDogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIlxuICAgIH0pO1xuICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xuXG4gICAgbGV0IGF1dGhEYXRhIDogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBhdXRoRGF0YS5zZXQoJ2dyYW50X3R5cGUnLCAnbWZhJyk7XG4gICAgYXV0aERhdGEuc2V0KCd1c2VybmFtZScsIGF1dGgudXNlcklkKTtcbiAgICBhdXRoRGF0YS5zZXQoJ3Bhc3N3b3JkJywgYXV0aC5wYXNzd29yZCk7XG4gICAgaWYoYXV0aC5vdHApe1xuICAgICAgYXV0aERhdGEuc2V0KCdtZmFfY29kZScsIGF1dGgub3RwKTtcbiAgICAgIGF1dGhEYXRhLnNldCgnaXNfdHJ1c3RlZF9kZXZpY2UnLCBhdXRoLmlzdHJ1c3RlZERldmljZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0Rm9ybURhdGE8VXNlck1vZGVsPignb2F1dGgvdG9rZW4nLCBhdXRoRGF0YSx0aGlzLm9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbil7XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgXCJBY2NlcHRcIiA6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsXG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyBgICsgYnRvYShgJHtMaWJDb25zdGFudHMub2F1dGhDbGllbnRVc2VyfToke0xpYkNvbnN0YW50cy5vYXV0aENsaWVudFNlY3JldH1gKVxuICAgIH0pO1xuICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xuXG4gICAgbGV0IGF1dGhEYXRhIDogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBhdXRoRGF0YS5zZXQoJ2dyYW50X3R5cGUnLCAncmVmcmVzaF90b2tlbicpO1xuICAgIGF1dGhEYXRhLnNldCgnY2xpZW50X2lkJywgTGliQ29uc3RhbnRzLm9hdXRoQ2xpZW50VXNlcik7XG4gICAgYXV0aERhdGEuc2V0KCdyZWZyZXNoX3Rva2VuJywgcmVmcmVzaFRva2VuKTtcblxuICAgIHJldHVybiB0aGlzLnV0aWwucG9zdEZvcm1EYXRhPFVzZXJNb2RlbD4oYG9hdXRoL3Rva2VuYCwgYXV0aERhdGEsIHRoaXMub3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoVG9rZW5XaW5ncyhyZWZyZXNoVG9rZW4pe1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgIFwiQWNjZXB0XCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgYCArIGJ0b2EoYCR7TGliQ29uc3RhbnRzLm9hdXRoV2luZ3NDbGllbnRVc2VyfToke0xpYkNvbnN0YW50cy5vYXV0aFdpbmdzQ2xpZW50U2VjcmV0fWApXG4gICAgfSk7XG4gICAgdGhpcy5vcHRpb25zID0geyBoZWFkZXJzOiBoZWFkZXJzIH07XG5cbiAgICBsZXQgYXV0aERhdGEgOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGF1dGhEYXRhLnNldCgnZ3JhbnRfdHlwZScsICdyZWZyZXNoX3Rva2VuJyk7XG4gICAgYXV0aERhdGEuc2V0KCdjbGllbnRfaWQnLCBMaWJDb25zdGFudHMub2F1dGhXaW5nc0NsaWVudFVzZXIpO1xuICAgIGF1dGhEYXRhLnNldCgncmVmcmVzaF90b2tlbicsIHJlZnJlc2hUb2tlbik7XG5cbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3RGb3JtRGF0YTxVc2VyTW9kZWw+KGBvYXV0aC90b2tlbmAsIGF1dGhEYXRhLCB0aGlzLm9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlVG9rZW5Qb3N0U3NvVmFsaWRhdGlvbigpe1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcbiAgICBjb25zdCBib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICBncmFudF90eXBlOiAnY3VzdG9tX3NzbydcbiAgICB9KS50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0Rm9ybURhdGE8VXNlck1vZGVsPignb2F1dGgvdG9rZW4nLCBib2R5LCB7IGhlYWRlcnMsd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZFVzZXJJbmZvKCl7XG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgIFwiQWNjZXB0XCIgOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICB9KTtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHsgaGVhZGVyczogaGVhZGVycyB9O1xuICAgICAgbGV0IGF1dGhUb2tlbiA9IGF3YWl0IHRoaXMuZ2V0U3RvcmVkQWNjZXNzVG9wZW4oKTtcbiAgICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0PFVzZXJNb2RlbD4oYG9hdXRoL2NoZWNrX3Rva2VuP3Rva2VuPSR7YXV0aFRva2VufWApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U3RvcmVkQWNjZXNzVG9wZW4oKXtcbiAgICBsZXQgYWNjZXNzVG9rZW4gPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KCdhY2Nlc3NfdG9rZW4nKS50aGVuKHJlcyA9PiByZXMpO1xuICAgIHJldHVybiBhY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIGdlbmVyYXRlT3RwVW5yZWdpc3RlcmVkKG1vYmlsZU5vIDogc3RyaW5nKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldCgnYXV0aC9vdHAvbmV3dXNlci8nICsgbW9iaWxlTm8pO1xuICB9XG5cbiAgc2lnblVwKHVzZXJNb2RlbCA6IFVzZXJNb2RlbCl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KCd1c2VyJywgdXNlck1vZGVsKTtcbiAgfVxuXG4gIHVwZGF0ZVBlcnNvbmFsRGV0YWlscyh1c3JEdGxzIDogVXNlckRldGFpbHNNb2RlbCl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KCd1c2VyL2RldGFpbHMnLCB1c3JEdGxzKTtcbiAgfVxuXG4gIHJlc2V0KCl7XG4gICAgdGhpcy51c2VyID0gbnVsbDtcbiAgICB0aGlzLnVzZXJCcy5uZXh0KG51bGwpO1xuICAgIHRoaXMubWVudUJzLm5leHQobnVsbCk7XG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZSgnYWNjZXNzX3Rva2VuJyk7XG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZSgncmVmcmVzaF90b2tlbicpO1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoJ3Nob3dfZGlzY2xvc3VyZScpO1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoJ3VzZXJuYW1lJyk7XG4gICAgdGhpcy5jbGFpbWFudENvbnRleHRTZXJ2aWNlLmNsZWFyQ29udGV4dCgpO1xuICAgIHRoaXMucmVtb3ZlQ29va2llcygpO1xuICB9XG5cbiAgcmVtb3ZlQ29va2llcygpe1xuICAgIHRoaXMuZGVsZXRlQ29va2llKCdhdCcpO1xuICAgIHRoaXMuZGVsZXRlQ29va2llKCdydCcpO1xuICAgIHRoaXMuZGVsZXRlQ29va2llKExpYkNvbnN0YW50cy5zc29Db29raWVOYW1lKTtcbiAgfVxuXG4gIGRlbGV0ZUNvb2tpZShjb29raWVOYW1lKXtcbiAgICBsZXQgY29va2llID0gYCR7Y29va2llTmFtZX09OyBNYXgtQWdlPTA7IHBhdGg9LzsgZG9tYWluPSR7TGliQ29uc3RhbnRzLnNzb0RvbWFpbn1gO1xuICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZTtcbiAgfVxuXG4gIGNyZWF0ZUNvb2tpZShjb29raWVOYW1lLCB2YWx1ZSwgZXhwaXJhdGlvbil7XG4gICAgbGV0IGNvb2tpZSA9IGAke2Nvb2tpZU5hbWV9PSR7dmFsdWV9OyBleHBpcmVzPSR7ZXhwaXJhdGlvbiArICcuMDAwJ307IHBhdGg9LzsgZG9tYWluPSR7TGliQ29uc3RhbnRzLnNzb0RvbWFpbn1gO1xuICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZTtcbiAgfVxuXG4gIGxvZ291dCgpe1xuICAgIGlmKHRoaXMudXNlcil7XG4gICAgICB0aGlzLnV0aWwuZ2V0KCd1c2VyL2xvZ291dCcpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xuICAgICAgICB9XG4gICAgICApXG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgaXNMb2dnZWRJbigpe1xuICAgIHJldHVybiB0aGlzLnVzZXIgJiYgdGhpcy51c2VyLmlzTG9nZ2VkSW47XG4gIH1cblxuICBpczJGQVJlcXVpcmVkKCl7XG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIuaXMyRkFSZXF1aXJlZDtcbiAgfVxuXG4gIHVwZGF0ZVByb2ZpbGUodXNlciA6IFVzZXJNb2RlbCl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KCd1c2VyL3Byb2ZpbGUnLCB1c2VyKTtcbiAgfVxuXG4gIHVwZGF0ZVBhc3N3b3JkKG9sZFBhc3N3b3JkLCBuZXdQYXNzd29yZCwgY29uZmlybVBhc3N3b3JkKXtcbiAgICBsZXQgcHdkQ2hhbmdlTW9kZWwgOiB7b2xkUGFzc3dvcmQ6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY29uZmlybVBhc3N3b3JkOiBzdHJpbmd9ID0ge29sZFBhc3N3b3JkOiBvbGRQYXNzd29yZCwgcGFzc3dvcmQ6IG5ld1Bhc3N3b3JkLCBjb25maXJtUGFzc3dvcmQ6IGNvbmZpcm1QYXNzd29yZH07XG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KGB1c2VyL3Bhc3N3b3JkLyR7dGhpcy5nZXRVc2VyKCkudXNlcm5hbWV9YCwgcHdkQ2hhbmdlTW9kZWwpO1xuICB9XG5cbiAgaW5pdGlhdGVGb3Jnb3RQYXNzd29yZCh1c2VySWQgOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0KGB1c2VyL3Bhc3N3b3JkL3Jlc2V0LyR7dXNlcklkfWApO1xuICB9XG5cbiAgaW5pdGlhdGVGb3Jnb3RQYXNzd29yZFYyKHVzZXJJZCA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQoYHVzZXIvdjIvcGFzc3dvcmQvcmVzZXQvJHt1c2VySWR9YCk7XG4gIH1cblxuICBoYXNSb2xlKHJvbGVOYW1lIDogc3RyaW5nKSA6IGJvb2xlYW57XG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIucm9sZXMgJiYgdGhpcy51c2VyLnJvbGVzLmluY2x1ZGVzKHJvbGVOYW1lKTtcbiAgfVxuXG4gIGhhc0Z1bmN0aW9uKGZ1bmN0aW9uTmFtZSA6IHN0cmluZykgOiBib29sZWFue1xuICAgIHJldHVybiB0aGlzLnVzZXIgJiYgdGhpcy51c2VyLmZ1bmN0aW9ucyAmJiB0aGlzLnVzZXIuZnVuY3Rpb25zLmluY2x1ZGVzKGZ1bmN0aW9uTmFtZSk7XG4gIH1cblxuICBoYXNSb2xlcyguLi5yb2xlcyA6IHN0cmluZ1tdKXtcbiAgICBsZXQgaXNQcmVzZW50ID0gZmFsc2U7XG4gICAgZm9yKHZhciBpID0gMCA7IGkgPCByb2xlcy5sZW5ndGggOyBpKyspe1xuICAgICAgaWYodGhpcy5oYXNSb2xlKHJvbGVzW2ldLnRvU3RyaW5nKCkpKXtcbiAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc1ByZXNlbnQ7XG4gIH1cblxuICBoYXNGdW5jdGlvbnMoLi4uZnVuY3Rpb25zIDogc3RyaW5nW10pe1xuICAgIGxldCBpc1ByZXNlbnQgPSBmYWxzZTtcbiAgICBmb3IodmFyIGkgPSAwIDsgaSA8IGZ1bmN0aW9ucy5sZW5ndGggOyBpKyspe1xuICAgICAgaWYodGhpcy5oYXNGdW5jdGlvbihmdW5jdGlvbnNbaV0pKXtcbiAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc1ByZXNlbnQ7XG4gIH1cblxuICBjaGVja1JvbGVzKHJvbGVzIDogc3RyaW5nW10pe1xuICAgIGxldCBpc1ByZXNlbnQgPSBmYWxzZTtcbiAgICBmb3IodmFyIGkgPSAwIDsgaSA8IHJvbGVzLmxlbmd0aCA7IGkrKyl7XG4gICAgICBpZih0aGlzLmhhc1JvbGUocm9sZXNbaV0udG9TdHJpbmcoKSkpe1xuICAgICAgICBpc1ByZXNlbnQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzUHJlc2VudDtcbiAgfVxuXG4gIGNoZWNrRnVuY3Rpb25zKGZ1bmN0aW9ucyA6IHN0cmluZ1tdKXtcbiAgICBsZXQgaXNQcmVzZW50ID0gZmFsc2U7XG4gICAgZm9yKHZhciBpID0gMCA7IGkgPCBmdW5jdGlvbnMubGVuZ3RoIDsgaSsrKXtcbiAgICAgIGlmKHRoaXMuaGFzRnVuY3Rpb24oZnVuY3Rpb25zW2ldKSl7XG4gICAgICAgIGlzUHJlc2VudCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNQcmVzZW50O1xuICB9XG5cbiAgaXNDc3IoKXtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkgJiYgdGhpcy5nZXRVc2VyKCkudXNlclR5cGUgPT09ICdNREVTJ1xuICB9XG5cbiAgaXNUYXhBdWRpdFN1cGVydmlzb3IoKXtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkgJiYgdGhpcy5oYXNSb2xlKCd0YXhhdWRpdHN1cGVydmlzb3InKSAmJnRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnTURFUycgXG4gIH1cblxuICBpc1RheEF1ZGl0QXVkaXRvcigpe1xuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmhhc1JvbGUoJ3RheGF1ZGl0c3BlY2lhbGlzdCcpICYmIHRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnTURFUydcbiAgfVxuXG4gIGlzVGF4QXVkaXREaXJlY3Rvcigpe1xuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmhhc1JvbGUoJ3RheEF1ZGl0RGlyZWN0b3InKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ01ERVMnXG4gIH1cblxuICBpc0VtcGxveWVyKCl7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpICYmIHRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnRU1QTCdcbiAgfVxuXG4gIGlzVHBhKCl7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpICYmIHRoaXMuZ2V0VXNlcigpLnVzZXJUeXBlID09PSAnVFBBJ1xuICB9XG5cbiAgaXNDbGFpbWFudCgpe1xuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ0NMTVQnXG4gIH1cblxuICBoYXNTc25Bc3NvY2lhdGVkKCkgOiBib29sZWFue1xuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKSAmJiB0aGlzLmdldFVzZXIoKS51c2VyVHlwZSA9PT0gJ0NMTVQnICYmIHRoaXMuZ2V0VXNlcigpLnNzbiAhPT0gdW5kZWZpbmVkIFxuICB9XG5cbiAgZ2V0VXNlck1lbnVzKCl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5nZXQ8TWVudUl0ZW1bXT4oYG1lbnUvYCk7XG4gIH1cblxuICBtYXJrRmF2KG1lbnVJZCA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0PE1lbnVJdGVtW10+KGBtZW51L2Zhdi8ke21lbnVJZH1gLCBudWxsKTtcbiAgfVxuXG4gIHJlbW92ZUZhdihtZW51SWQgOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLnV0aWwuZGVsZXRlPE1lbnVJdGVtW10+KGBtZW51L2Zhdi8ke21lbnVJZH1gKTtcbiAgfVxuXG4gIGdldEZhdm91cml0ZU1lbnUoKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLmdldDxNZW51SXRlbVtdPihgbWVudS9mYXZgKTtcbiAgfVxuXG4gIGdldFRyZW5kaW5nTWVudSgpe1xuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0PE1lbnVJdGVtW10+KGBtZW51L3RyZW5kaW5nYCk7XG4gIH1cblxuICB2ZXJpZnlFbWFpbChjb2RlIDogc3RyaW5nKXtcbiAgICByZXR1cm4gdGhpcy51dGlsLnBvc3QoYHVzZXIvZW1haWwvJHtjb2RlfWAsIG51bGwpO1xuICB9XG5cbiAgZ2V0TmV3Q29kZSgpe1xuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0KGB1c2VyL2VtYWlsYCk7XG4gIH1cblxuICB1cGRhdGVFbWFpbEFuZEdldE5ld0NvZGUoZW1haWwgOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLnV0aWwucGF0Y2goYHVzZXIvZW1haWwvJHtlbWFpbH1gLCBudWxsKTtcbiAgfVxuXG4gIGdldE5ld0F1dGhDb2RlKHR5cGUgOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLnV0aWwuZ2V0KGB1c2VyL290cD90eXBlPSR7dHlwZX1gKTtcbiAgfVxuXG4gIGFzc29jaWF0ZVNzblRvVXNlcklkKHNzbiA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMudXRpbC5wb3N0KGBjbGFpbWFudC9hc3NvY2lhdGUtc3NuLyR7c3NufWAsIG51bGwpO1xuICB9XG5cbiAgZ2V0VXNlcklkSW5Vbml0QnMoKXtcbiAgICByZXR1cm4gdGhpcy51c2VySWRJblVuaXRCcztcbiAgfVxuXG4gIGxvYWRVc2VySWRzRnJvbVVuaXRPZkxvZ2dlZEluVXNlcih1bml0SWQgOiBzdHJpbmcpe1xuICAgIGlmKHRoaXMudXNlcklkSW5Vbml0QnMuZ2V0VmFsdWUoKSA9PSBudWxsKVxuICAgICAgdGhpcy51dGlsLmdldDxVc2VyTW9kZWxbXT4oYHVzZXIvYWxsLyR7dW5pdElkfWApXG4gICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy51c2VySWRJblVuaXRCcy5uZXh0KHJlcykpO1xuICB9XG59XG4iXX0=