tin-spa 2.6.1 → 2.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/esm2020/lib/classes/Classes.mjs +1 -1
  2. package/esm2020/lib/components/form/form.component.mjs +5 -4
  3. package/esm2020/lib/components/multi-text/multi-text.component.mjs +168 -0
  4. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +24 -20
  5. package/esm2020/lib/components/page/page.component.mjs +39 -3
  6. package/esm2020/lib/components/table/detailsDialog.component.mjs +15 -7
  7. package/esm2020/lib/components/table/table.component.mjs +4 -1
  8. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +15 -7
  9. package/esm2020/lib/components/table-internal/table-internal.component.mjs +4 -1
  10. package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +15 -7
  11. package/esm2020/lib/components/table-lite/table-lite.component.mjs +4 -1
  12. package/esm2020/lib/components/viewer/viewerDialog.component.mjs +20 -13
  13. package/esm2020/lib/modules/admin/admin-routing.module.mjs +3 -1
  14. package/esm2020/lib/pages/approvals/approvals.component.mjs +3 -2
  15. package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +2 -3
  16. package/esm2020/lib/pages/login/login.component.mjs +20 -13
  17. package/esm2020/lib/pages/logs/logs.component.mjs +1 -1
  18. package/esm2020/lib/pages/notifications/notifications.component.mjs +95 -6
  19. package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +37 -4
  20. package/esm2020/lib/services/datalib.service.mjs +1 -1
  21. package/esm2020/lib/services/notifications.service.mjs +33 -0
  22. package/esm2020/lib/tin-spa.module.mjs +6 -3
  23. package/esm2020/public-api.mjs +2 -1
  24. package/fesm2015/tin-spa.mjs +461 -70
  25. package/fesm2015/tin-spa.mjs.map +1 -1
  26. package/fesm2020/tin-spa.mjs +454 -64
  27. package/fesm2020/tin-spa.mjs.map +1 -1
  28. package/lib/classes/Classes.d.ts +3 -2
  29. package/lib/components/multi-text/multi-text.component.d.ts +46 -0
  30. package/lib/components/nav-menu/nav-menu.component.d.ts +4 -1
  31. package/lib/components/page/page.component.d.ts +13 -1
  32. package/lib/components/viewer/viewerDialog.component.d.ts +3 -1
  33. package/lib/pages/login/login.component.d.ts +4 -1
  34. package/lib/pages/notifications/notifications.component.d.ts +10 -1
  35. package/lib/pages/tenant-settings/tenant-settings.component.d.ts +2 -0
  36. package/lib/services/notifications.service.d.ts +12 -0
  37. package/lib/tin-spa.module.d.ts +6 -5
  38. package/package.json +1 -1
  39. package/public-api.d.ts +1 -0
@@ -10,16 +10,17 @@ import * as i5 from "../../services/datalib.service";
10
10
  import * as i6 from "../../services/auth.service";
11
11
  import * as i7 from "../../services/log.service";
12
12
  import * as i8 from "@abacritt/angularx-social-login";
