vc-error-handlers 0.5.4 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/fesm2022/vc-error-handlers.mjs +129 -127
  2. package/fesm2022/vc-error-handlers.mjs.map +1 -1
  3. package/package.json +3 -5
  4. package/esm2022/lib/configuration.mjs +0 -8
  5. package/esm2022/lib/featureFlag/feature-flag.directive.mjs +0 -27
  6. package/esm2022/lib/featureFlag/feature-flag.module.mjs +0 -20
  7. package/esm2022/lib/featureFlag/feature-flag.service.mjs +0 -98
  8. package/esm2022/lib/shared/components/chunk-unavailable/chunk-unavailable.component.mjs +0 -35
  9. package/esm2022/lib/shared/components/component-level-server-error/component-level-server-error.component.mjs +0 -64
  10. package/esm2022/lib/shared/components/error-modal/error-modal.component.mjs +0 -64
  11. package/esm2022/lib/shared/components/page-not-found/page-not-found.component.mjs +0 -120
  12. package/esm2022/lib/shared/components/server-error/server-error.component.mjs +0 -83
  13. package/esm2022/lib/shared/components/session-expired/session-expired.component.mjs +0 -35
  14. package/esm2022/lib/shared/components/unauthorized/unauthorized.component.mjs +0 -132
  15. package/esm2022/lib/shared/constants/api-config.constants.mjs +0 -949
  16. package/esm2022/lib/shared/constants/assets.constants.mjs +0 -7
  17. package/esm2022/lib/shared/constants/error-handling.constants.mjs +0 -75
  18. package/esm2022/lib/shared/constants/exclude-api-config.constants.mjs +0 -57
  19. package/esm2022/lib/shared/errorhandler/chunk-error.handler.mjs +0 -18
  20. package/esm2022/lib/shared/errorhandler/sentry-error.handler.mjs +0 -51
  21. package/esm2022/lib/shared/interceptors/http.interceptor.mjs +0 -31
  22. package/esm2022/lib/shared/services/global-error.service.mjs +0 -128
  23. package/esm2022/lib/shared/services/router.service.mjs +0 -48
  24. package/esm2022/lib/shared/services/util.service.mjs +0 -48
  25. package/esm2022/lib/shared/types/global-error.types.mjs +0 -16
  26. package/esm2022/lib/ui-kit/dialog/dialog-config.mjs +0 -3
  27. package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +0 -15
  28. package/esm2022/lib/ui-kit/dialog/dialog-ref.mjs +0 -13
  29. package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +0 -85
  30. package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +0 -21
  31. package/esm2022/lib/ui-kit/dialog/dialog.service.mjs +0 -52
  32. package/esm2022/lib/ui-kit/dialog/insertion.directive.mjs +0 -16
  33. package/esm2022/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.mjs +0 -50
  34. package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +0 -18
  35. package/esm2022/lib/ui-kit/snack-bar/snack-bar.service.mjs +0 -32
  36. package/esm2022/lib/ui-kit/tooltip/tooltip.directive.mjs +0 -156
  37. package/esm2022/lib/ui-kit/tooltip/tooltip.module.mjs +0 -18
  38. package/esm2022/lib/vc-error-handlers.component.mjs +0 -116
  39. package/esm2022/lib/vc-error-handlers.module.mjs +0 -105
  40. package/esm2022/lib/vc-error-handlers.service.mjs +0 -14
  41. package/esm2022/public-api.mjs +0 -17
  42. package/esm2022/vc-error-handlers.mjs +0 -5
