tango-app-ui-shared 3.0.27-dev → 3.0.28-dev

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.
@@ -1,19 +1,18 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { HttpErrorResponse } from '@angular/common/http';
3
- import { catchError, throwError } from 'rxjs';
3
+ import { BehaviorSubject, catchError, switchMap, throwError } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "tango-app-ui-global";
6
6
  import * as i2 from "../services/auth.service";
7
- import * as i3 from "@angular/router";
8
7
  export class HttpAuthInterceptor {
9
8
  gs;
10
- auth;
11
- router;
9
+ authService;
12
10
  authlocalStorageToken = '';
13
- constructor(gs, auth, router) {
11
+ isRefreshingToken = false;
12
+ tokenRefreshed = new BehaviorSubject(false);
13
+ constructor(gs, authService) {
14
14
  this.gs = gs;
15
- this.auth = auth;
16
- this.router = router;
15
+ this.authService = authService;
17
16
  this.gs.environment.subscribe((env) => {
18
17
  if (env) {
19
18
  this.authlocalStorageToken = `${env.appVersion}-${env.USERDATA_KEY}`;
@@ -27,22 +26,60 @@ export class HttpAuthInterceptor {
27
26
  Authorization: 'Bearer ' + user.authenticationToken
28
27
  }
29
28
  });
30
- return next.handle(request).pipe(catchError(err => {
31
- if (err instanceof HttpErrorResponse) {
32
- if (err.status === 402 || err.status === 401) {
33
- this.auth.logout().subscribe((res) => {
34
- this.router.navigate(["/auth/login"]);
35
- });
36
- localStorage.clear();
37
- }
29
+ return next.handle(request).pipe(catchError((error) => {
30
+ if (error instanceof HttpErrorResponse && error.status === 401) {
31
+ // If the error is due to unauthorized access, try to refresh the token
32
+ return this.handle401Error(request, next);
38
33
  }
39
- return throwError(err);
34
+ return throwError(error);
40
35
  }));
41
36
  }
42
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HttpAuthInterceptor, deps: [{ token: i1.GlobalStateService }, { token: i2.AuthService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
37
+ handle401Error(request, next) {
38
+ if (!this.isRefreshingToken) {
39
+ this.isRefreshingToken = true;
40
+ return this.authService.refreshToken().pipe(switchMap((res) => {
41
+ if (res && res.code == 200 && res.data.result) {
42
+ // Update local storage with the new token
43
+ localStorage.setItem(this.authlocalStorageToken, JSON.stringify(res.data.result));
44
+ // Clone the request with the new token
45
+ request = request.clone({
46
+ setHeaders: {
47
+ Authorization: `Bearer ${res.data.result.authenticationToken}`
48
+ }
49
+ });
50
+ // Reset the flag for token refreshing
51
+ this.isRefreshingToken = false;
52
+ // Retry the original request with the new token
53
+ return next.handle(request);
54
+ }
55
+ else {
56
+ // Logout user if refresh token fails
57
+ this.authService.logout();
58
+ return throwError('Token Expired Please Login Again!');
59
+ }
60
+ }), catchError((error) => {
61
+ // Logout user if refresh token fails
62
+ this.authService.logout();
63
+ return throwError(error);
64
+ }));
65
+ }
66
+ else {
67
+ // If already refreshing the token, queue the request and wait
68
+ return this.tokenRefreshed.pipe(switchMap(() => {
69
+ const tokens = JSON.parse(localStorage.getItem(this.authlocalStorageToken) || '{}');
70
+ request = request.clone({
71
+ setHeaders: {
72
+ Authorization: 'Bearer ' + tokens.authenticationToken
73
+ }
74
+ });
75
+ return next.handle(request);
76
+ }));
77
+ }
78
+ }
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HttpAuthInterceptor, deps: [{ token: i1.GlobalStateService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
43
80
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HttpAuthInterceptor });
44
81
  }
45
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HttpAuthInterceptor, decorators: [{
46
83
  type: Injectable
47
- }], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i2.AuthService }, { type: i3.Router }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1hdXRoLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL2ludGVyY2VwdG9ycy9odHRwLWF1dGgtaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBS0wsaUJBQWlCLEVBQ2xCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBSzFELE1BQU0sT0FBTyxtQkFBbUI7SUFFVjtJQUE4QjtJQUF5QjtJQUQzRSxxQkFBcUIsR0FBUyxFQUFFLENBQUM7SUFDakMsWUFBb0IsRUFBcUIsRUFBUyxJQUFnQixFQUFTLE1BQWE7UUFBcEUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUN0RixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtZQUNuQyxJQUFHLEdBQUcsRUFBQztnQkFDTixJQUFJLENBQUMscUJBQXFCLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUNELFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ3BELE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN2RixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0QixVQUFVLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2FBQ3BEO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxHQUFHLFlBQVksaUJBQWlCLEVBQUU7Z0JBQ2xDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7d0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDdEMsQ0FBQyxDQUFDLENBQUE7b0JBQ0YsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUN4QjthQUNKO1lBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQU8sQ0FBQztJQUNWLENBQUM7dUdBMUJVLG1CQUFtQjsyR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBSZXF1ZXN0LFxyXG4gIEh0dHBIYW5kbGVyLFxyXG4gIEh0dHBFdmVudCxcclxuICBIdHRwSW50ZXJjZXB0b3IsXHJcbiAgSHR0cEVycm9yUmVzcG9uc2VcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSHR0cEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgYXV0aGxvY2FsU3RvcmFnZVRva2VuOiBzdHJpbmc9Jyc7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBhdXRoOkF1dGhTZXJ2aWNlLHByaXZhdGUgcm91dGVyOlJvdXRlcikge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5zdWJzY3JpYmUoKGVudik9PntcclxuICAgICAgaWYoZW52KXtcclxuICAgICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuID0gYCR7ZW52LmFwcFZlcnNpb259LSR7ZW52LlVTRVJEQVRBX0tFWX1gO31cclxuICAgICB9KVxyXG4gIH1cclxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBjb25zdCB1c2VyOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuKSB8fCAne30nKTtcclxuICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgc2V0SGVhZGVyczoge1xyXG4gICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHVzZXIuYXV0aGVudGljYXRpb25Ub2tlblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNDAyIHx8IGVyci5zdGF0dXMgPT09IDQwMSkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGgubG9nb3V0KCkuc3Vic2NyaWJlKChyZXM6YW55KT0+e1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9hdXRoL2xvZ2luXCJdKTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XHJcbiAgfSkpYXMgYW55O1xyXG4gIH1cclxufSJdfQ==
84
+ }], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i2.AuthService }] });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1hdXRoLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL2ludGVyY2VwdG9ycy9odHRwLWF1dGgtaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBS0wsaUJBQWlCLEVBQ2xCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUl0RixNQUFNLE9BQU8sbUJBQW1CO0lBT3BCO0lBQ0E7SUFOVixxQkFBcUIsR0FBUyxFQUFFLENBQUM7SUFDekIsaUJBQWlCLEdBQVksS0FBSyxDQUFDO0lBQ25DLGNBQWMsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFdkYsWUFDVSxFQUFxQixFQUNyQixXQUF3QjtRQUR4QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUVoQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtZQUNuQyxJQUFHLEdBQUcsRUFBQztnQkFDTixJQUFJLENBQUMscUJBQXFCLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUNELFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ3BELE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN2RixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0QixVQUFVLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2FBQ3BEO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDOUIsVUFBVSxDQUFDLENBQUMsS0FBUyxFQUFDLEVBQUU7WUFDdEIsSUFBSSxLQUFLLFlBQVksaUJBQWlCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQzlELHVFQUF1RTtnQkFDdkUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQzthQUMzQztZQUNELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ3pDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNyQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDN0MsMENBQTBDO29CQUMxQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFFbEYsdUNBQXVDO29CQUN2QyxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQzt3QkFDdEIsVUFBVSxFQUFFOzRCQUNWLGFBQWEsRUFBRSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFO3lCQUMvRDtxQkFDRixDQUFDLENBQUM7b0JBRUgsc0NBQXNDO29CQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO29CQUUvQixnREFBZ0Q7b0JBQ2hELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDN0I7cUJBQU07b0JBQ0wscUNBQXFDO29CQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMxQixPQUFPLFVBQVUsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2lCQUN4RDtZQUNILENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNuQixxQ0FBcUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDthQUFNO1lBQ0wsOERBQThEO1lBQzlELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzdCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsTUFBTSxNQUFNLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUN6RixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFDdEIsVUFBVSxFQUFFO3dCQUNWLGFBQWEsRUFBRSxTQUFTLEdBQUcsTUFBTSxDQUFDLG1CQUFtQjtxQkFDdEQ7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7SUFDSCxDQUFDO3VHQWhGVSxtQkFBbUI7MkdBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBIdHRwUmVxdWVzdCxcclxuICBIdHRwSGFuZGxlcixcclxuICBIdHRwRXZlbnQsXHJcbiAgSHR0cEludGVyY2VwdG9yLFxyXG4gIEh0dHBFcnJvclJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBIdHRwQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuXHJcbiAgYXV0aGxvY2FsU3RvcmFnZVRva2VuOiBzdHJpbmc9Jyc7XHJcbiAgcHJpdmF0ZSBpc1JlZnJlc2hpbmdUb2tlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdG9rZW5SZWZyZXNoZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5zdWJzY3JpYmUoKGVudik9PntcclxuICAgICAgaWYoZW52KXtcclxuICAgICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuID0gYCR7ZW52LmFwcFZlcnNpb259LSR7ZW52LlVTRVJEQVRBX0tFWX1gO31cclxuICAgICB9KVxyXG4gIH1cclxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBjb25zdCB1c2VyOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuKSB8fCAne30nKTtcclxuICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgc2V0SGVhZGVyczoge1xyXG4gICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHVzZXIuYXV0aGVudGljYXRpb25Ub2tlblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjphbnkpPT57XHJcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgIC8vIElmIHRoZSBlcnJvciBpcyBkdWUgdG8gdW5hdXRob3JpemVkIGFjY2VzcywgdHJ5IHRvIHJlZnJlc2ggdGhlIHRva2VuXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGU0MDFFcnJvcihyZXF1ZXN0LCBuZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlNDAxRXJyb3IocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWZyZXNoaW5nVG9rZW4pIHtcclxuICAgICAgdGhpcy5pc1JlZnJlc2hpbmdUb2tlbiA9IHRydWU7XHJcbiAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEucmVzdWx0KSB7XHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBsb2NhbCBzdG9yYWdlIHdpdGggdGhlIG5ldyB0b2tlblxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmF1dGhsb2NhbFN0b3JhZ2VUb2tlbiwgSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEucmVzdWx0KSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBDbG9uZSB0aGUgcmVxdWVzdCB3aXRoIHRoZSBuZXcgdG9rZW5cclxuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xyXG4gICAgICAgICAgICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtyZXMuZGF0YS5yZXN1bHQuYXV0aGVudGljYXRpb25Ub2tlbn1gXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICBcclxuICAgICAgICAgICAgLy8gUmVzZXQgdGhlIGZsYWcgZm9yIHRva2VuIHJlZnJlc2hpbmdcclxuICAgICAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmdUb2tlbiA9IGZhbHNlO1xyXG4gIFxyXG4gICAgICAgICAgICAvLyBSZXRyeSB0aGUgb3JpZ2luYWwgcmVxdWVzdCB3aXRoIHRoZSBuZXcgdG9rZW5cclxuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gTG9nb3V0IHVzZXIgaWYgcmVmcmVzaCB0b2tlbiBmYWlsc1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignVG9rZW4gRXhwaXJlZCBQbGVhc2UgTG9naW4gQWdhaW4hJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIC8vIExvZ291dCB1c2VyIGlmIHJlZnJlc2ggdG9rZW4gZmFpbHNcclxuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0KCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIElmIGFscmVhZHkgcmVmcmVzaGluZyB0aGUgdG9rZW4sIHF1ZXVlIHRoZSByZXF1ZXN0IGFuZCB3YWl0XHJcbiAgICAgIHJldHVybiB0aGlzLnRva2VuUmVmcmVzaGVkLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHRva2VuczogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmF1dGhsb2NhbFN0b3JhZ2VUb2tlbikgfHwgJ3t9Jyk7XHJcbiAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgICAgICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyB0b2tlbnMuYXV0aGVudGljYXRpb25Ub2tlblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxufSJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { Component, Input } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../../../../services/auth.service";
4
5
  import * as i2 from "@angular/router";
@@ -19,6 +20,8 @@ export class SidebarFooterComponent {
19
20
  currentLayoutType;
20
21
  userValuefooter = '';
21
22
  toggleAttr;
23
+ shouldShowMenuTop = true;
24
+ destroy$ = new Subject();
22
25
  constructor(auth, router, layout) {
23
26
  this.auth = auth;
24
27
  this.router = router;
@@ -27,7 +30,7 @@ export class SidebarFooterComponent {
27
30
  ngOnInit() {
28
31
  this.toggleAttr = `app-sidebar-${this.toggleType}`;
29
32
  const layoutSubscr = this.layout.currentLayoutTypeSubject
30
- .asObservable()
33
+ .asObservable().pipe(takeUntil(this.destroy$))
31
34
  .subscribe((layout) => {
32
35
  this.currentLayoutType = layout;
33
36
  });
@@ -61,13 +64,16 @@ export class SidebarFooterComponent {
61
64
  // }
62
65
  }
63
66
  logout() {
64
- this.auth.logout().subscribe((res) => {
65
- this.router.navigate(["/auth/login"]);
66
- });
67
+ this.auth.logout();
68
+ // .pipe(takeUntil(this.destroy$)).subscribe((res:any)=>{
69
+ this.router.navigate(["/auth/login"]);
70
+ // })
67
71
  localStorage.clear();
68
72
  }
69
73
  ngOnDestroy() {
70
- this.unsubscribe.forEach((sb) => sb.unsubscribe());
74
+ // this.unsubscribe.forEach((sb) => sb.unsubscribe());
75
+ this.destroy$.next(true);
76
+ this.destroy$.complete();
71
77
  }
72
78
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SidebarFooterComponent, deps: [{ token: i1.AuthService }, { token: i2.Router }, { token: i3.LayoutService }], target: i0.ɵɵFactoryTarget.Component });
73
79
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: SidebarFooterComponent, selector: "lib-sidebar-footer", inputs: { toggleButtonClass: "toggleButtonClass", toggleEnabled: "toggleEnabled", toggleType: "toggleType", toggleState: "toggleState", userValuefooter: "userValuefooter" }, ngImport: i0, template: "<div class=\"container-with-overflow\">\r\n <div id=\"kt_app_sidebar_menu_scroll\" class=\"\" data-kt-scroll=\"true\" data-kt-scroll-activate=\"true\"\r\n data-kt-scroll-height=\"auto\" data-kt-scroll-dependencies=\"#kt_app_sidebar_logo, #kt_app_sidebar_footer\"\r\n data-kt-scroll-wrappers=\"#kt_app_sidebar_menu\" data-kt-scroll-offset=\"5px\" data-kt-scroll-save-state=\"true\">\r\n <div class=\"menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6\" id=\"kt_app_sidebar_menu\"\r\n data-kt-menu=\"true\" data-kt-menu-expand=\"false\">\r\n <div class=\"menu-item menu-accordion w-100 px-3\" id=\"#kt_app_sidebar_menu\" [ngClass]=\"{'active': isSubMenuActive}\"\r\n data-kt-menu-trigger=\"click\" routerLinkActive=\"here show\">\r\n <span class=\"menu-link without-sub\">\r\n <span class=\"menu-icon\">\r\n <img src=\"./assets/tango/Icons/Avatar.svg\">\r\n </span>\r\n <span class=\"menu-title\" data-link=\"/crafted/account\">{{ userValue.userName | titlecase}}<br>\r\n {{ userValue.email | titlecase}}</span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion w-100\" #accordion [ngClass]=\"{'menu-sub-top': isSubMenuActive}\"\r\n routerLinkActive=\"menu-active-bg\">\r\n <div class=\"menu-item px-3 border-profile-first\">\r\n <a class=\"menu-link without-sub\" href=\"/profile\" >\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M11.8574 3.83162C11.8574 5.94799 10.0668 7.66324 7.85742 7.66324C5.64805 7.66324 3.85742 5.94799 3.85742 3.83162C3.85742 1.71525 5.64805 0 7.85742 0C10.0668 0 11.8574 1.71525 11.8574 3.83162Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M6.36786 9.38452C2.85 9.38452 0 11.9226 0 15.0554C0 15.577 0.475 16.0001 1.06071 16.0001H14.9393C15.525 16.0001 16 15.577 16 15.0554C16 11.9226 13.15 9.38452 9.63214 9.38452H6.36786Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\">Profile</span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M14.2222 11.5556V8C14.2222 4.56356 11.4364 1.77778 8 1.77778C4.56356 1.77778 1.77778 4.56356 1.77778 8V11.5556H14.2222ZM16 11.5556H0V8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8V11.5556Z\"\r\n fill=\"#D0D5DD\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M1.77778 9.77759H2.66667C3.64851 9.77759 4.44444 10.5735 4.44444 11.5554V14.222C4.44444 15.2039 3.64851 15.9998 2.66667 15.9998H1.77778C0.795938 15.9998 0 15.2039 0 14.222V11.5554C0 10.5735 0.795938 9.77759 1.77778 9.77759ZM13.3333 9.77759H14.2222C15.2041 9.77759 16 10.5735 16 11.5554V14.222C16 15.2039 15.2041 15.9998 14.2222 15.9998H13.3333C12.3515 15.9998 11.5556 15.2039 11.5556 14.222V11.5554C11.5556 10.5735 12.3515 9.77759 13.3333 9.77759Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\">Support</span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" (click)=\"logout()\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path\r\n d=\"M5 13H2.33333C1.97971 13 1.64057 12.8595 1.39052 12.6095C1.14048 12.3594 1 12.0203 1 11.6667V2.33333C1 1.97971 1.14048 1.64057 1.39052 1.39052C1.64057 1.14048 1.97971 1 2.33333 1H5\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M9.66667 10.3332L13 6.99984M13 6.99984L9.66667 3.6665M13 6.99984H5\" stroke=\"#D0D5DD\"\r\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\">Logout</span>\r\n </a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".menu{background:var(--Gray-700, #344054)}.menu .menu-item{position:relative;background:var(--Gray-700, #344054)}.menu .border-profile-first{border-top-left-radius:8px;border-top-right-radius:8px}.menu .menu-sub{position:absolute;top:100;bottom:calc(100% + 5px);left:0}.menu .menu-sub-top{bottom:auto;top:calc(100% + 5px)}.menu-sub-indention .menu-sub{margin-left:0rem!important}.custom-scroll{max-height:300px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }] });
@@ -86,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
86
92
  }], userValuefooter: [{
87
93
  type: Input
88
94
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3NpZGViYXIvc2lkZWJhci1mb290ZXIvc2lkZWJhci1mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3NpZGViYXIvc2lkZWJhci1mb290ZXIvc2lkZWJhci1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVcEUsTUFBTSxPQUFPLHNCQUFzQjtJQVliO0lBQTJCO0lBQXVCO0lBWHRFLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFDakMsU0FBUyxDQUFNO0lBQ2YsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNSLFdBQVcsR0FBbUIsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQixHQUFXLEVBQUUsQ0FBQztJQUMvQixhQUFhLENBQVU7SUFDdkIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ2xDLGlCQUFpQixDQUFvQjtJQUM1QixlQUFlLEdBQU0sRUFBRSxDQUFDO0lBQ2pDLFVBQVUsQ0FBUztJQUNuQixZQUFvQixJQUFpQixFQUFVLE1BQWMsRUFBUyxNQUFxQjtRQUF2RSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWU7SUFBRyxDQUFDO0lBRS9GLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCO2FBQ3RELFlBQVksRUFBRTthQUNkLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxJQUFJLFdBQVcsSUFBSSxZQUFZLEVBQUU7WUFDL0IsTUFBTSxRQUFRLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FDOUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQzFDLENBQUM7WUFDRixXQUFXO1lBQ1gsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUk7U0FDTDtJQUNILENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGVBQWUsR0FBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDNUMsd0ZBQXdGO1FBQ3hGLGlCQUFpQjtRQUNqQixpRkFBaUY7UUFDakYsb0JBQW9CO1FBQ3BCLGlIQUFpSDtRQUNqSCwrQ0FBK0M7UUFDL0MsK0NBQStDO1FBQy9DLDRGQUE0RjtRQUM1RiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLDRDQUE0QztRQUM1QyxlQUFlO1FBQ2Ysc0NBQXNDO1FBQ3RDLFFBQVE7UUFDUiwyQkFBMkI7UUFDM0IsTUFBTTtRQUNOLElBQUk7SUFDTixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7dUdBN0RVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLHdPQ1ZuQyxpeEpBbUVNOzsyRkR6RE8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjtpSUFTckIsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlLCBMYXlvdXRUeXBlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1zaWRlYmFyLWZvb3RlclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2lkZWJhci1mb290ZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc2lkZWJhci1mb290ZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlYmFyRm9vdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcbiAgaXNTdWJNZW51QWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdXNlclZhbHVlOiBhbnk7XHJcbiAgaG92ZXJlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgQElucHV0KCkgdG9nZ2xlQnV0dG9uQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHRvZ2dsZUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdG9nZ2xlVHlwZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdG9nZ2xlU3RhdGU6IHN0cmluZyA9ICcnO1xyXG4gIGN1cnJlbnRMYXlvdXRUeXBlOiBMYXlvdXRUeXBlIHwgbnVsbDtcclxuICBASW5wdXQoKSB1c2VyVmFsdWVmb290ZXI6IGFueT0nJztcclxuICB0b2dnbGVBdHRyOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoOiBBdXRoU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixwcml2YXRlIGxheW91dDogTGF5b3V0U2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvZ2dsZUF0dHIgPSBgYXBwLXNpZGViYXItJHt0aGlzLnRvZ2dsZVR5cGV9YDtcclxuICAgIGNvbnN0IGxheW91dFN1YnNjciA9IHRoaXMubGF5b3V0LmN1cnJlbnRMYXlvdXRUeXBlU3ViamVjdFxyXG4gICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgLnN1YnNjcmliZSgobGF5b3V0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGF5b3V0VHlwZSA9IGxheW91dDtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLnB1c2gobGF5b3V0U3Vic2NyKTtcclxuICAgIGlmICgndXNlci1pbmZvJyBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIHx8IFwie31cIlxyXG4gICAgICApO1xyXG4gICAgICAvLyBkZWJ1Z2dlclxyXG4gICAgICAvLyBpZih0aGlzLnVzZXJWYWx1ZWZvb3RlciA9PT0nJyl7XHJcbiAgICAgIHRoaXMudXNlclZhbHVlID0gdXNlckRhdGE7XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcbiAgdG9nZ2xlTWVudSgpIHtcclxuICAgIHRoaXMuaXNTdWJNZW51QWN0aXZlID0hdGhpcy5pc1N1Yk1lbnVBY3RpdmU7XHJcbiAgICAvLyBjb25zdCBzdWJtZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1lbnUtc3ViJykgYXMgSFRNTEVsZW1lbnQ7IC8vIFR5cGUgYXNzZXJ0aW9uXHJcbiAgICAvLyBpZiAoc3VibWVudSkge1xyXG4gICAgLy8gICBjb25zdCBtZW51SXRlbSA9IHN1Ym1lbnUucGFyZW50RWxlbWVudDsgLy8gR2V0IHRoZSBwYXJlbnQgZWxlbWVudCBvZiBzdWJtZW51XHJcbiAgICAvLyAgIGlmIChtZW51SXRlbSkge1xyXG4gICAgLy8gICAgIGNvbnN0IG1lbnVJdGVtUmVjdCA9IG1lbnVJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyAvLyBHZXQgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgcGFyZW50IGVsZW1lbnRcclxuICAgIC8vICAgICBjb25zdCBtZW51SGVpZ2h0ID0gc3VibWVudS5vZmZzZXRIZWlnaHQ7XHJcbiAgICAvLyAgICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgLy8gICAgIC8vIGNvbnN0IG9mZnNldCA9IG1lbnVJdGVtUmVjdC50b3AgKyBtZW51SXRlbVJlY3QuaGVpZ2h0ICsgbWVudUhlaWdodCAtIHdpbmRvd0hlaWdodDtcclxuICAgIC8vICAgICBjb25zdCBvZmZzZXQgID0gMTAwXHJcbiAgICAvLyAgICAgaWYgKG9mZnNldCA+IDApIHtcclxuICAgIC8vICAgICAgIHN1Ym1lbnUuc3R5bGUudG9wID0gYC0ke29mZnNldH1weGA7XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIHN1Ym1lbnUuc3R5bGUudG9wID0gJzE4MDBweCc7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKHN1Ym1lbnUpXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIHRoaXMuYXV0aC5sb2dvdXQoKS5zdWJzY3JpYmUoKHJlczphbnkpPT57XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvYXV0aC9sb2dpblwiXSk7XHJcbiAgICB9KVxyXG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5mb3JFYWNoKChzYikgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLXdpdGgtb3ZlcmZsb3dcIj5cclxuICA8ZGl2IGlkPVwia3RfYXBwX3NpZGViYXJfbWVudV9zY3JvbGxcIiBjbGFzcz1cIlwiIGRhdGEta3Qtc2Nyb2xsPVwidHJ1ZVwiIGRhdGEta3Qtc2Nyb2xsLWFjdGl2YXRlPVwidHJ1ZVwiXHJcbiAgICBkYXRhLWt0LXNjcm9sbC1oZWlnaHQ9XCJhdXRvXCIgZGF0YS1rdC1zY3JvbGwtZGVwZW5kZW5jaWVzPVwiI2t0X2FwcF9zaWRlYmFyX2xvZ28sICNrdF9hcHBfc2lkZWJhcl9mb290ZXJcIlxyXG4gICAgZGF0YS1rdC1zY3JvbGwtd3JhcHBlcnM9XCIja3RfYXBwX3NpZGViYXJfbWVudVwiIGRhdGEta3Qtc2Nyb2xsLW9mZnNldD1cIjVweFwiIGRhdGEta3Qtc2Nyb2xsLXNhdmUtc3RhdGU9XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudSBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1zdWItaW5kZW50aW9uIGZ3LXNlbWlib2xkIGZzLTZcIiBpZD1cImt0X2FwcF9zaWRlYmFyX21lbnVcIlxyXG4gICAgICBkYXRhLWt0LW1lbnU9XCJ0cnVlXCIgZGF0YS1rdC1tZW51LWV4cGFuZD1cImZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gbWVudS1hY2NvcmRpb24gdy0xMDAgcHgtM1wiIGlkPVwiI2t0X2FwcF9zaWRlYmFyX21lbnVcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzU3ViTWVudUFjdGl2ZX1cIlxyXG4gICAgICAgIGRhdGEta3QtbWVudS10cmlnZ2VyPVwiY2xpY2tcIiByb3V0ZXJMaW5rQWN0aXZlPVwiaGVyZSBzaG93XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmsgd2l0aG91dC1zdWJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pY29uXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvQXZhdGFyLnN2Z1wiPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXRpdGxlXCIgZGF0YS1saW5rPVwiL2NyYWZ0ZWQvYWNjb3VudFwiPnt7IHVzZXJWYWx1ZS51c2VyTmFtZSB8IHRpdGxlY2FzZX19PGJyPlxyXG4gICAgICAgICAge3sgdXNlclZhbHVlLmVtYWlsIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LXN1YiBtZW51LXN1Yi1hY2NvcmRpb24gdy0xMDBcIiAjYWNjb3JkaW9uIFtuZ0NsYXNzXT1cInsnbWVudS1zdWItdG9wJzogaXNTdWJNZW51QWN0aXZlfVwiXHJcbiAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwibWVudS1hY3RpdmUtYmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gcHgtMyBib3JkZXItcHJvZmlsZS1maXJzdFwiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1lbnUtbGluayB3aXRob3V0LXN1YlwiIGhyZWY9XCIvcHJvZmlsZVwiID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtYnVsbGV0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjg1NzQgMy44MzE2MkMxMS44NTc0IDUuOTQ3OTkgMTAuMDY2OCA3LjY2MzI0IDcuODU3NDIgNy42NjMyNEM1LjY0ODA1IDcuNjYzMjQgMy44NTc0MiA1Ljk0Nzk5IDMuODU3NDIgMy44MzE2MkMzLjg1NzQyIDEuNzE1MjUgNS42NDgwNSAwIDcuODU3NDIgMEMxMC4wNjY4IDAgMTEuODU3NCAxLjcxNTI1IDExLjg1NzQgMy44MzE2MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMzY3ODYgOS4zODQ1MkMyLjg1IDkuMzg0NTIgMCAxMS45MjI2IDAgMTUuMDU1NEMwIDE1LjU3NyAwLjQ3NSAxNi4wMDAxIDEuMDYwNzEgMTYuMDAwMUgxNC45MzkzQzE1LjUyNSAxNi4wMDAxIDE2IDE1LjU3NyAxNiAxNS4wNTU0QzE2IDExLjkyMjYgMTMuMTUgOS4zODQ1MiA5LjYzMjE0IDkuMzg0NTJINi4zNjc4NlpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGVcIj5Qcm9maWxlPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMHB4O1wiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1lbnUtbGluayB3aXRob3V0LXN1YlwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtYnVsbGV0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4yMjIyIDExLjU1NTZWOEMxNC4yMjIyIDQuNTYzNTYgMTEuNDM2NCAxLjc3Nzc4IDggMS43Nzc3OEM0LjU2MzU2IDEuNzc3NzggMS43Nzc3OCA0LjU2MzU2IDEuNzc3NzggOFYxMS41NTU2SDE0LjIyMjJaTTE2IDExLjU1NTZIMFY4QzAgMy41ODE3MiAzLjU4MTcyIDAgOCAwQzEyLjQxODMgMCAxNiAzLjU4MTcyIDE2IDhWMTEuNTU1NlpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMS43Nzc3OCA5Ljc3NzU5SDIuNjY2NjdDMy42NDg1MSA5Ljc3NzU5IDQuNDQ0NDQgMTAuNTczNSA0LjQ0NDQ0IDExLjU1NTRWMTQuMjIyQzQuNDQ0NDQgMTUuMjAzOSAzLjY0ODUxIDE1Ljk5OTggMi42NjY2NyAxNS45OTk4SDEuNzc3NzhDMC43OTU5MzggMTUuOTk5OCAwIDE1LjIwMzkgMCAxNC4yMjJWMTEuNTU1NEMwIDEwLjU3MzUgMC43OTU5MzggOS43Nzc1OSAxLjc3Nzc4IDkuNzc3NTlaTTEzLjMzMzMgOS43Nzc1OUgxNC4yMjIyQzE1LjIwNDEgOS43Nzc1OSAxNiAxMC41NzM1IDE2IDExLjU1NTRWMTQuMjIyQzE2IDE1LjIwMzkgMTUuMjA0MSAxNS45OTk4IDE0LjIyMjIgMTUuOTk5OEgxMy4zMzMzQzEyLjM1MTUgMTUuOTk5OCAxMS41NTU2IDE1LjIwMzkgMTEuNTU1NiAxNC4yMjJWMTEuNTU1NEMxMS41NTU2IDEwLjU3MzUgMTIuMzUxNSA5Ljc3NzU5IDEzLjMzMzMgOS43Nzc1OVpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGVcIj5TdXBwb3J0PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMHB4O1wiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1lbnUtbGluayB3aXRob3V0LXN1YlwiIChjbGljayk9XCJsb2dvdXQoKVwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtYnVsbGV0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTUgMTNIMi4zMzMzM0MxLjk3OTcxIDEzIDEuNjQwNTcgMTIuODU5NSAxLjM5MDUyIDEyLjYwOTVDMS4xNDA0OCAxMi4zNTk0IDEgMTIuMDIwMyAxIDExLjY2NjdWMi4zMzMzM0MxIDEuOTc5NzEgMS4xNDA0OCAxLjY0MDU3IDEuMzkwNTIgMS4zOTA1MkMxLjY0MDU3IDEuMTQwNDggMS45Nzk3MSAxIDIuMzMzMzMgMUg1XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS42NjY2NyAxMC4zMzMyTDEzIDYuOTk5ODRNMTMgNi45OTk4NEw5LjY2NjY3IDMuNjY2NU0xMyA2Ljk5OTg0SDVcIiBzdHJva2U9XCIjRDBENUREXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGVcIj5Mb2dvdXQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3NpZGViYXIvc2lkZWJhci1mb290ZXIvc2lkZWJhci1mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3NpZGViYXIvc2lkZWJhci1mb290ZXIvc2lkZWJhci1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBR3BFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBT3hELE1BQU0sT0FBTyxzQkFBc0I7SUFjYjtJQUEyQjtJQUF1QjtJQWJ0RSxlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2pDLFNBQVMsQ0FBTTtJQUNmLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDUixXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUIsR0FBVyxFQUFFLENBQUM7SUFDL0IsYUFBYSxDQUFVO0lBQ3ZCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUNsQyxpQkFBaUIsQ0FBb0I7SUFDNUIsZUFBZSxHQUFNLEVBQUUsQ0FBQztJQUNqQyxVQUFVLENBQVM7SUFDbkIsaUJBQWlCLEdBQVksSUFBSSxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFlBQW9CLElBQWlCLEVBQVUsTUFBYyxFQUFTLE1BQXFCO1FBQXZFLFNBQUksR0FBSixJQUFJLENBQWE7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFHLENBQUM7SUFFL0YsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0I7YUFDdEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDN0MsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLElBQUksV0FBVyxJQUFJLFlBQVksRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUM5QixZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FDMUMsQ0FBQztZQUNGLFdBQVc7WUFDWCxrQ0FBa0M7WUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSTtTQUNMO0lBQ0gsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsZUFBZSxHQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1Qyx3RkFBd0Y7UUFDeEYsaUJBQWlCO1FBQ2pCLGlGQUFpRjtRQUNqRixvQkFBb0I7UUFDcEIsaUhBQWlIO1FBQ2pILCtDQUErQztRQUMvQywrQ0FBK0M7UUFDL0MsNEZBQTRGO1FBQzVGLDBCQUEwQjtRQUMxQix3QkFBd0I7UUFDeEIsNENBQTRDO1FBQzVDLGVBQWU7UUFDZixzQ0FBc0M7UUFDdEMsUUFBUTtRQUNSLDJCQUEyQjtRQUMzQixNQUFNO1FBQ04sSUFBSTtJQUNOLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUNsQix5REFBeUQ7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLEtBQUs7UUFDTCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELFdBQVc7UUFDVCxzREFBc0Q7UUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO3VHQWxFVSxzQkFBc0I7MkZBQXRCLHNCQUFzQix3T0NWbkMsaXhKQW1FTTs7MkZEekRPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7aUlBU3JCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlLCBMYXlvdXRUeXBlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1zaWRlYmFyLWZvb3RlclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2lkZWJhci1mb290ZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc2lkZWJhci1mb290ZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlYmFyRm9vdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcbiAgaXNTdWJNZW51QWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdXNlclZhbHVlOiBhbnk7XHJcbiAgaG92ZXJlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgQElucHV0KCkgdG9nZ2xlQnV0dG9uQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHRvZ2dsZUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdG9nZ2xlVHlwZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdG9nZ2xlU3RhdGU6IHN0cmluZyA9ICcnO1xyXG4gIGN1cnJlbnRMYXlvdXRUeXBlOiBMYXlvdXRUeXBlIHwgbnVsbDtcclxuICBASW5wdXQoKSB1c2VyVmFsdWVmb290ZXI6IGFueT0nJztcclxuICB0b2dnbGVBdHRyOiBzdHJpbmc7XHJcbiAgc2hvdWxkU2hvd01lbnVUb3A6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIscHJpdmF0ZSBsYXlvdXQ6IExheW91dFNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b2dnbGVBdHRyID0gYGFwcC1zaWRlYmFyLSR7dGhpcy50b2dnbGVUeXBlfWA7XHJcbiAgICBjb25zdCBsYXlvdXRTdWJzY3IgPSB0aGlzLmxheW91dC5jdXJyZW50TGF5b3V0VHlwZVN1YmplY3RcclxuICAgICAgLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsYXlvdXQpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMYXlvdXRUeXBlID0gbGF5b3V0O1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUucHVzaChsYXlvdXRTdWJzY3IpO1xyXG4gICAgaWYgKCd1c2VyLWluZm8nIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShcclxuICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcbiAgICAgIC8vIGRlYnVnZ2VyXHJcbiAgICAgIC8vIGlmKHRoaXMudXNlclZhbHVlZm9vdGVyID09PScnKXtcclxuICAgICAgdGhpcy51c2VyVmFsdWUgPSB1c2VyRGF0YTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gIH1cclxuICB0b2dnbGVNZW51KCkge1xyXG4gICAgdGhpcy5pc1N1Yk1lbnVBY3RpdmUgPSF0aGlzLmlzU3ViTWVudUFjdGl2ZTtcclxuICAgIC8vIGNvbnN0IHN1Ym1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWVudS1zdWInKSBhcyBIVE1MRWxlbWVudDsgLy8gVHlwZSBhc3NlcnRpb25cclxuICAgIC8vIGlmIChzdWJtZW51KSB7XHJcbiAgICAvLyAgIGNvbnN0IG1lbnVJdGVtID0gc3VibWVudS5wYXJlbnRFbGVtZW50OyAvLyBHZXQgdGhlIHBhcmVudCBlbGVtZW50IG9mIHN1Ym1lbnVcclxuICAgIC8vICAgaWYgKG1lbnVJdGVtKSB7XHJcbiAgICAvLyAgICAgY29uc3QgbWVudUl0ZW1SZWN0ID0gbWVudUl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IC8vIEdldCB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBwYXJlbnQgZWxlbWVudFxyXG4gICAgLy8gICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBzdWJtZW51Lm9mZnNldEhlaWdodDtcclxuICAgIC8vICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICAvLyAgICAgLy8gY29uc3Qgb2Zmc2V0ID0gbWVudUl0ZW1SZWN0LnRvcCArIG1lbnVJdGVtUmVjdC5oZWlnaHQgKyBtZW51SGVpZ2h0IC0gd2luZG93SGVpZ2h0O1xyXG4gICAgLy8gICAgIGNvbnN0IG9mZnNldCAgPSAxMDBcclxuICAgIC8vICAgICBpZiAob2Zmc2V0ID4gMCkge1xyXG4gICAgLy8gICAgICAgc3VibWVudS5zdHlsZS50b3AgPSBgLSR7b2Zmc2V0fXB4YDtcclxuICAgIC8vICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgc3VibWVudS5zdHlsZS50b3AgPSAnMTgwMHB4JztcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coc3VibWVudSlcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgbG9nb3V0KCkge1xyXG4gICAgdGhpcy5hdXRoLmxvZ291dCgpXHJcbiAgICAvLyAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOmFueSk9PntcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9hdXRoL2xvZ2luXCJdKTtcclxuICAgIC8vIH0pXHJcbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyB0aGlzLnVuc3Vic2NyaWJlLmZvckVhY2goKHNiKSA9PiBzYi51bnN1YnNjcmliZSgpKTtcclxuICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLXdpdGgtb3ZlcmZsb3dcIj5cclxuICA8ZGl2IGlkPVwia3RfYXBwX3NpZGViYXJfbWVudV9zY3JvbGxcIiBjbGFzcz1cIlwiIGRhdGEta3Qtc2Nyb2xsPVwidHJ1ZVwiIGRhdGEta3Qtc2Nyb2xsLWFjdGl2YXRlPVwidHJ1ZVwiXHJcbiAgICBkYXRhLWt0LXNjcm9sbC1oZWlnaHQ9XCJhdXRvXCIgZGF0YS1rdC1zY3JvbGwtZGVwZW5kZW5jaWVzPVwiI2t0X2FwcF9zaWRlYmFyX2xvZ28sICNrdF9hcHBfc2lkZWJhcl9mb290ZXJcIlxyXG4gICAgZGF0YS1rdC1zY3JvbGwtd3JhcHBlcnM9XCIja3RfYXBwX3NpZGViYXJfbWVudVwiIGRhdGEta3Qtc2Nyb2xsLW9mZnNldD1cIjVweFwiIGRhdGEta3Qtc2Nyb2xsLXNhdmUtc3RhdGU9XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudSBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1zdWItaW5kZW50aW9uIGZ3LXNlbWlib2xkIGZzLTZcIiBpZD1cImt0X2FwcF9zaWRlYmFyX21lbnVcIlxyXG4gICAgICBkYXRhLWt0LW1lbnU9XCJ0cnVlXCIgZGF0YS1rdC1tZW51LWV4cGFuZD1cImZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gbWVudS1hY2NvcmRpb24gdy0xMDAgcHgtM1wiIGlkPVwiI2t0X2FwcF9zaWRlYmFyX21lbnVcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzU3ViTWVudUFjdGl2ZX1cIlxyXG4gICAgICAgIGRhdGEta3QtbWVudS10cmlnZ2VyPVwiY2xpY2tcIiByb3V0ZXJMaW5rQWN0aXZlPVwiaGVyZSBzaG93XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmsgd2l0aG91dC1zdWJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pY29uXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvQXZhdGFyLnN2Z1wiPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LXRpdGxlXCIgZGF0YS1saW5rPVwiL2NyYWZ0ZWQvYWNjb3VudFwiPnt7IHVzZXJWYWx1ZS51c2VyTmFtZSB8IHRpdGxlY2FzZX19PGJyPlxyXG4gICAgICAgICAge3sgdXNlclZhbHVlLmVtYWlsIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LXN1YiBtZW51LXN1Yi1hY2NvcmRpb24gdy0xMDBcIiAjYWNjb3JkaW9uIFtuZ0NsYXNzXT1cInsnbWVudS1zdWItdG9wJzogaXNTdWJNZW51QWN0aXZlfVwiXHJcbiAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwibWVudS1hY3RpdmUtYmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gcHgtMyBib3JkZXItcHJvZmlsZS1maXJzdFwiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1lbnUtbGluayB3aXRob3V0LXN1YlwiIGhyZWY9XCIvcHJvZmlsZVwiID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtYnVsbGV0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjg1NzQgMy44MzE2MkMxMS44NTc0IDUuOTQ3OTkgMTAuMDY2OCA3LjY2MzI0IDcuODU3NDIgNy42NjMyNEM1LjY0ODA1IDcuNjYzMjQgMy44NTc0MiA1Ljk0Nzk5IDMuODU3NDIgMy44MzE2MkMzLjg1NzQyIDEuNzE1MjUgNS42NDgwNSAwIDcuODU3NDIgMEMxMC4wNjY4IDAgMTEuODU3NCAxLjcxNTI1IDExLjg1NzQgMy44MzE2MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOThBMkIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMzY3ODYgOS4zODQ1MkMyLjg1IDkuMzg0NTIgMCAxMS45MjI2IDAgMTUuMDU1NEMwIDE1LjU3NyAwLjQ3NSAxNi4wMDAxIDEuMDYwNzEgMTYuMDAwMUgxNC45MzkzQzE1LjUyNSAxNi4wMDAxIDE2IDE1LjU3NyAxNiAxNS4wNTU0QzE2IDExLjkyMjYgMTMuMTUgOS4zODQ1MiA5LjYzMjE0IDkuMzg0NTJINi4zNjc4NlpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGVcIj5Qcm9maWxlPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMHB4O1wiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1lbnUtbGluayB3aXRob3V0LXN1YlwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtYnVsbGV0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4yMjIyIDExLjU1NTZWOEMxNC4yMjIyIDQuNTYzNTYgMTEuNDM2NCAxLjc3Nzc4IDggMS43Nzc3OEM0LjU2MzU2IDEuNzc3NzggMS43Nzc3OCA0LjU2MzU2IDEuNzc3NzggOFYxMS41NTU2SDE0LjIyMjJaTTE2IDExLjU1NTZIMFY4QzAgMy41ODE3MiAzLjU4MTcyIDAgOCAwQzEyLjQxODMgMCAxNiAzLjU4MTcyIDE2IDhWMTEuNTU1NlpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMS43Nzc3OCA5Ljc3NzU5SDIuNjY2NjdDMy42NDg1MSA5Ljc3NzU5IDQuNDQ0NDQgMTAuNTczNSA0LjQ0NDQ0IDExLjU1NTRWMTQuMjIyQzQuNDQ0NDQgMTUuMjAzOSAzLjY0ODUxIDE1Ljk5OTggMi42NjY2NyAxNS45OTk4SDEuNzc3NzhDMC43OTU5MzggMTUuOTk5OCAwIDE1LjIwMzkgMCAxNC4yMjJWMTEuNTU1NEMwIDEwLjU3MzUgMC43OTU5MzggOS43Nzc1OSAxLjc3Nzc4IDkuNzc3NTlaTTEzLjMzMzMgOS43Nzc1OUgxNC4yMjIyQzE1LjIwNDEgOS43Nzc1OSAxNiAxMC41NzM1IDE2IDExLjU1NTRWMTQuMjIyQzE2IDE1LjIwMzkgMTUuMjA0MSAxNS45OTk4IDE0LjIyMjIgMTUuOTk5OEgxMy4zMzMzQzEyLjM1MTUgMTUuOTk5OCAxMS41NTU2IDE1LjIwMzkgMTEuNTU1NiAxNC4yMjJWMTEuNTU1NEMxMS41NTU2IDEwLjU3MzUgMTIuMzUxNSA5Ljc3NzU5IDEzLjMzMzMgOS43Nzc1OVpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGVcIj5TdXBwb3J0PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMHB4O1wiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1lbnUtbGluayB3aXRob3V0LXN1YlwiIChjbGljayk9XCJsb2dvdXQoKVwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtYnVsbGV0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTUgMTNIMi4zMzMzM0MxLjk3OTcxIDEzIDEuNjQwNTcgMTIuODU5NSAxLjM5MDUyIDEyLjYwOTVDMS4xNDA0OCAxMi4zNTk0IDEgMTIuMDIwMyAxIDExLjY2NjdWMi4zMzMzM0MxIDEuOTc5NzEgMS4xNDA0OCAxLjY0MDU3IDEuMzkwNTIgMS4zOTA1MkMxLjY0MDU3IDEuMTQwNDggMS45Nzk3MSAxIDIuMzMzMzMgMUg1XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS42NjY2NyAxMC4zMzMyTDEzIDYuOTk5ODRNMTMgNi45OTk4NEw5LjY2NjY3IDMuNjY2NU0xMyA2Ljk5OTg0SDVcIiBzdHJva2U9XCIjRDBENUREXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtdGl0bGVcIj5Mb2dvdXQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -4,11 +4,11 @@ const Routing = [
4
4
  path: 'manage',
5
5
  loadChildren: () => import('./route-wraper-modules/manage-wrapper.module').then((m) => m.ManageWrapperModule),
6
6
  },
7
- {
8
- path: 'manage/stores/edge-app',
9
- loadChildren: () => import('./route-wraper-modules/edge-wrapper.module').then((m) => m.TangoEdgeAppWrapperModule),
10
- canActivate: [storesGuard]
11
- },
7
+ // {
8
+ // path: 'manage/stores/edge-app',
9
+ // loadChildren: () => import('./route-wraper-modules/edge-wrapper.module').then((m) => m.TangoEdgeAppWrapperModule),
10
+ // canActivate:[storesGuard]
11
+ // },
12
12
  {
13
13
  path: 'manage/stores/:id',
14
14
  loadChildren: () => import('./route-wraper-modules/store-wrapper.module').then((m) => m.StoreWrapperModule),
@@ -34,4 +34,4 @@ const Routing = [
34
34
  },
35
35
  ];
36
36
  export { Routing };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9yb3V0ZXMvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJckQsTUFBTSxPQUFPLEdBQVc7SUFDdEI7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsOENBQThDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztLQUM5RztJQUNEO1FBQ0UsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDRDQUE0QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUM7UUFDakgsV0FBVyxFQUFDLENBQUMsV0FBVyxDQUFDO0tBQzFCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsNkNBQTZDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUMzRyxXQUFXLEVBQUMsQ0FBQyxXQUFXLENBQUM7S0FDMUI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO0tBQ2hIO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsOENBQThDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztRQUM3Ryw2QkFBNkI7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsVUFBVSxFQUFFLFNBQVM7UUFDckIsU0FBUyxFQUFFLE1BQU07S0FDbEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsVUFBVSxFQUFFLFdBQVc7S0FDeEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgc3RvcmVzR3VhcmQgfSBmcm9tICcuLi9ndWFyZHMvc3RvcmVzLmd1YXJkJztcclxuaW1wb3J0IHsgdGlja2V0c0d1YXJkIH0gZnJvbSAnLi4vZ3VhcmRzL3RpY2tldHMuZ3VhcmQnO1xyXG5cclxuXHJcbmNvbnN0IFJvdXRpbmc6IFJvdXRlcyA9IFtcclxuICB7XHJcbiAgICBwYXRoOiAnbWFuYWdlJyxcclxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuL3JvdXRlLXdyYXBlci1tb2R1bGVzL21hbmFnZS13cmFwcGVyLm1vZHVsZScpLnRoZW4oKG0pID0+IG0uTWFuYWdlV3JhcHBlck1vZHVsZSksXHJcbiAgfSxcclxuICB7XHJcbiAgICBwYXRoOiAnbWFuYWdlL3N0b3Jlcy9lZGdlLWFwcCcsXHJcbiAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9yb3V0ZS13cmFwZXItbW9kdWxlcy9lZGdlLXdyYXBwZXIubW9kdWxlJykudGhlbigobSkgPT4gbS5UYW5nb0VkZ2VBcHBXcmFwcGVyTW9kdWxlKSxcclxuICAgIGNhbkFjdGl2YXRlOltzdG9yZXNHdWFyZF1cclxuICB9LFxyXG4gIHtcclxuICAgIHBhdGg6ICdtYW5hZ2Uvc3RvcmVzLzppZCcsXHJcbiAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9yb3V0ZS13cmFwZXItbW9kdWxlcy9zdG9yZS13cmFwcGVyLm1vZHVsZScpLnRoZW4oKG0pID0+IG0uU3RvcmVXcmFwcGVyTW9kdWxlKSxcclxuICAgIGNhbkFjdGl2YXRlOltzdG9yZXNHdWFyZF1cclxuICB9LFxyXG4gIHtcclxuICAgIHBhdGg6ICdwcm9maWxlJyxcclxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuL3JvdXRlLXdyYXBlci1tb2R1bGVzL3Byb2ZpbGUtd3JhcHBlci5tb2R1bGUnKS50aGVuKChtKSA9PiBtLlByb2ZpbGVXcmFwcGVyTW9kdWxlKSxcclxuICB9LFxyXG4gIHtcclxuICAgIHBhdGg6ICd0aWNrZXRzJyxcclxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuL3JvdXRlLXdyYXBlci1tb2R1bGVzL3RpY2tldC13cmFwcGVyLm1vZHVsZScpLnRoZW4oKG0pID0+IG0uVGlja2V0V3JhcHBlck1vZHVsZSksXHJcbiAgICAvLyBjYW5BY3RpdmF0ZTpbdGlja2V0c0d1YXJkXVxyXG4gIH0sXHJcbiAge1xyXG4gICAgcGF0aDogJycsXHJcbiAgICByZWRpcmVjdFRvOiAnL21hbmFnZScsXHJcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcclxuICB9LFxyXG4gIHtcclxuICAgIHBhdGg6ICcqKicsXHJcbiAgICByZWRpcmVjdFRvOiAnZXJyb3IvNDA0JyxcclxuICB9LFxyXG5dO1xyXG5cclxuZXhwb3J0IHsgUm91dGluZyB9O1xyXG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9yb3V0ZXMvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJckQsTUFBTSxPQUFPLEdBQVc7SUFDdEI7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsOENBQThDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztLQUM5RztJQUNELElBQUk7SUFDSixvQ0FBb0M7SUFDcEMsdUhBQXVIO0lBQ3ZILDhCQUE4QjtJQUM5QixLQUFLO0lBQ0w7UUFDRSxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsNkNBQTZDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUMzRyxXQUFXLEVBQUMsQ0FBQyxXQUFXLENBQUM7S0FDMUI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO0tBQ2hIO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsOENBQThDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztRQUM3Ryw2QkFBNkI7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsVUFBVSxFQUFFLFNBQVM7UUFDckIsU0FBUyxFQUFFLE1BQU07S0FDbEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsVUFBVSxFQUFFLFdBQVc7S0FDeEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgc3RvcmVzR3VhcmQgfSBmcm9tICcuLi9ndWFyZHMvc3RvcmVzLmd1YXJkJztcclxuaW1wb3J0IHsgdGlja2V0c0d1YXJkIH0gZnJvbSAnLi4vZ3VhcmRzL3RpY2tldHMuZ3VhcmQnO1xyXG5cclxuXHJcbmNvbnN0IFJvdXRpbmc6IFJvdXRlcyA9IFtcclxuICB7XHJcbiAgICBwYXRoOiAnbWFuYWdlJyxcclxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuL3JvdXRlLXdyYXBlci1tb2R1bGVzL21hbmFnZS13cmFwcGVyLm1vZHVsZScpLnRoZW4oKG0pID0+IG0uTWFuYWdlV3JhcHBlck1vZHVsZSksXHJcbiAgfSxcclxuICAvLyB7XHJcbiAgLy8gICBwYXRoOiAnbWFuYWdlL3N0b3Jlcy9lZGdlLWFwcCcsXHJcbiAgLy8gICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9yb3V0ZS13cmFwZXItbW9kdWxlcy9lZGdlLXdyYXBwZXIubW9kdWxlJykudGhlbigobSkgPT4gbS5UYW5nb0VkZ2VBcHBXcmFwcGVyTW9kdWxlKSxcclxuICAvLyAgIGNhbkFjdGl2YXRlOltzdG9yZXNHdWFyZF1cclxuICAvLyB9LFxyXG4gIHtcclxuICAgIHBhdGg6ICdtYW5hZ2Uvc3RvcmVzLzppZCcsXHJcbiAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9yb3V0ZS13cmFwZXItbW9kdWxlcy9zdG9yZS13cmFwcGVyLm1vZHVsZScpLnRoZW4oKG0pID0+IG0uU3RvcmVXcmFwcGVyTW9kdWxlKSxcclxuICAgIGNhbkFjdGl2YXRlOltzdG9yZXNHdWFyZF1cclxuICB9LFxyXG4gIHtcclxuICAgIHBhdGg6ICdwcm9maWxlJyxcclxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuL3JvdXRlLXdyYXBlci1tb2R1bGVzL3Byb2ZpbGUtd3JhcHBlci5tb2R1bGUnKS50aGVuKChtKSA9PiBtLlByb2ZpbGVXcmFwcGVyTW9kdWxlKSxcclxuICB9LFxyXG4gIHtcclxuICAgIHBhdGg6ICd0aWNrZXRzJyxcclxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCcuL3JvdXRlLXdyYXBlci1tb2R1bGVzL3RpY2tldC13cmFwcGVyLm1vZHVsZScpLnRoZW4oKG0pID0+IG0uVGlja2V0V3JhcHBlck1vZHVsZSksXHJcbiAgICAvLyBjYW5BY3RpdmF0ZTpbdGlja2V0c0d1YXJkXVxyXG4gIH0sXHJcbiAge1xyXG4gICAgcGF0aDogJycsXHJcbiAgICByZWRpcmVjdFRvOiAnL21hbmFnZScsXHJcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcclxuICB9LFxyXG4gIHtcclxuICAgIHBhdGg6ICcqKicsXHJcbiAgICByZWRpcmVjdFRvOiAnZXJyb3IvNDA0JyxcclxuICB9LFxyXG5dO1xyXG5cclxuZXhwb3J0IHsgUm91dGluZyB9O1xyXG4iXX0=
@@ -4,7 +4,6 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/router";
5
5
  import * as i2 from "tango-app-ui-global";
6
6
  import * as i3 from "@angular/common/http";
7
- // import { GlobalStateService } from './global-state.service';
8
7
  export class AuthService {
9
8
  router;
10
9
  gs;
@@ -63,6 +62,17 @@ export class AuthService {
63
62
  return response;
64
63
  }), catchError(this.handleError));
65
64
  }
65
+ refreshToken() {
66
+ const userId = JSON.parse(localStorage.getItem("user-info") || "")?._id;
67
+ const refreshToken = JSON.parse(localStorage.getItem(this.authlocalStorageToken) || "")?.refreshToken;
68
+ let params = {
69
+ userId: userId,
70
+ refreshToken: refreshToken,
71
+ };
72
+ return this.http
73
+ .get(`${this.userApiUrl}/refresh-token`, { params: params })
74
+ .pipe(map((response) => response), catchError(this.handleError));
75
+ }
66
76
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuthService, deps: [{ token: i1.Router }, { token: i2.GlobalStateService }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
67
77
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuthService, providedIn: 'root' });
68
78
  }
@@ -72,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
72
82
  providedIn: 'root'
73
83
  }]
