@csmart/ngc-smart-core 1.18.6 → 1.18.7
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.
|
@@ -141,11 +141,11 @@ export class SmartNavbarComponent {
|
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SmartNavbarComponent, deps: [{ token: i1.SmartNavbarService }, { token: i2.XdmService }, { token: i3.MsalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
144
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], ngImport: i0, template: "\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig === config\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\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);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active,.mat-mdc-tab.mat-mdc-focus-indicato.mdc-tab--active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-mdc-tab-link{min-width:16px!important}.mat-mdc-tab .mdc-tab__content{pointer-events:none!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-mdc-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], dependencies: [{ kind: "component", type: i4.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i4.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i4.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
144
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], ngImport: i0, template: "\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig.appModuleId === config.appModuleId\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\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);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active,.mat-mdc-tab.mat-mdc-focus-indicato.mdc-tab--active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-mdc-tab-link{min-width:16px!important}.mat-mdc-tab .mdc-tab__content{pointer-events:none!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-mdc-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], dependencies: [{ kind: "component", type: i4.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i4.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i4.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
145
145
|
}
|
|
146
146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SmartNavbarComponent, decorators: [{
|
|
147
147
|
type: Component,
|
|
148
|
-
args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig === config\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\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);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active,.mat-mdc-tab.mat-mdc-focus-indicato.mdc-tab--active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-mdc-tab-link{min-width:16px!important}.mat-mdc-tab .mdc-tab__content{pointer-events:none!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-mdc-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
|
|
148
|
+
args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig.appModuleId === config.appModuleId\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\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);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active,.mat-mdc-tab.mat-mdc-focus-indicato.mdc-tab--active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-mdc-tab-link{min-width:16px!important}.mat-mdc-tab .mdc-tab__content{pointer-events:none!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-mdc-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
|
|
149
149
|
}], ctorParameters: () => [{ type: i1.SmartNavbarService }, { type: i2.XdmService }, { type: i3.MsalService }], propDecorators: { serviceApiUrl: [{
|
|
150
150
|
type: Input
|
|
151
151
|
}], appModuleId: [{
|
|
@@ -154,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
154
154
|
type: ViewChild,
|
|
155
155
|
args: ['tabs']
|
|
156
156
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBZ0IxRCxNQUFNLE9BQU8sb0JBQW9CO0lBVy9CLFlBQ1UsbUJBQXVDLEVBQ3ZDLFVBQXNCLEVBQ3RCLFlBQXlCO1FBRnpCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQVoxQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQU81Qix5QkFBb0IsR0FBNkIsSUFBSSxDQUFDO0lBTW5ELENBQUM7SUFHSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIsZ0JBQWdCLElBQUksZ0JBQWdC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bXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBJbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRhYkNoYW5nZUV2ZW50LCBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTbWFydE5hdmJhckNvbmZpZyB9IGZyb20gJy4vc21hcnQtbmF2YmFyLWNvbmZpZyc7XHJcbmltcG9ydCB7IFNtYXJ0TmF2YmFyU2VydmljZSB9IGZyb20gJy4vc21hcnQtbmF2YmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBYZG1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS94ZG0uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgU2VsZWN0ZWRPZmZlbmRlcixcclxuICBMb2dpblN0YWZmLFxyXG4gIFJvbGUsXHJcbn0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS9zbWFydC1zdG9yYWdlLW1vZGVsJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zbWFydC1uYXZiYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1uYXZiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0TmF2YmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlcnZpY2VBcGlVcmw6IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBNb2R1bGVJZCA9IG51bGw7XHJcbiAgQFZpZXdDaGlsZCgndGFicycpIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcclxuICBzZWxlY3RlZE9mZmVuZGVyOiBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgb2ZmZW5kZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBzdGFmZlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIG5hdmJhckNvbmZpZ3M6IFNtYXJ0TmF2YmFyQ29uZmlnW107XHJcbiAgc2VsZWN0ZWROYXZiYXJDb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuYXZiYXJDb25maWdTZXJ2aWNlOiBTbWFydE5hdmJhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHhkbVNlcnZpY2U6IFhkbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpLnRoZW4oKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID1cclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyICYmIHNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZFxyXG4gICAgICAgICAgPyBzZWxlY3RlZE9mZmVuZGVyXHJcbiAgICAgICAgICA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0TG9naW5TdGFmZigpLnRoZW4oKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgdGhpcy5sb2dpblN0YWZmID0gbG9naW5TdGFmZiA/IGxvZ2luU3RhZmYgOiBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vZmZlbmRlclN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0T2ZmZW5kZXJVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZE9mZmVuZGVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsZWN0ZWRPZmZlbmRlcjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdGFmZlN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0U3RhZmZVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2dpblN0YWZmKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmID0gbG9naW5TdGFmZjtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLm5hdmJhckNvbmZpZ1NlcnZpY2VcclxuICAgICAgLmdldE5hdmJhckNvbmZpZ3ModGhpcy5zZXJ2aWNlQXBpVXJsKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWdzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uYXZiYXJDb25maWdzID0gY29uZmlncy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZiYXJDb25maWcgPSB0aGlzLm5hdmJhckNvbmZpZ3MuZmluZChcclxuICAgICAgICAgICAgKGNvbmZpZykgPT4gY29uZmlnLmFwcE1vZHVsZUlkID09PSB0aGlzLmFwcE1vZHVsZUlkLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LCAxMDApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5vZmZlbmRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zdGFmZlN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgIHRoaXMuYXV0aG5TZXJ2aWNlLmxvZ291dCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF1dGhuU2VydmljZS5pbnN0YW5jZS5nZXRBbGxBY2NvdW50cygpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIHtcclxuICAgIHJldHVybiAoY29uZmlnLmFwcE1vZHVsZUlkID09PSAnUFBNQVNSVlcnKSA/IGNvbmZpZy51cmwgXHJcbiAgICAgIDogY29uZmlnICYmIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciAmJiBjb25maWcuYXBwTW9kdWxlSWQgPT09ICdQUE1BUydcclxuICAgICAgPyBgJHtjb25maWcudXJsfSZPZmZlbmRlcklkPSR7dGhpcy5zZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWR9YFxyXG4gICAgICA6IHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA/IGAke2NvbmZpZy51cmx9Lz9vZmZlbmRlcklkPSR7dGhpcy5zZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWR9YFxyXG4gICAgICA6IGNvbmZpZy51cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzQXBwTW9kdWxlUGVybWlzc2lvbihhcHBNb2R1bGVJZCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHApID0+IHAuYXBwTW9kdWxlSWQgPT09IGFwcE1vZHVsZUlkLFxyXG4gICAgICAgICkgPiAtMVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RhYihjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSA6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHRoaXMuaGFzRXh0ZXJuYWxVc2VyUm9sZSAmJiB0aGlzLmhhc0FwcE1vZHVsZVBlcm1pc3Npb24oY29uZmlnLmFwcE1vZHVsZUlkKSkgfHxcclxuICAgICAgKCF0aGlzLmhhc0V4dGVybmFsVXNlclJvbGUgJiYgKGNvbmZpZy5vZmZlbmRlclNwZWNpZmljRmxhZyA9PT0gZmFsc2UgfHwgdGhpcy5zZWxlY3RlZE9mZmVuZGVyKSlcclxuICAgICkgJiYgdGhpcy5jaGVja1ZpY3RpbVBlcm1pc3Npb24oY29uZmlnKSAmJiB0aGlzLmlzQXV0aGVudGljYXRlZCAmJiAhIXRoaXMubG9naW5TdGFmZlxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNFeHRlcm5hbFVzZXJSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0RWSVBQZXJtaXNzaW9uKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIDogYm9vbGVhbntcclxuICAgIHJldHVybiAoKGNvbmZpZy5hcHBNb2R1bGVJZCAhPT0gJ0RWSVAnKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIkRWSVBcIiAmJiB0aGlzLmhhc0RWSVBSb2xlKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0RWSVBSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0RWSVBSb2xlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RWSVBSb2xlKHJvbGU6IFJvbGUpe1xyXG4gICAgaWYocm9sZS5yb2xlSWQgPT0gJ1RTRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1RBRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1NUU0QnIHx8IHJvbGUucm9sZUlkID09ICdCQycpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrVmljdGltUGVybWlzc2lvbihjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gKChjb25maWcuYXBwTW9kdWxlSWQgIT09ICdWSUNUSU0nKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIlZJQ1RJTVwiICYmIHRoaXMuaGFzVmljdGltUm9sZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNWaWN0aW1Sb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc1ZpY3RpbVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmljdGltUm9sZShyb2xlOiBSb2xlKXtcclxuICAgIGlmKHJvbGUucm9sZUlkID09ICdCQycgfHwgcm9sZS5yb2xlSWQgPT0gJ1ZTUCcpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0V4dGVybmFsUm9sZShyb2xlOiBSb2xlKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGUucm9sZUlkKSB7XHJcbiAgICAgIGNhc2UgJ0VVRFRMJzpcclxuICAgICAgY2FzZSAnRVVEVVNNJzpcclxuICAgICAgY2FzZSAnRVVKREcnOlxyXG4gICAgICBjYXNlICdFVU1QRCc6XHJcbiAgICAgIGNhc2UgJ0VVU09UVic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBMic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBTyc6XHJcbiAgICAgIGNhc2UgJ0VVVVNQQyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbiIsIlxyXG48bmF2IG1hdC10YWItbmF2LWJhciBbdGFiUGFuZWxdPVwidGFiUGFuZWxcIj5cclxuICBAZm9yIChjb25maWcgb2YgbmF2YmFyQ29uZmlnczsgdHJhY2sgY29uZmlnOyBsZXQgaW5kZXggPSAkaW5kZXgpe1xyXG4gICAgQGlmIChzaG93VGFiKGNvbmZpZykpIHtcclxuICAgICAgPGFcclxuICAgICAgICBtYXQtdGFiLWxpbmtcclxuICAgICAgICBjbGFzcz1cInNtYXJ0LW5hdmJhci1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWROYXZiYXJDb25maWcgPSBjb25maWdcIlxyXG4gICAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWROYXZiYXJDb25maWcgIT09IG51bGwgJiYgc2VsZWN0ZWROYXZiYXJDb25maWcgPT09IGNvbmZpZ1wiXHJcbiAgICAgICAgW2hyZWZdPVwiZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZylcIj57eyBjb25maWcubmFtZSB9fTwvYT5cclxuICAgIH1cclxuICB9XHJcbjwvbmF2PlxyXG48bWF0LXRhYi1uYXYtcGFuZWwgI3RhYlBhbmVsPjwvbWF0LXRhYi1uYXYtcGFuZWw+XHJcblxyXG4iXX0=
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NzbWFydC9uZ2Mtc21hcnQtY29yZS9zcmMvbGliL3NtYXJ0LW5hdmJhci9zbWFydC1uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3NtYXJ0L25nYy1zbWFydC1jb3JlL3NyYy9saWIvc21hcnQtbmF2YmFyL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBZ0IxRCxNQUFNLE9BQU8sb0JBQW9CO0lBVy9CLFlBQ1UsbUJBQXVDLEVBQ3ZDLFVBQXNCLEVBQ3RCLFlBQXlCO1FBRnpCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQVoxQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQU81Qix5QkFBb0IsR0FBNkIsSUFBSSxDQUFDO0lBTW5ELENBQUM7SUFHSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIsZ0JBQWdCLElBQUksZ0JBQWdC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bXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBJbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRhYkNoYW5nZUV2ZW50LCBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTbWFydE5hdmJhckNvbmZpZyB9IGZyb20gJy4vc21hcnQtbmF2YmFyLWNvbmZpZyc7XHJcbmltcG9ydCB7IFNtYXJ0TmF2YmFyU2VydmljZSB9IGZyb20gJy4vc21hcnQtbmF2YmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBYZG1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS94ZG0uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgU2VsZWN0ZWRPZmZlbmRlcixcclxuICBMb2dpblN0YWZmLFxyXG4gIFJvbGUsXHJcbn0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS9zbWFydC1zdG9yYWdlLW1vZGVsJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zbWFydC1uYXZiYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1uYXZiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LW5hdmJhci5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0TmF2YmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlcnZpY2VBcGlVcmw6IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBNb2R1bGVJZCA9IG51bGw7XHJcbiAgQFZpZXdDaGlsZCgndGFicycpIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcclxuICBzZWxlY3RlZE9mZmVuZGVyOiBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgb2ZmZW5kZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBzdGFmZlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIG5hdmJhckNvbmZpZ3M6IFNtYXJ0TmF2YmFyQ29uZmlnW107XHJcbiAgc2VsZWN0ZWROYXZiYXJDb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuYXZiYXJDb25maWdTZXJ2aWNlOiBTbWFydE5hdmJhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHhkbVNlcnZpY2U6IFhkbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpLnRoZW4oKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID1cclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyICYmIHNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZFxyXG4gICAgICAgICAgPyBzZWxlY3RlZE9mZmVuZGVyXHJcbiAgICAgICAgICA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0TG9naW5TdGFmZigpLnRoZW4oKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgdGhpcy5sb2dpblN0YWZmID0gbG9naW5TdGFmZiA/IGxvZ2luU3RhZmYgOiBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vZmZlbmRlclN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0T2ZmZW5kZXJVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZE9mZmVuZGVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsZWN0ZWRPZmZlbmRlcjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdGFmZlN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0U3RhZmZVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2dpblN0YWZmKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmID0gbG9naW5TdGFmZjtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLm5hdmJhckNvbmZpZ1NlcnZpY2VcclxuICAgICAgLmdldE5hdmJhckNvbmZpZ3ModGhpcy5zZXJ2aWNlQXBpVXJsKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWdzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uYXZiYXJDb25maWdzID0gY29uZmlncy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYS5kaXNwbGF5T3JkZXIgPCBiLmRpc3BsYXlPcmRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGEuZGlzcGxheU9yZGVyID4gYi5kaXNwbGF5T3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZiYXJDb25maWcgPSB0aGlzLm5hdmJhckNvbmZpZ3MuZmluZChcclxuICAgICAgICAgICAgKGNvbmZpZykgPT4gY29uZmlnLmFwcE1vZHVsZUlkID09PSB0aGlzLmFwcE1vZHVsZUlkLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LCAxMDApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5vZmZlbmRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zdGFmZlN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgIHRoaXMuYXV0aG5TZXJ2aWNlLmxvZ291dCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF1dGhuU2VydmljZS5pbnN0YW5jZS5nZXRBbGxBY2NvdW50cygpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIHtcclxuICAgIHJldHVybiAoY29uZmlnLmFwcE1vZHVsZUlkID09PSAnUFBNQVNSVlcnKSA/IGNvbmZpZy51cmwgXHJcbiAgICAgIDogY29uZmlnICYmIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciAmJiBjb25maWcuYXBwTW9kdWxlSWQgPT09ICdQUE1BUydcclxuICAgICAgPyBgJHtjb25maWcudXJsfSZPZmZlbmRlcklkPSR7dGhpcy5zZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWR9YFxyXG4gICAgICA6IHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA/IGAke2NvbmZpZy51cmx9Lz9vZmZlbmRlcklkPSR7dGhpcy5zZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWR9YFxyXG4gICAgICA6IGNvbmZpZy51cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzQXBwTW9kdWxlUGVybWlzc2lvbihhcHBNb2R1bGVJZCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHApID0+IHAuYXBwTW9kdWxlSWQgPT09IGFwcE1vZHVsZUlkLFxyXG4gICAgICAgICkgPiAtMVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RhYihjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSA6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHRoaXMuaGFzRXh0ZXJuYWxVc2VyUm9sZSAmJiB0aGlzLmhhc0FwcE1vZHVsZVBlcm1pc3Npb24oY29uZmlnLmFwcE1vZHVsZUlkKSkgfHxcclxuICAgICAgKCF0aGlzLmhhc0V4dGVybmFsVXNlclJvbGUgJiYgKGNvbmZpZy5vZmZlbmRlclNwZWNpZmljRmxhZyA9PT0gZmFsc2UgfHwgdGhpcy5zZWxlY3RlZE9mZmVuZGVyKSlcclxuICAgICkgJiYgdGhpcy5jaGVja1ZpY3RpbVBlcm1pc3Npb24oY29uZmlnKSAmJiB0aGlzLmlzQXV0aGVudGljYXRlZCAmJiAhIXRoaXMubG9naW5TdGFmZlxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNFeHRlcm5hbFVzZXJSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0RWSVBQZXJtaXNzaW9uKGNvbmZpZzogU21hcnROYXZiYXJDb25maWcpIDogYm9vbGVhbntcclxuICAgIHJldHVybiAoKGNvbmZpZy5hcHBNb2R1bGVJZCAhPT0gJ0RWSVAnKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIkRWSVBcIiAmJiB0aGlzLmhhc0RWSVBSb2xlKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0RWSVBSb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc0RWSVBSb2xlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RWSVBSb2xlKHJvbGU6IFJvbGUpe1xyXG4gICAgaWYocm9sZS5yb2xlSWQgPT0gJ1RTRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1RBRCcgfHwgcm9sZS5yb2xlSWQgPT0gJ1NUU0QnIHx8IHJvbGUucm9sZUlkID09ICdCQycpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrVmljdGltUGVybWlzc2lvbihjb25maWc6IFNtYXJ0TmF2YmFyQ29uZmlnKSA6IGJvb2xlYW57XHJcbiAgICByZXR1cm4gKChjb25maWcuYXBwTW9kdWxlSWQgIT09ICdWSUNUSU0nKSB8fCAoY29uZmlnLmFwcE1vZHVsZUlkID09PSBcIlZJQ1RJTVwiICYmIHRoaXMuaGFzVmljdGltUm9sZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNWaWN0aW1Sb2xlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgJiZcclxuICAgICAgdGhpcy5sb2dpblN0YWZmLnJvbGVzICYmXHJcbiAgICAgIHRoaXMubG9naW5TdGFmZi5yb2xlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgodGhpcy5pc1ZpY3RpbVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmljdGltUm9sZShyb2xlOiBSb2xlKXtcclxuICAgIGlmKHJvbGUucm9sZUlkID09ICdCQycgfHwgcm9sZS5yb2xlSWQgPT0gJ1ZTUCcpe1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0V4dGVybmFsUm9sZShyb2xlOiBSb2xlKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGUucm9sZUlkKSB7XHJcbiAgICAgIGNhc2UgJ0VVRFRMJzpcclxuICAgICAgY2FzZSAnRVVEVVNNJzpcclxuICAgICAgY2FzZSAnRVVKREcnOlxyXG4gICAgICBjYXNlICdFVU1QRCc6XHJcbiAgICAgIGNhc2UgJ0VVU09UVic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBMic6XHJcbiAgICAgIGNhc2UgJ0VVVVNBTyc6XHJcbiAgICAgIGNhc2UgJ0VVVVNQQyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbiIsIlxyXG48bmF2IG1hdC10YWItbmF2LWJhciBbdGFiUGFuZWxdPVwidGFiUGFuZWxcIj5cclxuICBAZm9yIChjb25maWcgb2YgbmF2YmFyQ29uZmlnczsgdHJhY2sgY29uZmlnOyBsZXQgaW5kZXggPSAkaW5kZXgpe1xyXG4gICAgQGlmIChzaG93VGFiKGNvbmZpZykpIHtcclxuICAgICAgPGFcclxuICAgICAgICBtYXQtdGFiLWxpbmtcclxuICAgICAgICBjbGFzcz1cInNtYXJ0LW5hdmJhci1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWROYXZiYXJDb25maWcgPSBjb25maWdcIlxyXG4gICAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWROYXZiYXJDb25maWcgIT09IG51bGwgJiYgc2VsZWN0ZWROYXZiYXJDb25maWcuYXBwTW9kdWxlSWQgPT09IGNvbmZpZy5hcHBNb2R1bGVJZFwiXHJcbiAgICAgICAgW2hyZWZdPVwiZ2V0QXBwTW9kdWxlVXJsKGNvbmZpZylcIj57eyBjb25maWcubmFtZSB9fTwvYT5cclxuICAgIH1cclxuICB9XHJcbjwvbmF2PlxyXG48bWF0LXRhYi1uYXYtcGFuZWwgI3RhYlBhbmVsPjwvbWF0LXRhYi1uYXYtcGFuZWw+XHJcblxyXG4iXX0=
|
|
@@ -609,11 +609,11 @@ class SmartNavbarComponent {
|
|
|
609
609
|
}
|
|
610
610
|
}
|
|
611
611
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SmartNavbarComponent, deps: [{ token: SmartNavbarService }, { token: XdmService }, { token: i2.MsalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
612
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], ngImport: i0, template: "\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig === config\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\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);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active,.mat-mdc-tab.mat-mdc-focus-indicato.mdc-tab--active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-mdc-tab-link{min-width:16px!important}.mat-mdc-tab .mdc-tab__content{pointer-events:none!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-mdc-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], dependencies: [{ kind: "component", type: i4.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i4.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i4.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
612
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: SmartNavbarComponent, selector: "app-smart-navbar", inputs: { serviceApiUrl: "serviceApiUrl", appModuleId: "appModuleId" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabs"], descendants: true }], ngImport: i0, template: "\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig.appModuleId === config.appModuleId\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\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);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active,.mat-mdc-tab.mat-mdc-focus-indicato.mdc-tab--active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-mdc-tab-link{min-width:16px!important}.mat-mdc-tab .mdc-tab__content{pointer-events:none!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-mdc-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"], dependencies: [{ kind: "component", type: i4.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i4.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i4.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
613
613
|
}
|
|
614
614
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SmartNavbarComponent, decorators: [{
|
|
615
615
|
type: Component,
|
|
616
|
-
args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig === config\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\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);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active,.mat-mdc-tab.mat-mdc-focus-indicato.mdc-tab--active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-mdc-tab-link{min-width:16px!important}.mat-mdc-tab .mdc-tab__content{pointer-events:none!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-mdc-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
|
|
616
|
+
args: [{ selector: 'app-smart-navbar', encapsulation: ViewEncapsulation.None, template: "\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig.appModuleId === config.appModuleId\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\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);text-decoration-line:none;display:block;text-align:left;border-radius:.3rem;margin:.1rem}.smart-navbar-last-item{margin-left:auto}.main-menu-active,.mat-mdc-tab.mat-mdc-focus-indicato.mdc-tab--active{border-bottom:3px solid darkblue!important;border-radius:0!important}.nav-tab-group.mat-primary .mat-ink-bar{background-color:inherit!important}.mat-mdc-tab-link{min-width:16px!important}.mat-mdc-tab .mdc-tab__content{pointer-events:none!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-mdc-tab-label-active{min-width:25px!important;padding:0 5px!important;justify-content:flex-start!important;font-weight:700}\n"] }]
|
|
617
617
|
}], ctorParameters: () => [{ type: SmartNavbarService }, { type: XdmService }, { type: i2.MsalService }], propDecorators: { serviceApiUrl: [{
|
|
618
618
|
type: Input
|
|
619
619
|
}], appModuleId: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csmart-ngc-smart-core.mjs","sources":["../../../../projects/csmart/ngc-smart-core/src/lib/smart-storage/smart-storage-model.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-storage/xdm.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-error.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-error.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-auth.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-access-control.directive.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-authorization-guard.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-redirect.guard.ts","../../../../projects/csmart/ngc-smart-core/src/lib/ngc-smart-core.module.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-login-staff-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-selected-offender-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-access-control-config.ts","../../../../projects/csmart/ngc-smart-core/src/public-api.ts","../../../../projects/csmart/ngc-smart-core/src/csmart-ngc-smart-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport class Permission {\r\n roleId: string;\r\n appModuleId: string;\r\n resource: string;\r\n assignmentStaffRelationId: string;\r\n readFlag: boolean;\r\n createFlag: boolean;\r\n updateFlag: boolean;\r\n deleteFlag: boolean;\r\n assignFlag: boolean;\r\n reopenFlag: boolean;\r\n closeFlag: boolean;\r\n expungeFlag: boolean;\r\n}\r\n\r\nexport class Role {\r\n roleId: string;\r\n role: string;\r\n}\r\n\r\nexport class Option {\r\n offenderOptionListId: string;\r\n name: string;\r\n serviceApiFieldName: string;\r\n selectedFlag: boolean;\r\n}\r\n\r\nexport class LoginStaff {\r\n staffId: number;\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n phone: string;\r\n email: string;\r\n selectedRole: string = '*';\r\n roles?: Role[];\r\n permissions?: Permission[];\r\n options?: Option[];\r\n}\r\n\r\nexport class SelectedOffender {\r\n offenderId: number;\r\n name: string;\r\n pdId: string;\r\n birthDate: Date;\r\n gender: string;\r\n assignmentStaffRelationId?: string;\r\n intakeFlag?: boolean = false;\r\n}\r\n\r\nexport class OffenderQuery {\r\n offenders: SelectedOffender[];\r\n}\r\n\r\nexport class StorageKey {\r\n static selectedOffender = 'smart-selected-offender';\r\n static loginStaff = 'smart-login-staff';\r\n static offenderQuery = 'smart-offender-query';\r\n}\r\n\r\nexport const SMART_WEB_STORAGE_LISTENER_URL = new InjectionToken<string>(\r\n 'SMART Web Storage Listener URL',\r\n);\r\nexport const SMART_WEB_PORTAL_URL = new InjectionToken<string>(\r\n 'SMART Web Portal URL',\r\n);\r\nexport const SMART_DATA_SERVICE_URL = new InjectionToken<string>(\r\n 'SMART Data Service URL',\r\n);\r\n\r\n//exception for redirection\r\nexport const SMART_DOMAIN_FORMAT = new InjectionToken<string>(\r\n 'SMART Domain Format URL',\r\n);\r\n\r\n","import { Injectable, Inject, isDevMode } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Subject, Observable, of, from } from 'rxjs';\r\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\r\nimport {\r\n SelectedOffender,\r\n LoginStaff,\r\n OffenderQuery,\r\n StorageKey,\r\n SMART_WEB_STORAGE_LISTENER_URL,\r\n SMART_DATA_SERVICE_URL,\r\n Option,\r\n} from './smart-storage-model';\r\n\r\n// import connectToChild from \"penpal/lib/connectToChild\";\r\nimport { connectToChild } from 'penpal';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class XdmService {\r\n private offenderSubject = new Subject<SelectedOffender | void>();\r\n private staffSubject = new Subject<LoginStaff | void>();\r\n private offenderQuerySubject = new Subject<OffenderQuery | void>();\r\n private connection: any;\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n @Inject(SMART_WEB_STORAGE_LISTENER_URL)\r\n private smartStorageListenerUrl: string,\r\n private httpClient: HttpClient,\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n ) {\r\n if (isDevMode) {\r\n console.log('SmartStorage XdmService (Client) - constructor()');\r\n }\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n const frame = this.document.createElement('iframe');\r\n frame.src = this.smartStorageListenerUrl;\r\n frame.id = 'childframe';\r\n frame.name = Math.random().toString();\r\n frame.onload = null;\r\n //frame.style.visibility = 'hidden';\r\n frame.style.display = 'none';\r\n this.document.body.appendChild(frame);\r\n\r\n this.connection = connectToChild({\r\n iframe: frame,\r\n debug: false,\r\n });\r\n }\r\n\r\n private getStaffOffenderListOptions(\r\n staffId: number,\r\n ): Observable<Array<Option>> {\r\n const queryString = `{findvStaffOffenderListOptions(input:{\r\n where:{\r\n staffId: ${staffId}\r\n }\r\n }){\r\n data{\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n selectedFlag\r\n }\r\n } }`;\r\n return this.httpClient\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n data.findvStaffOffenderListOptions.data['offenderOptionListId'] =\r\n data.findvStaffOffenderListOptions.data['offenderListOptionId'];\r\n return data.findvStaffOffenderListOptions.data;\r\n }),\r\n );\r\n /*return of([\r\n { offenderListOptionId: 'genderCode', name: '', selectedFlag: true }]);*/\r\n }\r\n\r\n public clearAll(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearAll();\r\n this.offenderSubject.next();\r\n this.staffSubject.next();\r\n });\r\n }\r\n\r\n /*************************************\r\n * Offender\r\n **************************************/\r\n public setSelectedOffender(selectedOffender: SelectedOffender): void {\r\n this.connection.promise.then((child) => {\r\n child.setSelectedOffender(selectedOffender);\r\n this.offenderSubject.next(selectedOffender);\r\n });\r\n\r\n this.getLoginStaff().then((loginStaff) => {\r\n let now = (new Date()).toISOString();\r\n const queryString = `mutation { createStaffOffenderAccess(input: {\r\n staffId: ${loginStaff.staffId},\r\n offenderId: ${selectedOffender.offenderId},\r\n accessDate: \"${now}\"\r\n }) {\r\n data {\r\n staffOffenderAccessId\r\n }\r\n }}`;\r\n this.httpClient.post<any>(this.smartDataServiceUrl, { query: queryString }).subscribe();\r\n });\r\n }\r\n\r\n public getSelectedOffender(): Promise<SelectedOffender> {\r\n return this.connection.promise.then((child) =>\r\n child.getSelectedOffender(StorageKey.selectedOffender),\r\n );\r\n }\r\n\r\n public clearSelectedOffender(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearSelectedOffender();\r\n this.offenderSubject.next();\r\n });\r\n }\r\n\r\n public getOffenderUpdate(): Observable<SelectedOffender> {\r\n return this.offenderSubject.asObservable() as Observable<SelectedOffender>;\r\n }\r\n\r\n /************************************************************************\r\n * Staff\r\n ************************************************************************/\r\n public setLoginStaff(loginStaff: LoginStaff) {\r\n this.connection.promise.then((child) => {\r\n child.setLoginStaff(loginStaff);\r\n this.staffSubject.next(loginStaff);\r\n });\r\n }\r\n\r\n public getLoginStaff(): Promise<LoginStaff> {\r\n return this.connection.promise.then((child) =>\r\n child.getLoginStaff(StorageKey.loginStaff),\r\n );\r\n }\r\n\r\n public clearLoginStaff(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearLoginStaff();\r\n this.staffSubject.next();\r\n });\r\n }\r\n\r\n public getStaffUpdate(): Observable<LoginStaff> {\r\n return this.staffSubject.asObservable() as Observable<LoginStaff>;\r\n }\r\n\r\n public refreshLoginStaffOptions() {\r\n this.getLoginStaff().then((oldLoginStaff) => {\r\n this.getStaffOffenderListOptions(oldLoginStaff.staffId).subscribe(\r\n (optionData) => {\r\n console.log(optionData);\r\n oldLoginStaff.options = optionData;\r\n this.setLoginStaff(oldLoginStaff);\r\n },\r\n );\r\n });\r\n }\r\n\r\n /************************************************************************\r\n * Offender Query\r\n ************************************************************************/\r\n public setOffenderQuery(offenderQuery: OffenderQuery) {\r\n this.connection.promise.then((child) => {\r\n child.setOffenderQuery(offenderQuery);\r\n this.offenderQuerySubject.next(offenderQuery);\r\n });\r\n }\r\n\r\n public getOffenderQuery(): Promise<OffenderQuery> {\r\n return this.connection.promise.then((child) =>\r\n child.getOffenderQuery(StorageKey.offenderQuery),\r\n );\r\n }\r\n\r\n public clearOffenderQuery(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearOffenderQuery();\r\n this.offenderQuerySubject.next();\r\n });\r\n }\r\n\r\n public getOffenderQueryUpdate(): Observable<OffenderQuery> {\r\n return this.offenderQuerySubject.asObservable() as Observable<OffenderQuery>;\r\n }\r\n\r\n public setSelectedOffenderFromRoute(offenderId: number, intakeFlag: boolean): Observable<SelectedOffender> {\r\n return from(this.getLoginStaff()).pipe(\r\n switchMap(loginStaff => {\r\n const queryString = `{\r\n getSelectedOffender(input: { \r\n offenderId: ${offenderId},\r\n staffId: ${loginStaff.staffId}\r\n }){\r\n data{\r\n offenderId\r\n name: offenderName\r\n pdId\r\n birthDate\r\n gender\r\n }\r\n }\r\n }`;\r\n return this.httpClient.post<any>(this.smartDataServiceUrl, { query: queryString }).pipe(\r\n map(({ data }) => data.getSelectedOffender.data),\r\n catchError(error => {\r\n console.error('HTTP request error:', error);\r\n return of(null); \r\n })\r\n );\r\n }),\r\n map(selectedOffender => {\r\n selectedOffender.intakeFlag = intakeFlag;\r\n this.setSelectedOffender(selectedOffender);\r\n this.setOffenderQuery({offenders: [selectedOffender]});\r\n return selectedOffender;\r\n }),\r\n catchError(error => {\r\n console.error('Error in processing offender data:', error);\r\n throw error; \r\n })\r\n );\r\n }\r\n}","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, from, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n SMART_DATA_SERVICE_URL,\r\n} from '../smart-storage/smart-storage-model';\r\n\r\n\r\n@Injectable()\r\nexport class SmartOffenderHeaderService {\r\n constructor(\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n private http: HttpClient,\r\n ) {}\r\n\r\n getStaffOffenders(staffId: number): Observable<AssignedOffender[]> {\r\n const queryString = `\r\n query getStaffOffenderList{\r\n filterOffenderList(input: {staffId: ${staffId}}) {\r\n data {\r\n offenderId\r\n offenderName\r\n pdId\r\n birthDate\r\n gender\r\n }\r\n }\r\n }\r\n `;\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n return data.filterOffenderList.data;\r\n }),\r\n );\r\n }\r\n}\r\n\r\nexport interface AssignedOffender {\r\n offenderId: number;\r\n offenderName: string;\r\n pdId: string;\r\n birthDate: Date;\r\n gender: string;\r\n}\r\n","import { Component, OnInit, OnDestroy, NgZone, Output, EventEmitter } from '@angular/core';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport { SelectedOffender, LoginStaff, Role, OffenderQuery } from '../smart-storage/smart-storage-model';\r\nimport { Subscription, Observable, from, of } from 'rxjs';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { SmartOffenderHeaderService, AssignedOffender } from './smart-offender-header.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-smart-offender-header',\r\n templateUrl: './smart-offender-header.component.html',\r\n styleUrls: ['./smart-offender-header.component.css'],\r\n})\r\nexport class SmartOffenderHeaderComponent implements OnInit, OnDestroy {\r\n public selectedOffender: SelectedOffender;\r\n loginStaff: LoginStaff;\r\n subscription: Subscription;\r\n selectedOffenderControl$ = new UntypedFormControl();\r\n // assignedOffenders: AssignedOffender[];\r\n offenderQueryList: SelectedOffender[];\r\n offenderQuerySubscription: Subscription;\r\n // public isAuthenticated: boolean;\r\n\r\n constructor(\r\n private xdmService: XdmService,\r\n private authnService: MsalService,\r\n private smartOffenderHeaderService: SmartOffenderHeaderService,\r\n private router: Router,\r\n ) {}\r\n\r\n ngOnInit() {\r\n // this.isAuthenticated = this.authnService.getAccount() ? true : false;\r\n this.xdmService.getLoginStaff().then((loginStaff) => {\r\n this.loginStaff = loginStaff ? loginStaff : null;\r\n });\r\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\r\n this.selectedOffender =\r\n selectedOffender && selectedOffender.offenderId\r\n ? selectedOffender\r\n : null;\r\n });\r\n\r\n this.subscription = this.xdmService\r\n .getOffenderUpdate()\r\n .subscribe((selectedOffender) => {\r\n this.selectedOffender = selectedOffender;\r\n this.setSelectedOffenderControl();\r\n });\r\n\r\n this.xdmService.getOffenderQuery().then((offenderQuery: OffenderQuery) => {\r\n if (offenderQuery) {\r\n this.offenderQueryList = offenderQuery.offenders;\r\n this.setSelectedOffenderControl();\r\n }\r\n });\r\n\r\n this.offenderQuerySubscription = this.xdmService\r\n .getOffenderQueryUpdate()\r\n .subscribe((offenderList) => {\r\n if (offenderList && offenderList.offenders) {\r\n this.offenderQueryList = [...offenderList.offenders];\r\n }\r\n });\r\n\r\n this.selectedOffenderControl$.valueChanges.subscribe((o) =>\r\n this.onOffenderSelected(o),\r\n );\r\n\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => {\r\n return false;\r\n };\r\n }\r\n\r\n get isAuthenticated() : boolean {\r\n return this.authnService.instance.getAllAccounts().length > 0;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private onOffenderSelected(offender): void {\r\n if (offender) {\r\n // const o = offender.offenderName.split(',');\r\n // if (o.length === 2) {\r\n // const offenderName = `${o[1]} ${o[0]}`;\r\n // this.selectedOffender = {\r\n // offenderId: offender.offenderId,\r\n // name: offenderName,\r\n // pdId: offender.pdId,\r\n // birthDate: offender.birthDate,\r\n // gender: offender.genderCode,\r\n // assignmentStaffRelationId: '',\r\n // intakeFlag: this.loginStaff\r\n // ? this.hasIntakeRole(this.loginStaff.roles)\r\n // : false,\r\n // } as SelectedOffender;\r\n this.selectedOffender = offender;\r\n this.xdmService.setSelectedOffender(this.selectedOffender);\r\n this.reloadCurrentRoute();\r\n }\r\n }\r\n\r\n private setSelectedOffenderControl() {\r\n if (\r\n this.selectedOffender &&\r\n this.offenderQueryList &&\r\n this.offenderQueryList.length > 0\r\n ) {\r\n const o = this.offenderQueryList.find(\r\n (x) => x.offenderId === this.selectedOffender.offenderId,\r\n );\r\n if (o) {\r\n this.selectedOffenderControl$.setValue(o, { emitEvent: false });\r\n }\r\n\r\n if (!o && this.offenderQueryList.length > 0) {\r\n this.selectedOffenderControl$.setValue(this.offenderQueryList[0], {\r\n emitEvent: false,\r\n });\r\n }\r\n }\r\n }\r\n\r\n private reloadCurrentRoute() {\r\n try {\r\n const urlTree = this.router.parseUrl(this.router.url);\r\n if (\r\n urlTree &&\r\n urlTree.root &&\r\n urlTree.root.segments &&\r\n urlTree.root.segments.length > 1\r\n ) {\r\n this.router.navigate([urlTree.root.segments[0].path]);\r\n } else if (\r\n urlTree &&\r\n urlTree.root &&\r\n urlTree.root.children &&\r\n urlTree.root.children.primary &&\r\n urlTree.root.children.primary.segments &&\r\n urlTree.root.children.primary.segments.length > 1\r\n ) {\r\n this.router.navigate([urlTree.root.children.primary.segments[0].path]);\r\n } else {\r\n this.router.navigate([this.router.url]);\r\n }\r\n } catch {\r\n this.router.navigateByUrl('/');\r\n }\r\n }\r\n\r\n private hasIntakeRole(roles: Role[]) {\r\n if (roles && roles.length > 0) {\r\n return roles.findIndex(this.isIntakeRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private isIntakeRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'OPA':\r\n case 'OPS':\r\n case 'SOPS':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"offender-header-container\"\r\n *ngIf=\"selectedOffender && isAuthenticated\">\r\n <div class=\"offender-header-name-item\">\r\n <mat-form-field class=\"switch-offender\" appearance=\"fill\">\r\n <mat-label>Switch Offender</mat-label>\r\n <mat-select [formControl]=\"selectedOffenderControl$\">\r\n <mat-option\r\n *ngFor=\"let offender of offenderQueryList\"\r\n [value]=\"offender\">\r\n {{ offender?.name}} ({{offender?.offenderId}})\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\r\n </div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">CSOSA ID:</span>\r\n {{ selectedOffender.offenderId }}\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable, isDevMode } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { SmartNavbarConfig } from './smart-navbar-config';\r\n\r\n@Injectable()\r\nexport class SmartNavbarService {\r\n configs: SmartNavbarConfig[];\r\n constructor(private http: HttpClient) {}\r\n\r\n /*\r\n public getNavbarConfigs(): SmartNavbarConfig[] {\r\n this.configs = [\r\n {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },\r\n {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },\r\n {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },\r\n ];\r\n\r\n return this.configs;\r\n }\r\n */\r\n /*\r\n public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {\r\n return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');\r\n }\r\n */\r\n\r\n public getNavbarConfigs(\r\n serviceApiUrl: string,\r\n ): Observable<SmartNavbarConfig[]> {\r\n const queryString = `\r\n {\r\n findAppModules {\r\n data {\r\n appModuleId\r\n name\r\n url\r\n offenderSpecificFlag\r\n displayOrder\r\n }\r\n }\r\n }`;\r\n\r\n /*\r\n const httpHeaders = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n });\r\n const options = {\r\n headers: httpHeaders\r\n };\r\n */\r\n\r\n return this.http\r\n .post<any>(serviceApiUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n if (isDevMode()) {\r\n console.log(data);\r\n }\r\n return data.findAppModules.data;\r\n }),\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n ViewChild,\r\n ViewEncapsulation,\r\n Inject,\r\n} from '@angular/core';\r\nimport { MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { SmartNavbarConfig } from './smart-navbar-config';\r\nimport { SmartNavbarService } from './smart-navbar.service';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport {\r\n SelectedOffender,\r\n LoginStaff,\r\n Role,\r\n} from '../smart-storage/smart-storage-model';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-smart-navbar',\r\n templateUrl: './smart-navbar.component.html',\r\n styleUrls: ['./smart-navbar.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SmartNavbarComponent implements OnInit, OnDestroy {\r\n @Input() serviceApiUrl: string;\r\n @Input() appModuleId = null;\r\n @ViewChild('tabs') tabGroup: MatTabGroup;\r\n selectedOffender: SelectedOffender;\r\n loginStaff: LoginStaff;\r\n offenderSubscription: Subscription;\r\n staffSubscription: Subscription;\r\n navbarConfigs: SmartNavbarConfig[];\r\n selectedNavbarConfig: SmartNavbarConfig | null = null;\r\n\r\n constructor(\r\n private navbarConfigService: SmartNavbarService,\r\n private xdmService: XdmService,\r\n private authnService: MsalService,\r\n ) {}\r\n\r\n\r\n ngOnInit() {\r\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\r\n this.selectedOffender =\r\n selectedOffender && selectedOffender.offenderId\r\n ? selectedOffender\r\n : null;\r\n });\r\n\r\n this.xdmService.getLoginStaff().then((loginStaff) => {\r\n this.loginStaff = loginStaff ? loginStaff : null;\r\n });\r\n\r\n this.offenderSubscription = this.xdmService\r\n .getOffenderUpdate()\r\n .subscribe((selectedOffender) => {\r\n this.selectedOffender = selectedOffender;\r\n });\r\n\r\n this.staffSubscription = this.xdmService\r\n .getStaffUpdate()\r\n .subscribe((loginStaff) => {\r\n this.loginStaff = loginStaff;\r\n });\r\n this.navbarConfigService\r\n .getNavbarConfigs(this.serviceApiUrl)\r\n .subscribe((configs) => {\r\n this.navbarConfigs = configs.sort((a, b) => {\r\n if (a.displayOrder < b.displayOrder) {\r\n return -1;\r\n } else if (a.displayOrder > b.displayOrder) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n setTimeout(() => {\r\n this.selectedNavbarConfig = this.navbarConfigs.find(\r\n (config) => config.appModuleId === this.appModuleId,\r\n );\r\n }, 100);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.offenderSubscription.unsubscribe();\r\n this.staffSubscription.unsubscribe();\r\n }\r\n\r\n\r\n public logout(): void {\r\n this.xdmService.clearAll();\r\n this.authnService.logout();\r\n }\r\n\r\n get isAuthenticated(): boolean {\r\n return this.authnService.instance.getAllAccounts().length > 0;\r\n }\r\n\r\n public getAppModuleUrl(config: SmartNavbarConfig) {\r\n return (config.appModuleId === 'PPMASRVW') ? config.url \r\n : config && this.selectedOffender && config.appModuleId === 'PPMAS'\r\n ? `${config.url}&OffenderId=${this.selectedOffender.offenderId}`\r\n : this.selectedOffender ? `${config.url}/?offenderId=${this.selectedOffender.offenderId}`\r\n : config.url;\r\n }\r\n\r\n public hasAppModulePermission(appModuleId) {\r\n if (\r\n this.loginStaff &&\r\n this.loginStaff.permissions &&\r\n this.loginStaff.permissions.length > 0\r\n ) {\r\n return (\r\n this.loginStaff.permissions.findIndex(\r\n (p) => p.appModuleId === appModuleId,\r\n ) > -1\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n showTab(config: SmartNavbarConfig) : boolean {\r\n return (\r\n (this.hasExternalUserRole && this.hasAppModulePermission(config.appModuleId)) ||\r\n (!this.hasExternalUserRole && (config.offenderSpecificFlag === false || this.selectedOffender))\r\n ) && this.checkVictimPermission(config) && this.isAuthenticated && !!this.loginStaff\r\n }\r\n\r\n public get hasExternalUserRole() {\r\n if (\r\n this.loginStaff &&\r\n this.loginStaff.roles &&\r\n this.loginStaff.roles.length > 0\r\n ) {\r\n return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n public checkDVIPPermission(config: SmartNavbarConfig) : boolean{\r\n return ((config.appModuleId !== 'DVIP') || (config.appModuleId === \"DVIP\" && this.hasDVIPRole));\r\n }\r\n\r\n public get hasDVIPRole() {\r\n if (\r\n this.loginStaff &&\r\n this.loginStaff.roles &&\r\n this.loginStaff.roles.length > 0\r\n ) {\r\n return this.loginStaff.roles.findIndex(this.isDVIPRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private isDVIPRole(role: Role){\r\n if(role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC'){\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n public checkVictimPermission(config: SmartNavbarConfig) : boolean{\r\n return ((config.appModuleId !== 'VICTIM') || (config.appModuleId === \"VICTIM\" && this.hasVictimRole));\r\n }\r\n\r\n public get hasVictimRole() {\r\n if (\r\n this.loginStaff &&\r\n this.loginStaff.roles &&\r\n this.loginStaff.roles.length > 0\r\n ) {\r\n return this.loginStaff.roles.findIndex(this.isVictimRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private isVictimRole(role: Role){\r\n if(role.roleId == 'BC' || role.roleId == 'VSP'){\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n private isExternalRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'EUDTL':\r\n case 'EUDUSM':\r\n case 'EUJDG':\r\n case 'EUMPD':\r\n case 'EUSOTV':\r\n case 'EUUSA2':\r\n case 'EUUSAO':\r\n case 'EUUSPC':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig === config\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\n// import { SmartAuthService } from './smart-auth.service';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { SMART_WEB_PORTAL_URL } from '../smart-storage/smart-storage-model';\r\n\r\n@Component({\r\n selector: 'app-smart-error',\r\n templateUrl: './smart-error.component.html',\r\n styleUrls: ['./smart-error.component.css'],\r\n})\r\nexport class SmartErrorComponent implements OnInit {\r\n type: string;\r\n message: string;\r\n\r\n constructor(\r\n private authnService: MsalService,\r\n private route: ActivatedRoute,\r\n @Inject(SMART_WEB_PORTAL_URL) private smartWebPortalUrl: string,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.type = this.route.snapshot.queryParamMap.get('type') || 'staff';\r\n this.message =\r\n this.route.snapshot.queryParamMap.get('message') || 'Error occured.';\r\n }\r\n\r\n logout() {\r\n this.authnService.logout();\r\n }\r\n\r\n portal() {\r\n window.location.href = this.smartWebPortalUrl;\r\n }\r\n}\r\n","<div>\r\n <h2>\r\n {{ message }}\r\n </h2>\r\n <p>\r\n Please contact help desk if needed.\r\n </p>\r\n <div>\r\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\r\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\r\n </div>\r\n</div>\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, from, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { SMART_DATA_SERVICE_URL } from '../smart-storage/smart-storage-model';\r\n\r\n@Injectable()\r\nexport class SmartStaffOffenderOptionsService {\r\n constructor(\r\n private http: HttpClient,\r\n private matSnackBar: MatSnackBar,\r\n @Inject(SMART_DATA_SERVICE_URL) private serviceApiUrl,\r\n ) {}\r\n\r\n public showMessage(message) {\r\n this.matSnackBar.open(message, null, {\r\n duration: 2000,\r\n });\r\n }\r\n\r\n private convertEmptyToNull(jsonObject: JSON) {\r\n if (!jsonObject) {\r\n return;\r\n }\r\n\r\n if (jsonObject instanceof Array) {\r\n jsonObject.forEach((obj) => {\r\n this.convertEmptyToNull(obj);\r\n });\r\n }\r\n\r\n const keys = Object.keys(jsonObject);\r\n keys.forEach((key) => {\r\n if (typeof jsonObject[key] === 'object') {\r\n this.convertEmptyToNull(jsonObject[key]);\r\n } else if (\r\n typeof jsonObject[key] === 'string' &&\r\n jsonObject[key].trim() === ''\r\n ) {\r\n jsonObject[key] = null;\r\n }\r\n });\r\n }\r\n\r\n private getGraphQueryData(\r\n queryName: string,\r\n queryString: string,\r\n ): Observable<any> {\r\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\r\n map(({ data }) => {\r\n return data[queryName];\r\n }),\r\n );\r\n }\r\n\r\n getOffenderListOptions(): Observable<any> {\r\n const queryString = `{findOffenderListOptions(input:{\r\n where:{\r\n deactivatedDate: null\r\n }\r\n }){\r\n data{\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n }\r\n } }`;\r\n\r\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\r\n map(({ data }) => {\r\n return data['findOffenderListOptions'];\r\n }),\r\n );\r\n }\r\n\r\n public getStaffOffenderListOptions(staffId: number): Observable<Array<any>> {\r\n const queryString = `{findStaffOffenderListOptions(input:{\r\n where:{\r\n staffId: ${staffId}\r\n }\r\n }){\r\n data{\r\n offenderListOptionId\r\n }\r\n } }`;\r\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\r\n map(({ data }) => {\r\n return data.findStaffOffenderListOptions.data;\r\n }),\r\n );\r\n }\r\n\r\n saveStaffOffenderListOptionsData(dataToSave: any) {\r\n //}: Observable<any> {\r\n\r\n // this.convertEmptyToNull(dataToSave);\r\n const queryName = 'upsertStaffOffenderListOption';\r\n const query = `mutation {\r\n upsertStaffOffenderListOption(input: ${this.convertToString(\r\n dataToSave,\r\n )}) {\r\n message\r\n }\r\n }`;\r\n\r\n return this.http.post<any>(this.serviceApiUrl, { query });\r\n /*.pipe(\r\n map(({ data }) => {\r\n return data[queryName];\r\n }));*/\r\n }\r\n\r\n convertToString(obj): string {\r\n let result = '';\r\n\r\n if (!obj) {\r\n return result;\r\n }\r\n\r\n if (obj instanceof Array) {\r\n result += ' [';\r\n obj.forEach((eObj) => {\r\n result += this.convertToString(eObj);\r\n });\r\n result += '],';\r\n } else {\r\n result += '{';\r\n const keys = Object.keys(obj);\r\n keys.forEach((key) => {\r\n if (typeof obj[key] === 'object') {\r\n result += key + ':' + this.convertToString(obj[key]);\r\n } else {\r\n if (isNaN(obj[key])) {\r\n result += key + ':\"' + obj[key] + '\",';\r\n } else {\r\n result += key + ':' + obj[key] + ',';\r\n }\r\n }\r\n });\r\n result = result.substring(0, result.length - 1);\r\n result += '},';\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\r\nimport { FormBuilder,\r\n UntypedFormGroup,\r\n UntypedFormControl,\r\n Validators,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { XdmService} from '../smart-storage/xdm.service';\r\n\r\n@Component({\r\n selector: 'lib-smart-staff-offender-options',\r\n templateUrl: './smart-staff-offender-options.component.html',\r\n styleUrls: ['./smart-staff-offender-options.component.css']\r\n})\r\nexport class SmartStaffOffenderOptionsComponent implements OnInit {\r\n loginStaff: LoginStaff;\r\n offenderListOptions: Array<any> = [];\r\n frmGroup: UntypedFormGroup;\r\n constructor(\r\n private route: ActivatedRoute,\r\n private offenderService: SmartStaffOffenderOptionsService,\r\n private xdmService: XdmService\r\n ) { }\r\n\r\n ngOnInit() {\r\n const routData = this.route.snapshot.data;\r\n this.loginStaff = routData.loginStaff;\r\n this.offenderListOptions = routData.selectedOffenderResolverService;\r\n this.frmGroup = this.createForm();\r\n this.offenderService.getStaffOffenderListOptions(this.loginStaff.staffId).subscribe(data => {\r\n this.fillForm(data);\r\n });\r\n }\r\n\r\n private fillForm(data) {\r\n if (data) {\r\n const offenderListOptionsFg = this.frmGroup.get('offenderListOptions');\r\n data.forEach(element => {\r\n offenderListOptionsFg.get(element.offenderListOptionId).setValue(true);\r\n });\r\n }\r\n\r\n }\r\n private createForm() {\r\n const offenderListOptionsFg = new UntypedFormGroup({\r\n });\r\n\r\n this.offenderListOptions.forEach( (dt, i) => {\r\n offenderListOptionsFg.addControl(dt.offenderListOptionId, new UntypedFormControl(false));\r\n });\r\n\r\n return new UntypedFormGroup({\r\n offenderListOptions: offenderListOptionsFg,\r\n });\r\n }\r\n\r\n onSave() {\r\n const data = {\r\n options: [],\r\n staffId: this.loginStaff.staffId,\r\n modifiedBy: this.loginStaff.staffId\r\n };\r\n\r\n const offenderListOptionsVal = this.frmGroup.get('offenderListOptions').value;\r\n const keys = Object.keys(offenderListOptionsVal);\r\n keys.forEach(key => {\r\n if (offenderListOptionsVal[key]) {\r\n data.options.push({'offenderListOptionId': key});\r\n }\r\n });\r\n\r\n this.offenderService.saveStaffOffenderListOptionsData(data).subscribe(rtrDatea=>{\r\n if (rtrDatea.message) {\r\n this.offenderService.showMessage(rtrDatea.message);\r\n } else {\r\n this.offenderService.showMessage('Saved successfully');\r\n this.xdmService.refreshLoginStaffOptions();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","<form class=\"main-form\" [formGroup]=\"frmGroup\">\r\n <mat-card appearance=\"outlined\" role=\"group\">\r\n <mat-card-content>\r\n <div formGroupName=\"offenderListOptions\">\r\n <div style=\"float:left;\">\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\r\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div>\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\r\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox> \r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <div align=\"center\">\r\n <button mat-stroked-button (click)=\"onSave()\">Save</button>\r\n </div>\r\n </mat-card>\r\n </form>\r\n ","import { Injectable, Inject, isDevMode } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, of, from, throwError, lastValueFrom } from 'rxjs';\r\nimport { map, switchMap, take, catchError} from 'rxjs/operators';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nimport {\r\n LoginStaff,\r\n SelectedOffender,\r\n SMART_DATA_SERVICE_URL,\r\n SMART_DOMAIN_FORMAT,\r\n Role,\r\n Permission,\r\n} from '../smart-storage/smart-storage-model';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport { SmartAccessControlConfig } from './smart-access-control-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartAuthService {\r\n loginStaff: LoginStaff;\r\n selectedOffender: SelectedOffender;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private authnService: MsalService,\r\n private xdmService: XdmService,\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n @Inject(SMART_DOMAIN_FORMAT) private smartDomainFormatUrl: string,\r\n ) {}\r\n\r\n public getLoginStaff(): Observable<LoginStaff> {\r\n if (isDevMode) {\r\n console.log('SmartAuthService - getLoginStaff()');\r\n }\r\n if (!isDevMode && this.loginStaff) {\r\n if (this.loginStaff.staffId) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get internal instance in service',\r\n this.loginStaff,\r\n );\r\n }\r\n return of(this.loginStaff);\r\n } else if (this.loginStaff.userName) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get using preset user name',\r\n this.loginStaff,\r\n );\r\n }\r\n return this.getStaff(this.loginStaff.userName);\r\n }\r\n }\r\n return from(this.xdmService.getLoginStaff()).pipe(\r\n switchMap((storedResult) => {\r\n if (storedResult && storedResult.staffId) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get from session.',\r\n storedResult,\r\n );\r\n }\r\n this.loginStaff = storedResult;\r\n return of(storedResult);\r\n } else if (storedResult && storedResult.userName) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get using preset user name',\r\n this.loginStaff,\r\n );\r\n }\r\n return this.getStaff(storedResult.userName);\r\n } else {\r\n const userName = this.userName;\r\n const staffName = userName.substring(0, userName.indexOf('@'));\r\n if (isDevMode) {\r\n console.log(\r\n '##### loginLoginStaff(): get using login staff name ',\r\n staffName,\r\n );\r\n }\r\n return this.getStaff(staffName);\r\n }\r\n }),\r\n );\r\n }\r\n\r\n get userName(): string {\r\n if (this.authnService.instance.getAllAccounts().length > 0) {\r\n const account = this.authnService.instance.getAllAccounts()[0];\r\n return account.username;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n private getTeamUrl(app: string, afterHash: string): string {\r\n return this.smartDomainFormatUrl.replace('${APP}', app) + afterHash;\r\n }\r\n private isSameHost(url, app) {\r\n return this.smartDomainFormatUrl.replace('${APP}', app) === url;\r\n }\r\n\r\n public redirectToTeam(loginStaff: LoginStaff) {\r\n if (loginStaff.roles.findIndex((role) => role.roleId === 'EUUSPC') > -1) {\r\n if (!this.isSameHost(window.location.origin, 'investigation')) {\r\n window.location.href = this.getTeamUrl('investigation', '/assignment');\r\n }\r\n } else if (\r\n loginStaff.roles.findIndex(\r\n (role) => role.roleId.substring(0, 3) === 'RSC',\r\n ) > -1\r\n ) {\r\n if (!this.isSameHost(window.location.origin, 'rsc')) {\r\n window.location.href = this.getTeamUrl('rsc', '/offender-list');\r\n }\r\n }\r\n }\r\n\r\n public async setSelectedOffender(selectedOffender: SelectedOffender) {\r\n if (!this.loginStaff) {\r\n return;\r\n }\r\n\r\n if (selectedOffender) {\r\n // if (!selectedOffender.assignmentStaffRelationId) {\r\n const relation = await lastValueFrom(\r\n this.getStaffOffenderRelation(\r\n this.loginStaff.staffId,\r\n selectedOffender.offenderId,\r\n ),\r\n );\r\n if (relation) {\r\n selectedOffender.assignmentStaffRelationId = relation;\r\n } else {\r\n selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\r\n }\r\n // }\r\n }\r\n this.xdmService.setSelectedOffender(selectedOffender);\r\n this.selectedOffender = selectedOffender;\r\n }\r\n\r\n public logout(): void {\r\n this.xdmService.clearAll();\r\n this.authnService.logout();\r\n }\r\n\r\n public async setPermission(\r\n appModuleId: string,\r\n route: ActivatedRouteSnapshot,\r\n ) {\r\n if (!this.loginStaff) {\r\n this.loginStaff = await this.xdmService.getLoginStaff();\r\n }\r\n const permissions = this.loginStaff.permissions;\r\n const resource =\r\n route.url && route.url.length > 0 ? route.url[0]!.path : '';\r\n\r\n if (!this.selectedOffender) {\r\n this.selectedOffender = await this.xdmService.getSelectedOffender();\r\n }\r\n\r\n if (this.selectedOffender) {\r\n // if (!this.selectedOffender.assignmentStaffRelationId) {\r\n const relation = await this.getStaffOffenderRelation(\r\n this.loginStaff.staffId,\r\n this.selectedOffender.offenderId,\r\n ).toPromise();\r\n if (relation) {\r\n this.selectedOffender.assignmentStaffRelationId = relation;\r\n } else {\r\n this.selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\r\n }\r\n this.xdmService.setSelectedOffender(this.selectedOffender);\r\n // }\r\n }\r\n\r\n const assignmentStaffRelationId =\r\n this.selectedOffender.assignmentStaffRelationId;\r\n\r\n const elements = document.querySelectorAll('[class^=\"sac-\"]');\r\n const pattern = /^sac-(\\S+)-(\\S+)$/i;\r\n\r\n Array.from(elements).forEach((element) => {\r\n let hide;\r\n let disable;\r\n element.classList.forEach((c) => {\r\n const results = c.match(pattern);\r\n // console.log(results);\r\n if (results && results.length > 2) {\r\n const roleId = results[1] ? results[1].toUpperCase() : null;\r\n const right = results[2];\r\n // console.log(results[0]);\r\n // console.log(results[1]);\r\n // console.log(results[2]);\r\n const permission = permissions.find(function (p) {\r\n return (\r\n p.appModuleId === appModuleId &&\r\n p.resource === resource &&\r\n p.roleId === roleId &&\r\n p.assignmentStaffRelationId === assignmentStaffRelationId\r\n );\r\n });\r\n /*\r\n console.log('##### setPermission() resource: ', resource);\r\n console.log('##### setPermission() appModuleId: ', appModuleId);\r\n console.log('##### setPermission() roleId: ', roleId);\r\n console.log(\r\n '##### setPermission() assignment relation: ',\r\n assignmentStaffRelationId,\r\n );\r\n */\r\n console.log('##### Matched permission: ', permission);\r\n\r\n if (permission) {\r\n if (right === 'read') {\r\n if (!permission.readFlag) {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else {\r\n hide = false;\r\n }\r\n } else if (\r\n (right === 'create' && !permission.createFlag) ||\r\n (right === 'update' && !permission.updateFlag) ||\r\n (right === 'delete' && !permission.deleteFlag) ||\r\n (right === 'assign' && !permission.assignFlag) ||\r\n (right === 'close' && !permission.closeFlag) ||\r\n (right === 'expunge' && !permission.expungeFlag) ||\r\n (right === 'reopen' && !permission.reopenFlag)\r\n ) {\r\n if (element.nodeName === 'BUTTON') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else {\r\n if (disable !== false) {\r\n disable = true;\r\n }\r\n }\r\n } else {\r\n if (element.nodeName === 'BUTTON') {\r\n hide = false;\r\n } else {\r\n disable = false;\r\n }\r\n }\r\n } else {\r\n if (right === 'read') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else if (element.nodeName === 'BUTTON') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else if (disable !== false) {\r\n disable = true;\r\n }\r\n }\r\n }\r\n });\r\n console.log('hide: ', hide);\r\n console.log('disable: ', disable);\r\n if (hide === true) {\r\n this.hideHtmlElement(element);\r\n } else if (disable === true) {\r\n this.disableHtmlElement(element);\r\n }\r\n });\r\n }\r\n\r\n public checkPermission(accessControlConfig: SmartAccessControlConfig) {\r\n const selData = accessControlConfig.route.data;\r\n this.loginStaff = selData.loginStaff;\r\n this.selectedOffender = selData.selectedOffender;\r\n let routePath = '';\r\n if (\r\n accessControlConfig.route.url &&\r\n accessControlConfig.route.url.length > 0\r\n ) {\r\n routePath = accessControlConfig.route.url[0]!.path;\r\n }\r\n\r\n const permissions = this.loginStaff.permissions;\r\n const resource = routePath;\r\n const roleId = accessControlConfig.roleId\r\n ? accessControlConfig.roleId.toUpperCase()\r\n : null;\r\n const accessType = accessControlConfig.accessType;\r\n const assignmentStaffRelationId = (!this.selectedOffender || !this.selectedOffender\r\n .assignmentStaffRelationId)\r\n ? 'N/A'\r\n : this.selectedOffender.assignmentStaffRelationId;\r\n\r\n const permission = permissions.find((p) => {\r\n return (\r\n p.appModuleId === accessControlConfig.appModuleId &&\r\n p.resource === resource &&\r\n (!roleId || p.roleId === roleId) &&\r\n (p.assignmentStaffRelationId === 'N/A' ||\r\n p.assignmentStaffRelationId === assignmentStaffRelationId)\r\n );\r\n });\r\n\r\n if (permission) {\r\n if (accessType === 'read') {\r\n if (!permission.readFlag) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else if (\r\n (accessType === 'create' && !permission.createFlag) ||\r\n (accessType === 'update' && !permission.updateFlag) ||\r\n (accessType === 'delete' && !permission.deleteFlag) ||\r\n (accessType === 'assign' && !permission.assignFlag) ||\r\n (accessType === 'close' && !permission.closeFlag) ||\r\n (accessType === 'expunge' && !permission.expungeFlag) ||\r\n (accessType === 'reopen' && !permission.reopenFlag)\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n if (accessType === 'read') {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public canAppFeatureActivate(\r\n loginStaff: LoginStaff,\r\n feature: string,\r\n appModuleId = null,\r\n ) {\r\n // if (!this.isAuthEnable(loginStaff.roles, appModuleId)) {\r\n // return true;\r\n // }\r\n return this.hasAppFeaturePermission(\r\n loginStaff.permissions,\r\n feature,\r\n appModuleId,\r\n );\r\n }\r\n\r\n // public isAuthEnable(roles: Role[], appModuleId: string) {\r\n // if (roles && roles.length > 0) {\r\n // return roles.map(r => r.roleId).findIndex(this.isExternalRole) > -1 || appModuleId === 'RR';\r\n // }\r\n // return false;\r\n // }\r\n\r\n public hasIntakeRole(roles: Role[]) {\r\n if (roles && roles.length > 0) {\r\n return roles.findIndex(this.isIntakeRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private hasAppFeaturePermission(\r\n permissions: Permission[],\r\n feature: string,\r\n appModuleId: string,\r\n ) {\r\n if (permissions && permissions.length > 0) {\r\n if (appModuleId) {\r\n return (\r\n permissions.findIndex(\r\n (p) => p.resource === feature && p.appModuleId === appModuleId,\r\n ) > -1\r\n );\r\n } else {\r\n return permissions.findIndex((p) => p.resource === feature) > -1;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isExternalRole(roleId) {\r\n switch (roleId) {\r\n case 'EUDTL':\r\n case 'EUDUSM':\r\n case 'EUJDG':\r\n case 'EUMPD':\r\n case 'EUSOTV':\r\n case 'EUUSA2':\r\n case 'EUUSAO':\r\n case 'EUUSPC':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private isIntakeRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'OPA':\r\n case 'OPS':\r\n case 'SOPS':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private disableHtmlElement(element: Element): void {\r\n // console.log(element);\r\n switch (element.nodeName) {\r\n case 'A':\r\n element.setAttribute(\r\n 'style',\r\n 'pointer-events: none;cursor: not-allowed;',\r\n );\r\n element.setAttribute('tabIndex', '-1');\r\n break;\r\n default:\r\n element.setAttribute('disabled', 'disabled');\r\n break;\r\n }\r\n }\r\n\r\n private hideHtmlElement(element: Element): void {\r\n // element.setAttribute('hidden', 'hidden');\r\n element.setAttribute('style', 'display: none;');\r\n }\r\n\r\n private getStaff(userName: string): Observable<LoginStaff> {\r\n return this.query<any>({\r\n query: this.findStaffQuery,\r\n variables: {\r\n input: {\r\n where: {\r\n userName: userName,\r\n activeFlag: true,\r\n },\r\n }\r\n },\r\n }).pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log('##### getStaff() from service ', result);\r\n }\r\n if (result.findvStaffs.data.length > 0) {\r\n const data = result.findvStaffs.data[0];\r\n this.xdmService.setLoginStaff(data);\r\n this.loginStaff = data;\r\n return data;\r\n } else {\r\n return of(null);\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('error ' + error);\r\n return of(null);\r\n }),\r\n );\r\n }\r\n\r\n private query<T>(options: {\r\n query: string;\r\n variables?: { [key: string]: any };\r\n }): Observable<T> {\r\n return this.http\r\n .post<{ data: T }>(\r\n this.smartDataServiceUrl,\r\n {\r\n query: options.query,\r\n variables: options.variables,\r\n },\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'No-Auth': 'True',\r\n }),\r\n }\r\n )\r\n .pipe(map((d) => d.data));\r\n }\r\n\r\n private get findStaffQuery(){\r\n return `\r\n query findvStaffs($input: vStaffMultiInput) {\r\n findvStaffs(input: $input) {\r\n totalCount\r\n message\r\n data {\r\n staffId\r\n userName\r\n lastName\r\n firstName\r\n phone\r\n email\r\n roles {\r\n roleId\r\n role\r\n }\r\n permissions {\r\n roleId\r\n appModuleId\r\n resource\r\n assignmentStaffRelationId\r\n readFlag\r\n createFlag\r\n updateFlag\r\n deleteFlag\r\n assignFlag\r\n reopenFlag\r\n closeFlag\r\n expungeFlag\r\n }\r\n options {\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n selectedFlag\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n }\r\n\r\n private getStaffOffenderRelation(\r\n staffId: number,\r\n offenderId: number,\r\n ): Observable<string> {\r\n const queryString = `\r\n {\r\n findvStaffOffenderRelations(input: {where: {staffId: ${staffId}, offenderId: ${offenderId}}}) {\r\n data {\r\n assignmentStaffRelationId\r\n }\r\n }\r\n }`;\r\n\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getStaffOffenderRelation() from service ',\r\n result,\r\n );\r\n }\r\n if (result.data.findvStaffOffenderRelations.data.length > 0) {\r\n const data = result.data.findvStaffOffenderRelations.data[0];\r\n return data.assignmentStaffRelationId;\r\n } else {\r\n return null;\r\n // return throwError('No access right.');\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('error ' + error);\r\n return null;\r\n }),\r\n );\r\n }\r\n\r\n private getRolePermissions(\r\n appModuleId: string,\r\n resource: string,\r\n ): Observable<boolean> {\r\n const queryString = `\r\n query findvRolePermissionPivots{\r\n findvRolePermissionPivots(input: {where: {appModuleId: ${appModuleId}, resource: ${resource}}}){\r\n totalCount\r\n message\r\n }\r\n }`;\r\n\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log(\r\n '##### findvRolePermissionPivots() from service ',\r\n result,\r\n );\r\n }\r\n if (result.data.findvRolePermissionPivots.totalCount > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n // return throwError('No access right.');\r\n }\r\n }),\r\n catchError((error: any) => {\r\n console.log('error ' + error);\r\n return throwError(error);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Directive, Input, OnInit, ElementRef } from '@angular/core';\r\nimport { SmartAuthService } from './smart-auth.service';\r\nimport { SmartAccessControlConfig } from './smart-access-control-config';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n\r\n@Directive({\r\n selector: '[accessControl]',\r\n})\r\nexport class SmartAccessControlDirective implements OnInit {\r\n @Input() accessControlConfig: SmartAccessControlConfig;\r\n constructor(\r\n private elementRef: ElementRef,\r\n private auth: SmartAuthService,\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.checkAccess();\r\n }\r\n\r\n checkAccess() {\r\n if (\r\n !this.accessControlConfig ||\r\n !this.accessControlConfig.route ||\r\n !this.accessControlConfig.route.data ||\r\n !this.accessControlConfig.route.data.loginStaff\r\n ) {\r\n return;\r\n }\r\n\r\n // const loginStaff = this.accessControlConfig.route.data.loginStaff;\r\n // if (!this.auth.isAuthEnable(loginStaff.roles, this.accessControlConfig.appModuleId)) {\r\n // return;\r\n // }\r\n this.elementRef.nativeElement.style.display = this.auth.checkPermission(\r\n this.accessControlConfig\r\n )\r\n ? 'block'\r\n : 'none';\r\n }\r\n}\r\n","// smart-authorization.service\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Router } from '@angular/router';\r\nimport { take, mergeMap, catchError } from 'rxjs/operators';\r\nimport { of, Observable } from 'rxjs';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\nimport { SmartAuthService } from './smart-auth.service';\r\n\r\n@Injectable()\r\nexport class SmartAuthorizationGuard {\r\n loginStaff: LoginStaff;\r\n\r\n constructor(public authnService: SmartAuthService) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot) {\r\n return this.authnService.getLoginStaff().pipe(\r\n take(1),\r\n mergeMap((loginStaff) => {\r\n if (!loginStaff || !route || !route.routeConfig) {\r\n return of(false);\r\n }\r\n // if (!this.authnService.isAuthEnable(loginStaff.roles, null)) {\r\n // return of(true);\r\n // }\r\n const resource = route.routeConfig.path\r\n ? route.routeConfig.path.split('/')[0]\r\n : '';\r\n const isFeatureValid = this.authnService.canAppFeatureActivate(\r\n loginStaff,\r\n resource,\r\n );\r\n return of(isFeatureValid);\r\n }),\r\n catchError((error) => {\r\n return of(false);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SmartOffenderRedirectGuard {\r\n constructor(private router: Router) {}\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean {\r\n const targetRoute = route.data['routeTo'];\r\n const queryParams = route.parent?.queryParams;\r\n if (targetRoute) {\r\n this.router.navigate([targetRoute], { queryParams: queryParams });\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { SmartOffenderHeaderComponent } from './smart-offender-header/smart-offender-header.component';\r\nimport { SmartNavbarComponent } from './smart-navbar/smart-navbar.component';\r\nimport { SmartNavbarService } from './smart-navbar/smart-navbar.service';\r\nimport { SmartErrorComponent } from './smart-auth/smart-error.component';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { SmartOffenderHeaderService } from './smart-offender-header/smart-offender-header.service';\r\nimport { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\r\n// import { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\r\nimport { SmartStaffOffenderOptionsService } from './smart-staff-offender-options/smart-staff-offender-options.service';\r\nimport { SmartAccessControlDirective } from './smart-auth/smart-access-control.directive';\r\nimport { SmartAuthorizationGuard } from './smart-auth/smart-authorization-guard.service';\r\nimport { SmartOffenderRedirectGuard } from './smart-offender-header/smart-offender-redirect.guard';\r\n\r\n@NgModule({\r\n declarations: [\r\n SmartOffenderHeaderComponent,\r\n SmartNavbarComponent,\r\n SmartErrorComponent,\r\n SmartStaffOffenderOptionsComponent,\r\n SmartAccessControlDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatTabsModule,\r\n MatSelectModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n ReactiveFormsModule,\r\n ],\r\n exports: [\r\n SmartOffenderHeaderComponent,\r\n SmartNavbarComponent,\r\n SmartErrorComponent,\r\n SmartStaffOffenderOptionsComponent,\r\n SmartAccessControlDirective,\r\n ],\r\n providers: [\r\n SmartNavbarService,\r\n SmartOffenderHeaderService,\r\n SmartStaffOffenderOptionsService,\r\n SmartAuthorizationGuard,\r\n MatSnackBar,\r\n SmartOffenderRedirectGuard\r\n ],\r\n})\r\nexport class NgcSmartCoreModule {}\r\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable, EMPTY, of, throwError } from 'rxjs';\r\nimport { mergeMap, catchError, take } from 'rxjs/operators';\r\nimport { SmartAuthService } from './smart-auth.service';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoginStaffResolverService {\r\n constructor(\r\n private authnService: SmartAuthService,\r\n // private zone: NgZone,\r\n private router: Router,\r\n ) {}\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<LoginStaff> | Observable<never> {\r\n return this.authnService.getLoginStaff().pipe(\r\n take(1),\r\n mergeMap((loginStaff) => {\r\n if (isDevMode) {\r\n console.log('LoginStaffResolverService: ', loginStaff);\r\n }\r\n if (loginStaff) {\r\n return of(loginStaff);\r\n } else {\r\n return throwError('Not authorized to access SMART.');\r\n // return EMPTY;\r\n /*\r\n this.zone.run(() => {\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: {\r\n type: 'staff',\r\n message: 'Not authorized to access SMART.'\r\n }\r\n });\r\n });\r\n return EMPTY;\r\n */\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('LoginStaffResolverService: ' + error);\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: {\r\n type: 'staff',\r\n message: 'SMART Authentication: ' + error,\r\n },\r\n });\r\n return EMPTY;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable, from, of, EMPTY, throwError, concat } from 'rxjs';\r\nimport {\r\n catchError,\r\n mergeMap,\r\n take,\r\n retryWhen,\r\n delay,\r\n} from 'rxjs/operators';\r\nimport { SelectedOffender } from '../smart-storage/smart-storage-model';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SelectedOffenderResolverService\r\n {\r\n constructor(\r\n private service: XdmService,\r\n private zone: NgZone,\r\n private router: Router,\r\n ) {}\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<SelectedOffender> | Observable<never> {\r\n let offenderId: number | null = null;\r\n let intakeFlag: boolean = false;\r\n if(route) {\r\n if(route.queryParams[\"offenderId\"])\r\n offenderId = parseInt(route.queryParams[\"offenderId\"]);\r\n if(route.queryParams[\"intakeFlag\"])\r\n intakeFlag = route.queryParams[\"intakeFlag\"] == \"true\";\r\n }\r\n return from(this.service.getSelectedOffender()).pipe(\r\n mergeMap((selectedOffender) => {\r\n if (isDevMode) {\r\n console.log(selectedOffender);\r\n }\r\n if(offenderId && offenderId > 0 && (!selectedOffender || (selectedOffender && selectedOffender.offenderId !== offenderId))) {\r\n return this.service.setSelectedOffenderFromRoute(offenderId, intakeFlag);\r\n }\r\n if(selectedOffender) {\r\n return of(selectedOffender);\r\n }\r\n return throwError(() => new Error('No offender selected.'));\r\n }),\r\n retryWhen((errors) =>\r\n errors.pipe(\r\n // tap(() => console.log('Retry getting selected offender.')),\r\n delay(1000),\r\n take(5),\r\n (o) =>\r\n concat(\r\n o,\r\n throwError(() => new Error('No offender selected (failed after retries).')),\r\n ),\r\n ),\r\n ),\r\n catchError((error) => {\r\n /*\r\n this.zone.run(() => {\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: { type: 'offender', message: error }\r\n });\r\n });\r\n */\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: { type: 'offender', message: error },\r\n });\r\n return EMPTY;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartStaffOffenderOptionsResolverService {\r\n constructor(private offenderService: SmartStaffOffenderOptionsService) {}\r\n resolve() {\r\n return this.offenderService.getOffenderListOptions()\r\n .pipe(\r\n map(({ data }) => {\r\n return data;\r\n }),\r\n );\r\n }\r\n }\r\n","import { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nexport interface SmartAccessControlConfig {\r\n appModuleId: string;\r\n route: ActivatedRouteSnapshot;\r\n accessType: AccessType;\r\n roleId: string;\r\n}\r\n\r\nexport enum AccessType {\r\n READ = 'read',\r\n CREATE = 'create',\r\n UPDATE = 'update',\r\n DELETE = 'delete',\r\n EXPUNGE = 'expunge',\r\n ASSIGN = 'assign',\r\n REOPEN = 'reopen',\r\n CLOSE = 'close'\r\n}\r\n","/*\r\n * Public API Surface of ngc-smart-core\r\n */\r\n\r\nexport * from './lib/ngc-smart-core.module';\r\nexport * from './lib/smart-auth/smart-auth.service';\r\nexport * from './lib/smart-auth/smart-login-staff-resolver.service';\r\nexport * from './lib/smart-auth/smart-selected-offender-resolver.service';\r\nexport * from './lib/smart-auth/smart-error.component';\r\nexport * from './lib/smart-navbar/smart-navbar.service';\r\nexport * from './lib/smart-navbar/smart-navbar-config';\r\nexport * from './lib/smart-storage/xdm.service';\r\nexport * from './lib/smart-storage/smart-storage-model';\r\nexport * from './lib/smart-staff-offender-options/smart-staff-offender-options.component';\r\nexport * from './lib/smart-offender-header/smart-offender-header.component';\r\nexport * from './lib/smart-offender-header/smart-offender-redirect.guard';\r\nexport * from './lib/smart-auth/smart-access-control.directive';\r\nexport * from './lib/smart-navbar/smart-navbar.component';\r\nexport * from './lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service';\r\nexport * from './lib/smart-auth/smart-access-control-config';\r\nexport * from './lib/smart-auth/smart-authorization-guard.service';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XdmService","i3.SmartOffenderHeaderService","i4","i9","i1.SmartNavbarService","i2.XdmService","i3","i1","i2.SmartStaffOffenderOptionsService","i3.XdmService","i5","i6","i7","i8","i1.SmartAuthService","i2","i1.SmartStaffOffenderOptionsService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"csmart-ngc-smart-core.mjs","sources":["../../../../projects/csmart/ngc-smart-core/src/lib/smart-storage/smart-storage-model.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-storage/xdm.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-header.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-navbar/smart-navbar.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-error.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-error.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.component.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options.component.html","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-auth.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-access-control.directive.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-authorization-guard.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-offender-header/smart-offender-redirect.guard.ts","../../../../projects/csmart/ngc-smart-core/src/lib/ngc-smart-core.module.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-login-staff-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-selected-offender-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service.ts","../../../../projects/csmart/ngc-smart-core/src/lib/smart-auth/smart-access-control-config.ts","../../../../projects/csmart/ngc-smart-core/src/public-api.ts","../../../../projects/csmart/ngc-smart-core/src/csmart-ngc-smart-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport class Permission {\r\n roleId: string;\r\n appModuleId: string;\r\n resource: string;\r\n assignmentStaffRelationId: string;\r\n readFlag: boolean;\r\n createFlag: boolean;\r\n updateFlag: boolean;\r\n deleteFlag: boolean;\r\n assignFlag: boolean;\r\n reopenFlag: boolean;\r\n closeFlag: boolean;\r\n expungeFlag: boolean;\r\n}\r\n\r\nexport class Role {\r\n roleId: string;\r\n role: string;\r\n}\r\n\r\nexport class Option {\r\n offenderOptionListId: string;\r\n name: string;\r\n serviceApiFieldName: string;\r\n selectedFlag: boolean;\r\n}\r\n\r\nexport class LoginStaff {\r\n staffId: number;\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n phone: string;\r\n email: string;\r\n selectedRole: string = '*';\r\n roles?: Role[];\r\n permissions?: Permission[];\r\n options?: Option[];\r\n}\r\n\r\nexport class SelectedOffender {\r\n offenderId: number;\r\n name: string;\r\n pdId: string;\r\n birthDate: Date;\r\n gender: string;\r\n assignmentStaffRelationId?: string;\r\n intakeFlag?: boolean = false;\r\n}\r\n\r\nexport class OffenderQuery {\r\n offenders: SelectedOffender[];\r\n}\r\n\r\nexport class StorageKey {\r\n static selectedOffender = 'smart-selected-offender';\r\n static loginStaff = 'smart-login-staff';\r\n static offenderQuery = 'smart-offender-query';\r\n}\r\n\r\nexport const SMART_WEB_STORAGE_LISTENER_URL = new InjectionToken<string>(\r\n 'SMART Web Storage Listener URL',\r\n);\r\nexport const SMART_WEB_PORTAL_URL = new InjectionToken<string>(\r\n 'SMART Web Portal URL',\r\n);\r\nexport const SMART_DATA_SERVICE_URL = new InjectionToken<string>(\r\n 'SMART Data Service URL',\r\n);\r\n\r\n//exception for redirection\r\nexport const SMART_DOMAIN_FORMAT = new InjectionToken<string>(\r\n 'SMART Domain Format URL',\r\n);\r\n\r\n","import { Injectable, Inject, isDevMode } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Subject, Observable, of, from } from 'rxjs';\r\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\r\nimport {\r\n SelectedOffender,\r\n LoginStaff,\r\n OffenderQuery,\r\n StorageKey,\r\n SMART_WEB_STORAGE_LISTENER_URL,\r\n SMART_DATA_SERVICE_URL,\r\n Option,\r\n} from './smart-storage-model';\r\n\r\n// import connectToChild from \"penpal/lib/connectToChild\";\r\nimport { connectToChild } from 'penpal';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class XdmService {\r\n private offenderSubject = new Subject<SelectedOffender | void>();\r\n private staffSubject = new Subject<LoginStaff | void>();\r\n private offenderQuerySubject = new Subject<OffenderQuery | void>();\r\n private connection: any;\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n @Inject(SMART_WEB_STORAGE_LISTENER_URL)\r\n private smartStorageListenerUrl: string,\r\n private httpClient: HttpClient,\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n ) {\r\n if (isDevMode) {\r\n console.log('SmartStorage XdmService (Client) - constructor()');\r\n }\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n const frame = this.document.createElement('iframe');\r\n frame.src = this.smartStorageListenerUrl;\r\n frame.id = 'childframe';\r\n frame.name = Math.random().toString();\r\n frame.onload = null;\r\n //frame.style.visibility = 'hidden';\r\n frame.style.display = 'none';\r\n this.document.body.appendChild(frame);\r\n\r\n this.connection = connectToChild({\r\n iframe: frame,\r\n debug: false,\r\n });\r\n }\r\n\r\n private getStaffOffenderListOptions(\r\n staffId: number,\r\n ): Observable<Array<Option>> {\r\n const queryString = `{findvStaffOffenderListOptions(input:{\r\n where:{\r\n staffId: ${staffId}\r\n }\r\n }){\r\n data{\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n selectedFlag\r\n }\r\n } }`;\r\n return this.httpClient\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n data.findvStaffOffenderListOptions.data['offenderOptionListId'] =\r\n data.findvStaffOffenderListOptions.data['offenderListOptionId'];\r\n return data.findvStaffOffenderListOptions.data;\r\n }),\r\n );\r\n /*return of([\r\n { offenderListOptionId: 'genderCode', name: '', selectedFlag: true }]);*/\r\n }\r\n\r\n public clearAll(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearAll();\r\n this.offenderSubject.next();\r\n this.staffSubject.next();\r\n });\r\n }\r\n\r\n /*************************************\r\n * Offender\r\n **************************************/\r\n public setSelectedOffender(selectedOffender: SelectedOffender): void {\r\n this.connection.promise.then((child) => {\r\n child.setSelectedOffender(selectedOffender);\r\n this.offenderSubject.next(selectedOffender);\r\n });\r\n\r\n this.getLoginStaff().then((loginStaff) => {\r\n let now = (new Date()).toISOString();\r\n const queryString = `mutation { createStaffOffenderAccess(input: {\r\n staffId: ${loginStaff.staffId},\r\n offenderId: ${selectedOffender.offenderId},\r\n accessDate: \"${now}\"\r\n }) {\r\n data {\r\n staffOffenderAccessId\r\n }\r\n }}`;\r\n this.httpClient.post<any>(this.smartDataServiceUrl, { query: queryString }).subscribe();\r\n });\r\n }\r\n\r\n public getSelectedOffender(): Promise<SelectedOffender> {\r\n return this.connection.promise.then((child) =>\r\n child.getSelectedOffender(StorageKey.selectedOffender),\r\n );\r\n }\r\n\r\n public clearSelectedOffender(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearSelectedOffender();\r\n this.offenderSubject.next();\r\n });\r\n }\r\n\r\n public getOffenderUpdate(): Observable<SelectedOffender> {\r\n return this.offenderSubject.asObservable() as Observable<SelectedOffender>;\r\n }\r\n\r\n /************************************************************************\r\n * Staff\r\n ************************************************************************/\r\n public setLoginStaff(loginStaff: LoginStaff) {\r\n this.connection.promise.then((child) => {\r\n child.setLoginStaff(loginStaff);\r\n this.staffSubject.next(loginStaff);\r\n });\r\n }\r\n\r\n public getLoginStaff(): Promise<LoginStaff> {\r\n return this.connection.promise.then((child) =>\r\n child.getLoginStaff(StorageKey.loginStaff),\r\n );\r\n }\r\n\r\n public clearLoginStaff(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearLoginStaff();\r\n this.staffSubject.next();\r\n });\r\n }\r\n\r\n public getStaffUpdate(): Observable<LoginStaff> {\r\n return this.staffSubject.asObservable() as Observable<LoginStaff>;\r\n }\r\n\r\n public refreshLoginStaffOptions() {\r\n this.getLoginStaff().then((oldLoginStaff) => {\r\n this.getStaffOffenderListOptions(oldLoginStaff.staffId).subscribe(\r\n (optionData) => {\r\n console.log(optionData);\r\n oldLoginStaff.options = optionData;\r\n this.setLoginStaff(oldLoginStaff);\r\n },\r\n );\r\n });\r\n }\r\n\r\n /************************************************************************\r\n * Offender Query\r\n ************************************************************************/\r\n public setOffenderQuery(offenderQuery: OffenderQuery) {\r\n this.connection.promise.then((child) => {\r\n child.setOffenderQuery(offenderQuery);\r\n this.offenderQuerySubject.next(offenderQuery);\r\n });\r\n }\r\n\r\n public getOffenderQuery(): Promise<OffenderQuery> {\r\n return this.connection.promise.then((child) =>\r\n child.getOffenderQuery(StorageKey.offenderQuery),\r\n );\r\n }\r\n\r\n public clearOffenderQuery(): void {\r\n this.connection.promise.then((child) => {\r\n child.clearOffenderQuery();\r\n this.offenderQuerySubject.next();\r\n });\r\n }\r\n\r\n public getOffenderQueryUpdate(): Observable<OffenderQuery> {\r\n return this.offenderQuerySubject.asObservable() as Observable<OffenderQuery>;\r\n }\r\n\r\n public setSelectedOffenderFromRoute(offenderId: number, intakeFlag: boolean): Observable<SelectedOffender> {\r\n return from(this.getLoginStaff()).pipe(\r\n switchMap(loginStaff => {\r\n const queryString = `{\r\n getSelectedOffender(input: { \r\n offenderId: ${offenderId},\r\n staffId: ${loginStaff.staffId}\r\n }){\r\n data{\r\n offenderId\r\n name: offenderName\r\n pdId\r\n birthDate\r\n gender\r\n }\r\n }\r\n }`;\r\n return this.httpClient.post<any>(this.smartDataServiceUrl, { query: queryString }).pipe(\r\n map(({ data }) => data.getSelectedOffender.data),\r\n catchError(error => {\r\n console.error('HTTP request error:', error);\r\n return of(null); \r\n })\r\n );\r\n }),\r\n map(selectedOffender => {\r\n selectedOffender.intakeFlag = intakeFlag;\r\n this.setSelectedOffender(selectedOffender);\r\n this.setOffenderQuery({offenders: [selectedOffender]});\r\n return selectedOffender;\r\n }),\r\n catchError(error => {\r\n console.error('Error in processing offender data:', error);\r\n throw error; \r\n })\r\n );\r\n }\r\n}","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, from, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n SMART_DATA_SERVICE_URL,\r\n} from '../smart-storage/smart-storage-model';\r\n\r\n\r\n@Injectable()\r\nexport class SmartOffenderHeaderService {\r\n constructor(\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n private http: HttpClient,\r\n ) {}\r\n\r\n getStaffOffenders(staffId: number): Observable<AssignedOffender[]> {\r\n const queryString = `\r\n query getStaffOffenderList{\r\n filterOffenderList(input: {staffId: ${staffId}}) {\r\n data {\r\n offenderId\r\n offenderName\r\n pdId\r\n birthDate\r\n gender\r\n }\r\n }\r\n }\r\n `;\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n return data.filterOffenderList.data;\r\n }),\r\n );\r\n }\r\n}\r\n\r\nexport interface AssignedOffender {\r\n offenderId: number;\r\n offenderName: string;\r\n pdId: string;\r\n birthDate: Date;\r\n gender: string;\r\n}\r\n","import { Component, OnInit, OnDestroy, NgZone, Output, EventEmitter } from '@angular/core';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport { SelectedOffender, LoginStaff, Role, OffenderQuery } from '../smart-storage/smart-storage-model';\r\nimport { Subscription, Observable, from, of } from 'rxjs';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { SmartOffenderHeaderService, AssignedOffender } from './smart-offender-header.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-smart-offender-header',\r\n templateUrl: './smart-offender-header.component.html',\r\n styleUrls: ['./smart-offender-header.component.css'],\r\n})\r\nexport class SmartOffenderHeaderComponent implements OnInit, OnDestroy {\r\n public selectedOffender: SelectedOffender;\r\n loginStaff: LoginStaff;\r\n subscription: Subscription;\r\n selectedOffenderControl$ = new UntypedFormControl();\r\n // assignedOffenders: AssignedOffender[];\r\n offenderQueryList: SelectedOffender[];\r\n offenderQuerySubscription: Subscription;\r\n // public isAuthenticated: boolean;\r\n\r\n constructor(\r\n private xdmService: XdmService,\r\n private authnService: MsalService,\r\n private smartOffenderHeaderService: SmartOffenderHeaderService,\r\n private router: Router,\r\n ) {}\r\n\r\n ngOnInit() {\r\n // this.isAuthenticated = this.authnService.getAccount() ? true : false;\r\n this.xdmService.getLoginStaff().then((loginStaff) => {\r\n this.loginStaff = loginStaff ? loginStaff : null;\r\n });\r\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\r\n this.selectedOffender =\r\n selectedOffender && selectedOffender.offenderId\r\n ? selectedOffender\r\n : null;\r\n });\r\n\r\n this.subscription = this.xdmService\r\n .getOffenderUpdate()\r\n .subscribe((selectedOffender) => {\r\n this.selectedOffender = selectedOffender;\r\n this.setSelectedOffenderControl();\r\n });\r\n\r\n this.xdmService.getOffenderQuery().then((offenderQuery: OffenderQuery) => {\r\n if (offenderQuery) {\r\n this.offenderQueryList = offenderQuery.offenders;\r\n this.setSelectedOffenderControl();\r\n }\r\n });\r\n\r\n this.offenderQuerySubscription = this.xdmService\r\n .getOffenderQueryUpdate()\r\n .subscribe((offenderList) => {\r\n if (offenderList && offenderList.offenders) {\r\n this.offenderQueryList = [...offenderList.offenders];\r\n }\r\n });\r\n\r\n this.selectedOffenderControl$.valueChanges.subscribe((o) =>\r\n this.onOffenderSelected(o),\r\n );\r\n\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => {\r\n return false;\r\n };\r\n }\r\n\r\n get isAuthenticated() : boolean {\r\n return this.authnService.instance.getAllAccounts().length > 0;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private onOffenderSelected(offender): void {\r\n if (offender) {\r\n // const o = offender.offenderName.split(',');\r\n // if (o.length === 2) {\r\n // const offenderName = `${o[1]} ${o[0]}`;\r\n // this.selectedOffender = {\r\n // offenderId: offender.offenderId,\r\n // name: offenderName,\r\n // pdId: offender.pdId,\r\n // birthDate: offender.birthDate,\r\n // gender: offender.genderCode,\r\n // assignmentStaffRelationId: '',\r\n // intakeFlag: this.loginStaff\r\n // ? this.hasIntakeRole(this.loginStaff.roles)\r\n // : false,\r\n // } as SelectedOffender;\r\n this.selectedOffender = offender;\r\n this.xdmService.setSelectedOffender(this.selectedOffender);\r\n this.reloadCurrentRoute();\r\n }\r\n }\r\n\r\n private setSelectedOffenderControl() {\r\n if (\r\n this.selectedOffender &&\r\n this.offenderQueryList &&\r\n this.offenderQueryList.length > 0\r\n ) {\r\n const o = this.offenderQueryList.find(\r\n (x) => x.offenderId === this.selectedOffender.offenderId,\r\n );\r\n if (o) {\r\n this.selectedOffenderControl$.setValue(o, { emitEvent: false });\r\n }\r\n\r\n if (!o && this.offenderQueryList.length > 0) {\r\n this.selectedOffenderControl$.setValue(this.offenderQueryList[0], {\r\n emitEvent: false,\r\n });\r\n }\r\n }\r\n }\r\n\r\n private reloadCurrentRoute() {\r\n try {\r\n const urlTree = this.router.parseUrl(this.router.url);\r\n if (\r\n urlTree &&\r\n urlTree.root &&\r\n urlTree.root.segments &&\r\n urlTree.root.segments.length > 1\r\n ) {\r\n this.router.navigate([urlTree.root.segments[0].path]);\r\n } else if (\r\n urlTree &&\r\n urlTree.root &&\r\n urlTree.root.children &&\r\n urlTree.root.children.primary &&\r\n urlTree.root.children.primary.segments &&\r\n urlTree.root.children.primary.segments.length > 1\r\n ) {\r\n this.router.navigate([urlTree.root.children.primary.segments[0].path]);\r\n } else {\r\n this.router.navigate([this.router.url]);\r\n }\r\n } catch {\r\n this.router.navigateByUrl('/');\r\n }\r\n }\r\n\r\n private hasIntakeRole(roles: Role[]) {\r\n if (roles && roles.length > 0) {\r\n return roles.findIndex(this.isIntakeRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private isIntakeRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'OPA':\r\n case 'OPS':\r\n case 'SOPS':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"offender-header-container\"\r\n *ngIf=\"selectedOffender && isAuthenticated\">\r\n <div class=\"offender-header-name-item\">\r\n <mat-form-field class=\"switch-offender\" appearance=\"fill\">\r\n <mat-label>Switch Offender</mat-label>\r\n <mat-select [formControl]=\"selectedOffenderControl$\">\r\n <mat-option\r\n *ngFor=\"let offender of offenderQueryList\"\r\n [value]=\"offender\">\r\n {{ offender?.name}} ({{offender?.offenderId}})\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">PDID:</span> {{ selectedOffender.pdId }}\r\n </div>\r\n <div class=\"offender-header-id-item\">\r\n <span class=\"item-label\">CSOSA ID:</span>\r\n {{ selectedOffender.offenderId }}\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable, isDevMode } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { SmartNavbarConfig } from './smart-navbar-config';\r\n\r\n@Injectable()\r\nexport class SmartNavbarService {\r\n configs: SmartNavbarConfig[];\r\n constructor(private http: HttpClient) {}\r\n\r\n /*\r\n public getNavbarConfigs(): SmartNavbarConfig[] {\r\n this.configs = [\r\n {appModuleId: 'SMART', name: 'SMART', url: 'http://localhost:4200', offenderSpecific: false, displayOrder: 1 },\r\n {appModuleId: 'OFFENDER', name: 'Offender', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 2 },\r\n {appModuleId: 'SPRVSN', name: 'Supervision', url: 'http://localhost:4200', offenderSpecific: true, displayOrder: 3 },\r\n ];\r\n\r\n return this.configs;\r\n }\r\n */\r\n /*\r\n public getNavbarConfigs(serviceApiUrl: string): Observable<SmartNavbarConfig[]> {\r\n return this.http.get<SmartNavbarConfig[]>(serviceApiUrl + '/AppModules');\r\n }\r\n */\r\n\r\n public getNavbarConfigs(\r\n serviceApiUrl: string,\r\n ): Observable<SmartNavbarConfig[]> {\r\n const queryString = `\r\n {\r\n findAppModules {\r\n data {\r\n appModuleId\r\n name\r\n url\r\n offenderSpecificFlag\r\n displayOrder\r\n }\r\n }\r\n }`;\r\n\r\n /*\r\n const httpHeaders = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n });\r\n const options = {\r\n headers: httpHeaders\r\n };\r\n */\r\n\r\n return this.http\r\n .post<any>(serviceApiUrl, { query: queryString })\r\n .pipe(\r\n map(({ data }) => {\r\n if (isDevMode()) {\r\n console.log(data);\r\n }\r\n return data.findAppModules.data;\r\n }),\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n ViewChild,\r\n ViewEncapsulation,\r\n Inject,\r\n} from '@angular/core';\r\nimport { MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { SmartNavbarConfig } from './smart-navbar-config';\r\nimport { SmartNavbarService } from './smart-navbar.service';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport {\r\n SelectedOffender,\r\n LoginStaff,\r\n Role,\r\n} from '../smart-storage/smart-storage-model';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-smart-navbar',\r\n templateUrl: './smart-navbar.component.html',\r\n styleUrls: ['./smart-navbar.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SmartNavbarComponent implements OnInit, OnDestroy {\r\n @Input() serviceApiUrl: string;\r\n @Input() appModuleId = null;\r\n @ViewChild('tabs') tabGroup: MatTabGroup;\r\n selectedOffender: SelectedOffender;\r\n loginStaff: LoginStaff;\r\n offenderSubscription: Subscription;\r\n staffSubscription: Subscription;\r\n navbarConfigs: SmartNavbarConfig[];\r\n selectedNavbarConfig: SmartNavbarConfig | null = null;\r\n\r\n constructor(\r\n private navbarConfigService: SmartNavbarService,\r\n private xdmService: XdmService,\r\n private authnService: MsalService,\r\n ) {}\r\n\r\n\r\n ngOnInit() {\r\n this.xdmService.getSelectedOffender().then((selectedOffender) => {\r\n this.selectedOffender =\r\n selectedOffender && selectedOffender.offenderId\r\n ? selectedOffender\r\n : null;\r\n });\r\n\r\n this.xdmService.getLoginStaff().then((loginStaff) => {\r\n this.loginStaff = loginStaff ? loginStaff : null;\r\n });\r\n\r\n this.offenderSubscription = this.xdmService\r\n .getOffenderUpdate()\r\n .subscribe((selectedOffender) => {\r\n this.selectedOffender = selectedOffender;\r\n });\r\n\r\n this.staffSubscription = this.xdmService\r\n .getStaffUpdate()\r\n .subscribe((loginStaff) => {\r\n this.loginStaff = loginStaff;\r\n });\r\n this.navbarConfigService\r\n .getNavbarConfigs(this.serviceApiUrl)\r\n .subscribe((configs) => {\r\n this.navbarConfigs = configs.sort((a, b) => {\r\n if (a.displayOrder < b.displayOrder) {\r\n return -1;\r\n } else if (a.displayOrder > b.displayOrder) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n setTimeout(() => {\r\n this.selectedNavbarConfig = this.navbarConfigs.find(\r\n (config) => config.appModuleId === this.appModuleId,\r\n );\r\n }, 100);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.offenderSubscription.unsubscribe();\r\n this.staffSubscription.unsubscribe();\r\n }\r\n\r\n\r\n public logout(): void {\r\n this.xdmService.clearAll();\r\n this.authnService.logout();\r\n }\r\n\r\n get isAuthenticated(): boolean {\r\n return this.authnService.instance.getAllAccounts().length > 0;\r\n }\r\n\r\n public getAppModuleUrl(config: SmartNavbarConfig) {\r\n return (config.appModuleId === 'PPMASRVW') ? config.url \r\n : config && this.selectedOffender && config.appModuleId === 'PPMAS'\r\n ? `${config.url}&OffenderId=${this.selectedOffender.offenderId}`\r\n : this.selectedOffender ? `${config.url}/?offenderId=${this.selectedOffender.offenderId}`\r\n : config.url;\r\n }\r\n\r\n public hasAppModulePermission(appModuleId) {\r\n if (\r\n this.loginStaff &&\r\n this.loginStaff.permissions &&\r\n this.loginStaff.permissions.length > 0\r\n ) {\r\n return (\r\n this.loginStaff.permissions.findIndex(\r\n (p) => p.appModuleId === appModuleId,\r\n ) > -1\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n showTab(config: SmartNavbarConfig) : boolean {\r\n return (\r\n (this.hasExternalUserRole && this.hasAppModulePermission(config.appModuleId)) ||\r\n (!this.hasExternalUserRole && (config.offenderSpecificFlag === false || this.selectedOffender))\r\n ) && this.checkVictimPermission(config) && this.isAuthenticated && !!this.loginStaff\r\n }\r\n\r\n public get hasExternalUserRole() {\r\n if (\r\n this.loginStaff &&\r\n this.loginStaff.roles &&\r\n this.loginStaff.roles.length > 0\r\n ) {\r\n return this.loginStaff.roles.findIndex(this.isExternalRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n public checkDVIPPermission(config: SmartNavbarConfig) : boolean{\r\n return ((config.appModuleId !== 'DVIP') || (config.appModuleId === \"DVIP\" && this.hasDVIPRole));\r\n }\r\n\r\n public get hasDVIPRole() {\r\n if (\r\n this.loginStaff &&\r\n this.loginStaff.roles &&\r\n this.loginStaff.roles.length > 0\r\n ) {\r\n return this.loginStaff.roles.findIndex(this.isDVIPRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private isDVIPRole(role: Role){\r\n if(role.roleId == 'TSD' || role.roleId == 'TAD' || role.roleId == 'STSD' || role.roleId == 'BC'){\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n public checkVictimPermission(config: SmartNavbarConfig) : boolean{\r\n return ((config.appModuleId !== 'VICTIM') || (config.appModuleId === \"VICTIM\" && this.hasVictimRole));\r\n }\r\n\r\n public get hasVictimRole() {\r\n if (\r\n this.loginStaff &&\r\n this.loginStaff.roles &&\r\n this.loginStaff.roles.length > 0\r\n ) {\r\n return this.loginStaff.roles.findIndex(this.isVictimRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private isVictimRole(role: Role){\r\n if(role.roleId == 'BC' || role.roleId == 'VSP'){\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n private isExternalRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'EUDTL':\r\n case 'EUDUSM':\r\n case 'EUJDG':\r\n case 'EUMPD':\r\n case 'EUSOTV':\r\n case 'EUUSA2':\r\n case 'EUUSAO':\r\n case 'EUUSPC':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\n<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\r\n @for (config of navbarConfigs; track config; let index = $index){\r\n @if (showTab(config)) {\r\n <a\r\n mat-tab-link\r\n class=\"smart-navbar-item\"\r\n (click)=\"selectedNavbarConfig = config\"\r\n [active]=\"selectedNavbarConfig !== null && selectedNavbarConfig.appModuleId === config.appModuleId\"\r\n [href]=\"getAppModuleUrl(config)\">{{ config.name }}</a>\r\n }\r\n }\r\n</nav>\r\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\r\n\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\n// import { SmartAuthService } from './smart-auth.service';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { SMART_WEB_PORTAL_URL } from '../smart-storage/smart-storage-model';\r\n\r\n@Component({\r\n selector: 'app-smart-error',\r\n templateUrl: './smart-error.component.html',\r\n styleUrls: ['./smart-error.component.css'],\r\n})\r\nexport class SmartErrorComponent implements OnInit {\r\n type: string;\r\n message: string;\r\n\r\n constructor(\r\n private authnService: MsalService,\r\n private route: ActivatedRoute,\r\n @Inject(SMART_WEB_PORTAL_URL) private smartWebPortalUrl: string,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.type = this.route.snapshot.queryParamMap.get('type') || 'staff';\r\n this.message =\r\n this.route.snapshot.queryParamMap.get('message') || 'Error occured.';\r\n }\r\n\r\n logout() {\r\n this.authnService.logout();\r\n }\r\n\r\n portal() {\r\n window.location.href = this.smartWebPortalUrl;\r\n }\r\n}\r\n","<div>\r\n <h2>\r\n {{ message }}\r\n </h2>\r\n <p>\r\n Please contact help desk if needed.\r\n </p>\r\n <div>\r\n <button (click)=\"logout()\" *ngIf=\"type === 'staff'\">OK</button>\r\n <button (click)=\"portal()\" *ngIf=\"type === 'offender'\">OK</button>\r\n </div>\r\n</div>\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, from, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { SMART_DATA_SERVICE_URL } from '../smart-storage/smart-storage-model';\r\n\r\n@Injectable()\r\nexport class SmartStaffOffenderOptionsService {\r\n constructor(\r\n private http: HttpClient,\r\n private matSnackBar: MatSnackBar,\r\n @Inject(SMART_DATA_SERVICE_URL) private serviceApiUrl,\r\n ) {}\r\n\r\n public showMessage(message) {\r\n this.matSnackBar.open(message, null, {\r\n duration: 2000,\r\n });\r\n }\r\n\r\n private convertEmptyToNull(jsonObject: JSON) {\r\n if (!jsonObject) {\r\n return;\r\n }\r\n\r\n if (jsonObject instanceof Array) {\r\n jsonObject.forEach((obj) => {\r\n this.convertEmptyToNull(obj);\r\n });\r\n }\r\n\r\n const keys = Object.keys(jsonObject);\r\n keys.forEach((key) => {\r\n if (typeof jsonObject[key] === 'object') {\r\n this.convertEmptyToNull(jsonObject[key]);\r\n } else if (\r\n typeof jsonObject[key] === 'string' &&\r\n jsonObject[key].trim() === ''\r\n ) {\r\n jsonObject[key] = null;\r\n }\r\n });\r\n }\r\n\r\n private getGraphQueryData(\r\n queryName: string,\r\n queryString: string,\r\n ): Observable<any> {\r\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\r\n map(({ data }) => {\r\n return data[queryName];\r\n }),\r\n );\r\n }\r\n\r\n getOffenderListOptions(): Observable<any> {\r\n const queryString = `{findOffenderListOptions(input:{\r\n where:{\r\n deactivatedDate: null\r\n }\r\n }){\r\n data{\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n }\r\n } }`;\r\n\r\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\r\n map(({ data }) => {\r\n return data['findOffenderListOptions'];\r\n }),\r\n );\r\n }\r\n\r\n public getStaffOffenderListOptions(staffId: number): Observable<Array<any>> {\r\n const queryString = `{findStaffOffenderListOptions(input:{\r\n where:{\r\n staffId: ${staffId}\r\n }\r\n }){\r\n data{\r\n offenderListOptionId\r\n }\r\n } }`;\r\n return this.http.post<any>(this.serviceApiUrl, { query: queryString }).pipe(\r\n map(({ data }) => {\r\n return data.findStaffOffenderListOptions.data;\r\n }),\r\n );\r\n }\r\n\r\n saveStaffOffenderListOptionsData(dataToSave: any) {\r\n //}: Observable<any> {\r\n\r\n // this.convertEmptyToNull(dataToSave);\r\n const queryName = 'upsertStaffOffenderListOption';\r\n const query = `mutation {\r\n upsertStaffOffenderListOption(input: ${this.convertToString(\r\n dataToSave,\r\n )}) {\r\n message\r\n }\r\n }`;\r\n\r\n return this.http.post<any>(this.serviceApiUrl, { query });\r\n /*.pipe(\r\n map(({ data }) => {\r\n return data[queryName];\r\n }));*/\r\n }\r\n\r\n convertToString(obj): string {\r\n let result = '';\r\n\r\n if (!obj) {\r\n return result;\r\n }\r\n\r\n if (obj instanceof Array) {\r\n result += ' [';\r\n obj.forEach((eObj) => {\r\n result += this.convertToString(eObj);\r\n });\r\n result += '],';\r\n } else {\r\n result += '{';\r\n const keys = Object.keys(obj);\r\n keys.forEach((key) => {\r\n if (typeof obj[key] === 'object') {\r\n result += key + ':' + this.convertToString(obj[key]);\r\n } else {\r\n if (isNaN(obj[key])) {\r\n result += key + ':\"' + obj[key] + '\",';\r\n } else {\r\n result += key + ':' + obj[key] + ',';\r\n }\r\n }\r\n });\r\n result = result.substring(0, result.length - 1);\r\n result += '},';\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\r\nimport { FormBuilder,\r\n UntypedFormGroup,\r\n UntypedFormControl,\r\n Validators,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { XdmService} from '../smart-storage/xdm.service';\r\n\r\n@Component({\r\n selector: 'lib-smart-staff-offender-options',\r\n templateUrl: './smart-staff-offender-options.component.html',\r\n styleUrls: ['./smart-staff-offender-options.component.css']\r\n})\r\nexport class SmartStaffOffenderOptionsComponent implements OnInit {\r\n loginStaff: LoginStaff;\r\n offenderListOptions: Array<any> = [];\r\n frmGroup: UntypedFormGroup;\r\n constructor(\r\n private route: ActivatedRoute,\r\n private offenderService: SmartStaffOffenderOptionsService,\r\n private xdmService: XdmService\r\n ) { }\r\n\r\n ngOnInit() {\r\n const routData = this.route.snapshot.data;\r\n this.loginStaff = routData.loginStaff;\r\n this.offenderListOptions = routData.selectedOffenderResolverService;\r\n this.frmGroup = this.createForm();\r\n this.offenderService.getStaffOffenderListOptions(this.loginStaff.staffId).subscribe(data => {\r\n this.fillForm(data);\r\n });\r\n }\r\n\r\n private fillForm(data) {\r\n if (data) {\r\n const offenderListOptionsFg = this.frmGroup.get('offenderListOptions');\r\n data.forEach(element => {\r\n offenderListOptionsFg.get(element.offenderListOptionId).setValue(true);\r\n });\r\n }\r\n\r\n }\r\n private createForm() {\r\n const offenderListOptionsFg = new UntypedFormGroup({\r\n });\r\n\r\n this.offenderListOptions.forEach( (dt, i) => {\r\n offenderListOptionsFg.addControl(dt.offenderListOptionId, new UntypedFormControl(false));\r\n });\r\n\r\n return new UntypedFormGroup({\r\n offenderListOptions: offenderListOptionsFg,\r\n });\r\n }\r\n\r\n onSave() {\r\n const data = {\r\n options: [],\r\n staffId: this.loginStaff.staffId,\r\n modifiedBy: this.loginStaff.staffId\r\n };\r\n\r\n const offenderListOptionsVal = this.frmGroup.get('offenderListOptions').value;\r\n const keys = Object.keys(offenderListOptionsVal);\r\n keys.forEach(key => {\r\n if (offenderListOptionsVal[key]) {\r\n data.options.push({'offenderListOptionId': key});\r\n }\r\n });\r\n\r\n this.offenderService.saveStaffOffenderListOptionsData(data).subscribe(rtrDatea=>{\r\n if (rtrDatea.message) {\r\n this.offenderService.showMessage(rtrDatea.message);\r\n } else {\r\n this.offenderService.showMessage('Saved successfully');\r\n this.xdmService.refreshLoginStaffOptions();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","<form class=\"main-form\" [formGroup]=\"frmGroup\">\r\n <mat-card appearance=\"outlined\" role=\"group\">\r\n <mat-card-content>\r\n <div formGroupName=\"offenderListOptions\">\r\n <div style=\"float:left;\">\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\">\r\n <mat-checkbox *ngIf=\"i%2!=0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <div>\r\n <div *ngFor=\"let offenderListOption of offenderListOptions; let i = index\" >\r\n <mat-checkbox *ngIf=\"i%2==0\" color=\"primary\" formControlName=\"{{offenderListOption.offenderListOptionId}}\">\r\n {{offenderListOption.name}}\r\n </mat-checkbox> \r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <div align=\"center\">\r\n <button mat-stroked-button (click)=\"onSave()\">Save</button>\r\n </div>\r\n </mat-card>\r\n </form>\r\n ","import { Injectable, Inject, isDevMode } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, of, from, throwError, lastValueFrom } from 'rxjs';\r\nimport { map, switchMap, take, catchError} from 'rxjs/operators';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nimport {\r\n LoginStaff,\r\n SelectedOffender,\r\n SMART_DATA_SERVICE_URL,\r\n SMART_DOMAIN_FORMAT,\r\n Role,\r\n Permission,\r\n} from '../smart-storage/smart-storage-model';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\nimport { SmartAccessControlConfig } from './smart-access-control-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartAuthService {\r\n loginStaff: LoginStaff;\r\n selectedOffender: SelectedOffender;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private authnService: MsalService,\r\n private xdmService: XdmService,\r\n @Inject(SMART_DATA_SERVICE_URL) private smartDataServiceUrl,\r\n @Inject(SMART_DOMAIN_FORMAT) private smartDomainFormatUrl: string,\r\n ) {}\r\n\r\n public getLoginStaff(): Observable<LoginStaff> {\r\n if (isDevMode) {\r\n console.log('SmartAuthService - getLoginStaff()');\r\n }\r\n if (!isDevMode && this.loginStaff) {\r\n if (this.loginStaff.staffId) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get internal instance in service',\r\n this.loginStaff,\r\n );\r\n }\r\n return of(this.loginStaff);\r\n } else if (this.loginStaff.userName) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get using preset user name',\r\n this.loginStaff,\r\n );\r\n }\r\n return this.getStaff(this.loginStaff.userName);\r\n }\r\n }\r\n return from(this.xdmService.getLoginStaff()).pipe(\r\n switchMap((storedResult) => {\r\n if (storedResult && storedResult.staffId) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get from session.',\r\n storedResult,\r\n );\r\n }\r\n this.loginStaff = storedResult;\r\n return of(storedResult);\r\n } else if (storedResult && storedResult.userName) {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getLoginStaff(): get using preset user name',\r\n this.loginStaff,\r\n );\r\n }\r\n return this.getStaff(storedResult.userName);\r\n } else {\r\n const userName = this.userName;\r\n const staffName = userName.substring(0, userName.indexOf('@'));\r\n if (isDevMode) {\r\n console.log(\r\n '##### loginLoginStaff(): get using login staff name ',\r\n staffName,\r\n );\r\n }\r\n return this.getStaff(staffName);\r\n }\r\n }),\r\n );\r\n }\r\n\r\n get userName(): string {\r\n if (this.authnService.instance.getAllAccounts().length > 0) {\r\n const account = this.authnService.instance.getAllAccounts()[0];\r\n return account.username;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n private getTeamUrl(app: string, afterHash: string): string {\r\n return this.smartDomainFormatUrl.replace('${APP}', app) + afterHash;\r\n }\r\n private isSameHost(url, app) {\r\n return this.smartDomainFormatUrl.replace('${APP}', app) === url;\r\n }\r\n\r\n public redirectToTeam(loginStaff: LoginStaff) {\r\n if (loginStaff.roles.findIndex((role) => role.roleId === 'EUUSPC') > -1) {\r\n if (!this.isSameHost(window.location.origin, 'investigation')) {\r\n window.location.href = this.getTeamUrl('investigation', '/assignment');\r\n }\r\n } else if (\r\n loginStaff.roles.findIndex(\r\n (role) => role.roleId.substring(0, 3) === 'RSC',\r\n ) > -1\r\n ) {\r\n if (!this.isSameHost(window.location.origin, 'rsc')) {\r\n window.location.href = this.getTeamUrl('rsc', '/offender-list');\r\n }\r\n }\r\n }\r\n\r\n public async setSelectedOffender(selectedOffender: SelectedOffender) {\r\n if (!this.loginStaff) {\r\n return;\r\n }\r\n\r\n if (selectedOffender) {\r\n // if (!selectedOffender.assignmentStaffRelationId) {\r\n const relation = await lastValueFrom(\r\n this.getStaffOffenderRelation(\r\n this.loginStaff.staffId,\r\n selectedOffender.offenderId,\r\n ),\r\n );\r\n if (relation) {\r\n selectedOffender.assignmentStaffRelationId = relation;\r\n } else {\r\n selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\r\n }\r\n // }\r\n }\r\n this.xdmService.setSelectedOffender(selectedOffender);\r\n this.selectedOffender = selectedOffender;\r\n }\r\n\r\n public logout(): void {\r\n this.xdmService.clearAll();\r\n this.authnService.logout();\r\n }\r\n\r\n public async setPermission(\r\n appModuleId: string,\r\n route: ActivatedRouteSnapshot,\r\n ) {\r\n if (!this.loginStaff) {\r\n this.loginStaff = await this.xdmService.getLoginStaff();\r\n }\r\n const permissions = this.loginStaff.permissions;\r\n const resource =\r\n route.url && route.url.length > 0 ? route.url[0]!.path : '';\r\n\r\n if (!this.selectedOffender) {\r\n this.selectedOffender = await this.xdmService.getSelectedOffender();\r\n }\r\n\r\n if (this.selectedOffender) {\r\n // if (!this.selectedOffender.assignmentStaffRelationId) {\r\n const relation = await this.getStaffOffenderRelation(\r\n this.loginStaff.staffId,\r\n this.selectedOffender.offenderId,\r\n ).toPromise();\r\n if (relation) {\r\n this.selectedOffender.assignmentStaffRelationId = relation;\r\n } else {\r\n this.selectedOffender.assignmentStaffRelationId = 'NOASSIGN';\r\n }\r\n this.xdmService.setSelectedOffender(this.selectedOffender);\r\n // }\r\n }\r\n\r\n const assignmentStaffRelationId =\r\n this.selectedOffender.assignmentStaffRelationId;\r\n\r\n const elements = document.querySelectorAll('[class^=\"sac-\"]');\r\n const pattern = /^sac-(\\S+)-(\\S+)$/i;\r\n\r\n Array.from(elements).forEach((element) => {\r\n let hide;\r\n let disable;\r\n element.classList.forEach((c) => {\r\n const results = c.match(pattern);\r\n // console.log(results);\r\n if (results && results.length > 2) {\r\n const roleId = results[1] ? results[1].toUpperCase() : null;\r\n const right = results[2];\r\n // console.log(results[0]);\r\n // console.log(results[1]);\r\n // console.log(results[2]);\r\n const permission = permissions.find(function (p) {\r\n return (\r\n p.appModuleId === appModuleId &&\r\n p.resource === resource &&\r\n p.roleId === roleId &&\r\n p.assignmentStaffRelationId === assignmentStaffRelationId\r\n );\r\n });\r\n /*\r\n console.log('##### setPermission() resource: ', resource);\r\n console.log('##### setPermission() appModuleId: ', appModuleId);\r\n console.log('##### setPermission() roleId: ', roleId);\r\n console.log(\r\n '##### setPermission() assignment relation: ',\r\n assignmentStaffRelationId,\r\n );\r\n */\r\n console.log('##### Matched permission: ', permission);\r\n\r\n if (permission) {\r\n if (right === 'read') {\r\n if (!permission.readFlag) {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else {\r\n hide = false;\r\n }\r\n } else if (\r\n (right === 'create' && !permission.createFlag) ||\r\n (right === 'update' && !permission.updateFlag) ||\r\n (right === 'delete' && !permission.deleteFlag) ||\r\n (right === 'assign' && !permission.assignFlag) ||\r\n (right === 'close' && !permission.closeFlag) ||\r\n (right === 'expunge' && !permission.expungeFlag) ||\r\n (right === 'reopen' && !permission.reopenFlag)\r\n ) {\r\n if (element.nodeName === 'BUTTON') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else {\r\n if (disable !== false) {\r\n disable = true;\r\n }\r\n }\r\n } else {\r\n if (element.nodeName === 'BUTTON') {\r\n hide = false;\r\n } else {\r\n disable = false;\r\n }\r\n }\r\n } else {\r\n if (right === 'read') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else if (element.nodeName === 'BUTTON') {\r\n if (hide !== false) {\r\n hide = true;\r\n }\r\n } else if (disable !== false) {\r\n disable = true;\r\n }\r\n }\r\n }\r\n });\r\n console.log('hide: ', hide);\r\n console.log('disable: ', disable);\r\n if (hide === true) {\r\n this.hideHtmlElement(element);\r\n } else if (disable === true) {\r\n this.disableHtmlElement(element);\r\n }\r\n });\r\n }\r\n\r\n public checkPermission(accessControlConfig: SmartAccessControlConfig) {\r\n const selData = accessControlConfig.route.data;\r\n this.loginStaff = selData.loginStaff;\r\n this.selectedOffender = selData.selectedOffender;\r\n let routePath = '';\r\n if (\r\n accessControlConfig.route.url &&\r\n accessControlConfig.route.url.length > 0\r\n ) {\r\n routePath = accessControlConfig.route.url[0]!.path;\r\n }\r\n\r\n const permissions = this.loginStaff.permissions;\r\n const resource = routePath;\r\n const roleId = accessControlConfig.roleId\r\n ? accessControlConfig.roleId.toUpperCase()\r\n : null;\r\n const accessType = accessControlConfig.accessType;\r\n const assignmentStaffRelationId = (!this.selectedOffender || !this.selectedOffender\r\n .assignmentStaffRelationId)\r\n ? 'N/A'\r\n : this.selectedOffender.assignmentStaffRelationId;\r\n\r\n const permission = permissions.find((p) => {\r\n return (\r\n p.appModuleId === accessControlConfig.appModuleId &&\r\n p.resource === resource &&\r\n (!roleId || p.roleId === roleId) &&\r\n (p.assignmentStaffRelationId === 'N/A' ||\r\n p.assignmentStaffRelationId === assignmentStaffRelationId)\r\n );\r\n });\r\n\r\n if (permission) {\r\n if (accessType === 'read') {\r\n if (!permission.readFlag) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else if (\r\n (accessType === 'create' && !permission.createFlag) ||\r\n (accessType === 'update' && !permission.updateFlag) ||\r\n (accessType === 'delete' && !permission.deleteFlag) ||\r\n (accessType === 'assign' && !permission.assignFlag) ||\r\n (accessType === 'close' && !permission.closeFlag) ||\r\n (accessType === 'expunge' && !permission.expungeFlag) ||\r\n (accessType === 'reopen' && !permission.reopenFlag)\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n if (accessType === 'read') {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public canAppFeatureActivate(\r\n loginStaff: LoginStaff,\r\n feature: string,\r\n appModuleId = null,\r\n ) {\r\n // if (!this.isAuthEnable(loginStaff.roles, appModuleId)) {\r\n // return true;\r\n // }\r\n return this.hasAppFeaturePermission(\r\n loginStaff.permissions,\r\n feature,\r\n appModuleId,\r\n );\r\n }\r\n\r\n // public isAuthEnable(roles: Role[], appModuleId: string) {\r\n // if (roles && roles.length > 0) {\r\n // return roles.map(r => r.roleId).findIndex(this.isExternalRole) > -1 || appModuleId === 'RR';\r\n // }\r\n // return false;\r\n // }\r\n\r\n public hasIntakeRole(roles: Role[]) {\r\n if (roles && roles.length > 0) {\r\n return roles.findIndex(this.isIntakeRole) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n private hasAppFeaturePermission(\r\n permissions: Permission[],\r\n feature: string,\r\n appModuleId: string,\r\n ) {\r\n if (permissions && permissions.length > 0) {\r\n if (appModuleId) {\r\n return (\r\n permissions.findIndex(\r\n (p) => p.resource === feature && p.appModuleId === appModuleId,\r\n ) > -1\r\n );\r\n } else {\r\n return permissions.findIndex((p) => p.resource === feature) > -1;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isExternalRole(roleId) {\r\n switch (roleId) {\r\n case 'EUDTL':\r\n case 'EUDUSM':\r\n case 'EUJDG':\r\n case 'EUMPD':\r\n case 'EUSOTV':\r\n case 'EUUSA2':\r\n case 'EUUSAO':\r\n case 'EUUSPC':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private isIntakeRole(role: Role) {\r\n switch (role.roleId) {\r\n case 'OPA':\r\n case 'OPS':\r\n case 'SOPS':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private disableHtmlElement(element: Element): void {\r\n // console.log(element);\r\n switch (element.nodeName) {\r\n case 'A':\r\n element.setAttribute(\r\n 'style',\r\n 'pointer-events: none;cursor: not-allowed;',\r\n );\r\n element.setAttribute('tabIndex', '-1');\r\n break;\r\n default:\r\n element.setAttribute('disabled', 'disabled');\r\n break;\r\n }\r\n }\r\n\r\n private hideHtmlElement(element: Element): void {\r\n // element.setAttribute('hidden', 'hidden');\r\n element.setAttribute('style', 'display: none;');\r\n }\r\n\r\n private getStaff(userName: string): Observable<LoginStaff> {\r\n return this.query<any>({\r\n query: this.findStaffQuery,\r\n variables: {\r\n input: {\r\n where: {\r\n userName: userName,\r\n activeFlag: true,\r\n },\r\n }\r\n },\r\n }).pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log('##### getStaff() from service ', result);\r\n }\r\n if (result.findvStaffs.data.length > 0) {\r\n const data = result.findvStaffs.data[0];\r\n this.xdmService.setLoginStaff(data);\r\n this.loginStaff = data;\r\n return data;\r\n } else {\r\n return of(null);\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('error ' + error);\r\n return of(null);\r\n }),\r\n );\r\n }\r\n\r\n private query<T>(options: {\r\n query: string;\r\n variables?: { [key: string]: any };\r\n }): Observable<T> {\r\n return this.http\r\n .post<{ data: T }>(\r\n this.smartDataServiceUrl,\r\n {\r\n query: options.query,\r\n variables: options.variables,\r\n },\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'No-Auth': 'True',\r\n }),\r\n }\r\n )\r\n .pipe(map((d) => d.data));\r\n }\r\n\r\n private get findStaffQuery(){\r\n return `\r\n query findvStaffs($input: vStaffMultiInput) {\r\n findvStaffs(input: $input) {\r\n totalCount\r\n message\r\n data {\r\n staffId\r\n userName\r\n lastName\r\n firstName\r\n phone\r\n email\r\n roles {\r\n roleId\r\n role\r\n }\r\n permissions {\r\n roleId\r\n appModuleId\r\n resource\r\n assignmentStaffRelationId\r\n readFlag\r\n createFlag\r\n updateFlag\r\n deleteFlag\r\n assignFlag\r\n reopenFlag\r\n closeFlag\r\n expungeFlag\r\n }\r\n options {\r\n offenderListOptionId\r\n name\r\n serviceApiFieldName\r\n selectedFlag\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n }\r\n\r\n private getStaffOffenderRelation(\r\n staffId: number,\r\n offenderId: number,\r\n ): Observable<string> {\r\n const queryString = `\r\n {\r\n findvStaffOffenderRelations(input: {where: {staffId: ${staffId}, offenderId: ${offenderId}}}) {\r\n data {\r\n assignmentStaffRelationId\r\n }\r\n }\r\n }`;\r\n\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log(\r\n '##### getStaffOffenderRelation() from service ',\r\n result,\r\n );\r\n }\r\n if (result.data.findvStaffOffenderRelations.data.length > 0) {\r\n const data = result.data.findvStaffOffenderRelations.data[0];\r\n return data.assignmentStaffRelationId;\r\n } else {\r\n return null;\r\n // return throwError('No access right.');\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('error ' + error);\r\n return null;\r\n }),\r\n );\r\n }\r\n\r\n private getRolePermissions(\r\n appModuleId: string,\r\n resource: string,\r\n ): Observable<boolean> {\r\n const queryString = `\r\n query findvRolePermissionPivots{\r\n findvRolePermissionPivots(input: {where: {appModuleId: ${appModuleId}, resource: ${resource}}}){\r\n totalCount\r\n message\r\n }\r\n }`;\r\n\r\n return this.http\r\n .post<any>(this.smartDataServiceUrl, { query: queryString })\r\n .pipe(\r\n take(1),\r\n map((result) => {\r\n if (isDevMode) {\r\n console.log(\r\n '##### findvRolePermissionPivots() from service ',\r\n result,\r\n );\r\n }\r\n if (result.data.findvRolePermissionPivots.totalCount > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n // return throwError('No access right.');\r\n }\r\n }),\r\n catchError((error: any) => {\r\n console.log('error ' + error);\r\n return throwError(error);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Directive, Input, OnInit, ElementRef } from '@angular/core';\r\nimport { SmartAuthService } from './smart-auth.service';\r\nimport { SmartAccessControlConfig } from './smart-access-control-config';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n\r\n@Directive({\r\n selector: '[accessControl]',\r\n})\r\nexport class SmartAccessControlDirective implements OnInit {\r\n @Input() accessControlConfig: SmartAccessControlConfig;\r\n constructor(\r\n private elementRef: ElementRef,\r\n private auth: SmartAuthService,\r\n ) {}\r\n\r\n public ngOnInit() {\r\n this.checkAccess();\r\n }\r\n\r\n checkAccess() {\r\n if (\r\n !this.accessControlConfig ||\r\n !this.accessControlConfig.route ||\r\n !this.accessControlConfig.route.data ||\r\n !this.accessControlConfig.route.data.loginStaff\r\n ) {\r\n return;\r\n }\r\n\r\n // const loginStaff = this.accessControlConfig.route.data.loginStaff;\r\n // if (!this.auth.isAuthEnable(loginStaff.roles, this.accessControlConfig.appModuleId)) {\r\n // return;\r\n // }\r\n this.elementRef.nativeElement.style.display = this.auth.checkPermission(\r\n this.accessControlConfig\r\n )\r\n ? 'block'\r\n : 'none';\r\n }\r\n}\r\n","// smart-authorization.service\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Router } from '@angular/router';\r\nimport { take, mergeMap, catchError } from 'rxjs/operators';\r\nimport { of, Observable } from 'rxjs';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\nimport { SmartAuthService } from './smart-auth.service';\r\n\r\n@Injectable()\r\nexport class SmartAuthorizationGuard {\r\n loginStaff: LoginStaff;\r\n\r\n constructor(public authnService: SmartAuthService) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot) {\r\n return this.authnService.getLoginStaff().pipe(\r\n take(1),\r\n mergeMap((loginStaff) => {\r\n if (!loginStaff || !route || !route.routeConfig) {\r\n return of(false);\r\n }\r\n // if (!this.authnService.isAuthEnable(loginStaff.roles, null)) {\r\n // return of(true);\r\n // }\r\n const resource = route.routeConfig.path\r\n ? route.routeConfig.path.split('/')[0]\r\n : '';\r\n const isFeatureValid = this.authnService.canAppFeatureActivate(\r\n loginStaff,\r\n resource,\r\n );\r\n return of(isFeatureValid);\r\n }),\r\n catchError((error) => {\r\n return of(false);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SmartOffenderRedirectGuard {\r\n constructor(private router: Router) {}\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean {\r\n const targetRoute = route.data['routeTo'];\r\n const queryParams = route.parent?.queryParams;\r\n if (targetRoute) {\r\n this.router.navigate([targetRoute], { queryParams: queryParams });\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { SmartOffenderHeaderComponent } from './smart-offender-header/smart-offender-header.component';\r\nimport { SmartNavbarComponent } from './smart-navbar/smart-navbar.component';\r\nimport { SmartNavbarService } from './smart-navbar/smart-navbar.service';\r\nimport { SmartErrorComponent } from './smart-auth/smart-error.component';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { SmartOffenderHeaderService } from './smart-offender-header/smart-offender-header.service';\r\nimport { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\r\n// import { SmartStaffOffenderOptionsComponent } from './smart-staff-offender-options/smart-staff-offender-options.component';\r\nimport { SmartStaffOffenderOptionsService } from './smart-staff-offender-options/smart-staff-offender-options.service';\r\nimport { SmartAccessControlDirective } from './smart-auth/smart-access-control.directive';\r\nimport { SmartAuthorizationGuard } from './smart-auth/smart-authorization-guard.service';\r\nimport { SmartOffenderRedirectGuard } from './smart-offender-header/smart-offender-redirect.guard';\r\n\r\n@NgModule({\r\n declarations: [\r\n SmartOffenderHeaderComponent,\r\n SmartNavbarComponent,\r\n SmartErrorComponent,\r\n SmartStaffOffenderOptionsComponent,\r\n SmartAccessControlDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatTabsModule,\r\n MatSelectModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n ReactiveFormsModule,\r\n ],\r\n exports: [\r\n SmartOffenderHeaderComponent,\r\n SmartNavbarComponent,\r\n SmartErrorComponent,\r\n SmartStaffOffenderOptionsComponent,\r\n SmartAccessControlDirective,\r\n ],\r\n providers: [\r\n SmartNavbarService,\r\n SmartOffenderHeaderService,\r\n SmartStaffOffenderOptionsService,\r\n SmartAuthorizationGuard,\r\n MatSnackBar,\r\n SmartOffenderRedirectGuard\r\n ],\r\n})\r\nexport class NgcSmartCoreModule {}\r\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable, EMPTY, of, throwError } from 'rxjs';\r\nimport { mergeMap, catchError, take } from 'rxjs/operators';\r\nimport { SmartAuthService } from './smart-auth.service';\r\nimport { LoginStaff } from '../smart-storage/smart-storage-model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoginStaffResolverService {\r\n constructor(\r\n private authnService: SmartAuthService,\r\n // private zone: NgZone,\r\n private router: Router,\r\n ) {}\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<LoginStaff> | Observable<never> {\r\n return this.authnService.getLoginStaff().pipe(\r\n take(1),\r\n mergeMap((loginStaff) => {\r\n if (isDevMode) {\r\n console.log('LoginStaffResolverService: ', loginStaff);\r\n }\r\n if (loginStaff) {\r\n return of(loginStaff);\r\n } else {\r\n return throwError('Not authorized to access SMART.');\r\n // return EMPTY;\r\n /*\r\n this.zone.run(() => {\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: {\r\n type: 'staff',\r\n message: 'Not authorized to access SMART.'\r\n }\r\n });\r\n });\r\n return EMPTY;\r\n */\r\n }\r\n }),\r\n catchError((error) => {\r\n console.log('LoginStaffResolverService: ' + error);\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: {\r\n type: 'staff',\r\n message: 'SMART Authentication: ' + error,\r\n },\r\n });\r\n return EMPTY;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, NgZone, isDevMode } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable, from, of, EMPTY, throwError, concat } from 'rxjs';\r\nimport {\r\n catchError,\r\n mergeMap,\r\n take,\r\n retryWhen,\r\n delay,\r\n} from 'rxjs/operators';\r\nimport { SelectedOffender } from '../smart-storage/smart-storage-model';\r\nimport { XdmService } from '../smart-storage/xdm.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SelectedOffenderResolverService\r\n {\r\n constructor(\r\n private service: XdmService,\r\n private zone: NgZone,\r\n private router: Router,\r\n ) {}\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<SelectedOffender> | Observable<never> {\r\n let offenderId: number | null = null;\r\n let intakeFlag: boolean = false;\r\n if(route) {\r\n if(route.queryParams[\"offenderId\"])\r\n offenderId = parseInt(route.queryParams[\"offenderId\"]);\r\n if(route.queryParams[\"intakeFlag\"])\r\n intakeFlag = route.queryParams[\"intakeFlag\"] == \"true\";\r\n }\r\n return from(this.service.getSelectedOffender()).pipe(\r\n mergeMap((selectedOffender) => {\r\n if (isDevMode) {\r\n console.log(selectedOffender);\r\n }\r\n if(offenderId && offenderId > 0 && (!selectedOffender || (selectedOffender && selectedOffender.offenderId !== offenderId))) {\r\n return this.service.setSelectedOffenderFromRoute(offenderId, intakeFlag);\r\n }\r\n if(selectedOffender) {\r\n return of(selectedOffender);\r\n }\r\n return throwError(() => new Error('No offender selected.'));\r\n }),\r\n retryWhen((errors) =>\r\n errors.pipe(\r\n // tap(() => console.log('Retry getting selected offender.')),\r\n delay(1000),\r\n take(5),\r\n (o) =>\r\n concat(\r\n o,\r\n throwError(() => new Error('No offender selected (failed after retries).')),\r\n ),\r\n ),\r\n ),\r\n catchError((error) => {\r\n /*\r\n this.zone.run(() => {\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: { type: 'offender', message: error }\r\n });\r\n });\r\n */\r\n this.router.navigate(['/smart-error'], {\r\n queryParams: { type: 'offender', message: error },\r\n });\r\n return EMPTY;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { SmartStaffOffenderOptionsService} from './smart-staff-offender-options.service';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartStaffOffenderOptionsResolverService {\r\n constructor(private offenderService: SmartStaffOffenderOptionsService) {}\r\n resolve() {\r\n return this.offenderService.getOffenderListOptions()\r\n .pipe(\r\n map(({ data }) => {\r\n return data;\r\n }),\r\n );\r\n }\r\n }\r\n","import { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nexport interface SmartAccessControlConfig {\r\n appModuleId: string;\r\n route: ActivatedRouteSnapshot;\r\n accessType: AccessType;\r\n roleId: string;\r\n}\r\n\r\nexport enum AccessType {\r\n READ = 'read',\r\n CREATE = 'create',\r\n UPDATE = 'update',\r\n DELETE = 'delete',\r\n EXPUNGE = 'expunge',\r\n ASSIGN = 'assign',\r\n REOPEN = 'reopen',\r\n CLOSE = 'close'\r\n}\r\n","/*\r\n * Public API Surface of ngc-smart-core\r\n */\r\n\r\nexport * from './lib/ngc-smart-core.module';\r\nexport * from './lib/smart-auth/smart-auth.service';\r\nexport * from './lib/smart-auth/smart-login-staff-resolver.service';\r\nexport * from './lib/smart-auth/smart-selected-offender-resolver.service';\r\nexport * from './lib/smart-auth/smart-error.component';\r\nexport * from './lib/smart-navbar/smart-navbar.service';\r\nexport * from './lib/smart-navbar/smart-navbar-config';\r\nexport * from './lib/smart-storage/xdm.service';\r\nexport * from './lib/smart-storage/smart-storage-model';\r\nexport * from './lib/smart-staff-offender-options/smart-staff-offender-options.component';\r\nexport * from './lib/smart-offender-header/smart-offender-header.component';\r\nexport * from './lib/smart-offender-header/smart-offender-redirect.guard';\r\nexport * from './lib/smart-auth/smart-access-control.directive';\r\nexport * from './lib/smart-navbar/smart-navbar.component';\r\nexport * from './lib/smart-staff-offender-options/smart-staff-offender-options-resolver.service';\r\nexport * from './lib/smart-auth/smart-access-control-config';\r\nexport * from './lib/smart-auth/smart-authorization-guard.service';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XdmService","i3.SmartOffenderHeaderService","i4","i9","i1.SmartNavbarService","i2.XdmService","i3","i1","i2.SmartStaffOffenderOptionsService","i3.XdmService","i5","i6","i7","i8","i1.SmartAuthService","i2","i1.SmartStaffOffenderOptionsService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEa,UAAU,CAAA;AAatB,CAAA;MAEY,IAAI,CAAA;AAGhB,CAAA;MAEY,MAAM,CAAA;AAKlB,CAAA;MAEY,UAAU,CAAA;AAAvB,IAAA,WAAA,GAAA;QAOE,IAAY,CAAA,YAAA,GAAW,GAAG,CAAC;KAI5B;AAAA,CAAA;MAEY,gBAAgB,CAAA;AAA7B,IAAA,WAAA,GAAA;QAOE,IAAU,CAAA,UAAA,GAAa,KAAK,CAAC;KAC9B;AAAA,CAAA;MAEY,aAAa,CAAA;AAEzB,CAAA;MAEY,UAAU,CAAA;aACd,IAAgB,CAAA,gBAAA,GAAG,yBAAyB,CAAC,EAAA;aAC7C,IAAU,CAAA,UAAA,GAAG,mBAAmB,CAAC,EAAA;aACjC,IAAa,CAAA,aAAA,GAAG,sBAAsB,CAAC,EAAA;;MAGnC,8BAA8B,GAAG,IAAI,cAAc,CAC9D,gCAAgC,EAChC;MACW,oBAAoB,GAAG,IAAI,cAAc,CACpD,sBAAsB,EACtB;MACW,sBAAsB,GAAG,IAAI,cAAc,CACtD,wBAAwB,EACxB;AAEF;MACa,mBAAmB,GAAG,IAAI,cAAc,CACnD,yBAAyB;;MCrDd,UAAU,CAAA;AAMrB,IAAA,WAAA,CAC4B,QAAa,EAE/B,uBAA+B,EAC/B,UAAsB,EACU,mBAAmB,EAAA;QAJjC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAE/B,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAQ;QAC/B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACU,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAA;AAVrD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAA2B,CAAC;AACzD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAqB,CAAC;AAChD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAwB,CAAC;QAUjE,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;SACjE;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IAEO,IAAI,GAAA;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAA,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACzC,QAAA,KAAK,CAAC,EAAE,GAAG,YAAY,CAAC;QACxB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AACtC,QAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;;AAEpB,QAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,2BAA2B,CACjC,OAAe,EAAA;AAEf,QAAA,MAAM,WAAW,GAAG,CAAA;;qBAEH,OAAO,CAAA;;;;;;;;;QASpB,CAAC;QACL,OAAO,IAAI,CAAC,UAAU;aACnB,IAAI,CAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;aAC3D,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAC7D,gBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClE,YAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;SAChD,CAAC,CACH,CAAC;AACJ;AAC2E;KAC5E;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;YACrC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;AAED;;AAEwC;AACjC,IAAA,mBAAmB,CAAC,gBAAkC,EAAA;QAC3D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AACrC,YAAA,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,KAAI;YACvC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AACrC,YAAA,MAAM,WAAW,GAAG,CAAA;AACP,iBAAA,EAAA,UAAU,CAAC,OAAO,CAAA;AACf,oBAAA,EAAA,gBAAgB,CAAC,UAAU,CAAA;uBAC1B,GAAG,CAAA;;;;;SAKjB,CAAC;AACJ,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;AAC1F,SAAC,CAAC,CAAC;KACJ;IAEM,mBAAmB,GAAA;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KACxC,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CACvD,CAAC;KACH;IAEM,qBAAqB,GAAA;QAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;YACrC,KAAK,CAAC,qBAAqB,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;KACJ;IAEM,iBAAiB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAkC,CAAC;KAC5E;AAED;;AAE0E;AACnE,IAAA,aAAa,CAAC,UAAsB,EAAA;QACzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AACrC,YAAA,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;IAEM,aAAa,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KACxC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAC3C,CAAC;KACH;IAEM,eAAe,GAAA;QACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;YACrC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;IAEM,cAAc,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAA4B,CAAC;KACnE;IAEM,wBAAwB,GAAA;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,KAAI;AAC1C,YAAA,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,CAC/D,CAAC,UAAU,KAAI;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxB,gBAAA,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;AACnC,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AACpC,aAAC,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAED;;AAE0E;AACnE,IAAA,gBAAgB,CAAC,aAA4B,EAAA;QAClD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AACrC,YAAA,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;KACJ;IAEM,gBAAgB,GAAA;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KACxC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,aAAa,CAAC,CACjD,CAAC;KACH;IAEM,kBAAkB,GAAA;QACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;YACrC,KAAK,CAAC,kBAAkB,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;IAEM,sBAAsB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAA+B,CAAC;KAC9E;IAEM,4BAA4B,CAAC,UAAkB,EAAE,UAAmB,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CACpC,SAAS,CAAC,UAAU,IAAG;AACrB,YAAA,MAAM,WAAW,GAAG,CAAA;;0BAEF,UAAU,CAAA;AACb,qBAAA,EAAA,UAAU,CAAC,OAAO,CAAA;;;;;;;;;;UAU/B,CAAC;AACH,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CACrF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAChD,UAAU,CAAC,KAAK,IAAG;AACjB,gBAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AAC5C,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;aACnB,CAAC,CACD,CAAC;AACJ,SAAC,CAAC,EACF,GAAG,CAAC,gBAAgB,IAAG;AACrB,YAAA,gBAAgB,CAAC,UAAU,GAAG,UAAU,CAAC;AACzC,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,EAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC;AACvD,YAAA,OAAO,gBAAgB,CAAC;AAC1B,SAAC,CAAC,EACF,UAAU,CAAC,KAAK,IAAG;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;AAC3D,YAAA,MAAM,KAAK,CAAC;SACf,CAAC,CACD,CAAC;KACH;AAtNU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EAOX,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,QAAQ,EACR,EAAA,EAAA,KAAA,EAAA,8BAA8B,uCAG9B,sBAAsB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAXrB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAQI,MAAM;2BAAC,QAAQ,CAAA;;0BACf,MAAM;2BAAC,8BAA8B,CAAA;;0BAGrC,MAAM;2BAAC,sBAAsB,CAAA;;;MCtBrB,0BAA0B,CAAA;IACrC,WAC0C,CAAA,mBAAmB,EACnD,IAAgB,EAAA;QADgB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAA;QACnD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KACtB;AAEJ,IAAA,iBAAiB,CAAC,OAAe,EAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,CAAA;;kDAE0B,OAAO,CAAA;;;;;;;;;;KAUpD,CAAC;QACF,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;aAC3D,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;SACrC,CAAC,CACH,CAAC;KACL;AA3BU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAE3B,sBAAsB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAFrB,0BAA0B,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;0BAGN,MAAM;2BAAC,sBAAsB,CAAA;;;MCGrB,4BAA4B,CAAA;;AAUvC,IAAA,WAAA,CACU,UAAsB,EACtB,YAAyB,EACzB,0BAAsD,EACtD,MAAc,EAAA;QAHd,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;QACzB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA4B;QACtD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAVxB,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,kBAAkB,EAAE,CAAC;KAWhD;IAEJ,QAAQ,GAAA;;QAEN,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,KAAI;AAClD,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;AACnD,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,gBAAgB,KAAI;AAC9D,YAAA,IAAI,CAAC,gBAAgB;gBACnB,gBAAgB,IAAI,gBAAgB,CAAC,UAAU;AAC7C,sBAAE,gBAAgB;sBAChB,IAAI,CAAC;AACb,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;AAChC,aAAA,iBAAiB,EAAE;AACnB,aAAA,SAAS,CAAC,CAAC,gBAAgB,KAAI;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YACzC,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACpC,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,aAA4B,KAAI;YACvE,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,SAAS,CAAC;gBACjD,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACnC;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,UAAU;AAC7C,aAAA,sBAAsB,EAAE;AACxB,aAAA,SAAS,CAAC,CAAC,YAAY,KAAI;AAC1B,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;aACtD;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KACrD,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC3B,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,MAAK;AACrD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;KACH;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;KAC/D;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;AAEO,IAAA,kBAAkB,CAAC,QAAQ,EAAA;QACjC,IAAI,QAAQ,EAAE;;;;;;;;;;;;;;;AAeZ,YAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC3D,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;KACF;IAEO,0BAA0B,GAAA;QAChC,IACE,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EACjC;YACA,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACnC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,CAAC,UAAU,CACzD,CAAC;YACF,IAAI,CAAC,EAAE;AACL,gBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACjE;YAED,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAChE,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,CAAC,CAAC;aACJ;SACF;KACF;IAEO,kBAAkB,GAAA;AACxB,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtD,YAAA,IACE,OAAO;AACP,gBAAA,OAAO,CAAC,IAAI;gBACZ,OAAO,CAAC,IAAI,CAAC,QAAQ;gBACrB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAChC;AACA,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aACvD;AAAM,iBAAA,IACL,OAAO;AACP,gBAAA,OAAO,CAAC,IAAI;gBACZ,OAAO,CAAC,IAAI,CAAC,QAAQ;AACrB,gBAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC7B,gBAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;AACtC,gBAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EACjD;gBACA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aACxE;iBAAM;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aACzC;SACF;AAAC,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;SAChC;KACF;AAEO,IAAA,aAAa,CAAC,KAAa,EAAA;QACjC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,YAAY,CAAC,IAAU,EAAA;AAC7B,QAAA,QAAQ,IAAI,CAAC,MAAM;AACjB,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC;AACd,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;SAChB;KACF;iIA1JU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,iECfzC,+7BAyBA,EAAA,MAAA,EAAA,CAAA,0rBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDVa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,+7BAAA,EAAA,MAAA,EAAA,CAAA,0rBAAA,CAAA,EAAA,CAAA;;;MEH1B,kBAAkB,CAAA;AAE7B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KAAI;AAExC;;;;;;;;;;AAUE;AACF;;;;AAIE;AAEK,IAAA,gBAAgB,CACrB,aAAqB,EAAA;AAErB,QAAA,MAAM,WAAW,GAAG,CAAA;;;;;;;;;;;UAWd,CAAC;AAEP;;;;;;;;AAQE;QAEF,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CAAM,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;aAChD,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;YACf,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACnB;AACD,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;SACjC,CAAC,CACH,CAAC;KACL;iIAzDU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCsBE,oBAAoB,CAAA;AAW/B,IAAA,WAAA,CACU,mBAAuC,EACvC,UAAsB,EACtB,YAAyB,EAAA;QAFzB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAoB;QACvC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;QAZ1B,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QAO5B,IAAoB,CAAA,oBAAA,GAA6B,IAAI,CAAC;KAMlD;IAGJ,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,gBAAgB,KAAI;AAC9D,YAAA,IAAI,CAAC,gBAAgB;gBACnB,gBAAgB,IAAI,gBAAgB,CAAC,UAAU;AAC7C,sBAAE,gBAAgB;sBAChB,IAAI,CAAC;AACb,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,KAAI;AAClD,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;AACnD,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU;AACxC,aAAA,iBAAiB,EAAE;AACnB,aAAA,SAAS,CAAC,CAAC,gBAAgB,KAAI;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAC3C,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU;AACrC,aAAA,cAAc,EAAE;AAChB,aAAA,SAAS,CAAC,CAAC,UAAU,KAAI;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,mBAAmB;AACrB,aAAA,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;AACpC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBACzC,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,EAAE;oBACnC,OAAO,CAAC,CAAC,CAAC;iBACX;qBAAM,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,EAAE;AAC1C,oBAAA,OAAO,CAAC,CAAC;iBACV;AACD,gBAAA,OAAO,CAAC,CAAC;AACX,aAAC,CAAC,CAAC;YACH,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACjD,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CACpD,CAAC;aACH,EAAE,GAAG,CAAC,CAAC;AACV,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;KACtC;IAGM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KAC5B;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;KAC/D;AAEM,IAAA,eAAe,CAAC,MAAyB,EAAA;AAC9C,QAAA,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG;cACnD,MAAM,IAAI,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO;kBACjE,CAAG,EAAA,MAAM,CAAC,GAAG,CAAe,YAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAE,CAAA;AAChE,kBAAE,IAAI,CAAC,gBAAgB,GAAG,CAAA,EAAG,MAAM,CAAC,GAAG,CAAgB,aAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAE,CAAA;AACzF,sBAAE,MAAM,CAAC,GAAG,CAAC;KAChB;AAEM,IAAA,sBAAsB,CAAC,WAAW,EAAA;QACvC,IACE,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,WAAW;YAC3B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EACtC;YACA,QACE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CACnC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,WAAW,CACrC,GAAG,CAAC,CAAC,EACN;SACH;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,OAAO,CAAC,MAAyB,EAAA;AAC/B,QAAA,OAAO,CACL,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC;AAC5E,aAAC,CAAC,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC,oBAAoB,KAAK,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAC5F,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;KACrF;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC5B,IACE,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,KAAK;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAChC;AACA,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;SAClE;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEM,IAAA,mBAAmB,CAAC,MAAyB,EAAA;QAClD,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM,MAAM,MAAM,CAAC,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;KACjG;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,IACE,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,KAAK;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAChC;AACA,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9D;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,UAAU,CAAC,IAAU,EAAA;QAC3B,IAAG,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAC;AAC9F,YAAA,OAAO,IAAI,CAAA;SACZ;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEM,IAAA,qBAAqB,CAAC,MAAyB,EAAA;QACpD,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAK,QAAQ,MAAM,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;KACvG;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,IACE,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,KAAK;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAChC;AACA,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;SAChE;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,YAAY,CAAC,IAAU,EAAA;AAC7B,QAAA,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAC;AAC7C,YAAA,OAAO,IAAI,CAAA;SACZ;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,cAAc,CAAC,IAAU,EAAA;AAC/B,QAAA,QAAQ,IAAI,CAAC,MAAM;AACjB,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC;AACd,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;SAChB;KACF;iIA9KU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,kOC7BjC,qiBAeA,EAAA,MAAA,EAAA,CAAA,0rCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDca,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qiBAAA,EAAA,MAAA,EAAA,CAAA,0rCAAA,CAAA,EAAA,CAAA;oIAG5B,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACa,QAAQ,EAAA,CAAA;sBAA1B,SAAS;uBAAC,MAAM,CAAA;;;MErBN,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CACU,YAAyB,EACzB,KAAqB,EACS,iBAAyB,EAAA;QAFvD,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;QACzB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACS,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;KAC7D;IAEJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;AACrE,QAAA,IAAI,CAAC,OAAO;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC;KACxE;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KAC5B;IAED,MAAM,GAAA;QACJ,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC;KAC/C;AAtBU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,6EAOpB,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAPnB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uDCXhC,6SAYA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDDa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,6SAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA;;0BAWxB,MAAM;2BAAC,oBAAoB,CAAA;;;MEVnB,gCAAgC,CAAA;AAC3C,IAAA,WAAA,CACU,IAAgB,EAChB,WAAwB,EACQ,aAAa,EAAA;QAF7C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACQ,IAAa,CAAA,aAAA,GAAb,aAAa,CAAA;KACnD;AAEG,IAAA,WAAW,CAAC,OAAO,EAAA;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AACnC,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,kBAAkB,CAAC,UAAgB,EAAA;QACzC,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;AAED,QAAA,IAAI,UAAU,YAAY,KAAK,EAAE;AAC/B,YAAA,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACzB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;SACJ;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACnB,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBACvC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1C;AAAM,iBAAA,IACL,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ;gBACnC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAC7B;AACA,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,iBAAiB,CACvB,SAAiB,EACjB,WAAmB,EAAA;QAEnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;SACxB,CAAC,CACH,CAAC;KACH;IAED,sBAAsB,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,CAAA;;;;;;;;;;MAUlB,CAAC;QAEH,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC;SACxC,CAAC,CACH,CAAC;KACH;AAEM,IAAA,2BAA2B,CAAC,OAAe,EAAA;AAChD,QAAA,MAAM,WAAW,GAAG,CAAA;;mBAEL,OAAO,CAAA;;;;;;MAMpB,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC;SAC/C,CAAC,CACH,CAAC;KACH;AAED,IAAA,gCAAgC,CAAC,UAAe,EAAA;;;QAI9C,MAAM,SAAS,GAAG,+BAA+B,CAAC;AAClD,QAAA,MAAM,KAAK,GAAG,CAAA;AACiC,iDAAA,EAAA,IAAI,CAAC,eAAe,CACzD,UAAU,CACX,CAAA;;;UAGH,CAAC;AAEP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1D;;;AAGQ;KACT;AAED,IAAA,eAAe,CAAC,GAAG,EAAA;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,MAAM,CAAC;SACf;AAED,QAAA,IAAI,GAAG,YAAY,KAAK,EAAE;YACxB,MAAM,IAAI,IAAI,CAAC;AACf,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnB,gBAAA,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACvC,aAAC,CAAC,CAAC;YACH,MAAM,IAAI,IAAI,CAAC;SAChB;aAAM;YACL,MAAM,IAAI,GAAG,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBACnB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAChC,oBAAA,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;wBACnB,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;qBACxC;yBAAM;wBACL,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;qBACtC;iBACF;AACH,aAAC,CAAC,CAAC;AACH,YAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,IAAI,IAAI,CAAC;SAChB;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAxIU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,yEAIjC,sBAAsB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAJrB,gCAAgC,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,UAAU;;0BAKN,MAAM;2BAAC,sBAAsB,CAAA;;;MCMrB,kCAAkC,CAAA;AAI7C,IAAA,WAAA,CACU,KAAqB,EACrB,eAAiD,EACjD,UAAsB,EAAA;QAFtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAkC;QACjD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QALhC,IAAmB,CAAA,mBAAA,GAAe,EAAE,CAAC;KAMhC;IAEL,QAAQ,GAAA;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,+BAA+B,CAAC;AACpE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACzF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,QAAQ,CAAC,IAAI,EAAA;QACnB,IAAI,IAAI,EAAE;YACR,MAAM,qBAAqB,GAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,IAAG;AACrB,gBAAA,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;SACJ;KAEF;IACO,UAAU,GAAA;AAChB,QAAA,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,EAClD,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAE,CAAC,EAAE,EAAE,CAAC,KAAI;AAC1C,YAAA,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3F,SAAC,CAAC,CAAC;QAEH,OAAO,IAAI,gBAAgB,CAAC;AAC1B,YAAA,mBAAmB,EAAE,qBAAqB;AAC3C,SAAA,CAAC,CAAC;KACJ;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;AAChC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;SACpC,CAAC;AAEF,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC;QAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AACjB,YAAA,IAAI,sBAAsB,CAAC,GAAG,CAAC,EAAE;gBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,sBAAsB,EAAE,GAAG,EAAC,CAAC,CAAC;aAClD;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAE;AAC9E,YAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aACpD;iBAAM;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC;aAC5C;AACH,SAAC,CAAC,CAAC;KACJ;iIAjEU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gCAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,wEClB/C,qjCAyBE,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDPW,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAL9C,SAAS;+BACE,kCAAkC,EAAA,QAAA,EAAA,qjCAAA,EAAA,CAAA;;;MEOjC,gBAAgB,CAAA;IAI3B,WACU,CAAA,IAAgB,EAChB,YAAyB,EACzB,UAAsB,EACU,mBAAmB,EACtB,oBAA4B,EAAA;QAJzD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;QACzB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACU,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAA;QACtB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAQ;KAC/D;IAEG,aAAa,GAAA;QAClB,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;SACnD;AACD,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;gBAC3B,IAAI,SAAS,EAAE;oBACb,OAAO,CAAC,GAAG,CACT,yDAAyD,EACzD,IAAI,CAAC,UAAU,CAChB,CAAC;iBACH;AACD,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC5B;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;gBACnC,IAAI,SAAS,EAAE;oBACb,OAAO,CAAC,GAAG,CACT,mDAAmD,EACnD,IAAI,CAAC,UAAU,CAChB,CAAC;iBACH;gBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aAChD;SACF;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAC/C,SAAS,CAAC,CAAC,YAAY,KAAI;AACzB,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE;gBACxC,IAAI,SAAS,EAAE;AACb,oBAAA,OAAO,CAAC,GAAG,CACT,0CAA0C,EAC1C,YAAY,CACb,CAAC;iBACH;AACD,gBAAA,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;AAC/B,gBAAA,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;aACzB;AAAM,iBAAA,IAAI,YAAY,IAAI,YAAY,CAAC,QAAQ,EAAE;gBAChD,IAAI,SAAS,EAAE;oBACb,OAAO,CAAC,GAAG,CACT,mDAAmD,EACnD,IAAI,CAAC,UAAU,CAChB,CAAC;iBACH;gBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;aAC7C;iBAAM;AACL,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,gBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/D,IAAI,SAAS,EAAE;AACb,oBAAA,OAAO,CAAC,GAAG,CACT,sDAAsD,EACtD,SAAS,CACV,CAAC;iBACH;AACD,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aACjC;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/D,OAAO,OAAO,CAAC,QAAQ,CAAC;SACzB;AAED,QAAA,OAAO,EAAE,CAAC;KACX;IAEO,UAAU,CAAC,GAAW,EAAE,SAAiB,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;KACrE;IACO,UAAU,CAAC,GAAG,EAAE,GAAG,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;KACjE;AAEM,IAAA,cAAc,CAAC,UAAsB,EAAA;QAC1C,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AACvE,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE;AAC7D,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;aACxE;SACF;AAAM,aAAA,IACL,UAAU,CAAC,KAAK,CAAC,SAAS,CACxB,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAChD,GAAG,CAAC,CAAC,EACN;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACnD,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;aACjE;SACF;KACF;IAEM,MAAM,mBAAmB,CAAC,gBAAkC,EAAA;AACjE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACR;QAED,IAAI,gBAAgB,EAAE;;YAEpB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,IAAI,CAAC,wBAAwB,CAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,EACvB,gBAAgB,CAAC,UAAU,CAC5B,CACF,CAAC;YACF,IAAI,QAAQ,EAAE;AACZ,gBAAA,gBAAgB,CAAC,yBAAyB,GAAG,QAAQ,CAAC;aACvD;iBAAM;AACL,gBAAA,gBAAgB,CAAC,yBAAyB,GAAG,UAAU,CAAC;aACzD;;SAEF;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KAC1C;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KAC5B;AAEM,IAAA,MAAM,aAAa,CACxB,WAAmB,EACnB,KAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;SACzD;AACD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAChD,QAAA,MAAM,QAAQ,GACZ,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AAE9D,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;SACrE;AAED,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;;YAEzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAClD,IAAI,CAAC,UAAU,CAAC,OAAO,EACvB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CACjC,CAAC,SAAS,EAAE,CAAC;YACd,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,GAAG,QAAQ,CAAC;aAC5D;iBAAM;AACL,gBAAA,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,GAAG,UAAU,CAAC;aAC9D;YACD,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;SAE5D;AAED,QAAA,MAAM,yBAAyB,GAC7B,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC;QAElD,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,oBAAoB,CAAC;QAErC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACvC,YAAA,IAAI,IAAI,CAAC;AACT,YAAA,IAAI,OAAO,CAAC;YACZ,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;gBAEjC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;AAC5D,oBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;;;;AAIzB,oBAAA,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;AAC7C,wBAAA,QACE,CAAC,CAAC,WAAW,KAAK,WAAW;4BAC7B,CAAC,CAAC,QAAQ,KAAK,QAAQ;4BACvB,CAAC,CAAC,MAAM,KAAK,MAAM;AACnB,4BAAA,CAAC,CAAC,yBAAyB,KAAK,yBAAyB,EACzD;AACJ,qBAAC,CAAC,CAAC;AACH;;;;;;;;AAQE;AACF,oBAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;oBAEtD,IAAI,UAAU,EAAE;AACd,wBAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,4BAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACxB,gCAAA,IAAI,IAAI,KAAK,KAAK,EAAE;oCAClB,IAAI,GAAG,IAAI,CAAC;iCACb;6BACF;iCAAM;gCACL,IAAI,GAAG,KAAK,CAAC;6BACd;yBACF;6BAAM,IACL,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU;6BAC5C,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;6BAC7C,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;6BAC7C,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;6BAC7C,KAAK,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;6BAC3C,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;6BAC/C,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAC9C;AACA,4BAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACjC,gCAAA,IAAI,IAAI,KAAK,KAAK,EAAE;oCAClB,IAAI,GAAG,IAAI,CAAC;iCACb;6BACF;iCAAM;AACL,gCAAA,IAAI,OAAO,KAAK,KAAK,EAAE;oCACrB,OAAO,GAAG,IAAI,CAAC;iCAChB;6BACF;yBACF;6BAAM;AACL,4BAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;gCACjC,IAAI,GAAG,KAAK,CAAC;6BACd;iCAAM;gCACL,OAAO,GAAG,KAAK,CAAC;6BACjB;yBACF;qBACF;yBAAM;AACL,wBAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,4BAAA,IAAI,IAAI,KAAK,KAAK,EAAE;gCAClB,IAAI,GAAG,IAAI,CAAC;6BACb;yBACF;AAAM,6BAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACxC,4BAAA,IAAI,IAAI,KAAK,KAAK,EAAE;gCAClB,IAAI,GAAG,IAAI,CAAC;6BACb;yBACF;AAAM,6BAAA,IAAI,OAAO,KAAK,KAAK,EAAE;4BAC5B,OAAO,GAAG,IAAI,CAAC;yBAChB;qBACF;iBACF;AACH,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5B,YAAA,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAClC,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aAC/B;AAAM,iBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AAC3B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;aAClC;AACH,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,eAAe,CAAC,mBAA6C,EAAA;AAClE,QAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,QAAA,IACE,mBAAmB,CAAC,KAAK,CAAC,GAAG;YAC7B,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EACxC;YACA,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC;SACpD;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAChD,MAAM,QAAQ,GAAG,SAAS,CAAC;AAC3B,QAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM;AACvC,cAAE,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE;cACxC,IAAI,CAAC;AACT,QAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC;QAClD,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB;AAChF,aAAA,yBAAyB;AAC1B,cAAE,KAAK;AACP,cAAE,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC;QAEpD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AACxC,YAAA,QACE,CAAC,CAAC,WAAW,KAAK,mBAAmB,CAAC,WAAW;gBACjD,CAAC,CAAC,QAAQ,KAAK,QAAQ;iBACtB,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAChC,iBAAC,CAAC,CAAC,yBAAyB,KAAK,KAAK;AACpC,oBAAA,CAAC,CAAC,yBAAyB,KAAK,yBAAyB,CAAC,EAC5D;AACJ,SAAC,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,UAAU,KAAK,MAAM,EAAE;AACzB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACxB,oBAAA,OAAO,KAAK,CAAC;iBACd;qBAAM;AACL,oBAAA,OAAO,IAAI,CAAC;iBACb;aACF;iBAAM,IACL,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU;iBACjD,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;iBAClD,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;iBAClD,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;iBAClD,UAAU,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;iBAChD,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;iBACpD,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EACnD;AACA,gBAAA,OAAO,KAAK,CAAC;aACd;iBAAM;AACL,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;aAAM;AACL,YAAA,IAAI,UAAU,KAAK,MAAM,EAAE;AACzB,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEM,IAAA,qBAAqB,CAC1B,UAAsB,EACtB,OAAe,EACf,WAAW,GAAG,IAAI,EAAA;;;;AAKlB,QAAA,OAAO,IAAI,CAAC,uBAAuB,CACjC,UAAU,CAAC,WAAW,EACtB,OAAO,EACP,WAAW,CACZ,CAAC;KACH;;;;;;;AASM,IAAA,aAAa,CAAC,KAAa,EAAA;QAChC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,uBAAuB,CAC7B,WAAyB,EACzB,OAAe,EACf,WAAmB,EAAA;QAEnB,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,WAAW,EAAE;gBACf,QACE,WAAW,CAAC,SAAS,CACnB,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAC/D,GAAG,CAAC,CAAC,EACN;aACH;iBAAM;AACL,gBAAA,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aAClE;SACF;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,cAAc,CAAC,MAAM,EAAA;QAC3B,QAAQ,MAAM;AACZ,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC;AACd,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;SAChB;KACF;AAEO,IAAA,YAAY,CAAC,IAAU,EAAA;AAC7B,QAAA,QAAQ,IAAI,CAAC,MAAM;AACjB,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC;AACd,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;SAChB;KACF;AAEO,IAAA,kBAAkB,CAAC,OAAgB,EAAA;;AAEzC,QAAA,QAAQ,OAAO,CAAC,QAAQ;AACtB,YAAA,KAAK,GAAG;AACN,gBAAA,OAAO,CAAC,YAAY,CAClB,OAAO,EACP,2CAA2C,CAC5C,CAAC;AACF,gBAAA,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvC,MAAM;AACR,YAAA;AACE,gBAAA,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC7C,MAAM;SACT;KACF;AAEO,IAAA,eAAe,CAAC,OAAgB,EAAA;;AAEtC,QAAA,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;KACjD;AAEO,IAAA,QAAQ,CAAC,QAAgB,EAAA;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAM;YACrB,KAAK,EAAE,IAAI,CAAC,cAAc;AAC1B,YAAA,SAAS,EAAE;AACT,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE;AACL,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,UAAU,EAAE,IAAI;AACjB,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;aACvD;YACD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,OAAO,IAAI,CAAC;aACb;iBAAM;AACL,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;aACjB;AACH,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AAC9B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB,CAAC,CACH,CAAC;KACL;AAEO,IAAA,KAAK,CAAI,OAGhB,EAAA;QACC,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CACH,IAAI,CAAC,mBAAmB,EACxB;YACE,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,EACD;YACE,OAAO,EAAE,IAAI,WAAW,CAAC;AACvB,gBAAA,cAAc,EAAE,kBAAkB;AAClC,gBAAA,SAAS,EAAE,MAAM;aAClB,CAAC;SACJ,CACD;AACA,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7B;AAED,IAAA,IAAY,cAAc,GAAA;QACxB,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuCN,CAAC;KACH;IAEO,wBAAwB,CAC9B,OAAe,EACf,UAAkB,EAAA;AAElB,QAAA,MAAM,WAAW,GAAG,CAAA;;AAE6C,mEAAA,EAAA,OAAO,iBAAiB,UAAU,CAAA;;;;;cAKzF,CAAC;QAEX,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;aAC3D,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,CAAC,GAAG,CACT,gDAAgD,EAChD,MAAM,CACP,CAAC;aACH;AACD,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3D,gBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC,yBAAyB,CAAC;aACvC;iBAAM;AACL,gBAAA,OAAO,IAAI,CAAC;;aAEb;AACH,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AAC9B,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CACH,CAAC;KACL;IAEO,kBAAkB,CACxB,WAAmB,EACnB,QAAgB,EAAA;AAEhB,QAAA,MAAM,WAAW,GAAG,CAAA;;AAE6C,mEAAA,EAAA,WAAW,eAAe,QAAQ,CAAA;;;;YAI3F,CAAC;QAET,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;aAC3D,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,CAAC,GAAG,CACT,iDAAiD,EACjD,MAAM,CACP,CAAC;aACH;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,UAAU,GAAG,CAAC,EAAE;AACxD,gBAAA,OAAO,IAAI,CAAC;aACb;iBAAM;AACL,gBAAA,OAAO,KAAK,CAAC;;aAEd;AACH,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAU,KAAI;AACxB,YAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AAC9B,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B,CAAC,CACH,CAAC;KACL;iIAzkBU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,UAAA,EAAA,EAAA,EAAA,KAAA,EAQjB,sBAAsB,EAAA,EAAA,EAAA,KAAA,EACtB,mBAAmB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AATlB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BASI,MAAM;2BAAC,sBAAsB,CAAA;;0BAC7B,MAAM;2BAAC,mBAAmB,CAAA;;;MCrBlB,2BAA2B,CAAA;IAEtC,WACU,CAAA,UAAsB,EACtB,IAAsB,EAAA;QADtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;KAC5B;IAEG,QAAQ,GAAA;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;QACT,IACE,CAAC,IAAI,CAAC,mBAAmB;AACzB,YAAA,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAC/B,YAAA,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI;YACpC,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAC/C;YACA,OAAO;SACR;;;;;AAMD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CACrE,IAAI,CAAC,mBAAmB,CACzB;AACC,cAAE,OAAO;cACP,MAAM,CAAC;KACZ;iIA9BU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAA3B,2BAA2B,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA,CAAA;2GAEU,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;;;ACVR;MAUa,uBAAuB,CAAA;AAGlC,IAAA,WAAA,CAAmB,YAA8B,EAAA;QAA9B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAkB;KAAK;AAEtD,IAAA,WAAW,CAAC,KAA6B,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,IAAI,CAC3C,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,CAAC,UAAU,KAAI;YACtB,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AAC/C,gBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;aAClB;;;;AAID,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI;AACrC,kBAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;kBACpC,EAAE,CAAC;AACP,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAC5D,UAAU,EACV,QAAQ,CACT,CAAC;AACF,YAAA,OAAO,EAAE,CAAC,cAAc,CAAC,CAAC;AAC5B,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;SAClB,CAAC,CACH,CAAC;KACH;iIA5BU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAAvB,uBAAuB,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;MCHE,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAAI;IAEtC,WAAW,CACT,KAA6B,EAC7B,KAA0B,EAAA;QAE1B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;QAC9C,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AAClE,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,OAAO,IAAI,CAAC;KACb;iIAdU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCsDY,kBAAkB,CAAA;iIAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAjC3B,4BAA4B;YAC5B,oBAAoB;YACpB,mBAAmB;YACnB,kCAAkC;AAClC,YAAA,2BAA2B,aAG3B,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,aAAa;YACb,eAAe;YACf,aAAa;YACb,iBAAiB;AACjB,YAAA,mBAAmB,aAGnB,4BAA4B;YAC5B,oBAAoB;YACpB,mBAAmB;YACnB,kCAAkC;YAClC,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;AAWlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EATlB,SAAA,EAAA;YACT,kBAAkB;YAClB,0BAA0B;YAC1B,gCAAgC;YAChC,uBAAuB;YACvB,WAAW;YACX,0BAA0B;AAC3B,SAAA,EAAA,OAAA,EAAA,CAxBC,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,aAAa;YACb,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAkBV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnC9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,4BAA4B;wBAC5B,oBAAoB;wBACpB,mBAAmB;wBACnB,kCAAkC;wBAClC,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,iBAAiB;wBACjB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,4BAA4B;wBAC5B,oBAAoB;wBACpB,mBAAmB;wBACnB,kCAAkC;wBAClC,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,kBAAkB;wBAClB,0BAA0B;wBAC1B,gCAAgC;wBAChC,uBAAuB;wBACvB,WAAW;wBACX,0BAA0B;AAC3B,qBAAA;AACF,iBAAA,CAAA;;;MChDY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CACU,YAA8B;;IAE9B,MAAc,EAAA;QAFd,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAkB;QAE9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACpB;IAEJ,OAAO,CACL,KAA6B,EAC7B,KAA0B,EAAA;AAE1B,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,IAAI,CAC3C,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,CAAC,UAAU,KAAI;YACtB,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;aACxD;YACD,IAAI,UAAU,EAAE;AACd,gBAAA,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;aACvB;iBAAM;AACL,gBAAA,OAAO,UAAU,CAAC,iCAAiC,CAAC,CAAC;;AAErD;;;;;;;;;;AAUE;aACH;AACH,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE;AACrC,gBAAA,WAAW,EAAE;AACX,oBAAA,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,wBAAwB,GAAG,KAAK;AAC1C,iBAAA;AACF,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;KACH;iIA9CU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAO,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCOY,+BAA+B,CAAA;AAE1C,IAAA,WAAA,CACU,OAAmB,EACnB,IAAY,EACZ,MAAc,EAAA;QAFd,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACnB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACpB;IACJ,OAAO,CACL,KAA6B,EAC7B,KAA0B,EAAA;QAE1B,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,UAAU,GAAY,KAAK,CAAC;QAChC,IAAG,KAAK,EAAE;AACR,YAAA,IAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC;gBAChC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;AACzD,YAAA,IAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC;gBAChC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC;SAC1D;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAClD,QAAQ,CAAC,CAAC,gBAAgB,KAAI;YAC5B,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;aAC/B;YACD,IAAG,UAAU,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,gBAAgB,IAAI,gBAAgB,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,EAAE;gBAC1H,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aAC1E;YACD,IAAG,gBAAgB,EAAE;AACnB,gBAAA,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC;aAC7B;YACD,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;SAC7D,CAAC,EACF,SAAS,CAAC,CAAC,MAAM,KACf,MAAM,CAAC,IAAI;;AAET,QAAA,KAAK,CAAC,IAAI,CAAC,EACX,IAAI,CAAC,CAAC,CAAC,EACP,CAAC,CAAC,KACA,MAAM,CACJ,CAAC,EACD,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAC5E,CACJ,CACF,EACD,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB;;;;;;AAME;YACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE;gBACrC,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;AAClD,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;KACH;iIA1DU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cAF9B,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCNY,wCAAwC,CAAA;AACjD,IAAA,WAAA,CAAoB,eAAiD,EAAA;QAAjD,IAAe,CAAA,eAAA,GAAf,eAAe,CAAkC;KAAI;IACzE,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE;aACnD,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CACH,CAAC;KACH;iIATQ,wCAAwC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAxC,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wCAAwC,cAFvC,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAHpD,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ICCW,WASX;AATD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EATW,UAAU,KAAV,UAAU,GASrB,EAAA,CAAA,CAAA;;AClBD;;AAEG;;ACFH;;AAEG;;;;"}
|