13
- import * as i9 from "@angular/forms";
14
- import * as i10 from "@angular/common";
15
- import * as i11 from "@angular/material/button";
16
- import * as i12 from "@angular/material/icon";
17
- import * as i13 from "@angular/material/form-field";
18
- import * as i14 from "@angular/material/input";
19
- import * as i15 from "@angular/material/card";
20
- import * as i16 from "../../components/text/text.component";
13
+ import * as i9 from "../../services/notifications.service";
14
+ import * as i10 from "@angular/forms";
15
+ import * as i11 from "@angular/common";
16
+ import * as i12 from "@angular/material/button";
17
+ import * as i13 from "@angular/material/icon";
18
+ import * as i14 from "@angular/material/form-field";
19
+ import * as i15 from "@angular/material/input";
20
+ import * as i16 from "@angular/material/card";
21
+ import * as i17 from "../../components/text/text.component";
21
22
  export class LoginComponent {
22
- constructor(httpService, storageService, router, messageService, dataService, authService, logService, route, socialService) {
23
+ constructor(httpService, storageService, router, messageService, dataService, authService, logService, route, socialService, notificationsService) {
23
24
  this.httpService = httpService;
24
25
  this.storageService = storageService;
25
26
  this.router = router;
@@ -29,6 +30,7 @@ export class LoginComponent {
29
30
  this.logService = logService;
30
31
  this.route = route;
31
32
  this.socialService = socialService;
33
+ this.notificationsService = notificationsService;
32
34
  this.style = "default";
33
35
  this.email = "";
34
36
  this.password = "";
@@ -118,11 +120,16 @@ export class LoginComponent {
118
120
  this.messageService.toast(this.httpService.Error(error));
119
121
  });
120
122
  }
123
+ notifications() {
124
+ if (this.appConfig.multitenant) {
125
+ this.notificationsService.loadNotifications();
126
+ }
127
+ }
121
128
  }
122
- LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginComponent, deps: [{ token: i1.HttpService }, { token: i2.StorageService }, { token: i3.Router }, { token: i4.MessageService }, { token: i5.DataServiceLib }, { token: i6.AuthService }, { token: i7.LogService }, { token: i3.ActivatedRoute }, { token: i8.SocialAuthService }], target: i0.ɵɵFactoryTarget.Component });
123
- LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LoginComponent, selector: "spa-login", ngImport: i0, template: "\r\n <div *ngIf=\"style=='old'\" class=\"tin-bg-login login-page\">\r\n\r\n <div *ngIf=\"appConfig.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px; margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"appConfig.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;\">\r\n\r\n <div class=\"d-none d-sm-block\">\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n <mat-card class=\"mat-elevation-z3 login-card\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" ></spa-text>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"appConfig.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"appConfig.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='default'\" class=\"login-page background tin-bg-login\">\r\n\r\n <div class=\"container\" >\r\n\r\n <div class=\"logo\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3 \" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title style=\"font-size: 40px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\"></spa-text>\r\n\r\n <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" (enterPress)=\"login()\"></spa-text>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions style=\"margin-bottom: 10px;\">\r\n\r\n <div class=\"button mt-0\" *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n <button id=\"btnLogin\" mat-flat-button [disabled]=\"isProcessing\" style=\"width: 350px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"(appConfig.localAuth || appConfig.ADAuth) && appConfig.selfService\" >\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"signup()\">Sign up with Email</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.googleAuth\">\r\n <asl-google-signin-button type='standard' width=\"350px\" size='medium' logo_alignment=\"center\" style=\"text-align: center;\"></asl-google-signin-button>\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" style=\"margin-top: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='bs'\">\r\n\r\n <div class=\"container\">\r\n\r\n <div class=\"image\">\r\n <img class=\"mb-4\" src=\"c:\\Tinashe\\Code\\Angular\\Junk\\bs-examples\\assets\\brand\\bootstrap-logo.svg\" alt=\"\" width=\"72\" height=\"57\">\r\n </div>\r\n\r\n <div class=\"details\">\r\n <h1 class=\"h3 mb-3 fw-normal\" >Please sign in</h1>\r\n\r\n <div class=\"form-floating\">\r\n <input class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\" [(ngModel)]=\"user.userName\">\r\n <label for=\"floatingInput\">Username</label>\r\n </div>\r\n\r\n <div class=\"form-floating\">\r\n <input type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\" [(ngModel)]=\"user.password\">\r\n <label for=\"floatingPassword\">Password</label>\r\n </div>\r\n\r\n <div class=\"form-check text-start my-3\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"remember-me\" id=\"flexCheckDefault\" >\r\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\r\n Remember me\r\n </label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary w-100 py-2\" (click)=\"login()\">Sign in</button>\r\n\r\n </div>\r\n\r\n <p class=\"mt-5 mb-3 text-body-secondary\">&copy; 2017\u20132023</p>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n", styles: [".login-page{position:absolute;inset:0;overflow:auto}.background{min-height:100%}.container{display:flex;flex-direction:column;align-items:center;height:100vh}.logo{margin-top:3em;margin-bottom:1em}.buttons{display:flex;flex-direction:row;justify-content:space-evenly}.button{display:flex;flex-direction:row;justify-content:center;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i13.MatLabel, selector: "mat-label" }, { kind: "directive", type: i13.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i15.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i15.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i15.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i15.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i15.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i16.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "clearContent", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress"] }, { kind: "directive", type: i8.GoogleSigninButtonDirective, selector: "asl-google-signin-button", inputs: ["type", "size", "text", "shape", "theme", "logo_alignment", "width", "locale"] }] });
129
+ LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginComponent, deps: [{ token: i1.HttpService }, { token: i2.StorageService }, { token: i3.Router }, { token: i4.MessageService }, { token: i5.DataServiceLib }, { token: i6.AuthService }, { token: i7.LogService }, { token: i3.ActivatedRoute }, { token: i8.SocialAuthService }, { token: i9.NotificationsService }], target: i0.ɵɵFactoryTarget.Component });
130
+ LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LoginComponent, selector: "spa-login", ngImport: i0, template: "\r\n <div *ngIf=\"style=='old'\" class=\"tin-bg-login login-page\">\r\n\r\n <div *ngIf=\"appConfig.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px; margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"appConfig.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;\">\r\n\r\n <div class=\"d-none d-sm-block\">\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n <mat-card class=\"mat-elevation-z3 login-card\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" ></spa-text>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"appConfig.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"appConfig.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='default'\" class=\"login-page background tin-bg-login\">\r\n\r\n <div class=\"container\" >\r\n\r\n <div class=\"logo\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3 \" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title style=\"font-size: 40px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\"></spa-text>\r\n\r\n <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" (enterPress)=\"login()\"></spa-text>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions style=\"margin-bottom: 10px;\">\r\n\r\n <div class=\"button mt-0\" *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n <button id=\"btnLogin\" mat-flat-button [disabled]=\"isProcessing\" style=\"width: 350px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"(appConfig.localAuth || appConfig.ADAuth) && appConfig.selfService\" >\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"signup()\">Sign up with Email</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.googleAuth\">\r\n <asl-google-signin-button type='standard' width=\"350px\" size='medium' logo_alignment=\"center\" style=\"text-align: center;\"></asl-google-signin-button>\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" style=\"margin-top: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='bs'\">\r\n\r\n <div class=\"container\">\r\n\r\n <div class=\"image\">\r\n <img class=\"mb-4\" src=\"c:\\Tinashe\\Code\\Angular\\Junk\\bs-examples\\assets\\brand\\bootstrap-logo.svg\" alt=\"\" width=\"72\" height=\"57\">\r\n </div>\r\n\r\n <div class=\"details\">\r\n <h1 class=\"h3 mb-3 fw-normal\" >Please sign in</h1>\r\n\r\n <div class=\"form-floating\">\r\n <input class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\" [(ngModel)]=\"user.userName\">\r\n <label for=\"floatingInput\">Username</label>\r\n </div>\r\n\r\n <div class=\"form-floating\">\r\n <input type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\" [(ngModel)]=\"user.password\">\r\n <label for=\"floatingPassword\">Password</label>\r\n </div>\r\n\r\n <div class=\"form-check text-start my-3\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"remember-me\" id=\"flexCheckDefault\" >\r\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\r\n Remember me\r\n </label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary w-100 py-2\" (click)=\"login()\">Sign in</button>\r\n\r\n </div>\r\n\r\n <p class=\"mt-5 mb-3 text-body-secondary\">&copy; 2017\u20132023</p>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n", styles: [".login-page{position:absolute;inset:0;overflow:auto}.background{min-height:100%}.container{display:flex;flex-direction:column;align-items:center;height:100vh}.logo{margin-top:3em;margin-bottom:1em}.buttons{display:flex;flex-direction:row;justify-content:space-evenly}.button{display:flex;flex-direction:row;justify-content:center;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i12.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i14.MatLabel, selector: "mat-label" }, { kind: "directive", type: i14.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i15.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i16.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i16.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i16.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i16.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i16.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i17.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "clearContent", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress"] }, { kind: "directive", type: i8.GoogleSigninButtonDirective, selector: "asl-google-signin-button", inputs: ["type", "size", "text", "shape", "theme", "logo_alignment", "width", "locale"] }] });
124
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginComponent, decorators: [{
125
132
  type: Component,
126
133
  args: [{ selector: "spa-login", template: "\r\n <div *ngIf=\"style=='old'\" class=\"tin-bg-login login-page\">\r\n\r\n <div *ngIf=\"appConfig.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px; margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"appConfig.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;\">\r\n\r\n <div class=\"d-none d-sm-block\">\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n <mat-card class=\"mat-elevation-z3 login-card\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" ></spa-text>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"appConfig.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"appConfig.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='default'\" class=\"login-page background tin-bg-login\">\r\n\r\n <div class=\"container\" >\r\n\r\n <div class=\"logo\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3 \" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title style=\"font-size: 40px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\"></spa-text>\r\n\r\n <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" (enterPress)=\"login()\"></spa-text>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions style=\"margin-bottom: 10px;\">\r\n\r\n <div class=\"button mt-0\" *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n <button id=\"btnLogin\" mat-flat-button [disabled]=\"isProcessing\" style=\"width: 350px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"(appConfig.localAuth || appConfig.ADAuth) && appConfig.selfService\" >\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"signup()\">Sign up with Email</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.googleAuth\">\r\n <asl-google-signin-button type='standard' width=\"350px\" size='medium' logo_alignment=\"center\" style=\"text-align: center;\"></asl-google-signin-button>\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" style=\"margin-top: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='bs'\">\r\n\r\n <div class=\"container\">\r\n\r\n <div class=\"image\">\r\n <img class=\"mb-4\" src=\"c:\\Tinashe\\Code\\Angular\\Junk\\bs-examples\\assets\\brand\\bootstrap-logo.svg\" alt=\"\" width=\"72\" height=\"57\">\r\n </div>\r\n\r\n <div class=\"details\">\r\n <h1 class=\"h3 mb-3 fw-normal\" >Please sign in</h1>\r\n\r\n <div class=\"form-floating\">\r\n <input class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\" [(ngModel)]=\"user.userName\">\r\n <label for=\"floatingInput\">Username</label>\r\n </div>\r\n\r\n <div class=\"form-floating\">\r\n <input type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\" [(ngModel)]=\"user.password\">\r\n <label for=\"floatingPassword\">Password</label>\r\n </div>\r\n\r\n <div class=\"form-check text-start my-3\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"remember-me\" id=\"flexCheckDefault\" >\r\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\r\n Remember me\r\n </label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary w-100 py-2\" (click)=\"login()\">Sign in</button>\r\n\r\n </div>\r\n\r\n <p class=\"mt-5 mb-3 text-body-secondary\">&copy; 2017\u20132023</p>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n", styles: [".login-page{position:absolute;inset:0;overflow:auto}.background{min-height:100%}.container{display:flex;flex-direction:column;align-items:center;height:100vh}.logo{margin-top:3em;margin-bottom:1em}.buttons{display:flex;flex-direction:row;justify-content:space-evenly}.button{display:flex;flex-direction:row;justify-content:center;margin-top:10px}\n"] }]
127
- }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.StorageService }, { type: i3.Router }, { type: i4.MessageService }, { type: i5.DataServiceLib }, { type: i6.AuthService }, { type: i7.LogService }, { type: i3.ActivatedRoute }, { type: i8.SocialAuthService }]; } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUl6RCxPQUFPLEVBQUUsU0FBUyxFQUFlLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT2hELE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLFdBQXdCLEVBQVUsY0FBOEIsRUFBUyxNQUFjLEVBQVUsY0FBOEIsRUFBUyxXQUEyQixFQUM5SyxXQUF3QixFQUFVLFVBQXNCLEVBQVUsS0FBcUIsRUFBVSxhQUFnQztRQUR0SCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDOUssZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUEwQzFJLFVBQUssR0FBVyxTQUFTLENBQUM7UUFFMUIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBSWYsU0FBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsU0FBSSxHQUFHLElBQUks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akIzQiw0d05BNktBOzJGRDVKYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9sb2cuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBcHBDb25maWcsIEFwaVJlc3BvbnNlLCBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9DbGFzc2VzXCI7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTb2NpYWxBdXRoU2VydmljZSwgU29jaWFsVXNlciB9IGZyb20gJ0BhYmFjcml0dC9hbmd1bGFyeC1zb2NpYWwtbG9naW4nO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvTGliQ2xhc3Nlc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwic3BhLWxvZ2luXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9sb2dpbi5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9sb2dpbi5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsXHJcbiAgICBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ1NlcnZpY2UsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHNvY2lhbFNlcnZpY2U6IFNvY2lhbEF1dGhTZXJ2aWNlICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5hcHBDb25maWdPYnNlcnYuc3Vic2NyaWJlKHggPT4gdGhpcy5hcHBDb25maWcgPSB4KTtcclxuXHJcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcInJlZGlyZWN0VG9cIl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucmVkaXJlY3RQYXRoID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcInJlZGlyZWN0VG9cIl1cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnJlZGlyZWN0UGF0aCA9IFwiaG9tZVwiXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dG9Mb2dpbk9ic2Vydi5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgIHRoaXMuYXV0b0xvZ2luID0geFxyXG4gICAgICBjb25zb2xlLmxvZyhcIkFVVE8gTE9HSU4gOlwiICsgdGhpcy5hdXRvTG9naW4pXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc29jaWFsVXNlciA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5zb2NpYWxTZXJ2aWNlLmF1dGhTdGF0ZS5zdWJzY3JpYmUoKHNvY2lhbFVzZXI6IFNvY2lhbFVzZXIpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuc29jaWFsVXNlciA9IHNvY2lhbFVzZXI7XHJcblxyXG4gICAgICB0aGlzLnVzZXIudXNlck5hbWUgPSBzb2NpYWxVc2VyLmlkO1xyXG4gICAgICB0aGlzLnVzZXIucGFzc3dvcmQgPSBzb2NpYWxVc2VyLmlkOyAvL2R1bW15IGRhdGFcclxuICAgICAgdGhpcy51c2VyLnRva2VuID0gc29jaWFsVXNlci5pZFRva2VuO1xyXG4gICAgICB0aGlzLnVzZXIuYXV0aFR5cGUgPSBzb2NpYWxVc2VyLnByb3ZpZGVyO1xyXG5cclxuICAgICAgdGhpcy5sb2dpbigpO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIHRoaXMuYXV0aFNlcnZpY2UubG9nb2ZmKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXV0b0xvZ2luOiBib29sZWFuO1xyXG4gIHNvY2lhbFVzZXI6IFNvY2lhbFVzZXIgfCBudWxsO1xyXG5cclxuICBzdHlsZTogc3RyaW5nID0gXCJkZWZhdWx0XCI7XHJcblxyXG4gIGVtYWlsOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHBhc3N3b3JkOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICByZWRpcmVjdFBhdGhcclxuXHJcbiAgcHVibGljIHVzZXIgPSBuZXcgVXNlcigpO1xyXG4gIGhpZGUgPSB0cnVlO1xyXG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBhcHBDb25maWcgPSBuZXcgQXBwQ29uZmlnKCk7XHJcblxyXG4gIHB1YmxpYyBzaWdudXAoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJzaWdudXBcIl0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlY292ZXJBY2NvdW50KCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicmVjb3Zlci1hY2NvdW50XCJdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dpbigpIHtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMudXNlci51c2VyTmFtZSA9PSBcIlwiIHx8IHRoaXMudXNlci5wYXNzd29yZCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJQbGVhc2UgZW50ZXIgeW91ciBjcmVkZW50aWFsc1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuaW5mbyhcImxvZ2dpbmcgaW5cIik7XHJcblxyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xyXG5cclxuXHJcbiAgICB0aGlzLnVzZXIudXNlck5hbWUgPSB0aGlzLnVzZXIudXNlck5hbWVcclxuXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkxvZ2luKHRoaXMudXNlcikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG5cclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuXHJcbiAgICAgICAgLy8gaWYgKGFwaVJlc3BvbnNlLmRhdGEuYXV0aFR5cGUgPT0gJ2xvY2FsJyAmJiAhdGhpcy5hcHBDb25maWcubG9jYWxBdXRoKSB7XHJcbiAgICAgICAgLy8gICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiQ29udGFjdCBBZG1pbjogQXV0aGVudGljYXRpb24gVHlwZSBlcnJvclwiKTtcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIGlmIChhcGlSZXNwb25zZS5kYXRhLmF1dGhUeXBlID09ICdBRCcgJiYgIXRoaXMuYXBwQ29uZmlnLkFEQXV0aCkge1xyXG4gICAgICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkNvbnRhY3QgQWRtaW46IEF1dGhlbnRpY2F0aW9uIFR5cGUgZXJyb3JcIik7XHJcbiAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG5cclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVsb2dnZWRpbih0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVUb2tlbihhcGlSZXNwb25zZS5kYXRhLnRva2VuKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX1RPS0VOLCBhcGlSZXNwb25zZS5kYXRhLnRva2VuKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVUb2tlbkV4cGlyZShhcGlSZXNwb25zZS5kYXRhLmV4cGlyYXRpb24pO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoQ29uc3RhbnRzLkFVVEhfVE9LRU5fRVhQSVJFLCBhcGlSZXNwb25zZS5kYXRhLmV4cGlyYXRpb24pO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLlVwZGF0ZUN1cnJlbnRVc2VyKHRoaXMudXNlci51c2VyTmFtZSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9VU0VSLCB0aGlzLnVzZXIudXNlck5hbWUpO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZUxvZ2dlZFVzZXJGdWxsTmFtZShhcGlSZXNwb25zZS5kYXRhLmZpcnN0TmFtZSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9OQU1FLCBhcGlSZXNwb25zZS5kYXRhLmZpcnN0TmFtZSk7XHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuVXBkYXRlUm9sZShhcGlSZXNwb25zZS5kYXRhLnJvbGUpO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoQ29uc3RhbnRzLkFVVEhfUk9MRVMsIEpTT04uc3RyaW5naWZ5KGFwaVJlc3BvbnNlLmRhdGEucm9sZSkpO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZVRlbmFudE5hbWUoYXBpUmVzcG9uc2UuZGF0YS50ZW5hbnROYW1lKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX1RFTkFOVF9OQU1FLCBhcGlSZXNwb25zZS5kYXRhLnRlbmFudE5hbWUpO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oXCJsb2dnZWQgaW5cIik7XHJcblxyXG5cclxuICAgICAgICBpZiAoYXBpUmVzcG9uc2UuZGF0YS5jaGFuZ2VQYXNzd29yZCA9PSB0cnVlICYmIGFwaVJlc3BvbnNlLmRhdGEuYXV0aFR5cGUgPT0gJ2xvY2FsJykge1xyXG5cclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImhvbWUvdXNlci9jaGFuZ2UtcGFzc3dvcmRcIl0sIHtcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgcmVkaXJlY3RUbzogdGhpcy5yZWRpcmVjdFBhdGggfSxcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcclxuICAgICAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiBmYWxzZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJlZGlyZWN0UGF0aF0pO1xyXG5cclxuXHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLnVzZXIucGFzc3dvcmQgPSBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHRoaXMuaHR0cFNlcnZpY2UuRXJyb3IoZXJyb3IpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCJcclxuICA8ZGl2ICpuZ0lmPVwic3R5bGU9PSdvbGQnXCIgY2xhc3M9XCJ0aW4tYmctbG9naW4gbG9naW4tcGFnZVwiPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJhcHBDb25maWcubG9nbyE9JydcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6M2VtO21hcmdpbi1ib3R0b206MWVtXCI+XHJcblxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbm9ybWFsJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7bWFyZ2luLXJpZ2h0OjNlbTttYXJnaW4tbGVmdDozZW1cIiAvPlxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbWVkaXVtJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7bWFyZ2luLXJpZ2h0OjNlbTttYXJnaW4tbGVmdDozZW1cIiAvPlxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbGFyZ2UnXCIgIFtzcmNdPVwiYXBwQ29uZmlnLmxvZ29cIiBzdHlsZT1cIndpZHRoOiAyNTBweDsgbWFyZ2luLXJpZ2h0OjNlbTttYXJnaW4tbGVmdDozZW1cIiAvPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ28gPT0nJ1wiIHN0eWxlPVwibWFyZ2luLXRvcDoyZW1cIj5cclxuICAgICAgICA8IS0tIEFkZCBtYXJnaW4gdG9wIHdoZW4gdGhlcmUgaXMgbm8gbG9nbyAtLT5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwibWFyZ2luLXRvcDozZW07XCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1ub25lIGQtc20tYmxvY2tcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWxlZnQ6MWVtXCI+XHJcblxyXG4gICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejMgbG9naW4tY2FyZFwiIHN0eWxlPVwid2lkdGg6NDAwcHg7IFwiPlxyXG5cclxuICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZT57e2FwcENvbmZpZy5hcHBOYW1lfX08L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcblxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGluLWlucHV0IG10LTJcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHNwYS10ZXh0IGlkPVwidHh0dXNlck5hbWVcIiBkaXNwbGF5PVwiVXNlcm5hbWVcIiBbKHZhbHVlKV09XCJ1c2VyLnVzZXJOYW1lXCIgPjwvc3BhLXRleHQ+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ0eHRQYXNzd29yZFwiIG1hdElucHV0IFt0eXBlXT1cImhpZGUgPyAncGFzc3dvcmQnIDogJ3RleHQnXCIgIChrZXl1cC5lbnRlcik9XCJsb2dpbigpXCIgWyhuZ01vZGVsKV09XCJ1c2VyLnBhc3N3b3JkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IChjbGljayk9XCJoaWRlID0gIWhpZGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidIaWRlIHBhc3N3b3JkJ1wiIFthdHRyLmFyaWEtcHJlc3NlZF09XCJoaWRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDtcIj57e2hpZGUgPyAndmlzaWJpbGl0eV9vZmYnIDogJ3Zpc2liaWxpdHknfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuXHJcblxyXG4gICAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnM+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IFwiPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYnRuTG9naW5cIiAgbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiIHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIChjbGljayk9XCJsb2dpbigpXCIgY29sb3I9XCJwcmltYXJ5XCI+TG9naW48L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwiYXBwQ29uZmlnLnNlbGZTZXJ2aWNlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYnRuU2lnbnVwXCIgbWF0LXN0cm9rZWQtYnV0dG9uICBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIiAoY2xpY2spPVwic2lnbnVwKClcIj5TaWdudXA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuXHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImFwcENvbmZpZy5zZWxmU2VydmljZVwiPlxyXG4gICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICA8YSBtYXQtYnV0dG9uIGlkPVwibG5rUmVjb3ZlclwiICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxZW1cIiAoY2xpY2spPVwicmVjb3ZlckFjY291bnQoKVwiPkZvcmdvdCB5b3VyIHBhc3N3b3JkID88L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic3R5bGU9PSdkZWZhdWx0J1wiIGNsYXNzPVwibG9naW4tcGFnZSBiYWNrZ3JvdW5kIHRpbi1iZy1sb2dpblwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiA+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibG9nb1wiPlxyXG4gICAgICAgIDxpbWcgKm5nSWY9XCJhcHBDb25maWcubG9nb1NpemU9PSdub3JtYWwnXCIgIFtzcmNdPVwiYXBwQ29uZmlnLmxvZ29cIiBzdHlsZT1cIndpZHRoOiAxMDBweFwiIC8+XHJcbiAgICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZy5sb2dvU2l6ZT09J21lZGl1bSdcIiAgW3NyY109XCJhcHBDb25maWcubG9nb1wiIHN0eWxlPVwid2lkdGg6IDE1MHB4XCIgLz5cclxuICAgICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbGFyZ2UnXCIgIFtzcmNdPVwiYXBwQ29uZmlnLmxvZ29cIiBzdHlsZT1cIndpZHRoOiAyNTBweFwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MyBcIiBzdHlsZT1cIndpZHRoOjQwMHB4OyBcIj5cclxuXHJcbiAgICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBzdHlsZT1cImZvbnQtc2l6ZTogNDBweDttYXJnaW4tYm90dG9tOiAxMHB4OyBtYXJnaW4tdG9wOiAyMHB4OyBmb250LXdlaWdodDogMzAwXCI+e3thcHBDb25maWcuYXBwTmFtZX19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuXHJcbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgKm5nSWY9XCJhcHBDb25maWcubG9jYWxBdXRoIHx8IGFwcENvbmZpZy5BREF1dGhcIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGluLWlucHV0IG10LTJcIj5cclxuXHJcbiAgICAgICAgICAgIDxzcGEtdGV4dCBpZD1cInR4dHVzZXJOYW1lXCIgZGlzcGxheT1cIlVzZXJuYW1lXCIgWyh2YWx1ZSldPVwidXNlci51c2VyTmFtZVwiPjwvc3BhLXRleHQ+XHJcblxyXG4gICAgICAgICAgICA8c3BhLXRleHQgaWQ9XCJ0eHRQYXNzd29yZFwiIGRpc3BsYXk9XCJQYXNzd29yZFwiIGZvcm1hdD1cInBhc3N3b3JkXCIgWyh2YWx1ZSldPVwidXNlci5wYXNzd29yZFwiIChlbnRlclByZXNzKT1cImxvZ2luKClcIj48L3NwYS10ZXh0PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG5cclxuICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucyBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBtdC0wXCIgKm5nSWY9XCJhcHBDb25maWcubG9jYWxBdXRoIHx8IGFwcENvbmZpZy5BREF1dGhcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImJ0bkxvZ2luXCIgbWF0LWZsYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiBzdHlsZT1cIndpZHRoOiAzNTBweDtcIiAoY2xpY2spPVwibG9naW4oKVwiIGNvbG9yPVwicHJpbWFyeVwiPkxvZ2luPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uXCIgKm5nSWY9XCIoYXBwQ29uZmlnLmxvY2FsQXV0aCB8fCBhcHBDb25maWcuQURBdXRoKSAmJiBhcHBDb25maWcuc2VsZlNlcnZpY2VcIiA+XHJcbiAgICAgICAgICAgIDxidXR0b24gIGlkPVwiYnRuU2lnbnVwXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwid2lkdGg6IDM1MHB4O1wiIChjbGljayk9XCJzaWdudXAoKVwiPlNpZ24gdXAgd2l0aCBFbWFpbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiICpuZ0lmPVwiYXBwQ29uZmlnLmdvb2dsZUF1dGhcIj5cclxuICAgICAgICAgICAgPGFzbC1nb29nbGUtc2lnbmluLWJ1dHRvbiB0eXBlPSdzdGFuZGFyZCcgd2lkdGg9XCIzNTBweFwiIHNpemU9J21lZGl1bScgbG9nb19hbGlnbm1lbnQ9XCJjZW50ZXJcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48L2FzbC1nb29nbGUtc2lnbmluLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcblxyXG4gICAgICA8L21hdC1jYXJkPlxyXG5cclxuICAgICAgPGEgKm5nSWY9XCJhcHBDb25maWcuc2VsZlNlcnZpY2VcIiBtYXQtYnV0dG9uIGlkPVwibG5rUmVjb3ZlclwiIHN0eWxlPVwibWFyZ2luLXRvcDogMWVtXCIgKGNsaWNrKT1cInJlY292ZXJBY2NvdW50KClcIj5Gb3Jnb3QgeW91ciBwYXNzd29yZCA/PC9hPlxyXG5cclxuXHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInN0eWxlPT0nYnMnXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cIm1iLTRcIiBzcmM9XCJjOlxcVGluYXNoZVxcQ29kZVxcQW5ndWxhclxcSnVua1xcYnMtZXhhbXBsZXNcXGFzc2V0c1xcYnJhbmRcXGJvb3RzdHJhcC1sb2dvLnN2Z1wiIGFsdD1cIlwiIHdpZHRoPVwiNzJcIiBoZWlnaHQ9XCI1N1wiPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzPVwiaDMgbWItMyBmdy1ub3JtYWxcIiA+UGxlYXNlIHNpZ24gaW48L2gxPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1mbG9hdGluZ1wiPlxyXG4gICAgICAgICAgPGlucHV0ICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZmxvYXRpbmdJbnB1dFwiIHBsYWNlaG9sZGVyPVwibmFtZUBleGFtcGxlLmNvbVwiIFsobmdNb2RlbCldPVwidXNlci51c2VyTmFtZVwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0aW5nSW5wdXRcIj5Vc2VybmFtZTwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZsb2F0aW5nXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImZsb2F0aW5nUGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIlBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJ1c2VyLnBhc3N3b3JkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXRpbmdQYXNzd29yZFwiPlBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgdGV4dC1zdGFydCBteS0zXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJyZW1lbWJlci1tZVwiIGlkPVwiZmxleENoZWNrRGVmYXVsdFwiID5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJmbGV4Q2hlY2tEZWZhdWx0XCI+XHJcbiAgICAgICAgICAgIFJlbWVtYmVyIG1lXHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIHB5LTJcIiAgKGNsaWNrKT1cImxvZ2luKClcIj5TaWduIGluPC9idXR0b24+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxwIGNsYXNzPVwibXQtNSBtYi0zIHRleHQtYm9keS1zZWNvbmRhcnlcIj4mY29weTsgMjAxN+KAkzIwMjM8L3A+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuIl19
134
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.StorageService }, { type: i3.Router }, { type: i4.MessageService }, { type: i5.DataServiceLib }, { type: i6.AuthService }, { type: i7.LogService }, { type: i3.ActivatedRoute }, { type: i8.SocialAuthService }, { type: i9.NotificationsService }]; } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUl6RCxPQUFPLEVBQUUsU0FBUyxFQUFlLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFoRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixXQUF3QixFQUFVLGNBQThCLEVBQVMsTUFBYyxFQUFVLGNBQThCLEVBQVMsV0FBMkIsRUFDOUssV0FBd0IsRUFBVSxVQUFzQixFQUFVLEtBQXFCLEVBQVUsYUFBZ0MsRUFBVSxvQkFBMEM7UUFEMUssZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzlLLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQVUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQTBDOUwsVUFBSyxHQUFXLFNBQVMsQ0FBQztRQUUxQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFJZixTQUFJLEdB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RixDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFDO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1NBQzlDO0lBRUgsQ0FBQzs7MkdBNUpVLGNBQWM7K0ZBQWQsY0FBYyxpRENsQjNCLDR3TkE2S0E7MkZEM0phLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2xvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFwcENvbmZpZywgQXBpUmVzcG9uc2UsIENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL0NsYXNzZXNcIjtcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNvY2lhbEF1dGhTZXJ2aWNlLCBTb2NpYWxVc2VyIH0gZnJvbSAnQGFiYWNyaXR0L2FuZ3VsYXJ4LXNvY2lhbC1sb2dpbic7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9MaWJDbGFzc2VzXCI7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwic3BhLWxvZ2luXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9sb2dpbi5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9sb2dpbi5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsXHJcbiAgICBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ1NlcnZpY2UsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHNvY2lhbFNlcnZpY2U6IFNvY2lhbEF1dGhTZXJ2aWNlLCBwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG5cclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBwQ29uZmlnT2JzZXJ2LnN1YnNjcmliZSh4ID0+IHRoaXMuYXBwQ29uZmlnID0geCk7XHJcblxyXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJyZWRpcmVjdFRvXCJdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnJlZGlyZWN0UGF0aCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJyZWRpcmVjdFRvXCJdXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5yZWRpcmVjdFBhdGggPSBcImhvbWVcIlxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgdGhpcy5hdXRoU2VydmljZS5hdXRvTG9naW5PYnNlcnYuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICB0aGlzLmF1dG9Mb2dpbiA9IHhcclxuICAgICAgY29uc29sZS5sb2coXCJBVVRPIExPR0lOIDpcIiArIHRoaXMuYXV0b0xvZ2luKVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnNvY2lhbFVzZXIgPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc29jaWFsU2VydmljZS5hdXRoU3RhdGUuc3Vic2NyaWJlKChzb2NpYWxVc2VyOiBTb2NpYWxVc2VyKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnNvY2lhbFVzZXIgPSBzb2NpYWxVc2VyO1xyXG5cclxuICAgICAgdGhpcy51c2VyLnVzZXJOYW1lID0gc29jaWFsVXNlci5pZDtcclxuICAgICAgdGhpcy51c2VyLnBhc3N3b3JkID0gc29jaWFsVXNlci5pZDsgLy9kdW1teSBkYXRhXHJcbiAgICAgIHRoaXMudXNlci50b2tlbiA9IHNvY2lhbFVzZXIuaWRUb2tlbjtcclxuICAgICAgdGhpcy51c2VyLmF1dGhUeXBlID0gc29jaWFsVXNlci5wcm92aWRlcjtcclxuXHJcbiAgICAgIHRoaXMubG9naW4oKTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyB0aGlzLmF1dGhTZXJ2aWNlLmxvZ29mZigpO1xyXG5cclxuICB9XHJcblxyXG4gIGF1dG9Mb2dpbjogYm9vbGVhbjtcclxuICBzb2NpYWxVc2VyOiBTb2NpYWxVc2VyIHwgbnVsbDtcclxuXHJcbiAgc3R5bGU6IHN0cmluZyA9IFwiZGVmYXVsdFwiO1xyXG5cclxuICBlbWFpbDogc3RyaW5nID0gXCJcIjtcclxuICBwYXNzd29yZDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcmVkaXJlY3RQYXRoXHJcblxyXG4gIHB1YmxpYyB1c2VyID0gbmV3IFVzZXIoKTtcclxuICBoaWRlID0gdHJ1ZTtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgYXBwQ29uZmlnID0gbmV3IEFwcENvbmZpZygpO1xyXG5cclxuICBwdWJsaWMgc2lnbnVwKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wic2lnbnVwXCJdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWNvdmVyQWNjb3VudCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInJlY292ZXItYWNjb3VudFwiXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9naW4oKSB7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLnVzZXIudXNlck5hbWUgPT0gXCJcIiB8fCB0aGlzLnVzZXIucGFzc3dvcmQgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGxlYXNlIGVudGVyIHlvdXIgY3JlZGVudGlhbHNcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oXCJsb2dnaW5nIGluXCIpO1xyXG5cclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgdGhpcy51c2VyLnVzZXJOYW1lID0gdGhpcy51c2VyLnVzZXJOYW1lXHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5Mb2dpbih0aGlzLnVzZXIpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgIC8vIGlmIChhcGlSZXNwb25zZS5kYXRhLmF1dGhUeXBlID09ICdsb2NhbCcgJiYgIXRoaXMuYXBwQ29uZmlnLmxvY2FsQXV0aCkge1xyXG4gICAgICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkNvbnRhY3QgQWRtaW46IEF1dGhlbnRpY2F0aW9uIFR5cGUgZXJyb3JcIik7XHJcbiAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAvLyBpZiAoYXBpUmVzcG9uc2UuZGF0YS5hdXRoVHlwZSA9PSAnQUQnICYmICF0aGlzLmFwcENvbmZpZy5BREF1dGgpIHtcclxuICAgICAgICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJDb250YWN0IEFkbWluOiBBdXRoZW50aWNhdGlvbiBUeXBlIGVycm9yXCIpO1xyXG4gICAgICAgIC8vICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuXHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuVXBkYXRlbG9nZ2VkaW4odHJ1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuVXBkYXRlVG9rZW4oYXBpUmVzcG9uc2UuZGF0YS50b2tlbik7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9UT0tFTiwgYXBpUmVzcG9uc2UuZGF0YS50b2tlbik7XHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuVXBkYXRlVG9rZW5FeHBpcmUoYXBpUmVzcG9uc2UuZGF0YS5leHBpcmF0aW9uKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX1RPS0VOX0VYUElSRSwgYXBpUmVzcG9uc2UuZGF0YS5leHBpcmF0aW9uKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVDdXJyZW50VXNlcih0aGlzLnVzZXIudXNlck5hbWUpO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoQ29uc3RhbnRzLkFVVEhfVVNFUiwgdGhpcy51c2VyLnVzZXJOYW1lKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS51cGRhdGVMb2dnZWRVc2VyRnVsbE5hbWUoYXBpUmVzcG9uc2UuZGF0YS5maXJzdE5hbWUpO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoQ29uc3RhbnRzLkFVVEhfTkFNRSwgYXBpUmVzcG9uc2UuZGF0YS5maXJzdE5hbWUpO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLlVwZGF0ZVJvbGUoYXBpUmVzcG9uc2UuZGF0YS5yb2xlKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX1JPTEVTLCBKU09OLnN0cmluZ2lmeShhcGlSZXNwb25zZS5kYXRhLnJvbGUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS51cGRhdGVUZW5hbnROYW1lKGFwaVJlc3BvbnNlLmRhdGEudGVuYW50TmFtZSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9URU5BTlRfTkFNRSwgYXBpUmVzcG9uc2UuZGF0YS50ZW5hbnROYW1lKTtcclxuXHJcblxyXG4gICAgICAgIHRoaXMubG9nU2VydmljZS5pbmZvKFwibG9nZ2VkIGluXCIpO1xyXG5cclxuXHJcbiAgICAgICAgaWYgKGFwaVJlc3BvbnNlLmRhdGEuY2hhbmdlUGFzc3dvcmQgPT0gdHJ1ZSAmJiBhcGlSZXNwb25zZS5kYXRhLmF1dGhUeXBlID09ICdsb2NhbCcpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJob21lL3VzZXIvY2hhbmdlLXBhc3N3b3JkXCJdLCB7XHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHJlZGlyZWN0VG86IHRoaXMucmVkaXJlY3RQYXRoIH0sXHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXHJcbiAgICAgICAgICAgIHNraXBMb2NhdGlvbkNoYW5nZTogZmFsc2VcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yZWRpcmVjdFBhdGhdKTtcclxuXHJcblxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy51c2VyLnBhc3N3b3JkID0gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdCh0aGlzLmh0dHBTZXJ2aWNlLkVycm9yKGVycm9yKSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBub3RpZmljYXRpb25zKCl7XHJcbiAgICBpZiAodGhpcy5hcHBDb25maWcubXVsdGl0ZW5hbnQpe1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmxvYWROb3RpZmljYXRpb25zKClcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiXHJcbiAgPGRpdiAqbmdJZj1cInN0eWxlPT0nb2xkJ1wiIGNsYXNzPVwidGluLWJnLWxvZ2luIGxvZ2luLXBhZ2VcIj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ28hPScnXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciByb3cgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOjNlbTttYXJnaW4tYm90dG9tOjFlbVwiPlxyXG5cclxuICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZy5sb2dvU2l6ZT09J25vcm1hbCdcIiAgW3NyY109XCJhcHBDb25maWcubG9nb1wiIHN0eWxlPVwid2lkdGg6IDEwMHB4O21hcmdpbi1yaWdodDozZW07bWFyZ2luLWxlZnQ6M2VtXCIgLz5cclxuICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZy5sb2dvU2l6ZT09J21lZGl1bSdcIiAgW3NyY109XCJhcHBDb25maWcubG9nb1wiIHN0eWxlPVwid2lkdGg6IDE1MHB4O21hcmdpbi1yaWdodDozZW07bWFyZ2luLWxlZnQ6M2VtXCIgLz5cclxuICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZy5sb2dvU2l6ZT09J2xhcmdlJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJ3aWR0aDogMjUwcHg7IG1hcmdpbi1yaWdodDozZW07bWFyZ2luLWxlZnQ6M2VtXCIgLz5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImFwcENvbmZpZy5sb2dvID09JydcIiBzdHlsZT1cIm1hcmdpbi10b3A6MmVtXCI+XHJcbiAgICAgICAgPCEtLSBBZGQgbWFyZ2luIHRvcCB3aGVuIHRoZXJlIGlzIG5vIGxvZ28gLS0+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6M2VtO1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLXNtLWJsb2NrXCI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjFlbVwiPlxyXG5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXozIGxvZ2luLWNhcmRcIiBzdHlsZT1cIndpZHRoOjQwMHB4OyBcIj5cclxuXHJcbiAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+e3thcHBDb25maWcuYXBwTmFtZX19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG5cclxuICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbi1pbnB1dCBtdC0yXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxzcGEtdGV4dCBpZD1cInR4dHVzZXJOYW1lXCIgZGlzcGxheT1cIlVzZXJuYW1lXCIgWyh2YWx1ZSldPVwidXNlci51c2VyTmFtZVwiID48L3NwYS10ZXh0PlxyXG5cclxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5QYXNzd29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwidHh0UGFzc3dvcmRcIiBtYXRJbnB1dCBbdHlwZV09XCJoaWRlID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiICAoa2V5dXAuZW50ZXIpPVwibG9naW4oKVwiIFsobmdNb2RlbCldPVwidXNlci5wYXNzd29yZFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiID5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCAoY2xpY2spPVwiaGlkZSA9ICFoaWRlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInSGlkZSBwYXNzd29yZCdcIiBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaGlkZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6IDE4cHg7XCI+e3toaWRlID8gJ3Zpc2liaWxpdHlfb2ZmJyA6ICd2aXNpYmlsaXR5J319PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG5cclxuICAgICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBcIj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImJ0bkxvZ2luXCIgIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIiAoY2xpY2spPVwibG9naW4oKVwiIGNvbG9yPVwicHJpbWFyeVwiPkxvZ2luPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiAqbmdJZj1cImFwcENvbmZpZy5zZWxmU2VydmljZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImJ0blNpZ251cFwiIG1hdC1zdHJva2VkLWJ1dHRvbiAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCIgKGNsaWNrKT1cInNpZ251cCgpXCI+U2lnbnVwPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcblxyXG4gICAgICAgIDwvbWF0LWNhcmQ+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhcHBDb25maWcuc2VsZlNlcnZpY2VcIj5cclxuICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgPGEgbWF0LWJ1dHRvbiBpZD1cImxua1JlY292ZXJcIiAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMWVtXCIgKGNsaWNrKT1cInJlY292ZXJBY2NvdW50KClcIj5Gb3Jnb3QgeW91ciBwYXNzd29yZCA/PC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInN0eWxlPT0nZGVmYXVsdCdcIiBjbGFzcz1cImxvZ2luLXBhZ2UgYmFja2dyb3VuZCB0aW4tYmctbG9naW5cIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ29cIj5cclxuICAgICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbm9ybWFsJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHhcIiAvPlxyXG4gICAgICAgIDxpbWcgKm5nSWY9XCJhcHBDb25maWcubG9nb1NpemU9PSdtZWRpdW0nXCIgIFtzcmNdPVwiYXBwQ29uZmlnLmxvZ29cIiBzdHlsZT1cIndpZHRoOiAxNTBweFwiIC8+XHJcbiAgICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZy5sb2dvU2l6ZT09J2xhcmdlJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJ3aWR0aDogMjUwcHhcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejMgXCIgc3R5bGU9XCJ3aWR0aDo0MDBweDsgXCI+XHJcblxyXG4gICAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgICA8bWF0LWNhcmQtdGl0bGUgc3R5bGU9XCJmb250LXNpemU6IDQwcHg7bWFyZ2luLWJvdHRvbTogMTBweDsgbWFyZ2luLXRvcDogMjBweDsgZm9udC13ZWlnaHQ6IDMwMFwiPnt7YXBwQ29uZmlnLmFwcE5hbWV9fTwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcblxyXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50ICpuZ0lmPVwiYXBwQ29uZmlnLmxvY2FsQXV0aCB8fCBhcHBDb25maWcuQURBdXRoXCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbi1pbnB1dCBtdC0yXCI+XHJcblxyXG4gICAgICAgICAgICA8c3BhLXRleHQgaWQ9XCJ0eHR1c2VyTmFtZVwiIGRpc3BsYXk9XCJVc2VybmFtZVwiIFsodmFsdWUpXT1cInVzZXIudXNlck5hbWVcIj48L3NwYS10ZXh0PlxyXG5cclxuICAgICAgICAgICAgPHNwYS10ZXh0IGlkPVwidHh0UGFzc3dvcmRcIiBkaXNwbGF5PVwiUGFzc3dvcmRcIiBmb3JtYXQ9XCJwYXNzd29yZFwiIFsodmFsdWUpXT1cInVzZXIucGFzc3dvcmRcIiAoZW50ZXJQcmVzcyk9XCJsb2dpbigpXCI+PC9zcGEtdGV4dD5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG5cclxuXHJcbiAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gbXQtMFwiICpuZ0lmPVwiYXBwQ29uZmlnLmxvY2FsQXV0aCB8fCBhcHBDb25maWcuQURBdXRoXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gaWQ9XCJidG5Mb2dpblwiIG1hdC1mbGF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgc3R5bGU9XCJ3aWR0aDogMzUwcHg7XCIgKGNsaWNrKT1cImxvZ2luKClcIiBjb2xvcj1cInByaW1hcnlcIj5Mb2dpbjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiICpuZ0lmPVwiKGFwcENvbmZpZy5sb2NhbEF1dGggfHwgYXBwQ29uZmlnLkFEQXV0aCkgJiYgYXBwQ29uZmlnLnNlbGZTZXJ2aWNlXCIgPlxyXG4gICAgICAgICAgICA8YnV0dG9uICBpZD1cImJ0blNpZ251cFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cIndpZHRoOiAzNTBweDtcIiAoY2xpY2spPVwic2lnbnVwKClcIj5TaWduIHVwIHdpdGggRW1haWw8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAqbmdJZj1cImFwcENvbmZpZy5nb29nbGVBdXRoXCI+XHJcbiAgICAgICAgICAgIDxhc2wtZ29vZ2xlLXNpZ25pbi1idXR0b24gdHlwZT0nc3RhbmRhcmQnIHdpZHRoPVwiMzUwcHhcIiBzaXplPSdtZWRpdW0nIGxvZ29fYWxpZ25tZW50PVwiY2VudGVyXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PC9hc2wtZ29vZ2xlLXNpZ25pbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxyXG5cclxuICAgICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICAgIDxhICpuZ0lmPVwiYXBwQ29uZmlnLnNlbGZTZXJ2aWNlXCIgbWF0LWJ1dHRvbiBpZD1cImxua1JlY292ZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDFlbVwiIChjbGljayk9XCJyZWNvdmVyQWNjb3VudCgpXCI+Rm9yZ290IHlvdXIgcGFzc3dvcmQgPzwvYT5cclxuXHJcblxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgKm5nSWY9XCJzdHlsZT09J2JzJ1wiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJtYi00XCIgc3JjPVwiYzpcXFRpbmFzaGVcXENvZGVcXEFuZ3VsYXJcXEp1bmtcXGJzLWV4YW1wbGVzXFxhc3NldHNcXGJyYW5kXFxib290c3RyYXAtbG9nby5zdmdcIiBhbHQ9XCJcIiB3aWR0aD1cIjcyXCIgaGVpZ2h0PVwiNTdcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc1wiPlxyXG4gICAgICAgIDxoMSBjbGFzcz1cImgzIG1iLTMgZnctbm9ybWFsXCIgPlBsZWFzZSBzaWduIGluPC9oMT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmxvYXRpbmdcIj5cclxuICAgICAgICAgIDxpbnB1dCAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImZsb2F0aW5nSW5wdXRcIiBwbGFjZWhvbGRlcj1cIm5hbWVAZXhhbXBsZS5jb21cIiBbKG5nTW9kZWwpXT1cInVzZXIudXNlck5hbWVcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmbG9hdGluZ0lucHV0XCI+VXNlcm5hbWU8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1mbG9hdGluZ1wiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJmbG9hdGluZ1Bhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiIFsobmdNb2RlbCldPVwidXNlci5wYXNzd29yZFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0aW5nUGFzc3dvcmRcIj5QYXNzd29yZDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHRleHQtc3RhcnQgbXktM1wiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwicmVtZW1iZXItbWVcIiBpZD1cImZsZXhDaGVja0RlZmF1bHRcIiA+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrRGVmYXVsdFwiPlxyXG4gICAgICAgICAgICBSZW1lbWJlciBtZVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBweS0yXCIgIChjbGljayk9XCJsb2dpbigpXCI+U2lnbiBpbjwvYnV0dG9uPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8cCBjbGFzcz1cIm10LTUgbWItMyB0ZXh0LWJvZHktc2Vjb25kYXJ5XCI+JmNvcHk7IDIwMTfigJMyMDIzPC9wPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiJdfQ==
@@ -28,7 +28,7 @@ export class LogsComponent {
28
28
  }