74
84
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.GlobalStateService }, { type: i3.HttpClient }] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFNLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFHbkUsK0RBQStEO0FBSy9ELE1BQU0sT0FBTyxXQUFXO0lBT0Y7SUFBc0I7SUFBOEI7SUFOeEUsWUFBWSxDQUFTO0lBQ3JCLHFCQUFxQixDQUFTO0lBQzlCLFVBQVUsQ0FBUztJQUNuQixXQUFXLENBQVM7SUFDcEIsZUFBZSxDQUFTO0lBRXhCLFlBQW9CLE1BQWEsRUFBUyxFQUFxQixFQUFTLElBQWU7UUFBbkUsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNyRixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtZQUNyQyxJQUFHLEdBQUcsRUFBQztnQkFDTixJQUFJLENBQUMsWUFBWSxHQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRSxHQUFHLENBQUMsV0FBVyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JFO1FBQ0YsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDO0lBRUosV0FBVyxDQUFDLEdBQVE7UUFDbkIsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxVQUFVO1FBQ1IsTUFBTSxPQUFPLEdBQUc7WUFDWixlQUFlLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUI7U0FDMUQsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFQyxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLFNBQVMsRUFBRTtZQUNoRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUMzQixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxjQUFjLEVBQUUsRUFDMUQsQ0FBQzthQUNHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUNsQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFNBQVMsQ0FBQyxFQUFNO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxFQUN2RSxDQUFDO2FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQ2xDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsdUJBQXVCLENBQUMsSUFBUTtRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsNkJBQTZCLEVBQUMsSUFBSSxFQUFFO1lBQy9FLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQzNCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQzthQUNqRSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNqRSxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUM3QixDQUFDO0lBQ04sQ0FBQzt1R0E3RFUsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIG1hcCwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbi8vIGltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJy4vZ2xvYmFsLXN0YXRlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gIGNsaWVudEFwaVVybDogc3RyaW5nO1xyXG4gIGF1dGhsb2NhbFN0b3JhZ2VUb2tlbjogc3RyaW5nO1xyXG4gIHVzZXJBcGlVcmw6IHN0cmluZztcclxuICBzdG9yZUFwaVVybDogc3RyaW5nO1xyXG4gIG9sZERhc2hib2FyZFVybDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjpSb3V0ZXIscHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBodHRwOkh0dHBDbGllbnQpIHsgIFxyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5zdWJzY3JpYmUoKGVudik9PntcclxuICAgIGlmKGVudil7XHJcbiAgICAgdGhpcy5jbGllbnRBcGlVcmwgPSAgZW52LmNsaWVudEFwaVVybDtcclxuICAgICB0aGlzLnVzZXJBcGlVcmwgPSBlbnYudXNlckFwaVVybDsgXHJcbiAgICAgdGhpcy5zdG9yZUFwaVVybCA9ZW52LnN0b3JlQXBpVXJsO1xyXG4gICAgIHRoaXMub2xkRGFzaGJvYXJkVXJsID1lbnYub2xkRGFzaGJvYXJkVXJsO1xyXG4gICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuID0gYCR7ZW52LmFwcFZlcnNpb259LSR7ZW52LlVTRVJEQVRBX0tFWX1gO1xyXG4gICAgfVxyXG4gICB9KSB9XHJcbiAgIFxyXG4gICBoYW5kbGVFcnJvcihyZXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzLmVycm9yKTtcclxufVxyXG5nZXRIZWFkZXJzKCkge1xyXG4gIGNvbnN0IGhlYWRlcnMgPSB7XHJcbiAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy5hdXRobG9jYWxTdG9yYWdlVG9rZW5cclxuICB9O1xyXG5cclxuICByZXR1cm4gaGVhZGVycztcclxufVxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnVzZXJBcGlVcmx9L2xvZ291dGAsIHtcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldENsaWVudHMoKXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9nZXQtY2xpZW50c2AsIHtcclxuICB9KVxyXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG4gIH1cclxuICBnZXRTdG9yZXMoaWQ6YW55KXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVBcGlVcmx9L2dldC1zdG9yZXM/Y2xpZW50SWQ9JHtpZH1gLCB7XHJcbiAgfSlcclxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxuICB9XHJcbiAgZ2V0T2xkRGFzaGJvYXJkUmVkaXJlY3QoZGF0YTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMub2xkRGFzaGJvYXJkVXJsfS9hdXRoL29sZERhc2hib2FyZFVzZXJMb2dpbmAsZGF0YSwge1xyXG4gICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKVxyXG4gICAgfSlcclxuICB9XHJcbiAgdXNlclByb2ZpbGVEZXQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChgJHt0aGlzLnVzZXJBcGlVcmx9L3Byb2ZpbGVgLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJ1c2VyLWluZm9cIiwgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSkpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFNLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFPbkUsTUFBTSxPQUFPLFdBQVc7SUFPRjtJQUFzQjtJQUE4QjtJQU54RSxZQUFZLENBQVM7SUFDckIscUJBQXFCLENBQVM7SUFDOUIsVUFBVSxDQUFTO0lBQ25CLFdBQVcsQ0FBUztJQUNwQixlQUFlLENBQVM7SUFFeEIsWUFBb0IsTUFBYSxFQUFTLEVBQXFCLEVBQVMsSUFBZTtRQUFuRSxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ3JGLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ3JDLElBQUcsR0FBRyxFQUFDO2dCQUNOLElBQUksQ0FBQyxZQUFZLEdBQUksR0FBRyxDQUFDLFlBQVksQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckU7UUFDRixDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUM7SUFFSixX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dUdBOUVVLFdBQVc7MkdBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gIGNsaWVudEFwaVVybDogc3RyaW5nO1xyXG4gIGF1dGhsb2NhbFN0b3JhZ2VUb2tlbjogc3RyaW5nO1xyXG4gIHVzZXJBcGlVcmw6IHN0cmluZztcclxuICBzdG9yZUFwaVVybDogc3RyaW5nO1xyXG4gIG9sZERhc2hib2FyZFVybDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjpSb3V0ZXIscHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBodHRwOkh0dHBDbGllbnQpIHsgIFxyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5zdWJzY3JpYmUoKGVudik9PntcclxuICAgIGlmKGVudil7XHJcbiAgICAgdGhpcy5jbGllbnRBcGlVcmwgPSAgZW52LmNsaWVudEFwaVVybDtcclxuICAgICB0aGlzLnVzZXJBcGlVcmwgPSBlbnYudXNlckFwaVVybDsgXHJcbiAgICAgdGhpcy5zdG9yZUFwaVVybCA9ZW52LnN0b3JlQXBpVXJsO1xyXG4gICAgIHRoaXMub2xkRGFzaGJvYXJkVXJsID1lbnYub2xkRGFzaGJvYXJkVXJsO1xyXG4gICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuID0gYCR7ZW52LmFwcFZlcnNpb259LSR7ZW52LlVTRVJEQVRBX0tFWX1gO1xyXG4gICAgfVxyXG4gICB9KSB9XHJcbiAgIFxyXG4gICBoYW5kbGVFcnJvcihyZXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRocm93RXJyb3IocmVzLmVycm9yKTtcclxufVxyXG5nZXRIZWFkZXJzKCkge1xyXG4gIGNvbnN0IGhlYWRlcnMgPSB7XHJcbiAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgdGhpcy5hdXRobG9jYWxTdG9yYWdlVG9rZW5cclxuICB9O1xyXG5cclxuICByZXR1cm4gaGVhZGVycztcclxufVxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnVzZXJBcGlVcmx9L2xvZ291dGAsIHtcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldENsaWVudHMoKXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9nZXQtY2xpZW50c2AsIHtcclxuICB9KVxyXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG4gIH1cclxuICBnZXRTdG9yZXMoaWQ6YW55KXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVBcGlVcmx9L2dldC1zdG9yZXM/Y2xpZW50SWQ9JHtpZH1gLCB7XHJcbiAgfSlcclxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcclxuICB9XHJcbiAgZ2V0T2xkRGFzaGJvYXJkUmVkaXJlY3QoZGF0YTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMub2xkRGFzaGJvYXJkVXJsfS9hdXRoL29sZERhc2hib2FyZFVzZXJMb2dpbmAsZGF0YSwge1xyXG4gICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKVxyXG4gICAgfSlcclxuICB9XHJcbiAgdXNlclByb2ZpbGVEZXQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChgJHt0aGlzLnVzZXJBcGlVcmx9L3Byb2ZpbGVgLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJ1c2VyLWluZm9cIiwgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSkpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hUb2tlbigpIHtcclxuICAgIGNvbnN0IHVzZXJJZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJcIik/Ll9pZDtcclxuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IEpTT04ucGFyc2UoXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuKSB8fCBcIlwiXHJcbiAgICApPy5yZWZyZXNoVG9rZW47XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7XHJcbiAgICAgIHVzZXJJZDogdXNlcklkLFxyXG4gICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hUb2tlbixcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7dGhpcy51c2VyQXBpVXJsfS9yZWZyZXNoLXRva2VuYCwgeyBwYXJhbXM6IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlKSxcclxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -4,7 +4,7 @@ import * as i1 from '@angular/router';
4
4
  import { NavigationEnd, NavigationCancel, ResolveEnd, Router, RouterModule } from '@angular/router';