@@ -1,35 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { ErrorModalComponent } from '../error-modal/error-modal.component';
3
- import { ERROR_CONFIG, MODAL_ERROR_TYPES } from '../../constants/error-handling.constants';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../../ui-kit/dialog/dialog.service";
6
- export class SessionExpiredComponent {
7
- constructor(dialogService) {
8
- this.dialogService = dialogService;
9
- this.errorConfig = ERROR_CONFIG.SESSION_EXPIRED;
10
- this.errorTypes = MODAL_ERROR_TYPES;
11
- }
12
- ngOnInit() {
13
- this.openSessionExpiredModal();
14
- }
15
- openSessionExpiredModal() {
16
- this.dialogService.open(ErrorModalComponent, {
17
- data: {
18
- errorType: this.errorTypes.SESSION_EXPIRED,
19
- errorConfig: this.errorConfig,
20
- },
21
- position: 'center',
22
- background: 'whiteBlur',
23
- });
24
- }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionExpiredComponent, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SessionExpiredComponent, selector: "lib-vc-error-session-expired", ngImport: i0, template: ``, isInline: true }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionExpiredComponent, decorators: [{
29
- type: Component,
30
- args: [{
31
- selector: 'lib-vc-error-session-expired',
32
- template: ``,
33
- }]
34
- }], ctorParameters: function () { return [{ type: i1.DialogService }]; } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1leHBpcmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvc2Vzc2lvbi1leHBpcmVkL3Nlc3Npb24tZXhwaXJlZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUkzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7OztBQU0zRixNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQ1UsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFKdEMsZ0JBQVcsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDO1FBQzNDLGVBQVUsR0FBRyxpQkFBaUIsQ0FBQztJQUk1QixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDM0MsSUFBSSxFQUFFO2dCQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWU7Z0JBQzFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVzthQUM5QjtZQUNELFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFVBQVUsRUFBRSxXQUFXO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBckJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLG9FQUZ4QixFQUFFOzs0RkFFRCx1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsUUFBUSxFQUFFLEVBQUU7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFcnJvck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZXJyb3ItbW9kYWwvZXJyb3ItbW9kYWwuY29tcG9uZW50JztcblxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBFUlJPUl9DT05GSUcsIE1PREFMX0VSUk9SX1RZUEVTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Vycm9yLWhhbmRsaW5nLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi12Yy1lcnJvci1zZXNzaW9uLWV4cGlyZWQnLFxuICB0ZW1wbGF0ZTogYGAsXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25FeHBpcmVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZXJyb3JDb25maWcgPSBFUlJPUl9DT05GSUcuU0VTU0lPTl9FWFBJUkVEO1xuICBlcnJvclR5cGVzID0gTU9EQUxfRVJST1JfVFlQRVM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wZW5TZXNzaW9uRXhwaXJlZE1vZGFsKCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TZXNzaW9uRXhwaXJlZE1vZGFsKCkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEVycm9yTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZXJyb3JUeXBlOiB0aGlzLmVycm9yVHlwZXMuU0VTU0lPTl9FWFBJUkVELFxuICAgICAgICBlcnJvckNvbmZpZzogdGhpcy5lcnJvckNvbmZpZyxcbiAgICAgIH0sXG4gICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICBiYWNrZ3JvdW5kOiAnd2hpdGVCbHVyJyxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,132 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { ERROR_CONFIG, VCOMPLY_LOGO_URL, ORGANISATION_NAME, ALT_IMAGE_TEXT, REDIRECTION_URL, } from '../../constants/error-handling.constants';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/router";
5
- import * as i2 from "../../services/router.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "../../../ui-kit/tooltip/tooltip.directive";
8
- export class UnauthorizedComponent {
9
- constructor(route, routerService) {
10
- this.route = route;
11
- this.routerService = routerService;
12
- this.currentYear = new Date().getFullYear();
13
- this.errorConfig = ERROR_CONFIG.UNAUTHORIZED;
14
- this.VcomplyLogo = VCOMPLY_LOGO_URL;
15
- this.altImageText = ALT_IMAGE_TEXT;
16
- this.organisationName = ORGANISATION_NAME;
17
- this.defaultURL = this.routerService.baseUrl + REDIRECTION_URL.DEFAULT;
18
- }
19
- redirectToDashboard() {
20
- const module_name = this.route.snapshot.data['page_path'];
21
- this.routerService.redirectToHome(module_name);
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnauthorizedComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.RouterService }], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UnauthorizedComponent, selector: "lib-vc-error-unauthorized", ngImport: i0, template: `
25
- <div class="errorPage">
26
- <div class="errorPage-top" (click)="redirectToDashboard()">
27
- <a
28
- class="product-logo vx-d-flex vx-align-center vx-justify-center vx-mr-3"
29
- [arTooltip]="errorConfig.buttonText"
30
- placement="right"
31
- type="white"
32
- delay="0"
33
- [tooltipMandatory]="true"
34
- [animate]="true"
35
- [href]="defaultURL"
36
- >
37
- <img
38
- [ngSrc]="VcomplyLogo"
39
- [alt]="altImageText.VCOMPLY_LOGO"
40
- width="24"
41
- height="24"
42
- />
43
- </a>
44
- </div>
45
- <div class="errorPage-container">
46
- <div class="errorPage-inner">
47
- <div class="errorPage-inner-image">
48
- <img
49
- [ngSrc]="errorConfig.imageUrl"
50
- [alt]="altImageText.ERROR_IMAGE"
51
- width="246"
52
- height="178"
53
- />
54
- </div>
55
- <div class="errorPage-inner-right">
56
- <div class="errorPage-heading">{{ errorConfig.title }}</div>
57
- <div class="errorPage-text">{{ errorConfig.description }}</div>
58
- <div class="errorPage-details">
59
- {{ errorConfig.details }}
60
- <a [href]="'mailto:' + errorConfig.email">{{
61
- errorConfig.email
62
- }}</a>
63
- {{ errorConfig.support }}.
64
- </div>
65
- <button class="errorPage-btn" (click)="redirectToDashboard()">
66
- {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
67
- </button>
68
- </div>
69
- </div>
70
- <div class="errorPage-copyright">
71
- &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
72
- </div>
73
- </div>
74
- </div>
75
- `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem;cursor:pointer}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"], dependencies: [{ kind: "directive", type: i3.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[arTooltip]", inputs: ["arTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }] }); }
76
- }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnauthorizedComponent, decorators: [{
78
- type: Component,
79
- args: [{ selector: 'lib-vc-error-unauthorized', template: `
80
- <div class="errorPage">
81
- <div class="errorPage-top" (click)="redirectToDashboard()">
82
- <a
83
- class="product-logo vx-d-flex vx-align-center vx-justify-center vx-mr-3"
84
- [arTooltip]="errorConfig.buttonText"
85
- placement="right"
86
- type="white"
87
- delay="0"
88
- [tooltipMandatory]="true"
89
- [animate]="true"
90
- [href]="defaultURL"
91
- >
92
- <img
93
- [ngSrc]="VcomplyLogo"
94
- [alt]="altImageText.VCOMPLY_LOGO"
95
- width="24"
96
- height="24"
97
- />
98
- </a>
99
- </div>
100
- <div class="errorPage-container">
101
- <div class="errorPage-inner">
102
- <div class="errorPage-inner-image">
103
- <img
104
- [ngSrc]="errorConfig.imageUrl"
105
- [alt]="altImageText.ERROR_IMAGE"
106
- width="246"
107
- height="178"
108
- />
109
- </div>
110
- <div class="errorPage-inner-right">
111
- <div class="errorPage-heading">{{ errorConfig.title }}</div>
112
- <div class="errorPage-text">{{ errorConfig.description }}</div>
113
- <div class="errorPage-details">
114
- {{ errorConfig.details }}
115
- <a [href]="'mailto:' + errorConfig.email">{{
116
- errorConfig.email
117
- }}</a>
118
- {{ errorConfig.support }}.
119
- </div>
120
- <button class="errorPage-btn" (click)="redirectToDashboard()">
121
- {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
122
- </button>
123
- </div>
124
- </div>
125
- <div class="errorPage-copyright">
126
- &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
127
- </div>
128
- </div>
129
- </div>
130
- `, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem;cursor:pointer}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"] }]
131
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.RouterService }]; } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5hdXRob3JpemVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvdW5hdXRob3JpemVkL3VuYXV0aG9yaXplZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7O0FBNERsRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1UsS0FBcUIsRUFDckIsYUFBNEI7UUFENUIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFHdEMsZ0JBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztRQUN4QyxnQkFBVyxHQUFHLGdCQUFnQixDQUFDO1FBQy9CLGlCQUFZLEdBQUcsY0FBYyxDQUFDO1FBQzlCLHFCQUFnQixHQUFHLGlCQUFpQixDQUFDO1FBQ3JDLGVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO0lBUC9ELENBQUM7SUFTRyxtQkFBbUI7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBaEJVLHFCQUFxQjttR0FBckIscUJBQXFCLGlFQXREdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVDs7NEZBR1UscUJBQXFCO2tCQXhEakMsU0FBUzsrQkFDRSwyQkFBMkIsWUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICBFUlJPUl9DT05GSUcsXG4gIFZDT01QTFlfTE9HT19VUkwsXG4gIE9SR0FOSVNBVElPTl9OQU1FLFxuICBBTFRfSU1BR0VfVEVYVCxcbiAgUkVESVJFQ1RJT05fVVJMLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMvZXJyb3ItaGFuZGxpbmcuY29uc3RhbnRzJztcblxuaW1wb3J0IHsgUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXZjLWVycm9yLXVuYXV0aG9yaXplZCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImVycm9yUGFnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yUGFnZS10b3BcIiAoY2xpY2spPVwicmVkaXJlY3RUb0Rhc2hib2FyZCgpXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJwcm9kdWN0LWxvZ28gdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1tci0zXCJcbiAgICAgICAgICBbYXJUb29sdGlwXT1cImVycm9yQ29uZmlnLmJ1dHRvblRleHRcIlxuICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgW2FuaW1hdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2hyZWZdPVwiZGVmYXVsdFVSTFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBbbmdTcmNdPVwiVmNvbXBseUxvZ29cIlxuICAgICAgICAgICAgW2FsdF09XCJhbHRJbWFnZVRleHQuVkNPTVBMWV9MT0dPXCJcbiAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yUGFnZS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yUGFnZS1pbm5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclBhZ2UtaW5uZXItaW1hZ2VcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW25nU3JjXT1cImVycm9yQ29uZmlnLmltYWdlVXJsXCJcbiAgICAgICAgICAgICAgW2FsdF09XCJhbHRJbWFnZVRleHQuRVJST1JfSU1BR0VcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjI0NlwiXG4gICAgICAgICAgICAgIGhlaWdodD1cIjE3OFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclBhZ2UtaW5uZXItcmlnaHRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclBhZ2UtaGVhZGluZ1wiPnt7IGVycm9yQ29uZmlnLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JQYWdlLXRleHRcIj57eyBlcnJvckNvbmZpZy5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yUGFnZS1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgIHt7IGVycm9yQ29uZmlnLmRldGFpbHMgfX1cbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiJ21haWx0bzonICsgZXJyb3JDb25maWcuZW1haWxcIj57e1xuICAgICAgICAgICAgICAgIGVycm9yQ29uZmlnLmVtYWlsXG4gICAgICAgICAgICAgIH19PC9hPlxuICAgICAgICAgICAgICB7eyBlcnJvckNvbmZpZy5zdXBwb3J0IH19LlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZXJyb3JQYWdlLWJ0blwiIChjbGljayk9XCJyZWRpcmVjdFRvRGFzaGJvYXJkKClcIj5cbiAgICAgICAgICAgICAge3sgZXJyb3JDb25maWcuYnV0dG9uVGV4dCB9fSA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTk2YTs8L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclBhZ2UtY29weXJpZ2h0XCI+XG4gICAgICAgICAgJmNvcHk7Jm5ic3A7e3sgY3VycmVudFllYXIgfX0sIHt7IG9yZ2FuaXNhdGlvbk5hbWUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4uL2NvbW1vbi1lcnJvci1wYWdlLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVuYXV0aG9yaXplZENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogUm91dGVyU2VydmljZVxuICApIHt9XG5cbiAgY3VycmVudFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gIGVycm9yQ29uZmlnID0gRVJST1JfQ09ORklHLlVOQVVUSE9SSVpFRDtcbiAgVmNvbXBseUxvZ28gPSBWQ09NUExZX0xPR09fVVJMO1xuICBhbHRJbWFnZVRleHQgPSBBTFRfSU1BR0VfVEVYVDtcbiAgb3JnYW5pc2F0aW9uTmFtZSA9IE9SR0FOSVNBVElPTl9OQU1FO1xuICBkZWZhdWx0VVJMID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmJhc2VVcmwgKyBSRURJUkVDVElPTl9VUkwuREVGQVVMVDtcblxuICBwdWJsaWMgcmVkaXJlY3RUb0Rhc2hib2FyZCgpIHtcbiAgICBjb25zdCBtb2R1bGVfbmFtZSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsncGFnZV9wYXRoJ107XG4gICAgdGhpcy5yb3V0ZXJTZXJ2aWNlLnJlZGlyZWN0VG9Ib21lKG1vZHVsZV9uYW1lKTtcbiAgfVxufVxuIl19