29
29
  }
30
30
  LogsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LogsComponent, deps: [{ token: i1.AuthService }, { token: i2.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component });
31
- LogsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LogsComponent, selector: "spa-logs", ngImport: i0, template: "\r\n <spa-page [config]=\"logsPageConfig\"></spa-page>\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"], dependencies: [{ kind: "component", type: i3.PageComponent, selector: "spa-page", inputs: ["config"], outputs: ["searchModeActivated", "searchModeDeactivated", "refreshClick"] }] });
31
+ LogsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LogsComponent, selector: "spa-logs", ngImport: i0, template: "\r\n <spa-page [config]=\"logsPageConfig\"></spa-page>\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"], dependencies: [{ kind: "component", type: i3.PageComponent, selector: "spa-page", inputs: ["config"], outputs: ["searchModeActivated", "searchModeDeactivated", "refreshClick", "actionClick", "actionResponse", "inputChange", "createClick", "searchClick", "dataLoad"] }] });
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LogsComponent, decorators: [{
33
33
  type: Component,
34
34
  args: [{ selector: 'spa-logs', template: "\r\n <spa-page [config]=\"logsPageConfig\"></spa-page>\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"] }]
@@ -1,14 +1,103 @@
1
1
  import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/datalib.service";
4
+ import * as i2 from "../../services/notifications.service";
5
+ import * as i3 from "../../components/table/table.component";
3
6
  export class NotificationsComponent {
4
- constructor() { }
7
+ constructor(dataService, notificationsService) {
8
+ this.dataService = dataService;
9
+ this.notificationsService = notificationsService;
10
+ this.createDialog = {
11
+ formConfig: {
12
+ title: 'Send Notification',
13
+ fixedTitle: true,
14
+ fields: [
15
+ { name: 'message', type: 'text', required: true, span: true },
16
+ {
17
+ name: 'category', type: 'select', required: true, defaultFirstValue: true,
18
+ options: [
19
+ { name: 'System', value: 0 },
20
+ { name: 'Security', value: 1 },
21
+ { name: 'Task', value: 2 },
22
+ { name: 'Approval', value: 3 },
23
+ { name: 'Other', value: 4 }
24
+ ]
25
+ },
26
+ {
27
+ name: 'type', type: 'select', required: true, defaultFirstValue: true,
28
+ options: [
29
+ { name: 'Info', value: 'info' },
30
+ { name: 'Warning', value: 'warn' },
31
+ { name: 'Error', value: 'error' }
32
+ ]
33
+ },
34
+ { name: 'durationHours', type: 'number', required: true, defaultValue: 24, hint: 'How long to keep this notification active' },
35
+ { name: 'notifyAllUsers', type: 'checkbox', alias: 'Notify All Users', span: true },
36
+ { name: 'recipients', type: 'multi-text', alias: 'Recipients', span: true, hiddenCondition: x => x.notifyAllUsers },
37
+ { name: 'roleIDs', type: 'multi-text', strict: true, copyContent: true, alias: 'Role IDs', span: true, hiddenCondition: x => x.notifyAllUsers, infoMessage: 'Loading roles...' },
38
+ {
39
+ name: 'channels', type: 'select', alias: 'Notification Channels', span: true, defaultFirstValue: true, required: true,
40
+ options: [
41
+ { name: 'UI Only', value: 1 },
42
+ { name: 'UI + Email', value: 3 },
43
+ { name: 'UI + Email + SMS', value: 7 },
44
+ { name: 'All Channels', value: 15 }
45
+ ]
46
+ }
47
+ ]
48
+ },
49
+ mode: 'create',
50
+ buttons: [
51
+ { name: 'create', display: 'Send', action: { url: 'notifications/notify', method: 'post', successMessage: 'Notification sent successfully' } }
52
+ ]
53
+ };
54
+ this.notificationsTableConfig = {
55
+ showFilter: true,
56
+ minColumns: ['message', 'categoryName'],
57
+ flatButtons: true,
58
+ columns: [
59
+ {
60
+ name: 'type', type: 'icon',
61
+ icons: [
62
+ { name: 'info', color: 'steelblue', condition: x => x.type === 'info' },
63
+ { name: 'warning', color: '#FF9800', condition: x => x.type === 'warn' },
64
+ { name: 'error', color: '#f44336', condition: x => x.type === 'error' }
65
+ ]
66
+ },
67
+ { name: 'createdDate', type: 'datetime', alias: 'Date' },
68
+ { name: 'message', type: 'text' },
69
+ { name: 'categoryName', type: 'text', alias: 'Category' },
70
+ // { name: 'createdByName', type: 'text', alias: 'From' }
71
+ ],
72
+ buttons: [
73
+ { name: 'create', display: 'Send Notification', dialog: true, detailsConfig: this.createDialog },
74
+ { name: 'dismiss', icon: { name: 'done' }, color: 'green', action: { url: 'notifications?action=dismiss', method: 'post' }, visible: x => x.canDismiss },
75
+ { name: 'dismissAll', display: 'Dismiss All', inHeader: true, icon: { name: 'done_all' }, color: 'green', action: { url: 'notifications/dismiss-all', method: 'post' } }
76
+ ],
77
+ loadAction: { url: 'notifications/all/x' }
78
+ };
79
+ }
5
80
  ngOnInit() {
81
+ this.loadRoles();
82
+ this.notificationsService.loadNotifications();
83
+ }
84
+ loadRoles() {
85
+ this.dataService.CallApi({ url: 'role/list/x' }, "").subscribe((apiResponse) => {
86
+ this.createDialog.formConfig.fields.find(x => x.name == 'roleIDs').infoMessage = 'Available Roles:\n' + apiResponse.data.map(r => `${r.roleID} - ${r.roleName}`).join('\n');
87
+ this.createDialog.formConfig.fields.find(x => x.name == 'roleIDs').options = apiResponse.data;
88
+ });
89
+ this.dataService.CallApi({ url: 'user/list/x' }, "").subscribe((apiResponse) => {
90
+ this.createDialog.formConfig.fields.find(x => x.name == 'recipients').options = apiResponse.data;
91
+ });
92
+ }
93
+ actionClicked(x) {
94
+ this.notificationsService.loadNotifications();
6
95
  }
7
96
  }
8
- NotificationsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NotificationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- NotificationsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NotificationsComponent, selector: "spa-notifications", ngImport: i0, template: "<p>notifications works!</p>\n", styles: [""] });
97
+ NotificationsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NotificationsComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.NotificationsService }], target: i0.ɵɵFactoryTarget.Component });
98
+ NotificationsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NotificationsComponent, selector: "spa-notifications", ngImport: i0, template: "<h4>Notifications</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"notificationsTableConfig\" (actionResponse)=\"actionClicked($event)\"></spa-table>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i3.TableComponent, selector: "spa-table", inputs: ["hideTitle", "data", "tileData", "config", "reload"], outputs: ["dataLoad", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }] });
10
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NotificationsComponent, decorators: [{
11
100
  type: Component,
12
- args: [{ selector: 'spa-notifications', template: "<p>notifications works!</p>\n" }]
13
- }], ctorParameters: function () { return []; } });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGFnZXMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFPbEQsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7bUhBTFUsc0JBQXNCO3VHQUF0QixzQkFBc0IseURDUG5DLCtCQUNBOzJGRE1hLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcGEtbm90aWZpY2F0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG59XG4iLCI8cD5ub3RpZmljYXRpb25zIHdvcmtzITwvcD5cbiJdfQ==
101
+ args: [{ selector: 'spa-notifications', template: "<h4>Notifications</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"notificationsTableConfig\" (actionResponse)=\"actionClicked($event)\"></spa-table>\n</div>\n" }]
102
+ }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.NotificationsService }]; } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGFnZXMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVbEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFvQixXQUEyQixFQUFVLG9CQUEyQztRQUFoRixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXVCO1FBb0JwRyxpQkFBWSxHQUF3QjtZQUNsQyxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLE1BQU0sRUFBRTtvQkFDTixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFHLElBQUksRUFBRSxJQUFJLEVBQUU7b0JBQzlEO3dCQUNFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFHLElBQUk7d0JBQzFFLE9BQU8sRUFBRTs0QkFDUCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTs0QkFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7NEJBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFOzRCQUMxQixF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SSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbkcsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBNEVELGFBQWEsQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLENBQUE7SUFDL0MsQ0FBQzs7bUhBbEdVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHlEQ1ZuQywyTUFPQTsyRkRHYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlLCBEZXRhaWxzRGlhbG9nQ29uZmlnLCBGb3JtQ29uZmlnLCBQYWdlQ29uZmlnLCBUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwYS1ub3RpZmljYXRpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsIHByaXZhdGUgbm90aWZpY2F0aW9uc1NlcnZpY2UgOiBOb3RpZmljYXRpb25zU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkUm9sZXMoKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmxvYWROb3RpZmljYXRpb25zKClcbiAgfVxuXG4gIGxvYWRSb2xlcygpIHtcblxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDogJ3JvbGUvbGlzdC94JyB9LCBcIlwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVEaWFsb2cuZm9ybUNvbmZpZy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSAncm9sZUlEcycpLmluZm9NZXNzYWdlID0gJ0F2YWlsYWJsZSBSb2xlczpcXG4nICsgYXBpUmVzcG9uc2UuZGF0YS5tYXAociA9PiBgJHtyLnJvbGVJRH0gLSAke3Iucm9sZU5hbWV9YCkuam9pbignXFxuJyk7XG4gICAgICB0aGlzLmNyZWF0ZURpYWxvZy5mb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdyb2xlSURzJykub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd1c2VyL2xpc3QveCcgfSwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuY3JlYXRlRGlhbG9nLmZvcm1Db25maWcuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ3JlY2lwaWVudHMnKS5vcHRpb25zID0gYXBpUmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcblxuICB9XG5cbiAgY3JlYXRlRGlhbG9nOiBEZXRhaWxzRGlhbG9nQ29uZmlnID0ge1xuICAgIGZvcm1Db25maWc6IHtcbiAgICAgIHRpdGxlOiAnU2VuZCBOb3RpZmljYXRpb24nLFxuICAgICAgZml4ZWRUaXRsZTogdHJ1ZSxcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IG5hbWU6ICdtZXNzYWdlJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgIHNwYW46IHRydWUgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdjYXRlZ29yeScsIHR5cGU6ICdzZWxlY3QnLCByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdEZpcnN0VmFsdWUgOiB0cnVlLFxuICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgIHsgbmFtZTogJ1N5c3RlbScsIHZhbHVlOiAwIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdTZWN1cml0eScsIHZhbHVlOiAxIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdUYXNrJywgdmFsdWU6IDIgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ0FwcHJvdmFsJywgdmFsdWU6IDMgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ090aGVyJywgdmFsdWU6IDQgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICd0eXBlJywgdHlwZTogJ3NlbGVjdCcsIHJlcXVpcmVkOiB0cnVlLCBkZWZhdWx0Rmlyc3RWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdJbmZvJywgdmFsdWU6ICdpbmZvJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnV2FybmluZycsIHZhbHVlOiAnd2FybicgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ0Vycm9yJywgdmFsdWU6ICdlcnJvcicgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgeyBuYW1lOiAnZHVyYXRpb25Ib3VycycsIHR5cGU6ICdudW1iZXInLCByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdFZhbHVlOiAyNCwgaGludDogJ0hvdyBsb25nIHRvIGtlZXAgdGhpcyBub3RpZmljYXRpb24gYWN0aXZlJyB9LFxuICAgICAgICB7IG5hbWU6ICdub3RpZnlBbGxVc2VycycsIHR5cGU6ICdjaGVja2JveCcsIGFsaWFzOiAnTm90aWZ5IEFsbCBVc2VycycsIHNwYW46IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiAncmVjaXBpZW50cycsIHR5cGU6ICdtdWx0aS10ZXh0JywgYWxpYXM6ICdSZWNpcGllbnRzJywgc3BhbjogdHJ1ZSwgIGhpZGRlbkNvbmRpdGlvbjogeCA9PiB4Lm5vdGlmeUFsbFVzZXJzIH0sXG4gICAgICAgIHsgbmFtZTogJ3JvbGVJRHMnLCB0eXBlOiAnbXVsdGktdGV4dCcsIHN0cmljdCA6IHRydWUsIGNvcHlDb250ZW50IDogdHJ1ZSwgYWxpYXM6ICdSb2xlIElEcycsICBzcGFuOiB0cnVlLCBoaWRkZW5Db25kaXRpb246IHggPT4geC5ub3RpZnlBbGxVc2VycywgaW5mb01lc3NhZ2U6ICdMb2FkaW5nIHJvbGVzLi4uJyB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2NoYW5uZWxzJywgdHlwZTogJ3NlbGVjdCcsIGFsaWFzOiAnTm90aWZpY2F0aW9uIENoYW5uZWxzJywgc3BhbjogdHJ1ZSwgZGVmYXVsdEZpcnN0VmFsdWU6IHRydWUsIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgIHsgbmFtZTogJ1VJIE9ubHknLCB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnVUkgKyBFbWFpbCcsIHZhbHVlOiAzIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdVSSArIEVtYWlsICsgU01TJywgdmFsdWU6IDcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ0FsbCBDaGFubmVscycsIHZhbHVlOiAxNSB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBtb2RlOiAnY3JlYXRlJyxcbiAgICBidXR0b25zOiBbXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnU2VuZCcsIGFjdGlvbjogeyB1cmw6ICdub3RpZmljYXRpb25zL25vdGlmeScsIG1ldGhvZDogJ3Bvc3QnLCBzdWNjZXNzTWVzc2FnZTogJ05vdGlmaWNhdGlvbiBzZW50IHN1Y2Nlc3NmdWxseScgfSB9XG4gICAgXVxuICB9O1xuXG4gIG5vdGlmaWNhdGlvbnNUYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcbiAgICBtaW5Db2x1bW5zOiBbJ21lc3NhZ2UnLCAnY2F0ZWdvcnlOYW1lJ10sXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXG4gICAgY29sdW1uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAndHlwZScsIHR5cGU6ICdpY29uJyxcbiAgICAgICAgaWNvbnM6IFtcbiAgICAgICAgICB7bmFtZSA6ICdpbmZvJywgIGNvbG9yOiAnc3RlZWxibHVlJywgY29uZGl0aW9uOiB4ID0+IHgudHlwZSA9PT0gJ2luZm8nIH0sXG4gICAgICAgICAgeyBuYW1lOiAnd2FybmluZycsIGNvbG9yOiAnI0ZGOTgwMCcsIGNvbmRpdGlvbjogeCA9PiB4LnR5cGUgPT09ICd3YXJuJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ2Vycm9yJywgY29sb3I6ICcjZjQ0MzM2JywgY29uZGl0aW9uOiB4ID0+IHgudHlwZSA9PT0gJ2Vycm9yJyB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7IG5hbWU6ICdjcmVhdGVkRGF0ZScsIHR5cGU6ICdkYXRldGltZScsIGFsaWFzOiAnRGF0ZScgfSxcbiAgICAgIHsgbmFtZTogJ21lc3NhZ2UnLCB0eXBlOiAndGV4dCcgfSxcbiAgICAgIHsgbmFtZTogJ2NhdGVnb3J5TmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdDYXRlZ29yeScgfSxcblxuICAgICAgLy8geyBuYW1lOiAnY3JlYXRlZEJ5TmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdGcm9tJyB9XG4gICAgXSxcbiAgICBidXR0b25zOiBbXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnU2VuZCBOb3RpZmljYXRpb24nLCBkaWFsb2c6IHRydWUsIGRldGFpbHNDb25maWc6IHRoaXMuY3JlYXRlRGlhbG9nIH0sXG4gICAgICB7IG5hbWU6ICdkaXNtaXNzJywgaWNvbjogeyBuYW1lOiAnZG9uZScgfSwgY29sb3I6ICdncmVlbicsIGFjdGlvbjogeyB1cmw6ICdub3RpZmljYXRpb25zP2FjdGlvbj1kaXNtaXNzJywgbWV0aG9kOiAncG9zdCcgfSwgdmlzaWJsZTogeCA9PiB4LmNhbkRpc21pc3MgfSxcbiAgICAgIHsgbmFtZTogJ2Rpc21pc3NBbGwnLCBkaXNwbGF5OiAnRGlzbWlzcyBBbGwnLCBpbkhlYWRlciA6IHRydWUsIGljb246IHsgbmFtZTogJ2RvbmVfYWxsJyB9LCBjb2xvcjogJ2dyZWVuJywgYWN0aW9uOiB7IHVybDogJ25vdGlmaWNhdGlvbnMvZGlzbWlzcy1hbGwnLCBtZXRob2Q6ICdwb3N0JyB9IH1cbiAgICBdLFxuXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdub3RpZmljYXRpb25zL2FsbC94JyB9XG4gIH07XG5cblxuICBhY3Rpb25DbGlja2VkKHgpe1xuXG4gICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5sb2FkTm90aWZpY2F0aW9ucygpXG4gIH1cbn1cbiIsIjxoND5Ob3RpZmljYXRpb25zPC9oND5cbjxocj5cblxuXG48ZGl2IGNsYXNzPVwibXQtM1wiIHN0eWxlPVwiIGZvbnQtc2l6ZTogMTRweDtcIj5cbiAgPHNwYS10YWJsZSBbY29uZmlnXT1cIm5vdGlmaWNhdGlvbnNUYWJsZUNvbmZpZ1wiICAoYWN0aW9uUmVzcG9uc2UpPVwiYWN0aW9uQ2xpY2tlZCgkZXZlbnQpXCI+PC9zcGEtdGFibGU+XG48L2Rpdj5cbiJdfQ==