5
5
  import * as i1$1 from 'tango-app-ui-global';
6
6
  import { MenuComponent, ToggleComponent, ScrollTopComponent, DrawerComponent, StickyComponent, ScrollComponent, GlobalStateService } from 'tango-app-ui-global';
7
- import { throwError, map, catchError, takeUntil, Subject, take } from 'rxjs';
7
+ import { throwError, map, catchError, takeUntil, Subject, take, BehaviorSubject, switchMap } from 'rxjs';
8
8
  import * as i3 from '@angular/common/http';
9
9
  import { HttpErrorResponse } from '@angular/common/http';
10
10
  import Swal from 'sweetalert2';
@@ -28,7 +28,6 @@ import { TranslateModule } from '@ngx-translate/core';
28
28
  import { InlineSVGModule } from 'ng-inline-svg-2';
29
29
  import { NgbDropdownModule, NgbProgressbarModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
30
30
 
31
- // import { GlobalStateService } from './global-state.service';
32
31
  class AuthService {
33
32
  router;
34
33
  gs;
@@ -87,6 +86,17 @@ class AuthService {
87
86
  return response;
88
87
  }), catchError(this.handleError));
89
88
  }
89
+ refreshToken() {
90
+ const userId = JSON.parse(localStorage.getItem("user-info") || "")?._id;
91
+ const refreshToken = JSON.parse(localStorage.getItem(this.authlocalStorageToken) || "")?.refreshToken;
92
+ let params = {
93
+ userId: userId,
94
+ refreshToken: refreshToken,
95
+ };
96
+ return this.http
97
+ .get(`${this.userApiUrl}/refresh-token`, { params: params })
98
+ .pipe(map((response) => response), catchError(this.handleError));
99
+ }
90
100
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuthService, deps: [{ token: i1.Router }, { token: i1$1.GlobalStateService }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
91
101
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuthService, providedIn: 'root' });
92
102
  }
