@csmart/ngc-smart-core 1.13.5 → 1.13.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@ Run `ng generate component component-name --project ngc-smart-core` to generate
9
9
 
10
10
  ## Build
11
11
 
12
- Run `ng build ngc-smart-core` to build the project. The build artifacts will be stored in the `dist/` directory.
12
+ Run `ng build @csmart/ngc-smart-core` to build the project. The build artifacts will be stored in the `dist/` directory.
13
13
 
14
14
  ## Publishing
15
15
 
@@ -101,7 +101,7 @@ export class SmartNavbarComponent {
101
101
  return false;
102
102
  }
103
103
  checkVictimPermission(config) {
104
- return (config.appModuleId !== 'VICTIM' || (config.appModuleId === "VICTIM" && this.hasVictimRole));
104
+ return (config.appModuleId !== 'VICTIM' || (config.appModuleId === "VICTIM" && this.hasVictimRole && !this.selectedOffender));
105
105
  }
106
106
  get hasVictimRole() {
107
107
  if (this.loginStaff &&
@@ -134,10 +134,10 @@ export class SmartNavbarComponent {
134
134
  }
135
135
  }
136
136
  /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarComponent, deps: [{ token: i1.SmartNavbarService }, { token: i2.XdmService }, { token: i3.MsalService }], target: i0.ɵɵFactoryTarget.Component });