@@ -2789,6 +2799,8 @@ class SidebarFooterComponent {
2789
2799
  currentLayoutType;
2790
2800
  userValuefooter = '';
2791
2801
  toggleAttr;
2802
+ shouldShowMenuTop = true;
2803
+ destroy$ = new Subject();
2792
2804
  constructor(auth, router, layout) {
2793
2805
  this.auth = auth;
2794
2806
  this.router = router;
@@ -2797,7 +2809,7 @@ class SidebarFooterComponent {
2797
2809
  ngOnInit() {
2798
2810
  this.toggleAttr = `app-sidebar-${this.toggleType}`;
2799
2811
  const layoutSubscr = this.layout.currentLayoutTypeSubject
2800
- .asObservable()
2812
+ .asObservable().pipe(takeUntil(this.destroy$))
2801
2813
  .subscribe((layout) => {
2802
2814
  this.currentLayoutType = layout;
2803
2815
  });
@@ -2831,13 +2843,16 @@ class SidebarFooterComponent {
2831
2843
  // }
2832
2844
  }
2833
2845
  logout() {
2834
- this.auth.logout().subscribe((res) => {
2835
- this.router.navigate(["/auth/login"]);
2836
- });
2846
+ this.auth.logout();
2847
+ // .pipe(takeUntil(this.destroy$)).subscribe((res:any)=>{
2848
+ this.router.navigate(["/auth/login"]);
2849
+ // })
2837
2850
  localStorage.clear();
2838
2851
  }
2839
2852
  ngOnDestroy() {
2840
- this.unsubscribe.forEach((sb) => sb.unsubscribe());
2853
+ // this.unsubscribe.forEach((sb) => sb.unsubscribe());
2854
+ this.destroy$.next(true);
2855
+ this.destroy$.complete();
2841
2856
  }
2842
2857
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SidebarFooterComponent, deps: [{ token: AuthService }, { token: i1.Router }, { token: i1$1.LayoutService }], target: i0.ɵɵFactoryTarget.Component });
2843
2858
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: SidebarFooterComponent, selector: "lib-sidebar-footer", inputs: { toggleButtonClass: "toggleButtonClass", toggleEnabled: "toggleEnabled", toggleType: "toggleType", toggleState: "toggleState", userValuefooter: "userValuefooter" }, ngImport: i0, template: "<div class=\"container-with-overflow\">\r\n <div id=\"kt_app_sidebar_menu_scroll\" class=\"\" data-kt-scroll=\"true\" data-kt-scroll-activate=\"true\"\r\n data-kt-scroll-height=\"auto\" data-kt-scroll-dependencies=\"#kt_app_sidebar_logo, #kt_app_sidebar_footer\"\r\n data-kt-scroll-wrappers=\"#kt_app_sidebar_menu\" data-kt-scroll-offset=\"5px\" data-kt-scroll-save-state=\"true\">\r\n <div class=\"menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6\" id=\"kt_app_sidebar_menu\"\r\n data-kt-menu=\"true\" data-kt-menu-expand=\"false\">\r\n <div class=\"menu-item menu-accordion w-100 px-3\" id=\"#kt_app_sidebar_menu\" [ngClass]=\"{'active': isSubMenuActive}\"\r\n data-kt-menu-trigger=\"click\" routerLinkActive=\"here show\">\r\n <span class=\"menu-link without-sub\">\r\n <span class=\"menu-icon\">\r\n <img src=\"./assets/tango/Icons/Avatar.svg\">\r\n </span>\r\n <span class=\"menu-title\" data-link=\"/crafted/account\">{{ userValue.userName | titlecase}}<br>\r\n {{ userValue.email | titlecase}}</span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion w-100\" #accordion [ngClass]=\"{'menu-sub-top': isSubMenuActive}\"\r\n routerLinkActive=\"menu-active-bg\">\r\n <div class=\"menu-item px-3 border-profile-first\">\r\n <a class=\"menu-link without-sub\" href=\"/profile\" >\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M11.8574 3.83162C11.8574 5.94799 10.0668 7.66324 7.85742 7.66324C5.64805 7.66324 3.85742 5.94799 3.85742 3.83162C3.85742 1.71525 5.64805 0 7.85742 0C10.0668 0 11.8574 1.71525 11.8574 3.83162Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M6.36786 9.38452C2.85 9.38452 0 11.9226 0 15.0554C0 15.577 0.475 16.0001 1.06071 16.0001H14.9393C15.525 16.0001 16 15.577 16 15.0554C16 11.9226 13.15 9.38452 9.63214 9.38452H6.36786Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\">Profile</span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M14.2222 11.5556V8C14.2222 4.56356 11.4364 1.77778 8 1.77778C4.56356 1.77778 1.77778 4.56356 1.77778 8V11.5556H14.2222ZM16 11.5556H0V8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8V11.5556Z\"\r\n fill=\"#D0D5DD\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M1.77778 9.77759H2.66667C3.64851 9.77759 4.44444 10.5735 4.44444 11.5554V14.222C4.44444 15.2039 3.64851 15.9998 2.66667 15.9998H1.77778C0.795938 15.9998 0 15.2039 0 14.222V11.5554C0 10.5735 0.795938 9.77759 1.77778 9.77759ZM13.3333 9.77759H14.2222C15.2041 9.77759 16 10.5735 16 11.5554V14.222C16 15.2039 15.2041 15.9998 14.2222 15.9998H13.3333C12.3515 15.9998 11.5556 15.2039 11.5556 14.222V11.5554C11.5556 10.5735 12.3515 9.77759 13.3333 9.77759Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\">Support</span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" (click)=\"logout()\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path\r\n d=\"M5 13H2.33333C1.97971 13 1.64057 12.8595 1.39052 12.6095C1.14048 12.3594 1 12.0203 1 11.6667V2.33333C1 1.97971 1.14048 1.64057 1.39052 1.39052C1.64057 1.14048 1.97971 1 2.33333 1H5\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M9.66667 10.3332L13 6.99984M13 6.99984L9.66667 3.6665M13 6.99984H5\" stroke=\"#D0D5DD\"\r\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\">Logout</span>\r\n </a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".menu{background:var(--Gray-700, #344054)}.menu .menu-item{position:relative;background:var(--Gray-700, #344054)}.menu .border-profile-first{border-top-left-radius:8px;border-top-right-radius:8px}.menu .menu-sub{position:absolute;top:100;bottom:calc(100% + 5px);left:0}.menu .menu-sub-top{bottom:auto;top:calc(100% + 5px)}.menu-sub-indention .menu-sub{margin-left:0rem!important}.custom-scroll{max-height:300px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }] });
@@ -4460,11 +4475,11 @@ const Routing = [
4460
4475
  path: 'manage',
4461
4476
  loadChildren: () => import('./tango-app-ui-shared-manage-wrapper.module-B6GJQNQZ.mjs').then((m) => m.ManageWrapperModule),
4462
4477
  },
4463
- {
4464
- path: 'manage/stores/edge-app',
4465
- loadChildren: () => import('./tango-app-ui-shared-edge-wrapper.module-DM8Er_Bd.mjs').then((m) => m.TangoEdgeAppWrapperModule),
4466
- canActivate: [storesGuard]
4467
- },
4478
+ // {
4479
+ // path: 'manage/stores/edge-app',
4480
+ // loadChildren: () => import('./route-wraper-modules/edge-wrapper.module').then((m) => m.TangoEdgeAppWrapperModule),
4481
+ // canActivate:[storesGuard]
4482
+ // },
4468
4483
  {
4469
4484
  path: 'manage/stores/:id',
4470
4485
  loadChildren: () => import('./tango-app-ui-shared-store-wrapper.module-UYYC9an_.mjs').then((m) => m.StoreWrapperModule),
@@ -4729,13 +4744,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
4729
4744
 
4730
4745
  class HttpAuthInterceptor {
4731
4746
  gs;
4732
- auth;
4733
- router;
4747
+ authService;
4734
4748
  authlocalStorageToken = '';
4735
- constructor(gs, auth, router) {
4749
+ isRefreshingToken = false;
4750
+ tokenRefreshed = new BehaviorSubject(false);
4751
+ constructor(gs, authService) {
4736
4752
  this.gs = gs;
4737
- this.auth = auth;
4738
- this.router = router;
4753
+ this.authService = authService;
4739
4754
  this.gs.environment.subscribe((env) => {
4740
4755
  if (env) {
4741
4756
  this.authlocalStorageToken = `${env.appVersion}-${env.USERDATA_KEY}`;
@@ -4749,24 +4764,62 @@ class HttpAuthInterceptor {
4749
4764
  Authorization: 'Bearer ' + user.authenticationToken
4750
4765
  }
4751
4766
  });
4752
- return next.handle(request).pipe(catchError(err => {
4753
- if (err instanceof HttpErrorResponse) {
4754
- if (err.status === 402 || err.status === 401) {
4755
- this.auth.logout().subscribe((res) => {
4756
- this.router.navigate(["/auth/login"]);
4757
- });
4758
- localStorage.clear();
4759
- }
4767
+ return next.handle(request).pipe(catchError((error) => {
4768
+ if (error instanceof HttpErrorResponse && error.status === 401) {
4769
+ // If the error is due to unauthorized access, try to refresh the token
4770
+ return this.handle401Error(request, next);
4760
4771
  }
4761
- return throwError(err);
4772
+ return throwError(error);
4762
4773
  }));
4763
4774
  }
4764
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HttpAuthInterceptor, deps: [{ token: i1$1.GlobalStateService }, { token: AuthService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
4775
+ handle401Error(request, next) {
4776
+ if (!this.isRefreshingToken) {
4777
+ this.isRefreshingToken = true;
4778
+ return this.authService.refreshToken().pipe(switchMap((res) => {
4779
+ if (res && res.code == 200 && res.data.result) {
4780
+ // Update local storage with the new token
4781
+ localStorage.setItem(this.authlocalStorageToken, JSON.stringify(res.data.result));
4782
+ // Clone the request with the new token
4783
+ request = request.clone({
4784
+ setHeaders: {
4785
+ Authorization: `Bearer ${res.data.result.authenticationToken}`
4786
+ }
4787
+ });
4788
+ // Reset the flag for token refreshing
4789
+ this.isRefreshingToken = false;
4790
+ // Retry the original request with the new token
4791
+ return next.handle(request);
4792
+ }
4793
+ else {
4794
+ // Logout user if refresh token fails
4795
+ this.authService.logout();
4796
+ return throwError('Token Expired Please Login Again!');
4797
+ }
4798
+ }), catchError((error) => {
4799
+ // Logout user if refresh token fails
4800
+ this.authService.logout();
4801
+ return throwError(error);
4802
+ }));
4803
+ }
4804
+ else {
4805
+ // If already refreshing the token, queue the request and wait
4806
+ return this.tokenRefreshed.pipe(switchMap(() => {
4807
+ const tokens = JSON.parse(localStorage.getItem(this.authlocalStorageToken) || '{}');
4808
+ request = request.clone({
4809
+ setHeaders: {
4810
+ Authorization: 'Bearer ' + tokens.authenticationToken
4811
+ }
4812
+ });
4813
+ return next.handle(request);
4814
+ }));
4815
+ }
4816
+ }
4817
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HttpAuthInterceptor, deps: [{ token: i1$1.GlobalStateService }, { token: AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
4765
4818
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HttpAuthInterceptor });
4766
4819
  }
4767
4820
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HttpAuthInterceptor, decorators: [{
4768
4821
  type: Injectable
4769
- }], ctorParameters: () => [{ type: i1$1.GlobalStateService }, { type: AuthService }, { type: i1.Router }] });
4822
+ }], ctorParameters: () => [{ type: i1$1.GlobalStateService }, { type: AuthService }] });
4770
4823
 
4771
4824
  /*
4772
4825
  * Public API Surface of tango-app-shared