137
- /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], components: [{ type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
137
+ /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && \r\n (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], components: [{ type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
138
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarComponent, decorators: [{
139
139
  type: Component,
140
- args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
140
+ args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && \r\n (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
141
141
  }], ctorParameters: function () { return [{ type: i1.SmartNavbarService }, { type: i2.XdmService }, { type: i3.MsalService }]; }, propDecorators: { serviceApiUrl: [{
142
142
  type: Input
143
143
  }], appModuleId: [{
@@ -146,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
146
146
  type: ViewChild,
147
147
  args: ['tabs']
148
148
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULEtBQUssRUFFTCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQ1UsbUJBQXVDLEVBQ3ZDLFVBQXNCO0lBQzlCLHdCQUF3QjtJQUNoQixZQUF5QjtRQUh6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFdEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFkMUIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7SUFlNUIsQ0FBQztJQUVKLFdBQVc7UUFDVDs7Ozs7VUFLRTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIs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LGNBQWMsQ0FBQyxJQUFVO1FBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQztZQUNkO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQzs7dUpBL0pVLG9CQUFvQjsySUFBcEIsb0JBQW9CLHVQQzdCakMsbTRFQXlEQTsyRkQ1QmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJOzRKQUc1QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ2EsUUFBUTtzQkFBMUIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIFZpZXdDaGlsZCxcclxuICBpc0Rldk1vZGUsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSAnQGF6dXJlL21zYWwtYW5ndWxhcic7XHJcbmltcG9ydCB7IFNtYXJ0TmF2YmFyQ29uZmlnIH0gZnJvbSAnLi9zbWFydC1uYXZiYXItY29uZmlnJztcclxuaW1wb3J0IHsgU21hcnROYXZiYXJTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC1uYXZiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFhkbVNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3hkbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBTZWxlY3RlZE9mZmVuZGVyLFxyXG4gIExvZ2luU3RhZmYsXHJcbiAgUm9sZSxcclxufSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3NtYXJ0LXN0b3JhZ2UtbW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNtYXJ0LW5hdmJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtbmF2YmFyLmNvbXBvbmVudC5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnROYXZiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBzZXJ2aWNlQXBpVXJsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYXBwTW9kdWxlSWQgPSAnU01BUlQnO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYnMnKSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XHJcbiAgc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcjtcclxuICBsb2dpblN0YWZmOiBMb2dpblN0YWZmO1xyXG4gIG9mZmVuZGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc3RhZmZTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAvLyBpc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcclxuXHJcbiAgbmF2YmFyQ29uZmlnczogU21hcnROYXZiYXJDb25maWdbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdmJhckNvbmZpZ1NlcnZpY2U6IFNtYXJ0TmF2YmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgeGRtU2VydmljZTogWGRtU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBhdXRoblNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAvKlxyXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFRhYik7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gdGhpcy5zZWxlY3RlZFRhYjtcclxuICAgIH0sIDEwMDApO1xyXG4gICAgKi9cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmdldFNlbGVjdGVkT2ZmZW5kZXIoKS50aGVuKChzZWxlY3RlZE9mZmVuZGVyKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9XHJcbiAgICAgICAgc2VsZWN0ZWRPZmZlbmRlciAmJiBzZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWRcclxuICAgICAgICAgID8gc2VsZWN0ZWRPZmZlbmRlclxyXG4gICAgICAgICAgOiBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKS50aGVuKChsb2dpblN0YWZmKSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgPSBsb2dpblN0YWZmID8gbG9naW5TdGFmZiA6IG51bGw7XHJcbiAgICAgIC8vIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vZmZlbmRlclN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0T2ZmZW5kZXJVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZE9mZmVuZGVyKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsZWN0ZWRPZmZlbmRlcjtcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdGFmZlN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0U3RhZmZVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2dpblN0YWZmKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmID0gbG9naW5TdGFmZjtcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5uYXZiYXJDb25maWdTZXJ2aWNlXHJcbiAgICAgIC5nZXROYXZiYXJDb25maWdzKHRoaXMuc2VydmljZUFwaVVybClcclxuICAgICAgLnN1YnNjcmliZSgoY29uZmlncykgPT4ge1xyXG4gICAgICAgIHRoaXMubmF2YmFyQ29uZmlncyA9IGNvbmZpZ3Muc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgaWYgKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChhLmRpc3BsYXlPcmRlciA+IGIuZGlzcGxheU9yZGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIHRoaXMuaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRoblNlcnZpY2UuZ2V0QWNjb3VudCgpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLm9mZmVuZGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnN0YWZmU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICB0aGlzLmF1dGhuU2VydmljZS5sb2dvdXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoblNlcnZpY2UuaW5zdGFuY2UuZ2V0QWxsQWNjb3VudHMoKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFwcE1vZHVsZVVybChjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gY29uZmlnICYmIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciAmJiBjb25maWcuYXBwTW9kdWxlSWQgPT09ICdQUE1BUydcclxuICAgICAgPyBgJHtjb25maWcudXJsfT9za2lwQXBwTWV0YWRhdGE9dHJ1ZSZPZmZlbmRlcklkPSR7dGhpcy5zZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWR9YFxyXG4gICAgICA6IGNvbmZpZy51cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzQXBwTW9kdWxlUGVybWlzc2lvbihhcHBNb2R1bGVJZCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHApID0+IHAuYXBwTW9kdWxlSWQgPT09IGFwcE1vZHVsZUlkLFxyXG4gICAgICAgICkgPiAtMVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGFzRXh0ZXJuYWxVc2VyUm9sZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5sb2dpblN0YWZmICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcyAmJlxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucm9sZXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvZ2luU3RhZmYucm9sZXMuZmluZEluZGV4KHRoaXMuaXNFeHRlcm5hbFJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuIFxyXG5cclxuICBwdWJsaWMgY2hlY2tWaWN0aW1QZXJtaXNzaW9uKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIDogYm9vbGVhbntcclxuICAgIHJldHVybiAoY29uZmlnLmFwcE1vZHVsZUlkICE9PSAnVklDVElNJyB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIlZJQ1RJTVwiICYmIHRoaXMuaGFzVmljdGltUm9sZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNWaWN0aW1Sb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc1ZpY3RpbVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmljdGltUm9sZShyb2xlOiBSb2xlKXtcclxuICAgIGlmKHJvbGUucm9sZUlkID09ICdCQycgfHwgcm9sZS5yb2xlSWQgPT0gJ1ZTUCcpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0V4dGVybmFsUm9sZShyb2xlOiBSb2xlKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGUucm9sZUlkKSB7XHJcbiAgICAgIGNhc2UgJ0VVRFRMJzpcclxuICAgICAgY2FzZSAnRVVEVVNNJzpcclxuICAgICAgY2FzZSAnRVVKREcnOlxyXG4gICAgICBjYXNlICdFVU1QRCc6XHJcbiAgICAgIGNhc2UgJ0VVU09UVic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBMic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBTyc6XHJcbiAgICAgIGNhc2UgJ0VVVVNQQyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gRVVEVExcclxuLy8gRVVEVVNNXHJcbi8vIEVVSkRHXHJcblxyXG4vLyBFVU1QRFxyXG4vLyBFVVNPVFZcclxuLy8gRVVVU0EyXHJcblxyXG4vLyBFVVVTQU9cclxuLy8gRVVVU1BDXHJcbiIsIjwhLS1cclxuPGEgY2xhc3M9XCJzbWFydC1uYXZiYXItdG9nZ2xlIG9wZW5cIiBocmVmPVwiI25hdlwiPlxyXG4gIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5tZW51PC9pPlxyXG48L2E+XHJcblxyXG48bmF2IGlkPVwibmF2XCIgcm9sZT1cIm5hdmlnYXRpb25cIiBjbGFzcz1cInNtYXJ0LW5hdmJhci1jb250YWluZXJcIj5cclxuICA8YSBjbGFzcz1cInNtYXJ0LW5hdmJhci10b2dnbGUgY2xvc2VcIiBocmVmPVwiI1wiPlxyXG4gICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsb3NlPC9pPlxyXG4gIDwvYT5cclxuXHJcbiAgPHNwYW4gKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCI+XHJcbiAgICA8YSBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW1cIiBcclxuICAgICAgKm5nSWY9XCIoY29uZmlnLm9mZmVuZGVyU3BlY2lmaWNGbGFnID09PSBmYWxzZSB8fCBzZWxlY3RlZE9mZmVuZGVyKSAmJiBpc0F1dGhlbnRpY2F0ZWQgJiYgbG9naW5TdGFmZlwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cclxuICA8L3NwYW4+XHJcblxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInNtYXJ0LW5hdmJhci1pdGVtXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVUaGVtZVwiPlNldCBUaGVtZTwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjbWVudVRoZW1lPVwibWF0TWVudVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvblNldFRoZW1lKCdibHVlLXRoZW1lJylcIj5CbHVlPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ3JlZC10aGVtZScpXCI+UmVkPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ2dyZWVuLXRoZW1lJylcIj5HcmVlbjwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW0gc21hcnQtbmF2YmFyLWxhc3QtaXRlbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICpuZ0lmPVwiaXNBdXRoZW50aWNhdGVkICYmIGxvZ2luU3RhZmZcIj57e2xvZ2luU3RhZmYuZmlyc3ROYW1lICsgJyAnICsgbG9naW5TdGFmZi5sYXN0TmFtZX19PC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlByb2ZpbGU8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibG9nb3V0KClcIj5TaWduIE91dDwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbjwvbmF2PlxyXG4tLT5cclxuXHJcbjwhLS0gPG5hdiBtYXQtdGFiLW5hdi1iYXI+XHJcbiAgPGEgbWF0LXRhYi1saW5rIG1hdC1mbGF0LWJ1dHRvbiAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIG5hdmJhckNvbmZpZ3NcIiBbYWN0aXZlXT1cImFwcE1vZHVsZUlkID09IGNvbmZpZy5hcHBNb2R1bGVJZFwiIGhyZWY9XCJ7e2NvbmZpZy51cmx9fVwiPnt7Y29uZmlnLm5hbWV9fTwvYT5cclxuPC9uYXY+IC0tPlxyXG5cclxuPG1hdC10YWItZ3JvdXAgY2xhc3M9XCJuYXYtdGFiLWdyb3VwXCIgW3NlbGVjdGVkSW5kZXhdPVwibnVsbFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBuYXZiYXJDb25maWdzXCI+XHJcbiAgICA8bWF0LXRhYlxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgICgoaGFzRXh0ZXJuYWxVc2VyUm9sZSAmJiBoYXNBcHBNb2R1bGVQZXJtaXNzaW9uKGNvbmZpZy5hcHBNb2R1bGVJZCkpIHx8XHJcbiAgICAgICAgKCFoYXNFeHRlcm5hbFVzZXJSb2xlICYmIChjb25maWcub2ZmZW5kZXJTcGVjaWZpY0ZsYWcgPT09IGZhbHNlIHx8IHNlbGVjdGVkT2ZmZW5kZXIpKSkgJiZcclxuICAgICAgICBjaGVja1ZpY3RpbVBlcm1pc3Npb24oY29uZmlnKSAmJlxyXG4gICAgICAgIGlzQXV0aGVudGljYXRlZCAmJlxyXG4gICAgICAgIGxvZ2luU3RhZmYgXHJcbiAgICAgIFwiXHJcbiAgICAgIGxhYmVsPVwiY29uZmlnLm5hbWVcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdtYWluLW1lbnUtYWN0aXZlJzogYXBwTW9kdWxlSWQgPT0gY29uZmlnLmFwcE1vZHVsZUlkIH1cIlxyXG4gICAgICAgICAgW2hyZWZdPVwiZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZylcIlxyXG4gICAgICAgICAgPnt7IGNvbmZpZy5uYW1lIH19PC9hXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9tYXQtdGFiPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L21hdC10YWItZ3JvdXA+XHJcbiJdfQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULEtBQUssRUFFTCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQ1UsbUJBQXVDLEVBQ3ZDLFVBQXNCO0lBQzlCLHdCQUF3QjtJQUNoQixZQUF5QjtRQUh6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFdEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFkMUIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7SUFlNUIsQ0FBQztJQUVKLFdBQVc7UUFDVDs7Ozs7VUFLRTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIs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QU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFVO1FBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQztZQUNkO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQzs7dUpBL0pVLG9CQUFvQjsySUFBcEIsb0JBQW9CLHVQQzdCakMsKzRFQTBEQTsyRkQ3QmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJOzRKQUc1QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ2EsUUFBUTtzQkFBMUIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIFZpZXdDaGlsZCxcclxuICBpc0Rldk1vZGUsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSAnQGF6dXJlL21zYWwtYW5ndWxhcic7XHJcbmltcG9ydCB7IFNtYXJ0TmF2YmFyQ29uZmlnIH0gZnJvbSAnLi9zbWFydC1uYXZiYXItY29uZmlnJztcclxuaW1wb3J0IHsgU21hcnROYXZiYXJTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC1uYXZiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFhkbVNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3hkbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBTZWxlY3RlZE9mZmVuZGVyLFxyXG4gIExvZ2luU3RhZmYsXHJcbiAgUm9sZSxcclxufSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3NtYXJ0LXN0b3JhZ2UtbW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNtYXJ0LW5hdmJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtbmF2YmFyLmNvbXBvbmVudC5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnROYXZiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBzZXJ2aWNlQXBpVXJsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYXBwTW9kdWxlSWQgPSAnU01BUlQnO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYnMnKSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XHJcbiAgc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcjtcclxuICBsb2dpblN0YWZmOiBMb2dpblN0YWZmO1xyXG4gIG9mZmVuZGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc3RhZmZTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAvLyBpc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcclxuXHJcbiAgbmF2YmFyQ29uZmlnczogU21hcnROYXZiYXJDb25maWdbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdmJhckNvbmZpZ1NlcnZpY2U6IFNtYXJ0TmF2YmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgeGRtU2VydmljZTogWGRtU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBhdXRoblNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAvKlxyXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFRhYik7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gdGhpcy5zZWxlY3RlZFRhYjtcclxuICAgIH0sIDEwMDApO1xyXG4gICAgKi9cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmdldFNlbGVjdGVkT2ZmZW5kZXIoKS50aGVuKChzZWxlY3RlZE9mZmVuZGVyKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9XHJcbiAgICAgICAgc2VsZWN0ZWRPZmZlbmRlciAmJiBzZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWRcclxuICAgICAgICAgID8gc2VsZWN0ZWRPZmZlbmRlclxyXG4gICAgICAgICAgOiBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKS50aGVuKChsb2dpblN0YWZmKSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgPSBsb2dpblN0YWZmID8gbG9naW5TdGFmZiA6IG51bGw7XHJcbiAgICAgIC8vIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vZmZlbmRlclN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0T2ZmZW5kZXJVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZE9mZmVuZGVyKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsZWN0ZWRPZmZlbmRlcjtcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdGFmZlN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0U3RhZmZVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2dpblN0YWZmKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmID0gbG9naW5TdGFmZjtcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5uYXZiYXJDb25maWdTZXJ2aWNlXHJcbiAgICAgIC5nZXROYXZiYXJDb25maWdzKHRoaXMuc2VydmljZUFwaVVybClcclxuICAgICAgLnN1YnNjcmliZSgoY29uZmlncykgPT4ge1xyXG4gICAgICAgIHRoaXMubmF2YmFyQ29uZmlncyA9IGNvbmZpZ3Muc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgaWYgKGEuZGlzcGxheU9yZGVyIDwgYi5kaXNwbGF5T3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChhLmRpc3BsYXlPcmRlciA+IGIuZGlzcGxheU9yZGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIHRoaXMuaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRoblNlcnZpY2UuZ2V0QWNjb3VudCgpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLm9mZmVuZGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnN0YWZmU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICB0aGlzLmF1dGhuU2VydmljZS5sb2dvdXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoblNlcnZpY2UuaW5zdGFuY2UuZ2V0QWxsQWNjb3VudHMoKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFwcE1vZHVsZVVybChjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gY29uZmlnICYmIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciAmJiBjb25maWcuYXBwTW9kdWxlSWQgPT09ICdQUE1BUydcclxuICAgICAgPyBgJHtjb25maWcudXJsfT9za2lwQXBwTWV0YWRhdGE9dHJ1ZSZPZmZlbmRlcklkPSR7dGhpcy5zZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWR9YFxyXG4gICAgICA6IGNvbmZpZy51cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzQXBwTW9kdWxlUGVybWlzc2lvbihhcHBNb2R1bGVJZCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHApID0+IHAuYXBwTW9kdWxlSWQgPT09IGFwcE1vZHVsZUlkLFxyXG4gICAgICAgICkgPiAtMVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGFzRXh0ZXJuYWxVc2VyUm9sZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5sb2dpblN0YWZmICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcyAmJlxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucm9sZXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvZ2luU3RhZmYucm9sZXMuZmluZEluZGV4KHRoaXMuaXNFeHRlcm5hbFJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuIFxyXG5cclxuICBwdWJsaWMgY2hlY2tWaWN0aW1QZXJtaXNzaW9uKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIDogYm9vbGVhbntcclxuICAgIHJldHVybiAoY29uZmlnLmFwcE1vZHVsZUlkICE9PSAnVklDVElNJyB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIlZJQ1RJTVwiICYmIHRoaXMuaGFzVmljdGltUm9sZSAmJiAhdGhpcy5zZWxlY3RlZE9mZmVuZGVyKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc1ZpY3RpbVJvbGUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiAmJlxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYucm9sZXMgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzLmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2dpblN0YWZmLnJvbGVzLmZpbmRJbmRleCh0aGlzLmlzVmljdGltUm9sZSkgPiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNWaWN0aW1Sb2xlKHJvbGU6IFJvbGUpe1xyXG4gICAgaWYocm9sZS5yb2xlSWQgPT0gJ0JDJyB8fCByb2xlLnJvbGVJZCA9PSAnVlNQJyl7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRXh0ZXJuYWxSb2xlKHJvbGU6IFJvbGUpIHtcclxuICAgIHN3aXRjaCAocm9sZS5yb2xlSWQpIHtcclxuICAgICAgY2FzZSAnRVVEVEwnOlxyXG4gICAgICBjYXNlICdFVURVU00nOlxyXG4gICAgICBjYXNlICdFVUpERyc6XHJcbiAgICAgIGNhc2UgJ0VVTVBEJzpcclxuICAgICAgY2FzZSAnRVVTT1RWJzpcclxuICAgICAgY2FzZSAnRVVVU0EyJzpcclxuICAgICAgY2FzZSAnRVVVU0FPJzpcclxuICAgICAgY2FzZSAnRVVVU1BDJzpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBFVURUTFxyXG4vLyBFVURVU01cclxuLy8gRVVKREdcclxuXHJcbi8vIEVVTVBEXHJcbi8vIEVVU09UVlxyXG4vLyBFVVVTQTJcclxuXHJcbi8vIEVVVVNBT1xyXG4vLyBFVVVTUENcclxuIiwiPCEtLVxyXG48YSBjbGFzcz1cInNtYXJ0LW5hdmJhci10b2dnbGUgb3BlblwiIGhyZWY9XCIjbmF2XCI+XHJcbiAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPm1lbnU8L2k+XHJcbjwvYT5cclxuXHJcbjxuYXYgaWQ9XCJuYXZcIiByb2xlPVwibmF2aWdhdGlvblwiIGNsYXNzPVwic21hcnQtbmF2YmFyLWNvbnRhaW5lclwiPlxyXG4gIDxhIGNsYXNzPVwic21hcnQtbmF2YmFyLXRvZ2dsZSBjbG9zZVwiIGhyZWY9XCIjXCI+XHJcbiAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Y2xvc2U8L2k+XHJcbiAgPC9hPlxyXG5cclxuICA8c3BhbiAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIG5hdmJhckNvbmZpZ3NcIj5cclxuICAgIDxhIG1hdC1idXR0b24gY2xhc3M9XCJzbWFydC1uYXZiYXItaXRlbVwiIFxyXG4gICAgICAqbmdJZj1cIihjb25maWcub2ZmZW5kZXJTcGVjaWZpY0ZsYWcgPT09IGZhbHNlIHx8IHNlbGVjdGVkT2ZmZW5kZXIpICYmIGlzQXV0aGVudGljYXRlZCAmJiBsb2dpblN0YWZmXCIgaHJlZj1cInt7Y29uZmlnLnVybH19XCI+e3tjb25maWcubmFtZX19PC9hPlxyXG4gIDwvc3Bhbj5cclxuXHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic21hcnQtbmF2YmFyLWl0ZW1cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVRoZW1lXCI+U2V0IFRoZW1lPC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNtZW51VGhlbWU9XCJtYXRNZW51XCI+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2V0VGhlbWUoJ2JsdWUtdGhlbWUnKVwiPkJsdWU8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TZXRUaGVtZSgncmVkLXRoZW1lJylcIj5SZWQ8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25TZXRUaGVtZSgnZ3JlZW4tdGhlbWUnKVwiPkdyZWVuPC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJzbWFydC1uYXZiYXItaXRlbSBzbWFydC1uYXZiYXItbGFzdC1pdGVtXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxyXG4gICAgKm5nSWY9XCJpc0F1dGhlbnRpY2F0ZWQgJiYgbG9naW5TdGFmZlwiPnt7bG9naW5TdGFmZi5maXJzdE5hbWUgKyAnICcgKyBsb2dpblN0YWZmLmxhc3ROYW1lfX08L2J1dHRvbj5cclxuICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0+UHJvZmlsZTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJsb2dvdXQoKVwiPlNpZ24gT3V0PC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuPC9uYXY+XHJcbi0tPlxyXG5cclxuPCEtLSA8bmF2IG1hdC10YWItbmF2LWJhcj5cclxuICA8YSBtYXQtdGFiLWxpbmsgbWF0LWZsYXQtYnV0dG9uICpuZ0Zvcj1cImxldCBjb25maWcgb2YgbmF2YmFyQ29uZmlnc1wiIFthY3RpdmVdPVwiYXBwTW9kdWxlSWQgPT0gY29uZmlnLmFwcE1vZHVsZUlkXCIgaHJlZj1cInt7Y29uZmlnLnVybH19XCI+e3tjb25maWcubmFtZX19PC9hPlxyXG48L25hdj4gLS0+XHJcblxyXG48bWF0LXRhYi1ncm91cCBjbGFzcz1cIm5hdi10YWItZ3JvdXBcIiBbc2VsZWN0ZWRJbmRleF09XCJudWxsXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIG5hdmJhckNvbmZpZ3NcIj5cclxuICAgIDxtYXQtdGFiXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgKChoYXNFeHRlcm5hbFVzZXJSb2xlICYmIGhhc0FwcE1vZHVsZVBlcm1pc3Npb24oY29uZmlnLmFwcE1vZHVsZUlkKSkgfHxcclxuICAgICAgICAoIWhhc0V4dGVybmFsVXNlclJvbGUgJiYgXHJcbiAgICAgICAgKGNvbmZpZy5vZmZlbmRlclNwZWNpZmljRmxhZyA9PT0gZmFsc2UgfHwgc2VsZWN0ZWRPZmZlbmRlcikpKSAmJlxyXG4gICAgICAgIGNoZWNrVmljdGltUGVybWlzc2lvbihjb25maWcpICYmXHJcbiAgICAgICAgaXNBdXRoZW50aWNhdGVkICYmXHJcbiAgICAgICAgbG9naW5TdGFmZiBcclxuICAgICAgXCJcclxuICAgICAgbGFiZWw9XCJjb25maWcubmFtZVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ21haW4tbWVudS1hY3RpdmUnOiBhcHBNb2R1bGVJZCA9PSBjb25maWcuYXBwTW9kdWxlSWQgfVwiXHJcbiAgICAgICAgICBbaHJlZl09XCJnZXRBcHBNb2R1bGVVcmwoY29uZmlnKVwiXHJcbiAgICAgICAgICA+e3sgY29uZmlnLm5hbWUgfX08L2FcclxuICAgICAgICA+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L21hdC10YWI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbWF0LXRhYi1ncm91cD5cclxuIl19
@@ -528,7 +528,7 @@ class SmartNavbarComponent {
528
528
  return false;
529
529
  }
530
530
  checkVictimPermission(config) {
531
- return (config.appModuleId !== 'VICTIM' || (config.appModuleId === "VICTIM" && this.hasVictimRole));
531
+ return (config.appModuleId !== 'VICTIM' || (config.appModuleId === "VICTIM" && this.hasVictimRole && !this.selectedOffender));
532
532
  }
533
533
  get hasVictimRole() {
534
534
  if (this.loginStaff &&
@@ -561,10 +561,10 @@ class SmartNavbarComponent {
561
561
  }
562
562
  }
563
563
  /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarComponent, deps: [{ token: SmartNavbarService }, { token: XdmService }, { token: i2.MsalService }], target: i0.ɵɵFactoryTarget.Component });
564
- /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], components: [{ type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i5$1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
564
+ /** @nocollapse */ /** @nocollapse */ SmartNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && \r\n (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], components: [{ type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i5$1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
565
565
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SmartNavbarComponent, decorators: [{
566
566
  type: Component,
567
- args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
567
+ args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "<!--\r\n<a class=\"smart-navbar-toggle open\" href=\"#nav\">\r\n <i class=\"material-icons\">menu</i>\r\n</a>\r\n\r\n<nav id=\"nav\" role=\"navigation\" class=\"smart-navbar-container\">\r\n <a class=\"smart-navbar-toggle close\" href=\"#\">\r\n <i class=\"material-icons\">close</i>\r\n </a>\r\n\r\n <span *ngFor=\"let config of navbarConfigs\">\r\n <a mat-button class=\"smart-navbar-item\" \r\n *ngIf=\"(config.offenderSpecificFlag === false || selectedOffender) && isAuthenticated && loginStaff\" href=\"{{config.url}}\">{{config.name}}</a>\r\n </span>\r\n\r\n <button mat-button class=\"smart-navbar-item\" [matMenuTriggerFor]=\"menuTheme\">Set Theme</button>\r\n <mat-menu #menuTheme=\"matMenu\">\r\n <button mat-menu-item (click)=\"onSetTheme('blue-theme')\">Blue</button>\r\n <button mat-menu-item (click)=\"onSetTheme('red-theme')\">Red</button>\r\n <button mat-menu-item (click)=\"onSetTheme('green-theme')\">Green</button>\r\n </mat-menu>\r\n <button mat-button class=\"smart-navbar-item smart-navbar-last-item\" [matMenuTriggerFor]=\"menu\"\r\n *ngIf=\"isAuthenticated && loginStaff\">{{loginStaff.firstName + ' ' + loginStaff.lastName}}</button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Profile</button>\r\n <button mat-menu-item (click)=\"logout()\">Sign Out</button>\r\n </mat-menu>\r\n</nav>\r\n-->\r\n\r\n<!-- <nav mat-tab-nav-bar>\r\n <a mat-tab-link mat-flat-button *ngFor=\"let config of navbarConfigs\" [active]=\"appModuleId == config.appModuleId\" href=\"{{config.url}}\">{{config.name}}</a>\r\n</nav> -->\r\n\r\n<mat-tab-group class=\"nav-tab-group\" [selectedIndex]=\"null\">\r\n <ng-container *ngFor=\"let config of navbarConfigs\">\r\n <mat-tab\r\n *ngIf=\"\r\n ((hasExternalUserRole && hasAppModulePermission(config.appModuleId)) ||\r\n (!hasExternalUserRole && \r\n (config.offenderSpecificFlag === false || selectedOffender))) &&\r\n checkVictimPermission(config) &&\r\n isAuthenticated &&\r\n loginStaff \r\n \"\r\n label=\"config.name\"\r\n >\r\n <ng-template mat-tab-label>\r\n <a\r\n mat-flat-button\r\n [ngClass]=\"{ 'main-menu-active': appModuleId == config.appModuleId }\"\r\n [href]=\"getAppModuleUrl(config)\"\r\n >{{ config.name }}</a\r\n >\r\n </ng-template>\r\n </mat-tab>\r\n </ng-container>\r\n</mat-tab-group>\r\n", styles: [".smart-navbar-container{display:flex;flex-wrap:wrap;flex-direction:column}.smart-navbar-item{font-size:1.2rem;line-height:1.2rem;padding:.5rem;background-color:var(--primary-color, #9fa8da);-webkit-text-decoration-line:none;text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-tab-links{flex-direction:row;margin:4px;flex-wrap:wrap;font-family:Roboto,arial,sans-serif;font-size:13px}.mat-tab-link{min-width:16px!important}@media only screen and (min-width: 768px){.smart-navbar-container{flex-direction:row}.smart-navbar-item{text-align:center}.smart-navbar-toggle{display:none}}@media only screen and (max-width: 767px){#nav{position:fixed;top:0;bottom:0;width:300px;left:-340px;transition:transform .3s ease-in-out}#nav:target{transform:translate(340px)}}.mat-tab-labels{display:flex!important;justify-content:flex-start!important}.mat-tab-label,.mat-tab-label.mat-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
568
568
  }], ctorParameters: function () { return [{ type: SmartNavbarService }, { type: XdmService }, { type: i2.MsalService }]; }, propDecorators: { serviceApiUrl: [{
569
569
  type: Input
570
570
  }], appModuleId: [{