valtech-components 2.0.864 → 2.0.866
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +4 -2
- package/esm2022/lib/services/auth/storage.service.mjs +28 -4
- package/esm2022/lib/services/auth/sync.service.mjs +13 -7
- package/esm2022/lib/services/firebase/analytics.service.mjs +6 -3
- package/esm2022/lib/services/firebase/config.mjs +15 -10
- package/esm2022/lib/services/i18n/config.mjs +11 -4
- package/esm2022/lib/services/i18n/i18n.service.mjs +20 -8
- package/esm2022/lib/services/local-storage.service.mjs +16 -6
- package/esm2022/lib/services/locale.service.mjs +15 -6
- package/esm2022/lib/services/theme.service.mjs +22 -11
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +131 -48
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/services/auth/storage.service.d.ts +2 -1
- package/lib/services/auth/sync.service.d.ts +3 -1
- package/lib/services/i18n/i18n.service.d.ts +2 -1
- package/lib/services/local-storage.service.d.ts +5 -5
- package/lib/services/locale.service.d.ts +3 -1
- package/lib/services/theme.service.d.ts +2 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -53,7 +53,9 @@ export class PinInputComponent {
|
|
|
53
53
|
ngAfterViewInit() {
|
|
54
54
|
const initial = this.props?.control?.value;
|
|
55
55
|
if (initial && this.pinCode) {
|
|
56
|
-
|
|
56
|
+
// ng-otp-input crea sus inputs internos de forma asíncrona —
|
|
57
|
+
// setValue sincrónico aquí llega antes de que estén listos.
|
|
58
|
+
setTimeout(() => this.pinCode?.setValue(initial), 0);
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
reset() {
|
|
@@ -81,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
81
83
|
}], props: [{
|
|
82
84
|
type: Input
|
|
83
85
|
}] } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcGluLWlucHV0L3Bpbi1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFHdkYsOENBQThDO0FBQzlDLE1BQU0sV0FBVyxHQUE4RTtJQUM3RixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtJQUMxRCxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtJQUMzRCxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtDQUMzRCxDQUFDO0FBYUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQXVCNUI7UUFaQSxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsbUJBQWMsR0FBcUI7WUFDakMsV0FBVyxFQUFFO2dCQUNYLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3hDLEtBQUssRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JBQy9CLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDbEM7WUFDRCxVQUFVLEVBQUUsZUFBZTtZQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDdkIsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUFDO0lBRWEsQ0FBQztJQUVoQixRQUFRO1FBQ04sK0RBQStEO1FBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUN0QyxvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEdBQUcsSUFBSSxDQUFDLGNBQWM7WUFDdEIsTUFBTTtZQUNOLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLElBQUksSUFBSTtZQUNyRCxXQUFXLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxRQUFRO2dCQUNoQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7Z0JBQ3ZCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtnQkFDekIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSx5QkFBeUI7YUFDckQ7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUM7UUFDM0MsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLDZEQUE2RDtZQUM3RCw0REFBNEQ7WUFDNUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDOytHQTFEVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw4SUFDakIsbUJBQW1CLGdEQWxCcEI7Ozs7R0FJVCxzc0dBTFMsZ0JBQWdCOzs0RkFrQmYsaUJBQWlCO2tCQXJCN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUMsWUFDakI7Ozs7R0FJVDt3REFja0QsT0FBTztzQkFBekQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBUXhDLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ090cElucHV0Q29tcG9uZW50LCBOZ090cElucHV0Q29uZmlnLCBOZ090cElucHV0TW9kdWxlIH0gZnJvbSAnbmctb3RwLWlucHV0JztcbmltcG9ydCB7IFBpbklucHV0TWV0YWRhdGEsIFBpbklucHV0U2l6ZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKiogU2l6ZSBjb25maWd1cmF0aW9ucyBmb3IgUElOIGlucHV0IGJveGVzICovXG5jb25zdCBTSVpFX0NPTkZJRzogUmVjb3JkPFBpbklucHV0U2l6ZSwgeyB3aWR0aDogc3RyaW5nOyBoZWlnaHQ6IHN0cmluZzsgZm9udFNpemU6IHN0cmluZyB9PiA9IHtcbiAgc21hbGw6IHsgd2lkdGg6ICc0MHB4JywgaGVpZ2h0OiAnNDRweCcsIGZvbnRTaXplOiAnMjRweCcgfSxcbiAgbWVkaXVtOiB7IHdpZHRoOiAnNTBweCcsIGhlaWdodDogJzU0cHgnLCBmb250U2l6ZTogJzI4cHgnIH0sXG4gIGxhcmdlOiB7IHdpZHRoOiAnNThweCcsIGhlaWdodDogJzYwcHgnLCBmb250U2l6ZTogJzMycHgnIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGluLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nT3RwSW5wdXRNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJvdHBcIj5cbiAgICAgIDxuZy1vdHAtaW5wdXQgW2Zvcm1DdHJsXT1cInByb3BzLmNvbnRyb2xcIiBbY29uZmlnXT1cIm90cElucHV0Q29uZmlnXCI+PC9uZy1vdHAtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Bpbi1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXBpbi1pbnB1dFxuICpcbiAqIEEgUElOIGNvZGUgaW5wdXQgdXNpbmcgbmctb3RwLWlucHV0LCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1waW4taW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sIH1cIj48L3ZhbC1waW4taW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBQaW5JbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIFBJTiBpbnB1dCAoZm9ybSBjb250cm9sLCBsZW5ndGgsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBQaW5JbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoTmdPdHBJbnB1dENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIHBpbkNvZGU6IE5nT3RwSW5wdXRDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7UGluSW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIFBJTiBpbnB1dC5cbiAgICogQHByb3BlcnR5IGxlbmd0aCAtIE51bWJlciBvZiBkaWdpdHMgaW4gUElOIChkZWZhdWx0OiA1KS5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQaW5JbnB1dE1ldGFkYXRhO1xuXG4gIGNvZGVMZW5ndGggPSA1O1xuICBvdHBJbnB1dENvbmZpZzogTmdPdHBJbnB1dENvbmZpZyA9IHtcbiAgICBpbnB1dFN0eWxlczoge1xuICAgICAgJ2ZvbnQtc2l6ZSc6IFNJWkVfQ09ORklHLm1lZGl1bS5mb250U2l6ZSxcbiAgICAgIHdpZHRoOiBTSVpFX0NPTkZJRy5tZWRpdW0ud2lkdGgsXG4gICAgICBoZWlnaHQ6IFNJWkVfQ09ORklHLm1lZGl1bS5oZWlnaHQsXG4gICAgfSxcbiAgICBpbnB1dENsYXNzOiAnb3RwLWlucHV0LWJveCcsXG4gICAgbGVuZ3RoOiB0aGlzLmNvZGVMZW5ndGgsXG4gICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gVXNhciBwcm9wcy5sZW5ndGggc2kgc2UgcHJvcG9yY2lvbmEsIHNpbm8gbWFudGVuZXIgZGVmYXVsdCA1XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wcm9wcy5sZW5ndGggPz8gNTtcbiAgICAvLyBVc2FyIHByb3BzLnNpemUgc2kgc2UgcHJvcG9yY2lvbmEsIHNpbm8gbWFudGVuZXIgZGVmYXVsdCAnbWVkaXVtJ1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgPz8gJ21lZGl1bSc7XG4gICAgY29uc3Qgc2l6ZVN0eWxlcyA9IFNJWkVfQ09ORklHW3NpemVdO1xuXG4gICAgdGhpcy5vdHBJbnB1dENvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMub3RwSW5wdXRDb25maWcsXG4gICAgICBsZW5ndGgsXG4gICAgICBhbGxvd051bWJlcnNPbmx5OiB0aGlzLnByb3BzLmFsbG93TnVtYmVyc09ubHkgPz8gdHJ1ZSxcbiAgICAgIGlucHV0U3R5bGVzOiB7XG4gICAgICAgICdmb250LXNpemUnOiBzaXplU3R5bGVzLmZvbnRTaXplLFxuICAgICAgICB3aWR0aDogc2l6ZVN0eWxlcy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzaXplU3R5bGVzLmhlaWdodCxcbiAgICAgICAgLi4udGhpcy5wcm9wcy5pbnB1dFN0eWxlcywgLy8gQWxsb3cgY3VzdG9tIG92ZXJyaWRlc1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLnByb3BzPy5jb250cm9sPy52YWx1ZTtcbiAgICBpZiAoaW5pdGlhbCAmJiB0aGlzLnBpbkNvZGUpIHtcbiAgICAgIC8vIG5nLW90cC1pbnB1dCBjcmVhIHN1cyBpbnB1dHMgaW50ZXJub3MgZGUgZm9ybWEgYXPDrW5jcm9uYSDigJRcbiAgICAgIC8vIHNldFZhbHVlIHNpbmNyw7NuaWNvIGFxdcOtIGxsZWdhIGFudGVzIGRlIHF1ZSBlc3TDqW4gbGlzdG9zLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnBpbkNvZGU/LnNldFZhbHVlKGluaXRpYWwpLCAwKTtcbiAgICB9XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBpZiAodGhpcy5waW5Db2RlKSB7XG4gICAgICB0aGlzLnBpbkNvZGUuc2V0VmFsdWUoJycpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
2
3
|
import { VALTECH_AUTH_CONFIG } from './config';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
/**
|
|
5
6
|
* Servicio para persistencia de estado de autenticación en localStorage.
|
|
6
7
|
*/
|
|
7
8
|
export class AuthStorageService {
|
|
8
|
-
constructor(config) {
|
|
9
|
+
constructor(config, platformId) {
|
|
9
10
|
this.config = config;
|
|
11
|
+
this.isBrowser = isPlatformBrowser(platformId);
|
|
10
12
|
const prefix = this.config.storagePrefix || 'valtech_auth_';
|
|
11
13
|
this.keys = {
|
|
12
14
|
ACCESS_TOKEN: `${prefix}access_token`,
|
|
@@ -21,6 +23,8 @@ export class AuthStorageService {
|
|
|
21
23
|
* Guarda el estado completo de autenticación.
|
|
22
24
|
*/
|
|
23
25
|
saveState(state) {
|
|
26
|
+
if (!this.isBrowser)
|
|
27
|
+
return;
|
|
24
28
|
try {
|
|
25
29
|
localStorage.setItem(this.keys.ACCESS_TOKEN, state.accessToken);
|
|
26
30
|
localStorage.setItem(this.keys.REFRESH_TOKEN, state.refreshToken);
|
|
@@ -39,6 +43,8 @@ export class AuthStorageService {
|
|
|
39
43
|
* Carga el estado de autenticación desde storage.
|
|
40
44
|
*/
|
|
41
45
|
loadState() {
|
|
46
|
+
if (!this.isBrowser)
|
|
47
|
+
return {};
|
|
42
48
|
try {
|
|
43
49
|
const accessToken = localStorage.getItem(this.keys.ACCESS_TOKEN);
|
|
44
50
|
const refreshToken = localStorage.getItem(this.keys.REFRESH_TOKEN);
|
|
@@ -64,6 +70,8 @@ export class AuthStorageService {
|
|
|
64
70
|
* Guarda solo el access token.
|
|
65
71
|
*/
|
|
66
72
|
saveAccessToken(token, expiresAt) {
|
|
73
|
+
if (!this.isBrowser)
|
|
74
|
+
return;
|
|
67
75
|
try {
|
|
68
76
|
localStorage.setItem(this.keys.ACCESS_TOKEN, token);
|
|
69
77
|
if (expiresAt) {
|
|
@@ -78,6 +86,8 @@ export class AuthStorageService {
|
|
|
78
86
|
* Guarda el refresh token (token rotation).
|
|
79
87
|
*/
|
|
80
88
|
saveRefreshToken(token) {
|
|
89
|
+
if (!this.isBrowser)
|
|
90
|
+
return;
|
|
81
91
|
try {
|
|
82
92
|
localStorage.setItem(this.keys.REFRESH_TOKEN, token);
|
|
83
93
|
}
|
|
@@ -89,6 +99,8 @@ export class AuthStorageService {
|
|
|
89
99
|
* Guarda los permisos actualizados.
|
|
90
100
|
*/
|
|
91
101
|
savePermissions(response) {
|
|
102
|
+
if (!this.isBrowser)
|
|
103
|
+
return;
|
|
92
104
|
try {
|
|
93
105
|
localStorage.setItem(this.keys.ROLES, JSON.stringify(response.roles));
|
|
94
106
|
localStorage.setItem(this.keys.PERMISSIONS, JSON.stringify(response.permissions));
|
|
@@ -102,6 +114,9 @@ export class AuthStorageService {
|
|
|
102
114
|
* Carga los permisos desde storage.
|
|
103
115
|
*/
|
|
104
116
|
loadPermissions() {
|
|
117
|
+
if (!this.isBrowser) {
|
|
118
|
+
return { roles: [], permissions: [], isSuperAdmin: false };
|
|
119
|
+
}
|
|
105
120
|
try {
|
|
106
121
|
const rolesJson = localStorage.getItem(this.keys.ROLES);
|
|
107
122
|
const permissionsJson = localStorage.getItem(this.keys.PERMISSIONS);
|
|
@@ -120,12 +135,16 @@ export class AuthStorageService {
|
|
|
120
135
|
* Obtiene el refresh token.
|
|
121
136
|
*/
|
|
122
137
|
getRefreshToken() {
|
|
138
|
+
if (!this.isBrowser)
|
|
139
|
+
return null;
|
|
123
140
|
return localStorage.getItem(this.keys.REFRESH_TOKEN);
|
|
124
141
|
}
|
|
125
142
|
/**
|
|
126
143
|
* Limpia todo el estado de autenticación.
|
|
127
144
|
*/
|
|
128
145
|
clear() {
|
|
146
|
+
if (!this.isBrowser)
|
|
147
|
+
return;
|
|
129
148
|
try {
|
|
130
149
|
Object.values(this.keys).forEach((key) => localStorage.removeItem(key));
|
|
131
150
|
}
|
|
@@ -137,9 +156,11 @@ export class AuthStorageService {
|
|
|
137
156
|
* Verifica si hay estado guardado.
|
|
138
157
|
*/
|
|
139
158
|
hasStoredState() {
|
|
159
|
+
if (!this.isBrowser)
|
|
160
|
+
return false;
|
|
140
161
|
return !!localStorage.getItem(this.keys.ACCESS_TOKEN);
|
|
141
162
|
}
|
|
142
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStorageService, deps: [{ token: VALTECH_AUTH_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStorageService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
143
164
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStorageService, providedIn: 'root' }); }
|
|
144
165
|
}
|
|
145
166
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStorageService, decorators: [{
|
|
@@ -148,5 +169,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
148
169
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
149
170
|
type: Inject,
|
|
150
171
|
args: [VALTECH_AUTH_CONFIG]
|
|
172
|
+
}] }, { type: Object, decorators: [{
|
|
173
|
+
type: Inject,
|
|
174
|
+
args: [PLATFORM_ID]
|
|
151
175
|
}] }] });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL3N0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBZS9DOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUc3QixZQUN1QyxNQUF5QjtRQUF6QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUU5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxlQUFlLENBQUM7UUFDNUQsSUFBSSxDQUFDLElBQUksR0FBRztZQUNWLFlBQVksRUFBRSxHQUFHLE1BQU0sY0FBYztZQUNyQyxhQUFhLEVBQUUsR0FBRyxNQUFNLGVBQWU7WUFDdkMsS0FBSyxFQUFFLEdBQUcsTUFBTSxPQUFPO1lBQ3ZCLFdBQVcsRUFBRSxHQUFHLE1BQU0sYUFBYTtZQUNuQyxjQUFjLEVBQUUsR0FBRyxNQUFNLGdCQUFnQjtZQUN6QyxVQUFVLEVBQUUsR0FBRyxNQUFNLFlBQVk7U0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxLQUFzQjtRQUM5QixJQUFJLENBQUM7WUFDSCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFT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LENBQUM7K0dBL0pVLGtCQUFrQixrQkFJbkIsbUJBQW1CO21IQUpsQixrQkFBa0IsY0FETCxNQUFNOzs0RkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBSzdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgU3RvcmVkQXV0aFN0YXRlLCBHZXRQZXJtaXNzaW9uc1Jlc3BvbnNlLCBWYWx0ZWNoQXV0aENvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIENsYXZlcyBkZSBzdG9yYWdlIHBhcmEgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmludGVyZmFjZSBTdG9yYWdlS2V5cyB7XG4gIEFDQ0VTU19UT0tFTjogc3RyaW5nO1xuICBSRUZSRVNIX1RPS0VOOiBzdHJpbmc7XG4gIFJPTEVTOiBzdHJpbmc7XG4gIFBFUk1JU1NJT05TOiBzdHJpbmc7XG4gIElTX1NVUEVSX0FETUlOOiBzdHJpbmc7XG4gIEVYUElSRVNfQVQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIHBlcnNpc3RlbmNpYSBkZSBlc3RhZG8gZGUgYXV0ZW50aWNhY2nDs24gZW4gbG9jYWxTdG9yYWdlLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUga2V5czogU3RvcmFnZUtleXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEF1dGhDb25maWdcbiAgKSB7XG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5jb25maWcuc3RvcmFnZVByZWZpeCB8fCAndmFsdGVjaF9hdXRoXyc7XG4gICAgdGhpcy5rZXlzID0ge1xuICAgICAgQUNDRVNTX1RPS0VOOiBgJHtwcmVmaXh9YWNjZXNzX3Rva2VuYCxcbiAgICAgIFJFRlJFU0hfVE9LRU46IGAke3ByZWZpeH1yZWZyZXNoX3Rva2VuYCxcbiAgICAgIFJPTEVTOiBgJHtwcmVmaXh9cm9sZXNgLFxuICAgICAgUEVSTUlTU0lPTlM6IGAke3ByZWZpeH1wZXJtaXNzaW9uc2AsXG4gICAgICBJU19TVVBFUl9BRE1JTjogYCR7cHJlZml4fWlzX3N1cGVyX2FkbWluYCxcbiAgICAgIEVYUElSRVNfQVQ6IGAke3ByZWZpeH1leHBpcmVzX2F0YCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEd1YXJkYSBlbCBlc3RhZG8gY29tcGxldG8gZGUgYXV0ZW50aWNhY2nDs24uXG4gICAqL1xuICBzYXZlU3RhdGUoc3RhdGU6IFN0b3JlZEF1dGhTdGF0ZSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleXMuQUNDRVNTX1RPS0VOLCBzdGF0ZS5hY2Nlc3NUb2tlbik7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleXMuUkVGUkVTSF9UT0tFTiwgc3RhdGUucmVmcmVzaFRva2VuKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMua2V5cy5ST0xFUywgSlNPTi5zdHJpbmdpZnkoc3RhdGUucm9sZXMpKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICB0aGlzLmtleXMuUEVSTUlTU0lPTlMsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHN0YXRlLnBlcm1pc3Npb25zKVxuICAgICAgKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICB0aGlzLmtleXMuSVNfU1VQRVJfQURNSU4sXG4gICAgICAgIFN0cmluZyhzdGF0ZS5pc1N1cGVyQWRtaW4pXG4gICAgICApO1xuICAgICAgaWYgKHN0YXRlLmV4cGlyZXNBdCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleXMuRVhQSVJFU19BVCwgU3RyaW5nKHN0YXRlLmV4cGlyZXNBdCkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1ZhbHRlY2hBdXRoXSBFcnJvciBndWFyZGFuZG8gZXN0YWRvIGVuIHN0b3JhZ2U6JywgZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGVsIGVzdGFkbyBkZSBhdXRlbnRpY2FjacOzbiBkZXNkZSBzdG9yYWdlLlxuICAgKi9cbiAgbG9hZFN0YXRlKCk6IFBhcnRpYWw8U3RvcmVkQXV0aFN0YXRlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlzLkFDQ0VTU19UT0tFTik7XG4gICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleXMuUkVGUkVTSF9UT0tFTik7XG4gICAgICBjb25zdCByb2xlc0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleXMuUk9MRVMpO1xuICAgICAgY29uc3QgcGVybWlzc2lvbnNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlzLlBFUk1JU1NJT05TKTtcbiAgICAgIGNvbnN0IGlzU3VwZXJBZG1pbiA9XG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5cy5JU19TVVBFUl9BRE1JTikgPT09ICd0cnVlJztcbiAgICAgIGNvbnN0IGV4cGlyZXNBdFN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5cy5FWFBJUkVTX0FUKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjZXNzVG9rZW46IGFjY2Vzc1Rva2VuIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoVG9rZW4gfHwgdW5kZWZpbmVkLFxuICAgICAgICByb2xlczogcm9sZXNKc29uID8gSlNPTi5wYXJzZShyb2xlc0pzb24pIDogW10sXG4gICAgICAgIHBlcm1pc3Npb25zOiBwZXJtaXNzaW9uc0pzb24gPyBKU09OLnBhcnNlKHBlcm1pc3Npb25zSnNvbikgOiBbXSxcbiAgICAgICAgaXNTdXBlckFkbWluLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdFN0ciA/IE51bWJlcihleHBpcmVzQXRTdHIpIDogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tWYWx0ZWNoQXV0aF0gRXJyb3IgY2FyZ2FuZG8gZXN0YWRvIGRlc2RlIHN0b3JhZ2U6JywgZSk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEd1YXJkYSBzb2xvIGVsIGFjY2VzcyB0b2tlbi5cbiAgICovXG4gIHNhdmVBY2Nlc3NUb2tlbih0b2tlbjogc3RyaW5nLCBleHBpcmVzQXQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlzLkFDQ0VTU19UT0tFTiwgdG9rZW4pO1xuICAgICAgaWYgKGV4cGlyZXNBdCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleXMuRVhQSVJFU19BVCwgU3RyaW5nKGV4cGlyZXNBdCkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1ZhbHRlY2hBdXRoXSBFcnJvciBndWFyZGFuZG8gYWNjZXNzIHRva2VuOicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgZWwgcmVmcmVzaCB0b2tlbiAodG9rZW4gcm90YXRpb24pLlxuICAgKi9cbiAgc2F2ZVJlZnJlc2hUb2tlbih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMua2V5cy5SRUZSRVNIX1RPS0VOLCB0b2tlbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdbVmFsdGVjaEF1dGhdIEVycm9yIGd1YXJkYW5kbyByZWZyZXNoIHRva2VuOicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgbG9zIHBlcm1pc29zIGFjdHVhbGl6YWRvcy5cbiAgICovXG4gIHNhdmVQZXJtaXNzaW9ucyhyZXNwb25zZTogR2V0UGVybWlzc2lvbnNSZXNwb25zZSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleXMuUk9MRVMsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLnJvbGVzKSk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgdGhpcy5rZXlzLlBFUk1JU1NJT05TLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5wZXJtaXNzaW9ucylcbiAgICAgICk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgdGhpcy5rZXlzLklTX1NVUEVSX0FETUlOLFxuICAgICAgICBTdHJpbmcocmVzcG9uc2UuaXNTdXBlckFkbWluKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tWYWx0ZWNoQXV0aF0gRXJyb3IgZ3VhcmRhbmRvIHBlcm1pc29zOicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYXJnYSBsb3MgcGVybWlzb3MgZGVzZGUgc3RvcmFnZS5cbiAgICovXG4gIGxvYWRQZXJtaXNzaW9ucygpOiB7XG4gICAgcm9sZXM6IHN0cmluZ1tdO1xuICAgIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG4gIH0ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByb2xlc0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleXMuUk9MRVMpO1xuICAgICAgY29uc3QgcGVybWlzc2lvbnNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlzLlBFUk1JU1NJT05TKTtcbiAgICAgIGNvbnN0IGlzU3VwZXJBZG1pbiA9XG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5cy5JU19TVVBFUl9BRE1JTikgPT09ICd0cnVlJztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm9sZXM6IHJvbGVzSnNvbiA/IEpTT04ucGFyc2Uocm9sZXNKc29uKSA6IFtdLFxuICAgICAgICBwZXJtaXNzaW9uczogcGVybWlzc2lvbnNKc29uID8gSlNPTi5wYXJzZShwZXJtaXNzaW9uc0pzb24pIDogW10sXG4gICAgICAgIGlzU3VwZXJBZG1pbixcbiAgICAgIH07XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4geyByb2xlczogW10sIHBlcm1pc3Npb25zOiBbXSwgaXNTdXBlckFkbWluOiBmYWxzZSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIHJlZnJlc2ggdG9rZW4uXG4gICAqL1xuICBnZXRSZWZyZXNoVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5cy5SRUZSRVNIX1RPS0VOKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgdG9kbyBlbCBlc3RhZG8gZGUgYXV0ZW50aWNhY2nDs24uXG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmtleXMpLmZvckVhY2goKGtleSkgPT4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdbVmFsdGVjaEF1dGhdIEVycm9yIGxpbXBpYW5kbyBzdG9yYWdlOicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBoYXkgZXN0YWRvIGd1YXJkYWRvLlxuICAgKi9cbiAgaGFzU3RvcmVkU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlzLkFDQ0VTU19UT0tFTik7XG4gIH1cbn1cbiJdfQ==
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL3N0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWUvQzs7R0FFRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsWUFDdUMsTUFBeUIsRUFDekMsVUFBa0I7UUFERixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUc5RCxJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLGVBQWUsQ0FBQztRQUM1RCxJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1YsWUFBWSxFQUFFLEdBQUcsTUFBTSxjQUFjO1lBQ3JDLGFBQWEsRUFBRSxHQUFHLE1BQU0sZUFBZTtZQUN2QyxLQUFLLEVBQUUsR0FBRyxNQUFNLE9BQU87WUFDdkIsV0FBVyxFQUFFLEdBQUcsTUFBTSxhQUFhO1lBQ25DLGNBQWMsRUFBRSxHQUFHLE1BQU0sZ0JBQWdCO1lBQ3pDLFVBQVUsRUFBRSxHQUFHLE1BQU0sWUFBWTtTQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLEtBQXNCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDO1lBQ0gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVyxD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RUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDakMsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDbEMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hELENBQUM7K0dBN0tVLGtCQUFrQixrQkFLbkIsbUJBQW1CLGFBQ25CLFdBQVc7bUhBTlYsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQU03QixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZBTFRFQ0hfQVVUSF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBTdG9yZWRBdXRoU3RhdGUsIEdldFBlcm1pc3Npb25zUmVzcG9uc2UsIFZhbHRlY2hBdXRoQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ2xhdmVzIGRlIHN0b3JhZ2UgcGFyYSBhdXRlbnRpY2FjacOzbi5cbiAqL1xuaW50ZXJmYWNlIFN0b3JhZ2VLZXlzIHtcbiAgQUNDRVNTX1RPS0VOOiBzdHJpbmc7XG4gIFJFRlJFU0hfVE9LRU46IHN0cmluZztcbiAgUk9MRVM6IHN0cmluZztcbiAgUEVSTUlTU0lPTlM6IHN0cmluZztcbiAgSVNfU1VQRVJfQURNSU46IHN0cmluZztcbiAgRVhQSVJFU19BVDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlcnZpY2lvIHBhcmEgcGVyc2lzdGVuY2lhIGRlIGVzdGFkbyBkZSBhdXRlbnRpY2FjacOzbiBlbiBsb2NhbFN0b3JhZ2UuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aFN0b3JhZ2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBrZXlzOiBTdG9yYWdlS2V5cztcbiAgcHJpdmF0ZSByZWFkb25seSBpc0Jyb3dzZXI6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEF1dGhDb25maWcsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogT2JqZWN0XG4gICkge1xuICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCk7XG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5jb25maWcuc3RvcmFnZVByZWZpeCB8fCAndmFsdGVjaF9hdXRoXyc7XG4gICAgdGhpcy5rZXlzID0ge1xuICAgICAgQUNDRVNTX1RPS0VOOiBgJHtwcmVmaXh9YWNjZXNzX3Rva2VuYCxcbiAgICAgIFJFRlJFU0hfVE9LRU46IGAke3ByZWZpeH1yZWZyZXNoX3Rva2VuYCxcbiAgICAgIFJPTEVTOiBgJHtwcmVmaXh9cm9sZXNgLFxuICAgICAgUEVSTUlTU0lPTlM6IGAke3ByZWZpeH1wZXJtaXNzaW9uc2AsXG4gICAgICBJU19TVVBFUl9BRE1JTjogYCR7cHJlZml4fWlzX3N1cGVyX2FkbWluYCxcbiAgICAgIEVYUElSRVNfQVQ6IGAke3ByZWZpeH1leHBpcmVzX2F0YCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEd1YXJkYSBlbCBlc3RhZG8gY29tcGxldG8gZGUgYXV0ZW50aWNhY2nDs24uXG4gICAqL1xuICBzYXZlU3RhdGUoc3RhdGU6IFN0b3JlZEF1dGhTdGF0ZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlzLkFDQ0VTU19UT0tFTiwgc3RhdGUuYWNjZXNzVG9rZW4pO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlzLlJFRlJFU0hfVE9LRU4sIHN0YXRlLnJlZnJlc2hUb2tlbik7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleXMuUk9MRVMsIEpTT04uc3RyaW5naWZ5KHN0YXRlLnJvbGVzKSk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgdGhpcy5rZXlzLlBFUk1JU1NJT05TLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShzdGF0ZS5wZXJtaXNzaW9ucylcbiAgICAgICk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgdGhpcy5rZXlzLklTX1NVUEVSX0FETUlOLFxuICAgICAgICBTdHJpbmcoc3RhdGUuaXNTdXBlckFkbWluKVxuICAgICAgKTtcbiAgICAgIGlmIChzdGF0ZS5leHBpcmVzQXQpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlzLkVYUElSRVNfQVQsIFN0cmluZyhzdGF0ZS5leHBpcmVzQXQpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tWYWx0ZWNoQXV0aF0gRXJyb3IgZ3VhcmRhbmRvIGVzdGFkbyBlbiBzdG9yYWdlOicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYXJnYSBlbCBlc3RhZG8gZGUgYXV0ZW50aWNhY2nDs24gZGVzZGUgc3RvcmFnZS5cbiAgICovXG4gIGxvYWRTdGF0ZSgpOiBQYXJ0aWFsPFN0b3JlZEF1dGhTdGF0ZT4ge1xuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybiB7fTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleXMuQUNDRVNTX1RPS0VOKTtcbiAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5cy5SRUZSRVNIX1RPS0VOKTtcbiAgICAgIGNvbnN0IHJvbGVzSnNvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5cy5ST0xFUyk7XG4gICAgICBjb25zdCBwZXJtaXNzaW9uc0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleXMuUEVSTUlTU0lPTlMpO1xuICAgICAgY29uc3QgaXNTdXBlckFkbWluID1cbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlzLklTX1NVUEVSX0FETUlOKSA9PT0gJ3RydWUnO1xuICAgICAgY29uc3QgZXhwaXJlc0F0U3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlzLkVYUElSRVNfQVQpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2Nlc3NUb2tlbjogYWNjZXNzVG9rZW4gfHwgdW5kZWZpbmVkLFxuICAgICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hUb2tlbiB8fCB1bmRlZmluZWQsXG4gICAgICAgIHJvbGVzOiByb2xlc0pzb24gPyBKU09OLnBhcnNlKHJvbGVzSnNvbikgOiBbXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHBlcm1pc3Npb25zSnNvbiA/IEpTT04ucGFyc2UocGVybWlzc2lvbnNKc29uKSA6IFtdLFxuICAgICAgICBpc1N1cGVyQWRtaW4sXG4gICAgICAgIGV4cGlyZXNBdDogZXhwaXJlc0F0U3RyID8gTnVtYmVyKGV4cGlyZXNBdFN0cikgOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1ZhbHRlY2hBdXRoXSBFcnJvciBjYXJnYW5kbyBlc3RhZG8gZGVzZGUgc3RvcmFnZTonLCBlKTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR3VhcmRhIHNvbG8gZWwgYWNjZXNzIHRva2VuLlxuICAgKi9cbiAgc2F2ZUFjY2Vzc1Rva2VuKHRva2VuOiBzdHJpbmcsIGV4cGlyZXNBdD86IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5rZXlzLkFDQ0VTU19UT0tFTiwgdG9rZW4pO1xuICAgICAgaWYgKGV4cGlyZXNBdCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleXMuRVhQSVJFU19BVCwgU3RyaW5nKGV4cGlyZXNBdCkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1ZhbHRlY2hBdXRoXSBFcnJvciBndWFyZGFuZG8gYWNjZXNzIHRva2VuOicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgZWwgcmVmcmVzaCB0b2tlbiAodG9rZW4gcm90YXRpb24pLlxuICAgKi9cbiAgc2F2ZVJlZnJlc2hUb2tlbih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleXMuUkVGUkVTSF9UT0tFTiwgdG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1ZhbHRlY2hBdXRoXSBFcnJvciBndWFyZGFuZG8gcmVmcmVzaCB0b2tlbjonLCBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR3VhcmRhIGxvcyBwZXJtaXNvcyBhY3R1YWxpemFkb3MuXG4gICAqL1xuICBzYXZlUGVybWlzc2lvbnMocmVzcG9uc2U6IEdldFBlcm1pc3Npb25zUmVzcG9uc2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMua2V5cy5ST0xFUywgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2Uucm9sZXMpKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICB0aGlzLmtleXMuUEVSTUlTU0lPTlMsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLnBlcm1pc3Npb25zKVxuICAgICAgKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICB0aGlzLmtleXMuSVNfU1VQRVJfQURNSU4sXG4gICAgICAgIFN0cmluZyhyZXNwb25zZS5pc1N1cGVyQWRtaW4pXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1ZhbHRlY2hBdXRoXSBFcnJvciBndWFyZGFuZG8gcGVybWlzb3M6JywgZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGxvcyBwZXJtaXNvcyBkZXNkZSBzdG9yYWdlLlxuICAgKi9cbiAgbG9hZFBlcm1pc3Npb25zKCk6IHtcbiAgICByb2xlczogc3RyaW5nW107XG4gICAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICAgIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgfSB7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuIHsgcm9sZXM6IFtdLCBwZXJtaXNzaW9uczogW10sIGlzU3VwZXJBZG1pbjogZmFsc2UgfTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJvbGVzSnNvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5cy5ST0xFUyk7XG4gICAgICBjb25zdCBwZXJtaXNzaW9uc0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleXMuUEVSTUlTU0lPTlMpO1xuICAgICAgY29uc3QgaXNTdXBlckFkbWluID1cbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlzLklTX1NVUEVSX0FETUlOKSA9PT0gJ3RydWUnO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICByb2xlczogcm9sZXNKc29uID8gSlNPTi5wYXJzZShyb2xlc0pzb24pIDogW10sXG4gICAgICAgIHBlcm1pc3Npb25zOiBwZXJtaXNzaW9uc0pzb24gPyBKU09OLnBhcnNlKHBlcm1pc3Npb25zSnNvbikgOiBbXSxcbiAgICAgICAgaXNTdXBlckFkbWluLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB7IHJvbGVzOiBbXSwgcGVybWlzc2lvbnM6IFtdLCBpc1N1cGVyQWRtaW46IGZhbHNlIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgcmVmcmVzaCB0b2tlbi5cbiAgICovXG4gIGdldFJlZnJlc2hUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5rZXlzLlJFRlJFU0hfVE9LRU4pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbXBpYSB0b2RvIGVsIGVzdGFkbyBkZSBhdXRlbnRpY2FjacOzbi5cbiAgICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmtleXMpLmZvckVhY2goKGtleSkgPT4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdbVmFsdGVjaEF1dGhdIEVycm9yIGxpbXBpYW5kbyBzdG9yYWdlOicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBoYXkgZXN0YWRvIGd1YXJkYWRvLlxuICAgKi9cbiAgaGFzU3RvcmVkU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhIWxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMua2V5cy5BQ0NFU1NfVE9LRU4pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
2
3
|
import { Subject } from 'rxjs';
|
|
3
4
|
import { VALTECH_AUTH_CONFIG } from './config';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
@@ -7,21 +8,23 @@ import * as i0 from "@angular/core";
|
|
|
7
8
|
* Usa BroadcastChannel API con fallback a storage events.
|
|
8
9
|
*/
|
|
9
10
|
export class AuthSyncService {
|
|
10
|
-
constructor(config) {
|
|
11
|
+
constructor(config, platformId) {
|
|
11
12
|
this.config = config;
|
|
12
13
|
this.channel = null;
|
|
13
14
|
this.eventSubject = new Subject();
|
|
14
15
|
this.storageListener = null;
|
|
15
16
|
/** Observable de eventos de sincronización */
|
|
16
17
|
this.onEvent$ = this.eventSubject.asObservable();
|
|
18
|
+
this.isBrowser = isPlatformBrowser(platformId);
|
|
17
19
|
const prefix = this.config.storagePrefix || 'valtech_auth_';
|
|
18
20
|
this.channelName = `${prefix}sync_channel`;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Inicia la sincronización entre pestañas.
|
|
24
|
+
* SSR-noop — sync de pestañas solo aplica en browser.
|
|
22
25
|
*/
|
|
23
26
|
start() {
|
|
24
|
-
if (!this.config.enableTabSync) {
|
|
27
|
+
if (!this.config.enableTabSync || !this.isBrowser) {
|
|
25
28
|
return;
|
|
26
29
|
}
|
|
27
30
|
// Intentar usar BroadcastChannel API (mejor rendimiento)
|
|
@@ -41,7 +44,7 @@ export class AuthSyncService {
|
|
|
41
44
|
this.channel.close();
|
|
42
45
|
this.channel = null;
|
|
43
46
|
}
|
|
44
|
-
if (this.storageListener) {
|
|
47
|
+
if (this.storageListener && this.isBrowser) {
|
|
45
48
|
window.removeEventListener('storage', this.storageListener);
|
|
46
49
|
this.storageListener = null;
|
|
47
50
|
}
|
|
@@ -50,7 +53,7 @@ export class AuthSyncService {
|
|
|
50
53
|
* Envía un evento a otras pestañas.
|
|
51
54
|
*/
|
|
52
55
|
broadcast(event) {
|
|
53
|
-
if (!this.config.enableTabSync) {
|
|
56
|
+
if (!this.config.enableTabSync || !this.isBrowser) {
|
|
54
57
|
return;
|
|
55
58
|
}
|
|
56
59
|
const fullEvent = {
|
|
@@ -136,7 +139,7 @@ export class AuthSyncService {
|
|
|
136
139
|
}
|
|
137
140
|
this.eventSubject.next(event);
|
|
138
141
|
}
|
|
139
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthSyncService, deps: [{ token: VALTECH_AUTH_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
142
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthSyncService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
140
143
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthSyncService, providedIn: 'root' }); }
|
|
141
144
|
}
|
|
142
145
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthSyncService, decorators: [{
|
|
@@ -145,5 +148,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
145
148
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
146
149
|
type: Inject,
|
|
147
150
|
args: [VALTECH_AUTH_CONFIG]
|
|
151
|
+
}] }, { type: Object, decorators: [{
|
|
152
|
+
type: Inject,
|
|
153
|
+
args: [PLATFORM_ID]
|
|
148
154
|
}] }] });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL3N5bmMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHL0M7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFTMUIsWUFDdUMsTUFBeUI7UUFBekIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFUeEQsWUFBTyxHQUE0QixJQUFJLENBQUM7UUFFeEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUM1QyxvQkFBZSxHQUEyQyxJQUFJLENBQUM7UUFFdkUsOENBQThDO1FBQ3JDLGFBQVEsR0FBOEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUs5RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxlQUFlLENBQUM7UUFDNUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELHlEQUF5RDtRQUN6RCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTiw0QkFBNEI7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENB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Q0FBQyxLQUFvQjtRQUM5QyxNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxZQUFZLENBQUM7UUFFNUQsSUFBSSxDQUFDO1lBQ0gsMEVBQTBFO1lBQzFFLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4RCxpRUFBaUU7WUFDakUsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxZQUFZLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVcsQ0FBQyxLQUFvQjtRQUN0QyxpRUFBaUU7UUFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBbEpVLGVBQWUsa0JBVWhCLG1CQUFtQjttSEFWbEIsZUFBZSxjQURGLE1BQU07OzRGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBVzdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZBTFRFQ0hfQVVUSF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBdXRoU3luY0V2ZW50LCBBdXRoU3luY0V2ZW50VHlwZSwgVmFsdGVjaEF1dGhDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIHNpbmNyb25pemFjacOzbiBkZSBlc3RhZG8gZGUgYXV0ZW50aWNhY2nDs24gZW50cmUgcGVzdGHDsWFzLlxuICogVXNhIEJyb2FkY2FzdENoYW5uZWwgQVBJIGNvbiBmYWxsYmFjayBhIHN0b3JhZ2UgZXZlbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhTeW5jU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY2hhbm5lbDogQnJvYWRjYXN0Q2hhbm5lbCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNoYW5uZWxOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgZXZlbnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8QXV0aFN5bmNFdmVudD4oKTtcbiAgcHJpdmF0ZSBzdG9yYWdlTGlzdGVuZXI6ICgoZXZlbnQ6IFN0b3JhZ2VFdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAvKiogT2JzZXJ2YWJsZSBkZSBldmVudG9zIGRlIHNpbmNyb25pemFjacOzbiAqL1xuICByZWFkb25seSBvbkV2ZW50JDogT2JzZXJ2YWJsZTxBdXRoU3luY0V2ZW50PiA9IHRoaXMuZXZlbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFZhbHRlY2hBdXRoQ29uZmlnXG4gICkge1xuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuY29uZmlnLnN0b3JhZ2VQcmVmaXggfHwgJ3ZhbHRlY2hfYXV0aF8nO1xuICAgIHRoaXMuY2hhbm5lbE5hbWUgPSBgJHtwcmVmaXh9c3luY19jaGFubmVsYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmljaWEgbGEgc2luY3Jvbml6YWNpw7NuIGVudHJlIHBlc3Rhw7Fhcy5cbiAgICovXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlVGFiU3luYykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEludGVudGFyIHVzYXIgQnJvYWRjYXN0Q2hhbm5lbCBBUEkgKG1lam9yIHJlbmRpbWllbnRvKVxuICAgIGlmICh0eXBlb2YgQnJvYWRjYXN0Q2hhbm5lbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuaW5pdEJyb2FkY2FzdENoYW5uZWwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2sgYSBzdG9yYWdlIGV2ZW50c1xuICAgICAgdGhpcy5pbml0U3RvcmFnZUV2ZW50cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRpZW5lIGxhIHNpbmNyb25pemFjacOzbi5cbiAgICovXG4gIHN0b3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbm5lbCkge1xuICAgICAgdGhpcy5jaGFubmVsLmNsb3NlKCk7XG4gICAgICB0aGlzLmNoYW5uZWwgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0b3JhZ2VMaXN0ZW5lcikge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLnN0b3JhZ2VMaXN0ZW5lcik7XG4gICAgICB0aGlzLnN0b3JhZ2VMaXN0ZW5lciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVudsOtYSB1biBldmVudG8gYSBvdHJhcyBwZXN0YcOxYXMuXG4gICAqL1xuICBicm9hZGNhc3QoZXZlbnQ6IE9taXQ8QXV0aFN5bmNFdmVudCwgJ3RpbWVzdGFtcCc+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVUYWJTeW5jKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbEV2ZW50OiBBdXRoU3luY0V2ZW50ID0ge1xuICAgICAgLi4uZXZlbnQsXG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmNoYW5uZWwpIHtcbiAgICAgIHRoaXMuY2hhbm5lbC5wb3N0TWVzc2FnZShmdWxsRXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGYWxsYmFjazogdXNhciBsb2NhbFN0b3JhZ2UgcGFyYSBub3RpZmljYXJcbiAgICAgIHRoaXMuYnJvYWRjYXN0VmlhU3RvcmFnZShmdWxsRXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcCgpO1xuICAgIHRoaXMuZXZlbnRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBCcm9hZGNhc3RDaGFubmVsIEFQSS5cbiAgICovXG4gIHByaXZhdGUgaW5pdEJyb2FkY2FzdENoYW5uZWwoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKHRoaXMuY2hhbm5lbE5hbWUpO1xuXG4gICAgICB0aGlzLmNoYW5uZWwub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQ8QXV0aFN5bmNFdmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVFdmVudChldmVudC5kYXRhKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2hhbm5lbC5vbm1lc3NhZ2VlcnJvciA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbVmFsdGVjaEF1dGhdIEVycm9yIGVuIEJyb2FkY2FzdENoYW5uZWwsIHVzYW5kbyBmYWxsYmFjaycpO1xuICAgICAgICB0aGlzLmNoYW5uZWw/LmNsb3NlKCk7XG4gICAgICAgIHRoaXMuY2hhbm5lbCA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5pdFN0b3JhZ2VFdmVudHMoKTtcbiAgICAgIH07XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBCcm9hZGNhc3RDaGFubmVsIG5vIGRpc3BvbmlibGUsIHVzYXIgZmFsbGJhY2tcbiAgICAgIHRoaXMuaW5pdFN0b3JhZ2VFdmVudHMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBmYWxsYmFjayBjb24gc3RvcmFnZSBldmVudHMuXG4gICAqL1xuICBwcml2YXRlIGluaXRTdG9yYWdlRXZlbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBgJHt0aGlzLmNvbmZpZy5zdG9yYWdlUHJlZml4fXN5bmNfZXZlbnRgO1xuXG4gICAgdGhpcy5zdG9yYWdlTGlzdGVuZXIgPSAoZXZlbnQ6IFN0b3JhZ2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gc3RvcmFnZUtleSAmJiBldmVudC5uZXdWYWx1ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHN5bmNFdmVudDogQXV0aFN5bmNFdmVudCA9IEpTT04ucGFyc2UoZXZlbnQubmV3VmFsdWUpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXZlbnQoc3luY0V2ZW50KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JhciBldmVudG9zIG1hbCBmb3JtYWRvc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgdGhpcy5zdG9yYWdlTGlzdGVuZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudsOtYSBldmVudG8gdmlhIGxvY2FsU3RvcmFnZSAoZmFsbGJhY2spLlxuICAgKi9cbiAgcHJpdmF0ZSBicm9hZGNhc3RWaWFTdG9yYWdlKGV2ZW50OiBBdXRoU3luY0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IGAke3RoaXMuY29uZmlnLnN0b3JhZ2VQcmVmaXh9c3luY19ldmVudGA7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRXNjcmliaXIgeSBsdWVnbyBsaW1waWFyIHBhcmEgcGVybWl0aXIgbcO6bHRpcGxlcyBldmVudG9zIGRlbCBtaXNtbyB0aXBvXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShldmVudCkpO1xuICAgICAgLy8gVXNhciBzZXRUaW1lb3V0IHBhcmEgcGVybWl0aXIgcXVlIG90cmFzIHBlc3Rhw7FhcyBsZWFuIGVsIHZhbG9yXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oc3RvcmFnZUtleSk7XG4gICAgICB9LCAxMDApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29uc29sZS53YXJuKCdbVmFsdGVjaEF1dGhdIEVycm9yIGVudmlhbmRvIGV2ZW50byB2aWEgc3RvcmFnZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5lamEgdW4gZXZlbnRvIHJlY2liaWRvLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVFdmVudChldmVudDogQXV0aFN5bmNFdmVudCk6IHZvaWQge1xuICAgIC8vIFZlcmlmaWNhciBxdWUgZWwgZXZlbnRvIG5vIHNlYSBtdXkgYW50aWd1byAobcOhcyBkZSA1IHNlZ3VuZG9zKVxuICAgIGNvbnN0IGFnZSA9IERhdGUubm93KCkgLSBldmVudC50aW1lc3RhbXA7XG4gICAgaWYgKGFnZSA+IDUwMDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmV2ZW50U3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgfVxufVxuIl19
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL3N5bmMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRy9DOzs7R0FHRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBVzFCLFlBQ3VDLE1BQXlCLEVBQ3pDLFVBQWtCO1FBREYsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFYeEQsWUFBTyxHQUE0QixJQUFJLENBQUM7UUFFeEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUM1QyxvQkFBZSxHQUEyQyxJQUFJLENBQUM7UUFFdkUsOENBQThDO1FBQ3JDLGFBQVEsR0FBOEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQVE5RSxJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLGVBQWUsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEQsT0FBTztRQUNULENBQUM7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxPQUFP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TSxFQUFFOzswQkFhN0IsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZBTFRFQ0hfQVVUSF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBdXRoU3luY0V2ZW50LCBBdXRoU3luY0V2ZW50VHlwZSwgVmFsdGVjaEF1dGhDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIHNpbmNyb25pemFjacOzbiBkZSBlc3RhZG8gZGUgYXV0ZW50aWNhY2nDs24gZW50cmUgcGVzdGHDsWFzLlxuICogVXNhIEJyb2FkY2FzdENoYW5uZWwgQVBJIGNvbiBmYWxsYmFjayBhIHN0b3JhZ2UgZXZlbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhTeW5jU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY2hhbm5lbDogQnJvYWRjYXN0Q2hhbm5lbCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNoYW5uZWxOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgZXZlbnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8QXV0aFN5bmNFdmVudD4oKTtcbiAgcHJpdmF0ZSBzdG9yYWdlTGlzdGVuZXI6ICgoZXZlbnQ6IFN0b3JhZ2VFdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAvKiogT2JzZXJ2YWJsZSBkZSBldmVudG9zIGRlIHNpbmNyb25pemFjacOzbiAqL1xuICByZWFkb25seSBvbkV2ZW50JDogT2JzZXJ2YWJsZTxBdXRoU3luY0V2ZW50PiA9IHRoaXMuZXZlbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFZhbHRlY2hBdXRoQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdFxuICApIHtcbiAgICB0aGlzLmlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpO1xuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuY29uZmlnLnN0b3JhZ2VQcmVmaXggfHwgJ3ZhbHRlY2hfYXV0aF8nO1xuICAgIHRoaXMuY2hhbm5lbE5hbWUgPSBgJHtwcmVmaXh9c3luY19jaGFubmVsYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmljaWEgbGEgc2luY3Jvbml6YWNpw7NuIGVudHJlIHBlc3Rhw7Fhcy5cbiAgICogU1NSLW5vb3Ag4oCUIHN5bmMgZGUgcGVzdGHDsWFzIHNvbG8gYXBsaWNhIGVuIGJyb3dzZXIuXG4gICAqL1xuICBzdGFydCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZVRhYlN5bmMgfHwgIXRoaXMuaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSW50ZW50YXIgdXNhciBCcm9hZGNhc3RDaGFubmVsIEFQSSAobWVqb3IgcmVuZGltaWVudG8pXG4gICAgaWYgKHR5cGVvZiBCcm9hZGNhc3RDaGFubmVsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5pbml0QnJvYWRjYXN0Q2hhbm5lbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGYWxsYmFjayBhIHN0b3JhZ2UgZXZlbnRzXG4gICAgICB0aGlzLmluaXRTdG9yYWdlRXZlbnRzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGllbmUgbGEgc2luY3Jvbml6YWNpw7NuLlxuICAgKi9cbiAgc3RvcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGFubmVsKSB7XG4gICAgICB0aGlzLmNoYW5uZWwuY2xvc2UoKTtcbiAgICAgIHRoaXMuY2hhbm5lbCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RvcmFnZUxpc3RlbmVyICYmIHRoaXMuaXNCcm93c2VyKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIHRoaXMuc3RvcmFnZUxpc3RlbmVyKTtcbiAgICAgIHRoaXMuc3RvcmFnZUxpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW52w61hIHVuIGV2ZW50byBhIG90cmFzIHBlc3Rhw7Fhcy5cbiAgICovXG4gIGJyb2FkY2FzdChldmVudDogT21pdDxBdXRoU3luY0V2ZW50LCAndGltZXN0YW1wJz4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZVRhYlN5bmMgfHwgIXRoaXMuaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbEV2ZW50OiBBdXRoU3luY0V2ZW50ID0ge1xuICAgICAgLi4uZXZlbnQsXG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmNoYW5uZWwpIHtcbiAgICAgIHRoaXMuY2hhbm5lbC5wb3N0TWVzc2FnZShmdWxsRXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGYWxsYmFjazogdXNhciBsb2NhbFN0b3JhZ2UgcGFyYSBub3RpZmljYXJcbiAgICAgIHRoaXMuYnJvYWRjYXN0VmlhU3RvcmFnZShmdWxsRXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcCgpO1xuICAgIHRoaXMuZXZlbnRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBCcm9hZGNhc3RDaGFubmVsIEFQSS5cbiAgICovXG4gIHByaXZhdGUgaW5pdEJyb2FkY2FzdENoYW5uZWwoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKHRoaXMuY2hhbm5lbE5hbWUpO1xuXG4gICAgICB0aGlzLmNoYW5uZWwub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQ8QXV0aFN5bmNFdmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVFdmVudChldmVudC5kYXRhKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2hhbm5lbC5vbm1lc3NhZ2VlcnJvciA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbVmFsdGVjaEF1dGhdIEVycm9yIGVuIEJyb2FkY2FzdENoYW5uZWwsIHVzYW5kbyBmYWxsYmFjaycpO1xuICAgICAgICB0aGlzLmNoYW5uZWw/LmNsb3NlKCk7XG4gICAgICAgIHRoaXMuY2hhbm5lbCA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5pdFN0b3JhZ2VFdmVudHMoKTtcbiAgICAgIH07XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBCcm9hZGNhc3RDaGFubmVsIG5vIGRpc3BvbmlibGUsIHVzYXIgZmFsbGJhY2tcbiAgICAgIHRoaXMuaW5pdFN0b3JhZ2VFdmVudHMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBmYWxsYmFjayBjb24gc3RvcmFnZSBldmVudHMuXG4gICAqL1xuICBwcml2YXRlIGluaXRTdG9yYWdlRXZlbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBgJHt0aGlzLmNvbmZpZy5zdG9yYWdlUHJlZml4fXN5bmNfZXZlbnRgO1xuXG4gICAgdGhpcy5zdG9yYWdlTGlzdGVuZXIgPSAoZXZlbnQ6IFN0b3JhZ2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gc3RvcmFnZUtleSAmJiBldmVudC5uZXdWYWx1ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHN5bmNFdmVudDogQXV0aFN5bmNFdmVudCA9IEpTT04ucGFyc2UoZXZlbnQubmV3VmFsdWUpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXZlbnQoc3luY0V2ZW50KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JhciBldmVudG9zIG1hbCBmb3JtYWRvc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgdGhpcy5zdG9yYWdlTGlzdGVuZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudsOtYSBldmVudG8gdmlhIGxvY2FsU3RvcmFnZSAoZmFsbGJhY2spLlxuICAgKi9cbiAgcHJpdmF0ZSBicm9hZGNhc3RWaWFTdG9yYWdlKGV2ZW50OiBBdXRoU3luY0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IGAke3RoaXMuY29uZmlnLnN0b3JhZ2VQcmVmaXh9c3luY19ldmVudGA7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRXNjcmliaXIgeSBsdWVnbyBsaW1waWFyIHBhcmEgcGVybWl0aXIgbcO6bHRpcGxlcyBldmVudG9zIGRlbCBtaXNtbyB0aXBvXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShldmVudCkpO1xuICAgICAgLy8gVXNhciBzZXRUaW1lb3V0IHBhcmEgcGVybWl0aXIgcXVlIG90cmFzIHBlc3Rhw7FhcyBsZWFuIGVsIHZhbG9yXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oc3RvcmFnZUtleSk7XG4gICAgICB9LCAxMDApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29uc29sZS53YXJuKCdbVmFsdGVjaEF1dGhdIEVycm9yIGVudmlhbmRvIGV2ZW50byB2aWEgc3RvcmFnZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5lamEgdW4gZXZlbnRvIHJlY2liaWRvLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVFdmVudChldmVudDogQXV0aFN5bmNFdmVudCk6IHZvaWQge1xuICAgIC8vIFZlcmlmaWNhciBxdWUgZWwgZXZlbnRvIG5vIHNlYSBtdXkgYW50aWd1byAobcOhcyBkZSA1IHNlZ3VuZG9zKVxuICAgIGNvbnN0IGFnZSA9IERhdGUubm93KCkgLSBldmVudC50aW1lc3RhbXA7XG4gICAgaWYgKGFnZSA+IDUwMDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmV2ZW50U3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgfVxufVxuIl19
|
|
@@ -141,10 +141,13 @@ export class AnalyticsService {
|
|
|
141
141
|
* @param pageTitle - Título de la página (opcional)
|
|
142
142
|
*/
|
|
143
143
|
logPageView(pagePath, pageTitle) {
|
|
144
|
+
// SSR: document/window no existen como globals — optional chaining no protege
|
|
145
|
+
// contra ReferenceError. Cortocircuito explícito por platform.
|
|
146
|
+
const isBrowser = isPlatformBrowser(this.platformId);
|
|
144
147
|
this.logEvent('page_view', {
|
|
145
148
|
page_path: pagePath,
|
|
146
|
-
page_title: pageTitle ?? document
|
|
147
|
-
page_location: window
|
|
149
|
+
page_title: pageTitle ?? (isBrowser ? document.title : undefined),
|
|
150
|
+
page_location: isBrowser ? window.location.href : undefined,
|
|
148
151
|
});
|
|
149
152
|
}
|
|
150
153
|
/**
|
|
@@ -617,4 +620,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
617
620
|
type: Inject,
|
|
618
621
|
args: [PLATFORM_ID]
|
|
619
622
|
}] }] });
|
|
620
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWVuRCw2REFBNkQ7QUFDN0QsTUFBTSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQztBQUV4RCw4Q0FBOEM7QUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQ1UsUUFBa0IsRUFDZSxNQUE2QixFQUN6QyxVQUFrQjtRQUZ2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2UsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXBDakQsOEVBQThFO1FBQzlFLG1CQUFtQjtRQUNuQiw4RUFBOEU7UUFFN0Qsa0JBQWEsR0FBRyxNQUFNLENBQWU7WUFDcEQsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVjLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUF3QixF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Q25FLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ssaUJBQWlCLENBQ3ZCLElBQW9CLEVBQ3BCLElBQVksRUFDWixNQUFnQyxFQUNoQyxJQUFJLEdBQUcsS0FBSztRQUVaLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QjtZQUNqQyxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsSUFBSTtZQUNKLElBQUk7WUFDSixNQUFNO1lBQ04sSUFBSTtTQUNMLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3BDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDdkMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0Exb0JVLGdCQUFnQiwwQ0FvQ2pCLHVCQUF1QixhQUN2QixXQUFXO21IQXJDVixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBcUM3QixNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBQzlCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQW5hbHl0aWNzIFNlcnZpY2UgKEZpcmViYXNlIEdBNClcbiAqXG4gKiBTZXJ2aWNpbyBwYXJhIHRyYWNraW5nIGRlIGV2ZW50b3MsIHBhZ2Ugdmlld3MgeSBlcnJvcmVzIGNvbiBGaXJlYmFzZSBBbmFseXRpY3MuXG4gKiBJbnRlZ3JhIGNvbiBlbCBzaXN0ZW1hIGRlIGF1dGggcGFyYSB1c2VyIHByb3BlcnRpZXMgeSByZXNwZXRhIGNvbnNlbnQgbW9kZSBHRFBSLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFBMQVRGT1JNX0lELCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBbmFseXRpY3MsIGxvZ0V2ZW50LCBzZXRVc2VySWQsIHNldFVzZXJQcm9wZXJ0aWVzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hbmFseXRpY3MnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IFZhbHRlY2hGaXJlYmFzZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgQW5hbHl0aWNzQ29uZmlnLFxuICBBbmFseXRpY3NEZWJ1Z0V2ZW50LFxuICBBbmFseXRpY3NFdmVudE5hbWUsXG4gIEFuYWx5dGljc0V2ZW50UGFyYW1zLFxuICBBbmFseXRpY3NJdGVtLFxuICBDb25zZW50U2V0dGluZ3MsXG4gIENvbnNlbnRTdGF0ZSxcbiAgRGVidWdFdmVudFR5cGUsXG4gIFRpbWluZ01ldHJpYyxcbiAgVXNlclByb3BlcnRpZXMsXG59IGZyb20gJy4vYW5hbHl0aWNzLXR5cGVzJztcblxuLyoqIEtleSBwb3IgZGVmZWN0byBwYXJhIHBlcnNpc3RpciBjb25zZW50IGVuIGxvY2FsU3RvcmFnZSAqL1xuY29uc3QgREVGQVVMVF9DT05TRU5UX1NUT1JBR0VfS0VZID0gJ2FuYWx5dGljc19jb25zZW50JztcblxuLyoqIE3DoXhpbW8gZGUgZXZlbnRvcyBlbiBoaXN0b3JpYWwgZGUgZGVidWcgKi9cbmNvbnN0IE1BWF9ERUJVR19ISVNUT1JZID0gMTAwO1xuXG4vKipcbiAqIFNlcnZpY2lvIGRlIEZpcmViYXNlIEFuYWx5dGljcyAoR0E0KS5cbiAqXG4gKiBQcm9wb3JjaW9uYSB0cmFja2luZyBkZSBldmVudG9zLCBwYWdlIHZpZXdzLCBlcnJvcmVzIHkgbcOpdHJpY2FzIGRlIHBlcmZvcm1hbmNlLlxuICogU29wb3J0YSBHRFBSIENvbnNlbnQgTW9kZSB5IG1vZG8gZGVidWcgcGFyYSBkZXNhcnJvbGxvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIFByb2R1Y3RDb21wb25lbnQge1xuICogICBwcml2YXRlIGFuYWx5dGljcyA9IGluamVjdChBbmFseXRpY3NTZXJ2aWNlKTtcbiAqXG4gKiAgIG9uUHVyY2hhc2UocHJvZHVjdDogUHJvZHVjdCkge1xuICogICAgIHRoaXMuYW5hbHl0aWNzLmxvZ0V2ZW50KCdwdXJjaGFzZScsIHtcbiAqICAgICAgIHRyYW5zYWN0aW9uX2lkOiBvcmRlci5pZCxcbiAqICAgICAgIHZhbHVlOiBvcmRlci50b3RhbCxcbiAqICAgICAgIGN1cnJlbmN5OiAnRVVSJ1xuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NTZXJ2aWNlIHtcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVTVEFETyAoU2lnbmFscylcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29uc2VudFN0YXRlID0gc2lnbmFsPENvbnNlbnRTdGF0ZT4oe1xuICAgIHNldHRpbmdzOiB7fSxcbiAgICB1cGRhdGVkQXQ6IG51bGwsXG4gICAgaGFzRGVjaWRlZDogZmFsc2UsXG4gIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRGVidWdNb2RlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVidWdIaXN0b3J5ID0gc2lnbmFsPEFuYWx5dGljc0RlYnVnRXZlbnRbXT4oW10pO1xuXG4gIC8qKiBFc3RhZG8gZGUgY29uc2VudGltaWVudG8gYWN0dWFsIChyZWFkb25seSkgKi9cbiAgcmVhZG9ubHkgY29uc2VudFN0YXRlID0gdGhpcy5fY29uc2VudFN0YXRlLmFzUmVhZG9ubHkoKTtcblxuICAvKiogSW5kaWNhIHNpIGVzdMOhIGVuIG1vZG8gZGVidWcgKi9cbiAgcmVhZG9ubHkgaXNEZWJ1Z01vZGUgPSB0aGlzLl9pc0RlYnVnTW9kZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBhbmFseXRpY3MgZXN0w6EgaGFiaWxpdGFkbyB5IGZ1bmNpb25hbmRvICovXG4gIHJlYWRvbmx5IGlzRW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pc0FuYWx5dGljc1N1cHBvcnRlZCgpICYmIHRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLmFuYWx5dGljcyA9PT0gdHJ1ZTtcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENPTkZJR1VSQUNJw5NOXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgYW5hbHl0aWNzQ29uZmlnOiBBbmFseXRpY3NDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc2VudFN0b3JhZ2VLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudFByZWZpeDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbXBsaW5nUmF0ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoRmlyZWJhc2VDb25maWcsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3RcbiAgKSB7XG4gICAgdGhpcy5hbmFseXRpY3NDb25maWcgPSBjb25maWcuYW5hbHl0aWNzQ29uZmlnID8/IHt9O1xuICAgIHRoaXMuY29uc2VudFN0b3JhZ2VLZXkgPVxuICAgICAgdGhpcy5hbmFseXRpY3NDb25maWcuY29uc2VudFN0b3JhZ2VLZXkgPz8gREVGQVVMVF9DT05TRU5UX1NUT1JBR0VfS0VZO1xuICAgIHRoaXMuZXZlbnRQcmVmaXggPSB0aGlzLmFuYWx5dGljc0NvbmZpZy5ldmVudFByZWZpeCA/PyAnJztcbiAgICB0aGlzLnNhbXBsaW5nUmF0ZSA9IHRoaXMuYW5hbHl0aWNzQ29uZmlnLnNhbXBsaW5nUmF0ZSA/PyAxLjA7XG5cbiAgICB0aGlzLmluaXRpYWxpemVBbmFseXRpY3MoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0nDk05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEluaWNpYWxpemEgZWwgc2VydmljaW8gZGUgYW5hbHl0aWNzXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVBbmFseXRpY3MoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2FyZ2FyIGNvbnNlbnQgZGVzZGUgbG9jYWxTdG9yYWdlXG4gICAgdGhpcy5sb2FkQ29uc2VudEZyb21TdG9yYWdlKCk7XG5cbiAgICAvLyBDb25maWd1cmFyIGRlYnVnIG1vZGVcbiAgICBjb25zdCBkZWJ1Z01vZGUgPSB0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWJ1Z01vZGUgPz8gZmFsc2U7XG4gICAgdGhpcy5faXNEZWJ1Z01vZGUuc2V0KGRlYnVnTW9kZSk7XG5cbiAgICAvLyBBcGxpY2FyIGNvbnNlbnQgaW5pY2lhbCBhIGd0YWdcbiAgICB0aGlzLmFwcGx5Q29uc2VudFRvR3RhZyh0aGlzLl9jb25zZW50U3RhdGUoKS5zZXR0aW5ncyk7XG5cbiAgICAvLyBTZXRlYXIgdXNlciBwcm9wZXJ0aWVzIHBvciBkZWZlY3RvXG4gICAgaWYgKHRoaXMuYW5hbHl0aWNzQ29uZmlnLmRlZmF1bHRVc2VyUHJvcGVydGllcykge1xuICAgICAgdGhpcy5zZXRVc2VyUHJvcGVydGllcyh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0VXNlclByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGlmIChkZWJ1Z01vZGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbQW5hbHl0aWNzXSBJbmljaWFsaXphZG8gZW4gbW9kbyBkZWJ1ZyAtIGV2ZW50b3Mgc2UgbG9ndWVhbiBlbiBjb25zb2xhIFkgc2UgZW52w61hbiBhIEZpcmViYXNlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgaW5zdGFuY2lhIGRlIEFuYWx5dGljcyBkZSBmb3JtYSBwZXJlem9zYS5cbiAgICogRXN0byBldml0YSBlbCBlcnJvciBkZSBBUFBfSU5JVElBTElaRVIgZGUgQW5ndWxhckZpcmUuXG4gICAqL1xuICBwcml2YXRlIGdldEFuYWx5dGljc0luc3RhbmNlKCk6IEFuYWx5dGljcyB8IG51bGwge1xuICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlQW5hbHl0aWNzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KEFuYWx5dGljcywgbnVsbCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgQW5hbHl0aWNzIGVzdMOhIHNvcG9ydGFkb1xuICAgKi9cbiAgcHJpdmF0ZSBpc0FuYWx5dGljc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZUFuYWx5dGljcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcuZmlyZWJhc2UubWVhc3VyZW1lbnRJZCkge1xuICAgICAgY29uc29sZS53YXJuKCdbQW5hbHl0aWNzXSBtZWFzdXJlbWVudElkIG5vIGNvbmZpZ3VyYWRvIGVuIGZpcmViYXNlIGNvbmZpZycpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIGRlYmUgZW52aWFyIGVsIGV2ZW50byAoc2FtcGxpbmcpXG4gICAqL1xuICBwcml2YXRlIHNob3VsZFNhbXBsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zYW1wbGluZ1JhdGUgPj0gMS4wKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgPCB0aGlzLnNhbXBsaW5nUmF0ZTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQQUdFIFZJRVdTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBwYWdlIHZpZXcuXG4gICAqIE5vcm1hbG1lbnRlIHNlIHVzYSBhdXRvbcOhdGljYW1lbnRlIHZpYSBBbmFseXRpY3NSb3V0ZXJUcmFja2VyLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZVBhdGggLSBSdXRhIGRlIGxhIHDDoWdpbmEgKGVqOiAnL3Byb2R1Y3RzLzEyMycpXG4gICAqIEBwYXJhbSBwYWdlVGl0bGUgLSBUw610dWxvIGRlIGxhIHDDoWdpbmEgKG9wY2lvbmFsKVxuICAgKi9cbiAgbG9nUGFnZVZpZXcocGFnZVBhdGg6IHN0cmluZywgcGFnZVRpdGxlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgncGFnZV92aWV3Jywge1xuICAgICAgcGFnZV9wYXRoOiBwYWdlUGF0aCxcbiAgICAgIHBhZ2VfdGl0bGU6IHBhZ2VUaXRsZSA/PyBkb2N1bWVudD8udGl0bGUsXG4gICAgICBwYWdlX2xvY2F0aW9uOiB3aW5kb3c/LmxvY2F0aW9uPy5ocmVmLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIHNjcmVlbiB2aWV3IChwYXJhIGFwcHMgdGlwbyBTUEEpLlxuICAgKlxuICAgKiBAcGFyYW0gc2NyZWVuTmFtZSAtIE5vbWJyZSBkZWwgc2NyZWVuXG4gICAqIEBwYXJhbSBzY3JlZW5DbGFzcyAtIENsYXNlIGRlbCBzY3JlZW4gKG9wY2lvbmFsKVxuICAgKi9cbiAgbG9nU2NyZWVuVmlldyhzY3JlZW5OYW1lOiBzdHJpbmcsIHNjcmVlbkNsYXNzPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgnc2NyZWVuX3ZpZXcnLCB7XG4gICAgICBzY3JlZW5fbmFtZTogc2NyZWVuTmFtZSxcbiAgICAgIHNjcmVlbl9jbGFzczogc2NyZWVuQ2xhc3MsXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVZFTlRPU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gZXZlbnRvIHRpcGFkbyBHQTQuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudE5hbWUgLSBOb21icmUgZGVsIGV2ZW50byAodGlwYWRvKVxuICAgKiBAcGFyYW0gcGFyYW1zIC0gUGFyw6FtZXRyb3MgZGVsIGV2ZW50byAodGlwYWRvcyBzZWfDum4gZWwgbm9tYnJlKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIEV2ZW50byB0aXBhZG8gY29uIGF1dG9jb21wbGV0YWRvXG4gICAqIGFuYWx5dGljcy5sb2dFdmVudCgnYWRkX3RvX2NhcnQnLCB7XG4gICAqICAgaXRlbV9pZDogJzEyMycsXG4gICAqICAgaXRlbV9uYW1lOiAnUHJvZHVjdG8nLFxuICAgKiAgIHZhbHVlOiA5OS45OSxcbiAgICogICBjdXJyZW5jeTogJ0VVUidcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgbG9nRXZlbnQ8VCBleHRlbmRzIEFuYWx5dGljc0V2ZW50TmFtZT4oXG4gICAgZXZlbnROYW1lOiBULFxuICAgIHBhcmFtcz86IEFuYWx5dGljc0V2ZW50UGFyYW1zW1RdXG4gICk6IHZvaWQge1xuICAgIHRoaXMudHJhY2tFdmVudChldmVudE5hbWUsIHBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gZXZlbnRvIGN1c3RvbSBjb24gcGFyw6FtZXRyb3MgbGlicmVzLlxuICAgKiBVc2FyIGN1YW5kbyBlbCBldmVudG8gbm8gZXN0w6EgZW4gZWwgY2F0w6Fsb2dvIHRpcGFkby5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50TmFtZSAtIE5vbWJyZSBkZWwgZXZlbnRvIGN1c3RvbVxuICAgKiBAcGFyYW0gcGFyYW1zIC0gUGFyw6FtZXRyb3MgbGlicmVzXG4gICAqL1xuICBsb2dDdXN0b21FdmVudChldmVudE5hbWU6IHN0cmluZywgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBjb25zdCBwcmVmaXhlZE5hbWUgPSB0aGlzLmV2ZW50UHJlZml4ICsgZXZlbnROYW1lO1xuICAgIHRoaXMudHJhY2tFdmVudChwcmVmaXhlZE5hbWUsIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogTMOzZ2ljYSBjb23Dum4gcGFyYSBlbnZpYXIgZXZlbnRvc1xuICAgKi9cbiAgcHJpdmF0ZSB0cmFja0V2ZW50KGV2ZW50TmFtZTogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIC8vIFZlcmlmaWNhciBjb25zZW50XG4gICAgaWYgKCF0aGlzLl9jb25zZW50U3RhdGUoKS5zZXR0aW5ncy5hbmFseXRpY3MpIHtcbiAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ2V2ZW50JywgZXZlbnROYW1lLCBwYXJhbXMsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBcGxpY2FyIHNhbXBsaW5nXG4gICAgaWYgKCF0aGlzLnNob3VsZFNhbXBsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVidWcgbW9kZTogbG9ndWVhciBlbiBjb25zb2xhIChwZXJvIHNlZ3VpciBlbnZpYW5kbyBhIEZpcmViYXNlKVxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW0FuYWx5dGljc10gRXZlbnQ6ICR7ZXZlbnROYW1lfWAsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLy8gRW52aWFyIGEgRmlyZWJhc2VcbiAgICBjb25zdCBhbmFseXRpY3MgPSB0aGlzLmdldEFuYWx5dGljc0luc3RhbmNlKCk7XG4gICAgaWYgKGFuYWx5dGljcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9nRXZlbnQoYW5hbHl0aWNzLCBldmVudE5hbWUgYXMgc3RyaW5nLCBwYXJhbXMpO1xuICAgICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCdldmVudCcsIGV2ZW50TmFtZSwgcGFyYW1zLCB0cnVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tBbmFseXRpY3NdIEVycm9yIGVudmlhbmRvIGV2ZW50bzonLCBlcnJvcik7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ2V2ZW50JywgZXZlbnROYW1lLCBwYXJhbXMsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFQ09NTUVSQ0VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHZpc3RhIGRlIGl0ZW1cbiAgICovXG4gIGxvZ1ZpZXdJdGVtKGl0ZW06IEFuYWx5dGljc0l0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0V2ZW50KCd2aWV3X2l0ZW0nLCB7XG4gICAgICBpdGVtX2lkOiBpdGVtLml0ZW1faWQsXG4gICAgICBpdGVtX25hbWU6IGl0ZW0uaXRlbV9uYW1lLFxuICAgICAgdmFsdWU6IGl0ZW0ucHJpY2UsXG4gICAgICBjdXJyZW5jeTogaXRlbS5jdXJyZW5jeSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBhZ3JlZ2FyIGFsIGNhcnJpdG9cbiAgICovXG4gIGxvZ0FkZFRvQ2FydChpdGVtOiBBbmFseXRpY3NJdGVtLCBxdWFudGl0eSA9IDEpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0V2ZW50KCdhZGRfdG9fY2FydCcsIHtcbiAgICAgIGl0ZW1faWQ6IGl0ZW0uaXRlbV9pZCxcbiAgICAgIGl0ZW1fbmFtZTogaXRlbS5pdGVtX25hbWUsXG4gICAgICB2YWx1ZTogKGl0ZW0ucHJpY2UgPz8gMCkgKiBxdWFudGl0eSxcbiAgICAgIGN1cnJlbmN5OiBpdGVtLmN1cnJlbmN5LFxuICAgICAgcXVhbnRpdHksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgaW5pY2lvIGRlIGNoZWNrb3V0XG4gICAqL1xuICBsb2dCZWdpbkNoZWNrb3V0KGl0ZW1zOiBBbmFseXRpY3NJdGVtW10sIHZhbHVlOiBudW1iZXIsIGN1cnJlbmN5ID0gJ0VVUicpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0V2ZW50KCdiZWdpbl9jaGVja291dCcsIHtcbiAgICAgIHZhbHVlLFxuICAgICAgY3VycmVuY3ksXG4gICAgICBpdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBjb21wcmEgY29tcGxldGFkYVxuICAgKi9cbiAgbG9nUHVyY2hhc2UoXG4gICAgdHJhbnNhY3Rpb25JZDogc3RyaW5nLFxuICAgIGl0ZW1zOiBBbmFseXRpY3NJdGVtW10sXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBjdXJyZW5jeSA9ICdFVVInXG4gICk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3B1cmNoYXNlJywge1xuICAgICAgdHJhbnNhY3Rpb25faWQ6IHRyYW5zYWN0aW9uSWQsXG4gICAgICB2YWx1ZSxcbiAgICAgIGN1cnJlbmN5LFxuICAgICAgaXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVNFUiBQUk9QRVJUSUVTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBTZXRlYSBlbCB1c2VySWQgcGFyYSBhc29jaWFyIGV2ZW50b3MgY29uIGVsIHVzdWFyaW8uXG4gICAqIExsYW1hZG8gYXV0b23DoXRpY2FtZW50ZSBzaSBlbmFibGVBdXRoSW50ZWdyYXRpb249dHJ1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJJZCAtIElEIGRlbCB1c3VhcmlvIG8gbnVsbCBwYXJhIGxpbXBpYXJcbiAgICovXG4gIHNldFVzZXJJZCh1c2VySWQ6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlYnVnIG1vZGU6IGxvZ3VlYXIgZW4gY29uc29sYSAocGVybyBzZWd1aXIgZW52aWFuZG8gYSBGaXJlYmFzZSlcbiAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coYFtBbmFseXRpY3NdIFNldCB1c2VySWQ6ICR7dXNlcklkfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFuYWx5dGljcyA9IHRoaXMuZ2V0QW5hbHl0aWNzSW5zdGFuY2UoKTtcbiAgICBpZiAoYW5hbHl0aWNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRVc2VySWQoYW5hbHl0aWNzLCB1c2VySWQpO1xuICAgICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3VzZXJfaWQnLCB7IHVzZXJJZCB9LCB0cnVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tBbmFseXRpY3NdIEVycm9yIHNldGVhbmRvIHVzZXJJZDonLCBlcnJvcik7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAndXNlcl9pZCcsIHsgdXNlcklkIH0sIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICd1c2VyX2lkJywgeyB1c2VySWQgfSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRlYSBwcm9waWVkYWRlcyBkZWwgdXN1YXJpbyBwYXJhIHNlZ21lbnRhY2nDs24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gUHJvcGllZGFkZXMga2V5LXZhbHVlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYW5hbHl0aWNzLnNldFVzZXJQcm9wZXJ0aWVzKHtcbiAgICogICBzdWJzY3JpcHRpb25fdGllcjogJ3ByZW1pdW0nLFxuICAgKiAgIHByZWZlcnJlZF9sYW5ndWFnZTogJ2VzJ1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBzZXRVc2VyUHJvcGVydGllcyhwcm9wZXJ0aWVzOiBVc2VyUHJvcGVydGllcyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQW5hbHl0aWNzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBtb2RlOiBsb2d1ZWFyIGVuIGNvbnNvbGEgKHBlcm8gc2VndWlyIGVudmlhbmRvIGEgRmlyZWJhc2UpXG4gICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbQW5hbHl0aWNzXSBTZXQgdXNlciBwcm9wZXJ0aWVzOicsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGFuYWx5dGljcyA9IHRoaXMuZ2V0QW5hbHl0aWNzSW5zdGFuY2UoKTtcbiAgICBpZiAoYW5hbHl0aWNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBDb252ZXJ0aXIgYSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHBhcmEgRmlyZWJhc2VcbiAgICAgICAgY29uc3Qgc3RyaW5nUHJvcHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc3RyaW5nUHJvcHNba2V5XSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldFVzZXJQcm9wZXJ0aWVzKGFuYWx5dGljcywgc3RyaW5nUHJvcHMpO1xuICAgICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3Byb3BlcnRpZXMnLCBwcm9wZXJ0aWVzLCB0cnVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tBbmFseXRpY3NdIEVycm9yIHNldGVhbmRvIHVzZXIgcHJvcGVydGllczonLCBlcnJvcik7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAncHJvcGVydGllcycsIHByb3BlcnRpZXMsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICdwcm9wZXJ0aWVzJywgcHJvcGVydGllcywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRlYSBsYSBvcmdhbml6YWNpw7NuIGFjdGl2YSAobXVsdGktdGVuYW50KS5cbiAgICogTGxhbWFkbyBhdXRvbcOhdGljYW1lbnRlIHNpIGVuYWJsZUF1dGhJbnRlZ3JhdGlvbj10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gb3JnSWQgLSBJRCBkZSBsYSBvcmdhbml6YWNpw7NuIG8gbnVsbFxuICAgKi9cbiAgc2V0QWN0aXZlT3JnYW5pemF0aW9uKG9yZ0lkOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKG9yZ0lkKSB7XG4gICAgICB0aGlzLnNldFVzZXJQcm9wZXJ0aWVzKHsgYWN0aXZlX29yZ2FuaXphdGlvbjogb3JnSWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVSUk9SIFRSQUNLSU5HXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBlcnJvciBwYXJhIHRyYWNraW5nLlxuICAgKiBJbnRlZ3JhIGF1dG9tw6F0aWNhbWVudGUgY29uIEFuZ3VsYXIgRXJyb3JIYW5kbGVyIHNpIGVuYWJsZUVycm9yVHJhY2tpbmc9dHJ1ZS5cbiAgICpcbiAgICogQHBhcmFtIGVycm9yIC0gRXJyb3IgbyBtZW5zYWplIGRlIGVycm9yXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gQ29udGV4dG8gYWRpY2lvbmFsXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdHJ5IHtcbiAgICogICBhd2FpdCByaXNreU9wZXJhdGlvbigpO1xuICAgKiB9IGNhdGNoIChlcnJvcikge1xuICAgKiAgIGFuYWx5dGljcy5sb2dFcnJvcihlcnJvciwgeyBjb250ZXh0OiAnY2hlY2tvdXRfZmxvdycgfSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBsb2dFcnJvcihlcnJvcjogRXJyb3IgfCBzdHJpbmcsIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvcjtcbiAgICBjb25zdCBlcnJvclN0YWNrID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLnN0YWNrIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGVycm9yVHlwZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5uYW1lIDogJ0Vycm9yJztcblxuICAgIHRoaXMubG9nRXZlbnQoJ2Vycm9yX29jY3VycmVkJywge1xuICAgICAgZXJyb3JfdHlwZTogZXJyb3JUeXBlLFxuICAgICAgZXJyb3JfbWVzc2FnZTogZXJyb3JNZXNzYWdlLnN1YnN0cmluZygwLCAxMDApLCAvLyBMaW1pdGFyIGxvbmdpdHVkXG4gICAgICBlcnJvcl9zdGFjazogZXJyb3JTdGFjaz8uc3Vic3RyaW5nKDAsIDUwMCksXG4gICAgICBjb250ZXh0OiBjb250ZXh0ID8gSlNPTi5zdHJpbmdpZnkoY29udGV4dCkgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gZXJyb3IgZmF0YWwgKGNyYXNoLWxldmVsKS5cbiAgICovXG4gIGxvZ0ZhdGFsRXJyb3IoZXJyb3I6IEVycm9yLCBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMubG9nRXJyb3IoZXJyb3IsIHsgLi4uY29udGV4dCwgc2V2ZXJpdHk6ICdmYXRhbCcgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ09OU0VOVCBNT0RFIChHRFBSKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQWN0dWFsaXphIGVsIGVzdGFkbyBkZSBjb25zZW50aW1pZW50byBkZWwgdXN1YXJpby5cbiAgICogQWZlY3RhIHF1w6kgZGF0b3Mgc2UgcmVjb2xlY3RhbiB5IGVudsOtYW4uXG4gICAqXG4gICAqIEBwYXJhbSBjb25zZW50IC0gU2V0dGluZ3MgZGUgY29uc2VudGltaWVudG9cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBVc3VhcmlvIGFjZXB0YSB0b2RvXG4gICAqIGFuYWx5dGljcy51cGRhdGVDb25zZW50KHsgYW5hbHl0aWNzOiB0cnVlLCBhZHZlcnRpc2luZzogdHJ1ZSB9KTtcbiAgICpcbiAgICogLy8gVXN1YXJpbyByZWNoYXphIHB1YmxpY2lkYWRcbiAgICogYW5hbHl0aWNzLnVwZGF0ZUNvbnNlbnQoeyBhbmFseXRpY3M6IHRydWUsIGFkdmVydGlzaW5nOiBmYWxzZSB9KTtcbiAgICogYGBgXG4gICAqL1xuICB1cGRhdGVDb25zZW50KGNvbnNlbnQ6IENvbnNlbnRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1N0YXRlOiBDb25zZW50U3RhdGUgPSB7XG4gICAgICBzZXR0aW5nczogeyAuLi50aGlzLl9jb25zZW50U3RhdGUoKS5zZXR0aW5ncywgLi4uY29uc2VudCB9LFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgaGFzRGVjaWRlZDogdHJ1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy5fY29uc2VudFN0YXRlLnNldChuZXdTdGF0ZSk7XG4gICAgdGhpcy5zYXZlQ29uc2VudFRvU3RvcmFnZShuZXdTdGF0ZSk7XG4gICAgdGhpcy5hcHBseUNvbnNlbnRUb0d0YWcobmV3U3RhdGUuc2V0dGluZ3MpO1xuXG4gICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnY29uc2VudCcsICd1cGRhdGUnLCBjb25zZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZW5pZWdhIHRvZG8gY29uc2VudGltaWVudG8uXG4gICAqL1xuICBkZW55QWxsQ29uc2VudCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUNvbnNlbnQoe1xuICAgICAgYW5hbHl0aWNzOiBmYWxzZSxcbiAgICAgIGFkdmVydGlzaW5nOiBmYWxzZSxcbiAgICAgIGZ1bmN0aW9uYWxpdHk6IGZhbHNlLFxuICAgICAgc2VjdXJpdHk6IHRydWUsIC8vIFNpZW1wcmUgcGVybWl0aWRvXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWNlcHRhIHRvZG8gY29uc2VudGltaWVudG8uXG4gICAqL1xuICBncmFudEFsbENvbnNlbnQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25zZW50KHtcbiAgICAgIGFuYWx5dGljczogdHJ1ZSxcbiAgICAgIGFkdmVydGlzaW5nOiB0cnVlLFxuICAgICAgZnVuY3Rpb25hbGl0eTogdHJ1ZSxcbiAgICAgIHNlY3VyaXR5OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgZXN0YWRvIGFjdHVhbCBkZSBjb25zZW50aW1pZW50by5cbiAgICovXG4gIGdldENvbnNlbnRTdGF0ZSgpOiBDb25zZW50U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9jb25zZW50U3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGxpY2EgY29uc2VudCBzZXR0aW5ncyBhIGd0YWcgKEdBNCBDb25zZW50IE1vZGUgdjIpXG4gICAqL1xuICBwcml2YXRlIGFwcGx5Q29uc2VudFRvR3RhZyhzZXR0aW5nczogQ29uc2VudFNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ3RhZyA9ICh3aW5kb3cgYXMgYW55KS5ndGFnO1xuICAgIGlmICh0eXBlb2YgZ3RhZyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBndGFnKCdjb25zZW50JywgJ3VwZGF0ZScsIHtcbiAgICAgICAgYW5hbHl0aWNzX3N0b3JhZ2U6IHNldHRpbmdzLmFuYWx5dGljcyA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBhZF9zdG9yYWdlOiBzZXR0aW5ncy5hZHZlcnRpc2luZyA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBhZF91c2VyX2RhdGE6IHNldHRpbmdzLmFkdmVydGlzaW5nID8gJ2dyYW50ZWQnIDogJ2RlbmllZCcsXG4gICAgICAgIGFkX3BlcnNvbmFsaXphdGlvbjogc2V0dGluZ3MuYWR2ZXJ0aXNpbmcgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgZnVuY3Rpb25hbGl0eV9zdG9yYWdlOiBzZXR0aW5ncy5mdW5jdGlvbmFsaXR5ID8gJ2dyYW50ZWQnIDogJ2RlbmllZCcsXG4gICAgICAgIHNlY3VyaXR5X3N0b3JhZ2U6IHNldHRpbmdzLnNlY3VyaXR5ICE9PSBmYWxzZSA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FuYWx5dGljc10gRXJyb3IgYXBsaWNhbmRvIGNvbnNlbnQgYSBndGFnOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FyZ2EgY29uc2VudCBkZXNkZSBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgbG9hZENvbnNlbnRGcm9tU3RvcmFnZSgpOiB2b2lkIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jb25zZW50U3RvcmFnZUtleSk7XG4gICAgICBpZiAoc3RvcmVkKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2Uoc3RvcmVkKSBhcyBDb25zZW50U3RhdGU7XG4gICAgICAgIHRoaXMuX2NvbnNlbnRTdGF0ZS5zZXQoe1xuICAgICAgICAgIC4uLnBhcnNlZCxcbiAgICAgICAgICB1cGRhdGVkQXQ6IHBhcnNlZC51cGRhdGVkQXQgPyBuZXcgRGF0ZShwYXJzZWQudXBkYXRlZEF0KSA6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudEdyYW50ZWQpIHtcbiAgICAgICAgLy8gQXV0by1ncmFudCBhbGwgY29uc2VudCBwYXJhIGRlc2Fycm9sbG8vdGVzdGluZ1xuICAgICAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KHtcbiAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgYW5hbHl0aWNzOiB0cnVlLFxuICAgICAgICAgICAgYWR2ZXJ0aXNpbmc6IHRydWUsXG4gICAgICAgICAgICBmdW5jdGlvbmFsaXR5OiB0cnVlLFxuICAgICAgICAgICAgc2VjdXJpdHk6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgaGFzRGVjaWRlZDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5hbHl0aWNzQ29uZmlnLmRlZmF1bHRDb25zZW50KSB7XG4gICAgICAgIC8vIEFwbGljYXIgY29uc2VudCBwb3IgZGVmZWN0byBzaSBubyBoYXkgZ3VhcmRhZG9cbiAgICAgICAgdGhpcy5fY29uc2VudFN0YXRlLnNldCh7XG4gICAgICAgICAgc2V0dGluZ3M6IHRoaXMuYW5hbHl0aWNzQ29uZmlnLmRlZmF1bHRDb25zZW50LFxuICAgICAgICAgIHVwZGF0ZWRBdDogbnVsbCxcbiAgICAgICAgICBoYXNEZWNpZGVkOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FuYWx5dGljc10gRXJyb3IgY2FyZ2FuZG8gY29uc2VudDonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEd1YXJkYSBjb25zZW50IGVuIGxvY2FsU3RvcmFnZVxuICAgKi9cbiAgcHJpdmF0ZSBzYXZlQ29uc2VudFRvU3RvcmFnZShzdGF0ZTogQ29uc2VudFN0YXRlKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY29uc2VudFN0b3JhZ2VLZXksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FuYWx5dGljc10gRXJyb3IgZ3VhcmRhbmRvIGNvbnNlbnQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUSU1JTkcgLyBQRVJGT1JNQU5DRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW5hIG3DqXRyaWNhIGRlIHRpbWluZy9wZXJmb3JtYW5jZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBOb21icmUgZGUgbGEgbcOpdHJpY2FcbiAgICogQHBhcmFtIHZhbHVlTXMgLSBWYWxvciBlbiBtaWxpc2VndW5kb3NcbiAgICogQHBhcmFtIHBhcmFtcyAtIFBhcsOhbWV0cm9zIGFkaWNpb25hbGVzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICogYXdhaXQgbG9hZERhdGEoKTtcbiAgICogYW5hbHl0aWNzLmxvZ1RpbWluZygnZGF0YV9sb2FkJywgcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydCwge1xuICAgKiAgIGNhdGVnb3J5OiAnYXBpJyxcbiAgICogICBlbmRwb2ludDogJy9wcm9kdWN0cydcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgbG9nVGltaW5nKG5hbWU6IHN0cmluZywgdmFsdWVNczogbnVtYmVyLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgncGVyZm9ybWFuY2VfbWV0cmljJywge1xuICAgICAgbWV0cmljX25hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogTWF0aC5yb3VuZCh2YWx1ZU1zKSxcbiAgICAgIHVuaXQ6ICdtcycsXG4gICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gREVCVUdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEhhYmlsaXRhL2Rlc2hhYmlsaXRhIG1vZG8gZGVidWcuXG4gICAqIEVuIGRlYnVnOiBsb2dlYSBldmVudG9zIGEgY29uc29sYSBhZGVtw6FzIGRlIGVudmlhcmxvcyBhIEZpcmViYXNlLlxuICAgKi9cbiAgc2V0RGVidWdNb2RlKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9pc0RlYnVnTW9kZS5zZXQoZW5hYmxlZCk7XG4gICAgY29uc29sZS5sb2coYFtBbmFseXRpY3NdIERlYnVnIG1vZGU6ICR7ZW5hYmxlZCA/ICdPTicgOiAnT0ZGJ31gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGhpc3RvcmlhbCBkZSBldmVudG9zIChzb2xvIGVuIGRlYnVnIG1vZGUpLlxuICAgKiDDmnRpbCBwYXJhIHRlc3RpbmcgeSBkZXNhcnJvbGxvLlxuICAgKi9cbiAgZ2V0RGVidWdIaXN0b3J5KCk6IEFuYWx5dGljc0RlYnVnRXZlbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlYnVnSGlzdG9yeSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBoaXN0b3JpYWwgZGUgZGVidWcuXG4gICAqL1xuICBjbGVhckRlYnVnSGlzdG9yeSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZWJ1Z0hpc3Rvcnkuc2V0KFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZ3JlZ2EgZXZlbnRvIGFsIGhpc3RvcmlhbCBkZSBkZWJ1Z1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRUb0RlYnVnSGlzdG9yeShcbiAgICB0eXBlOiBEZWJ1Z0V2ZW50VHlwZSxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgc2VudCA9IGZhbHNlXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50OiBBbmFseXRpY3NEZWJ1Z0V2ZW50ID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgdHlwZSxcbiAgICAgIG5hbWUsXG4gICAgICBwYXJhbXMsXG4gICAgICBzZW50LFxuICAgIH07XG5cbiAgICB0aGlzLl9kZWJ1Z0hpc3RvcnkudXBkYXRlKChoaXN0b3J5KSA9PiB7XG4gICAgICBjb25zdCBuZXdIaXN0b3J5ID0gW2V2ZW50LCAuLi5oaXN0b3J5XTtcbiAgICAgIHJldHVybiBuZXdIaXN0b3J5LnNsaWNlKDAsIE1BWF9ERUJVR19ISVNUT1JZKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
623
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWVuRCw2REFBNkQ7QUFDN0QsTUFBTSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQztBQUV4RCw4Q0FBOEM7QUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQ1UsUUFBa0IsRUFDZSxNQUE2QixFQUN6QyxVQUFrQjtRQUZ2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2UsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXBDakQsOEVBQThFO1FBQzlFLG1CQUFtQjtRQUNuQiw4RUFBOEU7UUFFN0Qsa0JBQWEsR0FBRyxNQUFNLENBQWU7WUFDcEQsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVjLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUF3QixF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RUFBRTs7MEJBcUM3QixNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBQzlCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQW5hbHl0aWNzIFNlcnZpY2UgKEZpcmViYXNlIEdBNClcbiAqXG4gKiBTZXJ2aWNpbyBwYXJhIHRyYWNraW5nIGRlIGV2ZW50b3MsIHBhZ2Ugdmlld3MgeSBlcnJvcmVzIGNvbiBGaXJlYmFzZSBBbmFseXRpY3MuXG4gKiBJbnRlZ3JhIGNvbiBlbCBzaXN0ZW1hIGRlIGF1dGggcGFyYSB1c2VyIHByb3BlcnRpZXMgeSByZXNwZXRhIGNvbnNlbnQgbW9kZSBHRFBSLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFBMQVRGT1JNX0lELCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBbmFseXRpY3MsIGxvZ0V2ZW50LCBzZXRVc2VySWQsIHNldFVzZXJQcm9wZXJ0aWVzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hbmFseXRpY3MnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IFZhbHRlY2hGaXJlYmFzZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgQW5hbHl0aWNzQ29uZmlnLFxuICBBbmFseXRpY3NEZWJ1Z0V2ZW50LFxuICBBbmFseXRpY3NFdmVudE5hbWUsXG4gIEFuYWx5dGljc0V2ZW50UGFyYW1zLFxuICBBbmFseXRpY3NJdGVtLFxuICBDb25zZW50U2V0dGluZ3MsXG4gIENvbnNlbnRTdGF0ZSxcbiAgRGVidWdFdmVudFR5cGUsXG4gIFRpbWluZ01ldHJpYyxcbiAgVXNlclByb3BlcnRpZXMsXG59IGZyb20gJy4vYW5hbHl0aWNzLXR5cGVzJztcblxuLyoqIEtleSBwb3IgZGVmZWN0byBwYXJhIHBlcnNpc3RpciBjb25zZW50IGVuIGxvY2FsU3RvcmFnZSAqL1xuY29uc3QgREVGQVVMVF9DT05TRU5UX1NUT1JBR0VfS0VZID0gJ2FuYWx5dGljc19jb25zZW50JztcblxuLyoqIE3DoXhpbW8gZGUgZXZlbnRvcyBlbiBoaXN0b3JpYWwgZGUgZGVidWcgKi9cbmNvbnN0IE1BWF9ERUJVR19ISVNUT1JZID0gMTAwO1xuXG4vKipcbiAqIFNlcnZpY2lvIGRlIEZpcmViYXNlIEFuYWx5dGljcyAoR0E0KS5cbiAqXG4gKiBQcm9wb3JjaW9uYSB0cmFja2luZyBkZSBldmVudG9zLCBwYWdlIHZpZXdzLCBlcnJvcmVzIHkgbcOpdHJpY2FzIGRlIHBlcmZvcm1hbmNlLlxuICogU29wb3J0YSBHRFBSIENvbnNlbnQgTW9kZSB5IG1vZG8gZGVidWcgcGFyYSBkZXNhcnJvbGxvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIFByb2R1Y3RDb21wb25lbnQge1xuICogICBwcml2YXRlIGFuYWx5dGljcyA9IGluamVjdChBbmFseXRpY3NTZXJ2aWNlKTtcbiAqXG4gKiAgIG9uUHVyY2hhc2UocHJvZHVjdDogUHJvZHVjdCkge1xuICogICAgIHRoaXMuYW5hbHl0aWNzLmxvZ0V2ZW50KCdwdXJjaGFzZScsIHtcbiAqICAgICAgIHRyYW5zYWN0aW9uX2lkOiBvcmRlci5pZCxcbiAqICAgICAgIHZhbHVlOiBvcmRlci50b3RhbCxcbiAqICAgICAgIGN1cnJlbmN5OiAnRVVSJ1xuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NTZXJ2aWNlIHtcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVTVEFETyAoU2lnbmFscylcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29uc2VudFN0YXRlID0gc2lnbmFsPENvbnNlbnRTdGF0ZT4oe1xuICAgIHNldHRpbmdzOiB7fSxcbiAgICB1cGRhdGVkQXQ6IG51bGwsXG4gICAgaGFzRGVjaWRlZDogZmFsc2UsXG4gIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRGVidWdNb2RlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVidWdIaXN0b3J5ID0gc2lnbmFsPEFuYWx5dGljc0RlYnVnRXZlbnRbXT4oW10pO1xuXG4gIC8qKiBFc3RhZG8gZGUgY29uc2VudGltaWVudG8gYWN0dWFsIChyZWFkb25seSkgKi9cbiAgcmVhZG9ubHkgY29uc2VudFN0YXRlID0gdGhpcy5fY29uc2VudFN0YXRlLmFzUmVhZG9ubHkoKTtcblxuICAvKiogSW5kaWNhIHNpIGVzdMOhIGVuIG1vZG8gZGVidWcgKi9cbiAgcmVhZG9ubHkgaXNEZWJ1Z01vZGUgPSB0aGlzLl9pc0RlYnVnTW9kZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBhbmFseXRpY3MgZXN0w6EgaGFiaWxpdGFkbyB5IGZ1bmNpb25hbmRvICovXG4gIHJlYWRvbmx5IGlzRW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pc0FuYWx5dGljc1N1cHBvcnRlZCgpICYmIHRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLmFuYWx5dGljcyA9PT0gdHJ1ZTtcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENPTkZJR1VSQUNJw5NOXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgYW5hbHl0aWNzQ29uZmlnOiBBbmFseXRpY3NDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc2VudFN0b3JhZ2VLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudFByZWZpeDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbXBsaW5nUmF0ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoRmlyZWJhc2VDb25maWcsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3RcbiAgKSB7XG4gICAgdGhpcy5hbmFseXRpY3NDb25maWcgPSBjb25maWcuYW5hbHl0aWNzQ29uZmlnID8/IHt9O1xuICAgIHRoaXMuY29uc2VudFN0b3JhZ2VLZXkgPVxuICAgICAgdGhpcy5hbmFseXRpY3NDb25maWcuY29uc2VudFN0b3JhZ2VLZXkgPz8gREVGQVVMVF9DT05TRU5UX1NUT1JBR0VfS0VZO1xuICAgIHRoaXMuZXZlbnRQcmVmaXggPSB0aGlzLmFuYWx5dGljc0NvbmZpZy5ldmVudFByZWZpeCA/PyAnJztcbiAgICB0aGlzLnNhbXBsaW5nUmF0ZSA9IHRoaXMuYW5hbHl0aWNzQ29uZmlnLnNhbXBsaW5nUmF0ZSA/PyAxLjA7XG5cbiAgICB0aGlzLmluaXRpYWxpemVBbmFseXRpY3MoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0nDk05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEluaWNpYWxpemEgZWwgc2VydmljaW8gZGUgYW5hbHl0aWNzXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVBbmFseXRpY3MoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2FyZ2FyIGNvbnNlbnQgZGVzZGUgbG9jYWxTdG9yYWdlXG4gICAgdGhpcy5sb2FkQ29uc2VudEZyb21TdG9yYWdlKCk7XG5cbiAgICAvLyBDb25maWd1cmFyIGRlYnVnIG1vZGVcbiAgICBjb25zdCBkZWJ1Z01vZGUgPSB0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWJ1Z01vZGUgPz8gZmFsc2U7XG4gICAgdGhpcy5faXNEZWJ1Z01vZGUuc2V0KGRlYnVnTW9kZSk7XG5cbiAgICAvLyBBcGxpY2FyIGNvbnNlbnQgaW5pY2lhbCBhIGd0YWdcbiAgICB0aGlzLmFwcGx5Q29uc2VudFRvR3RhZyh0aGlzLl9jb25zZW50U3RhdGUoKS5zZXR0aW5ncyk7XG5cbiAgICAvLyBTZXRlYXIgdXNlciBwcm9wZXJ0aWVzIHBvciBkZWZlY3RvXG4gICAgaWYgKHRoaXMuYW5hbHl0aWNzQ29uZmlnLmRlZmF1bHRVc2VyUHJvcGVydGllcykge1xuICAgICAgdGhpcy5zZXRVc2VyUHJvcGVydGllcyh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0VXNlclByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGlmIChkZWJ1Z01vZGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbQW5hbHl0aWNzXSBJbmljaWFsaXphZG8gZW4gbW9kbyBkZWJ1ZyAtIGV2ZW50b3Mgc2UgbG9ndWVhbiBlbiBjb25zb2xhIFkgc2UgZW52w61hbiBhIEZpcmViYXNlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgaW5zdGFuY2lhIGRlIEFuYWx5dGljcyBkZSBmb3JtYSBwZXJlem9zYS5cbiAgICogRXN0byBldml0YSBlbCBlcnJvciBkZSBBUFBfSU5JVElBTElaRVIgZGUgQW5ndWxhckZpcmUuXG4gICAqL1xuICBwcml2YXRlIGdldEFuYWx5dGljc0luc3RhbmNlKCk6IEFuYWx5dGljcyB8IG51bGwge1xuICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlQW5hbHl0aWNzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KEFuYWx5dGljcywgbnVsbCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgQW5hbHl0aWNzIGVzdMOhIHNvcG9ydGFkb1xuICAgKi9cbiAgcHJpdmF0ZSBpc0FuYWx5dGljc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZUFuYWx5dGljcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcuZmlyZWJhc2UubWVhc3VyZW1lbnRJZCkge1xuICAgICAgY29uc29sZS53YXJuKCdbQW5hbHl0aWNzXSBtZWFzdXJlbWVudElkIG5vIGNvbmZpZ3VyYWRvIGVuIGZpcmViYXNlIGNvbmZpZycpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIGRlYmUgZW52aWFyIGVsIGV2ZW50byAoc2FtcGxpbmcpXG4gICAqL1xuICBwcml2YXRlIHNob3VsZFNhbXBsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zYW1wbGluZ1JhdGUgPj0gMS4wKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgPCB0aGlzLnNhbXBsaW5nUmF0ZTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQQUdFIFZJRVdTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBwYWdlIHZpZXcuXG4gICAqIE5vcm1hbG1lbnRlIHNlIHVzYSBhdXRvbcOhdGljYW1lbnRlIHZpYSBBbmFseXRpY3NSb3V0ZXJUcmFja2VyLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZVBhdGggLSBSdXRhIGRlIGxhIHDDoWdpbmEgKGVqOiAnL3Byb2R1Y3RzLzEyMycpXG4gICAqIEBwYXJhbSBwYWdlVGl0bGUgLSBUw610dWxvIGRlIGxhIHDDoWdpbmEgKG9wY2lvbmFsKVxuICAgKi9cbiAgbG9nUGFnZVZpZXcocGFnZVBhdGg6IHN0cmluZywgcGFnZVRpdGxlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gU1NSOiBkb2N1bWVudC93aW5kb3cgbm8gZXhpc3RlbiBjb21vIGdsb2JhbHMg4oCUIG9wdGlvbmFsIGNoYWluaW5nIG5vIHByb3RlZ2VcbiAgICAvLyBjb250cmEgUmVmZXJlbmNlRXJyb3IuIENvcnRvY2lyY3VpdG8gZXhwbMOtY2l0byBwb3IgcGxhdGZvcm0uXG4gICAgY29uc3QgaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgICB0aGlzLmxvZ0V2ZW50KCdwYWdlX3ZpZXcnLCB7XG4gICAgICBwYWdlX3BhdGg6IHBhZ2VQYXRoLFxuICAgICAgcGFnZV90aXRsZTogcGFnZVRpdGxlID8/IChpc0Jyb3dzZXIgPyBkb2N1bWVudC50aXRsZSA6IHVuZGVmaW5lZCksXG4gICAgICBwYWdlX2xvY2F0aW9uOiBpc0Jyb3dzZXIgPyB3aW5kb3cubG9jYXRpb24uaHJlZiA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBzY3JlZW4gdmlldyAocGFyYSBhcHBzIHRpcG8gU1BBKS5cbiAgICpcbiAgICogQHBhcmFtIHNjcmVlbk5hbWUgLSBOb21icmUgZGVsIHNjcmVlblxuICAgKiBAcGFyYW0gc2NyZWVuQ2xhc3MgLSBDbGFzZSBkZWwgc2NyZWVuIChvcGNpb25hbClcbiAgICovXG4gIGxvZ1NjcmVlblZpZXcoc2NyZWVuTmFtZTogc3RyaW5nLCBzY3JlZW5DbGFzcz86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3NjcmVlbl92aWV3Jywge1xuICAgICAgc2NyZWVuX25hbWU6IHNjcmVlbk5hbWUsXG4gICAgICBzY3JlZW5fY2xhc3M6IHNjcmVlbkNsYXNzLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVWRU5UT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIGV2ZW50byB0aXBhZG8gR0E0LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIC0gTm9tYnJlIGRlbCBldmVudG8gKHRpcGFkbylcbiAgICogQHBhcmFtIHBhcmFtcyAtIFBhcsOhbWV0cm9zIGRlbCBldmVudG8gKHRpcGFkb3Mgc2Vnw7puIGVsIG5vbWJyZSlcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBFdmVudG8gdGlwYWRvIGNvbiBhdXRvY29tcGxldGFkb1xuICAgKiBhbmFseXRpY3MubG9nRXZlbnQoJ2FkZF90b19jYXJ0Jywge1xuICAgKiAgIGl0ZW1faWQ6ICcxMjMnLFxuICAgKiAgIGl0ZW1fbmFtZTogJ1Byb2R1Y3RvJyxcbiAgICogICB2YWx1ZTogOTkuOTksXG4gICAqICAgY3VycmVuY3k6ICdFVVInXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGxvZ0V2ZW50PFQgZXh0ZW5kcyBBbmFseXRpY3NFdmVudE5hbWU+KFxuICAgIGV2ZW50TmFtZTogVCxcbiAgICBwYXJhbXM/OiBBbmFseXRpY3NFdmVudFBhcmFtc1tUXVxuICApOiB2b2lkIHtcbiAgICB0aGlzLnRyYWNrRXZlbnQoZXZlbnROYW1lLCBwYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIGV2ZW50byBjdXN0b20gY29uIHBhcsOhbWV0cm9zIGxpYnJlcy5cbiAgICogVXNhciBjdWFuZG8gZWwgZXZlbnRvIG5vIGVzdMOhIGVuIGVsIGNhdMOhbG9nbyB0aXBhZG8uXG4gICAqXG4gICAqIEBwYXJhbSBldmVudE5hbWUgLSBOb21icmUgZGVsIGV2ZW50byBjdXN0b21cbiAgICogQHBhcmFtIHBhcmFtcyAtIFBhcsOhbWV0cm9zIGxpYnJlc1xuICAgKi9cbiAgbG9nQ3VzdG9tRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgY29uc3QgcHJlZml4ZWROYW1lID0gdGhpcy5ldmVudFByZWZpeCArIGV2ZW50TmFtZTtcbiAgICB0aGlzLnRyYWNrRXZlbnQocHJlZml4ZWROYW1lLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEzDs2dpY2EgY29tw7puIHBhcmEgZW52aWFyIGV2ZW50b3NcbiAgICovXG4gIHByaXZhdGUgdHJhY2tFdmVudChldmVudE5hbWU6IHN0cmluZywgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICAvLyBWZXJpZmljYXIgY29uc2VudFxuICAgIGlmICghdGhpcy5fY29uc2VudFN0YXRlKCkuc2V0dGluZ3MuYW5hbHl0aWNzKSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCdldmVudCcsIGV2ZW50TmFtZSwgcGFyYW1zLCBmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQXBsaWNhciBzYW1wbGluZ1xuICAgIGlmICghdGhpcy5zaG91bGRTYW1wbGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlYnVnIG1vZGU6IGxvZ3VlYXIgZW4gY29uc29sYSAocGVybyBzZWd1aXIgZW52aWFuZG8gYSBGaXJlYmFzZSlcbiAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coYFtBbmFseXRpY3NdIEV2ZW50OiAke2V2ZW50TmFtZX1gLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIC8vIEVudmlhciBhIEZpcmViYXNlXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvZ0V2ZW50KGFuYWx5dGljcywgZXZlbnROYW1lIGFzIHN0cmluZywgcGFyYW1zKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgdHJ1ZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbQW5hbHl0aWNzXSBFcnJvciBlbnZpYW5kbyBldmVudG86JywgZXJyb3IpO1xuICAgICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCdldmVudCcsIGV2ZW50TmFtZSwgcGFyYW1zLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ2V2ZW50JywgZXZlbnROYW1lLCBwYXJhbXMsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRUNPTU1FUkNFXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB2aXN0YSBkZSBpdGVtXG4gICAqL1xuICBsb2dWaWV3SXRlbShpdGVtOiBBbmFseXRpY3NJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgndmlld19pdGVtJywge1xuICAgICAgaXRlbV9pZDogaXRlbS5pdGVtX2lkLFxuICAgICAgaXRlbV9uYW1lOiBpdGVtLml0ZW1fbmFtZSxcbiAgICAgIHZhbHVlOiBpdGVtLnByaWNlLFxuICAgICAgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3ksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgYWdyZWdhciBhbCBjYXJyaXRvXG4gICAqL1xuICBsb2dBZGRUb0NhcnQoaXRlbTogQW5hbHl0aWNzSXRlbSwgcXVhbnRpdHkgPSAxKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgnYWRkX3RvX2NhcnQnLCB7XG4gICAgICBpdGVtX2lkOiBpdGVtLml0ZW1faWQsXG4gICAgICBpdGVtX25hbWU6IGl0ZW0uaXRlbV9uYW1lLFxuICAgICAgdmFsdWU6IChpdGVtLnByaWNlID8/IDApICogcXVhbnRpdHksXG4gICAgICBjdXJyZW5jeTogaXRlbS5jdXJyZW5jeSxcbiAgICAgIHF1YW50aXR5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGluaWNpbyBkZSBjaGVja291dFxuICAgKi9cbiAgbG9nQmVnaW5DaGVja291dChpdGVtczogQW5hbHl0aWNzSXRlbVtdLCB2YWx1ZTogbnVtYmVyLCBjdXJyZW5jeSA9ICdFVVInKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgnYmVnaW5fY2hlY2tvdXQnLCB7XG4gICAgICB2YWx1ZSxcbiAgICAgIGN1cnJlbmN5LFxuICAgICAgaXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgY29tcHJhIGNvbXBsZXRhZGFcbiAgICovXG4gIGxvZ1B1cmNoYXNlKFxuICAgIHRyYW5zYWN0aW9uSWQ6IHN0cmluZyxcbiAgICBpdGVtczogQW5hbHl0aWNzSXRlbVtdLFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgY3VycmVuY3kgPSAnRVVSJ1xuICApOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0V2ZW50KCdwdXJjaGFzZScsIHtcbiAgICAgIHRyYW5zYWN0aW9uX2lkOiB0cmFuc2FjdGlvbklkLFxuICAgICAgdmFsdWUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVTRVIgUFJPUEVSVElFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogU2V0ZWEgZWwgdXNlcklkIHBhcmEgYXNvY2lhciBldmVudG9zIGNvbiBlbCB1c3VhcmlvLlxuICAgKiBMbGFtYWRvIGF1dG9tw6F0aWNhbWVudGUgc2kgZW5hYmxlQXV0aEludGVncmF0aW9uPXRydWUuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VySWQgLSBJRCBkZWwgdXN1YXJpbyBvIG51bGwgcGFyYSBsaW1waWFyXG4gICAqL1xuICBzZXRVc2VySWQodXNlcklkOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQW5hbHl0aWNzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBtb2RlOiBsb2d1ZWFyIGVuIGNvbnNvbGEgKHBlcm8gc2VndWlyIGVudmlhbmRvIGEgRmlyZWJhc2UpXG4gICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBTZXQgdXNlcklkOiAke3VzZXJJZH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhbmFseXRpY3MgPSB0aGlzLmdldEFuYWx5dGljc0luc3RhbmNlKCk7XG4gICAgaWYgKGFuYWx5dGljcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0VXNlcklkKGFuYWx5dGljcywgdXNlcklkKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICd1c2VyX2lkJywgeyB1c2VySWQgfSwgdHJ1ZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbQW5hbHl0aWNzXSBFcnJvciBzZXRlYW5kbyB1c2VySWQ6JywgZXJyb3IpO1xuICAgICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3VzZXJfaWQnLCB7IHVzZXJJZCB9LCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAndXNlcl9pZCcsIHsgdXNlcklkIH0sIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0ZWEgcHJvcGllZGFkZXMgZGVsIHVzdWFyaW8gcGFyYSBzZWdtZW50YWNpw7NuLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydGllcyAtIFByb3BpZWRhZGVzIGtleS12YWx1ZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGFuYWx5dGljcy5zZXRVc2VyUHJvcGVydGllcyh7XG4gICAqICAgc3Vic2NyaXB0aW9uX3RpZXI6ICdwcmVtaXVtJyxcbiAgICogICBwcmVmZXJyZWRfbGFuZ3VhZ2U6ICdlcydcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgc2V0VXNlclByb3BlcnRpZXMocHJvcGVydGllczogVXNlclByb3BlcnRpZXMgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVidWcgbW9kZTogbG9ndWVhciBlbiBjb25zb2xhIChwZXJvIHNlZ3VpciBlbnZpYW5kbyBhIEZpcmViYXNlKVxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZygnW0FuYWx5dGljc10gU2V0IHVzZXIgcHJvcGVydGllczonLCBwcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBhbmFseXRpY3MgPSB0aGlzLmdldEFuYWx5dGljc0luc3RhbmNlKCk7XG4gICAgaWYgKGFuYWx5dGljcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ29udmVydGlyIGEgUmVjb3JkPHN0cmluZywgc3RyaW5nPiBwYXJhIEZpcmViYXNlXG4gICAgICAgIGNvbnN0IHN0cmluZ1Byb3BzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHN0cmluZ1Byb3BzW2tleV0gPSBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXRVc2VyUHJvcGVydGllcyhhbmFseXRpY3MsIHN0cmluZ1Byb3BzKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICdwcm9wZXJ0aWVzJywgcHJvcGVydGllcywgdHJ1ZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbQW5hbHl0aWNzXSBFcnJvciBzZXRlYW5kbyB1c2VyIHByb3BlcnRpZXM6JywgZXJyb3IpO1xuICAgICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3Byb3BlcnRpZXMnLCBwcm9wZXJ0aWVzLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAncHJvcGVydGllcycsIHByb3BlcnRpZXMsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0ZWEgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKG11bHRpLXRlbmFudCkuXG4gICAqIExsYW1hZG8gYXV0b23DoXRpY2FtZW50ZSBzaSBlbmFibGVBdXRoSW50ZWdyYXRpb249dHJ1ZS5cbiAgICpcbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjacOzbiBvIG51bGxcbiAgICovXG4gIHNldEFjdGl2ZU9yZ2FuaXphdGlvbihvcmdJZDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChvcmdJZCkge1xuICAgICAgdGhpcy5zZXRVc2VyUHJvcGVydGllcyh7IGFjdGl2ZV9vcmdhbml6YXRpb246IG9yZ0lkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFUlJPUiBUUkFDS0lOR1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gZXJyb3IgcGFyYSB0cmFja2luZy5cbiAgICogSW50ZWdyYSBhdXRvbcOhdGljYW1lbnRlIGNvbiBBbmd1bGFyIEVycm9ySGFuZGxlciBzaSBlbmFibGVFcnJvclRyYWNraW5nPXRydWUuXG4gICAqXG4gICAqIEBwYXJhbSBlcnJvciAtIEVycm9yIG8gbWVuc2FqZSBkZSBlcnJvclxuICAgKiBAcGFyYW0gY29udGV4dCAtIENvbnRleHRvIGFkaWNpb25hbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHRyeSB7XG4gICAqICAgYXdhaXQgcmlza3lPcGVyYXRpb24oKTtcbiAgICogfSBjYXRjaCAoZXJyb3IpIHtcbiAgICogICBhbmFseXRpY3MubG9nRXJyb3IoZXJyb3IsIHsgY29udGV4dDogJ2NoZWNrb3V0X2Zsb3cnIH0pO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgbG9nRXJyb3IoZXJyb3I6IEVycm9yIHwgc3RyaW5nLCBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogZXJyb3I7XG4gICAgY29uc3QgZXJyb3JTdGFjayA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5zdGFjayA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBlcnJvclR5cGUgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubmFtZSA6ICdFcnJvcic7XG5cbiAgICB0aGlzLmxvZ0V2ZW50KCdlcnJvcl9vY2N1cnJlZCcsIHtcbiAgICAgIGVycm9yX3R5cGU6IGVycm9yVHlwZSxcbiAgICAgIGVycm9yX21lc3NhZ2U6IGVycm9yTWVzc2FnZS5zdWJzdHJpbmcoMCwgMTAwKSwgLy8gTGltaXRhciBsb25naXR1ZFxuICAgICAgZXJyb3Jfc3RhY2s6IGVycm9yU3RhY2s/LnN1YnN0cmluZygwLCA1MDApLFxuICAgICAgY29udGV4dDogY29udGV4dCA/IEpTT04uc3RyaW5naWZ5KGNvbnRleHQpIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIGVycm9yIGZhdGFsIChjcmFzaC1sZXZlbCkuXG4gICAqL1xuICBsb2dGYXRhbEVycm9yKGVycm9yOiBFcnJvciwgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0Vycm9yKGVycm9yLCB7IC4uLmNvbnRleHQsIHNldmVyaXR5OiAnZmF0YWwnIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENPTlNFTlQgTU9ERSAoR0RQUilcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFjdHVhbGl6YSBlbCBlc3RhZG8gZGUgY29uc2VudGltaWVudG8gZGVsIHVzdWFyaW8uXG4gICAqIEFmZWN0YSBxdcOpIGRhdG9zIHNlIHJlY29sZWN0YW4geSBlbnbDrWFuLlxuICAgKlxuICAgKiBAcGFyYW0gY29uc2VudCAtIFNldHRpbmdzIGRlIGNvbnNlbnRpbWllbnRvXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gVXN1YXJpbyBhY2VwdGEgdG9kb1xuICAgKiBhbmFseXRpY3MudXBkYXRlQ29uc2VudCh7IGFuYWx5dGljczogdHJ1ZSwgYWR2ZXJ0aXNpbmc6IHRydWUgfSk7XG4gICAqXG4gICAqIC8vIFVzdWFyaW8gcmVjaGF6YSBwdWJsaWNpZGFkXG4gICAqIGFuYWx5dGljcy51cGRhdGVDb25zZW50KHsgYW5hbHl0aWNzOiB0cnVlLCBhZHZlcnRpc2luZzogZmFsc2UgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgdXBkYXRlQ29uc2VudChjb25zZW50OiBDb25zZW50U2V0dGluZ3MpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdTdGF0ZTogQ29uc2VudFN0YXRlID0ge1xuICAgICAgc2V0dGluZ3M6IHsgLi4udGhpcy5fY29uc2VudFN0YXRlKCkuc2V0dGluZ3MsIC4uLmNvbnNlbnQgfSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIGhhc0RlY2lkZWQ6IHRydWUsXG4gICAgfTtcblxuICAgIHRoaXMuX2NvbnNlbnRTdGF0ZS5zZXQobmV3U3RhdGUpO1xuICAgIHRoaXMuc2F2ZUNvbnNlbnRUb1N0b3JhZ2UobmV3U3RhdGUpO1xuICAgIHRoaXMuYXBwbHlDb25zZW50VG9HdGFnKG5ld1N0YXRlLnNldHRpbmdzKTtcblxuICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ2NvbnNlbnQnLCAndXBkYXRlJywgY29uc2VudCBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogRGVuaWVnYSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZGVueUFsbENvbnNlbnQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25zZW50KHtcbiAgICAgIGFuYWx5dGljczogZmFsc2UsXG4gICAgICBhZHZlcnRpc2luZzogZmFsc2UsXG4gICAgICBmdW5jdGlvbmFsaXR5OiBmYWxzZSxcbiAgICAgIHNlY3VyaXR5OiB0cnVlLCAvLyBTaWVtcHJlIHBlcm1pdGlkb1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjZXB0YSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZ3JhbnRBbGxDb25zZW50KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uc2VudCh7XG4gICAgICBhbmFseXRpY3M6IHRydWUsXG4gICAgICBhZHZlcnRpc2luZzogdHJ1ZSxcbiAgICAgIGZ1bmN0aW9uYWxpdHk6IHRydWUsXG4gICAgICBzZWN1cml0eTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBhY3R1YWwgZGUgY29uc2VudGltaWVudG8uXG4gICAqL1xuICBnZXRDb25zZW50U3RhdGUoKTogQ29uc2VudFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29uc2VudFN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQXBsaWNhIGNvbnNlbnQgc2V0dGluZ3MgYSBndGFnIChHQTQgQ29uc2VudCBNb2RlIHYyKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUNvbnNlbnRUb0d0YWcoc2V0dGluZ3M6IENvbnNlbnRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGd0YWcgPSAod2luZG93IGFzIGFueSkuZ3RhZztcbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZ3RhZygnY29uc2VudCcsICd1cGRhdGUnLCB7XG4gICAgICAgIGFuYWx5dGljc19zdG9yYWdlOiBzZXR0aW5ncy5hbmFseXRpY3MgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfc3RvcmFnZTogc2V0dGluZ3MuYWR2ZXJ0aXNpbmcgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfdXNlcl9kYXRhOiBzZXR0aW5ncy5hZHZlcnRpc2luZyA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBhZF9wZXJzb25hbGl6YXRpb246IHNldHRpbmdzLmFkdmVydGlzaW5nID8gJ2dyYW50ZWQnIDogJ2RlbmllZCcsXG4gICAgICAgIGZ1bmN0aW9uYWxpdHlfc3RvcmFnZTogc2V0dGluZ3MuZnVuY3Rpb25hbGl0eSA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBzZWN1cml0eV9zdG9yYWdlOiBzZXR0aW5ncy5zZWN1cml0eSAhPT0gZmFsc2UgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGFwbGljYW5kbyBjb25zZW50IGEgZ3RhZzonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGNvbnNlbnQgZGVzZGUgbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwcml2YXRlIGxvYWRDb25zZW50RnJvbVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uc2VudFN0b3JhZ2VLZXkpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHN0b3JlZCkgYXMgQ29uc2VudFN0YXRlO1xuICAgICAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KHtcbiAgICAgICAgICAuLi5wYXJzZWQsXG4gICAgICAgICAgdXBkYXRlZEF0OiBwYXJzZWQudXBkYXRlZEF0ID8gbmV3IERhdGUocGFyc2VkLnVwZGF0ZWRBdCkgOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdENvbnNlbnRHcmFudGVkKSB7XG4gICAgICAgIC8vIEF1dG8tZ3JhbnQgYWxsIGNvbnNlbnQgcGFyYSBkZXNhcnJvbGxvL3Rlc3RpbmdcbiAgICAgICAgdGhpcy5fY29uc2VudFN0YXRlLnNldCh7XG4gICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgIGFuYWx5dGljczogdHJ1ZSxcbiAgICAgICAgICAgIGFkdmVydGlzaW5nOiB0cnVlLFxuICAgICAgICAgICAgZnVuY3Rpb25hbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIHNlY3VyaXR5OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIGhhc0RlY2lkZWQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCkge1xuICAgICAgICAvLyBBcGxpY2FyIGNvbnNlbnQgcG9yIGRlZmVjdG8gc2kgbm8gaGF5IGd1YXJkYWRvXG4gICAgICAgIHRoaXMuX2NvbnNlbnRTdGF0ZS5zZXQoe1xuICAgICAgICAgIHNldHRpbmdzOiB0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG51bGwsXG4gICAgICAgICAgaGFzRGVjaWRlZDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGNhcmdhbmRvIGNvbnNlbnQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgc2F2ZUNvbnNlbnRUb1N0b3JhZ2Uoc3RhdGU6IENvbnNlbnRTdGF0ZSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmNvbnNlbnRTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGd1YXJkYW5kbyBjb25zZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVElNSU5HIC8gUEVSRk9STUFOQ0VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuYSBtw6l0cmljYSBkZSB0aW1pbmcvcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gTm9tYnJlIGRlIGxhIG3DqXRyaWNhXG4gICAqIEBwYXJhbSB2YWx1ZU1zIC0gVmFsb3IgZW4gbWlsaXNlZ3VuZG9zXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBhZGljaW9uYWxlc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAqIGF3YWl0IGxvYWREYXRhKCk7XG4gICAqIGFuYWx5dGljcy5sb2dUaW1pbmcoJ2RhdGFfbG9hZCcsIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQsIHtcbiAgICogICBjYXRlZ29yeTogJ2FwaScsXG4gICAqICAgZW5kcG9pbnQ6ICcvcHJvZHVjdHMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGxvZ1RpbWluZyhuYW1lOiBzdHJpbmcsIHZhbHVlTXM6IG51bWJlciwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3BlcmZvcm1hbmNlX21ldHJpYycsIHtcbiAgICAgIG1ldHJpY19uYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IE1hdGgucm91bmQodmFsdWVNcyksXG4gICAgICB1bml0OiAnbXMnLFxuICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERFQlVHXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBIYWJpbGl0YS9kZXNoYWJpbGl0YSBtb2RvIGRlYnVnLlxuICAgKiBFbiBkZWJ1ZzogbG9nZWEgZXZlbnRvcyBhIGNvbnNvbGEgYWRlbcOhcyBkZSBlbnZpYXJsb3MgYSBGaXJlYmFzZS5cbiAgICovXG4gIHNldERlYnVnTW9kZShlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNEZWJ1Z01vZGUuc2V0KGVuYWJsZWQpO1xuICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBEZWJ1ZyBtb2RlOiAke2VuYWJsZWQgPyAnT04nIDogJ09GRid9YCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBoaXN0b3JpYWwgZGUgZXZlbnRvcyAoc29sbyBlbiBkZWJ1ZyBtb2RlKS5cbiAgICogw5p0aWwgcGFyYSB0ZXN0aW5nIHkgZGVzYXJyb2xsby5cbiAgICovXG4gIGdldERlYnVnSGlzdG9yeSgpOiBBbmFseXRpY3NEZWJ1Z0V2ZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0hpc3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgaGlzdG9yaWFsIGRlIGRlYnVnLlxuICAgKi9cbiAgY2xlYXJEZWJ1Z0hpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVidWdIaXN0b3J5LnNldChbXSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIGV2ZW50byBhbCBoaXN0b3JpYWwgZGUgZGVidWdcbiAgICovXG4gIHByaXZhdGUgYWRkVG9EZWJ1Z0hpc3RvcnkoXG4gICAgdHlwZTogRGVidWdFdmVudFR5cGUsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHNlbnQgPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudDogQW5hbHl0aWNzRGVidWdFdmVudCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgIHR5cGUsXG4gICAgICBuYW1lLFxuICAgICAgcGFyYW1zLFxuICAgICAgc2VudCxcbiAgICB9O1xuXG4gICAgdGhpcy5fZGVidWdIaXN0b3J5LnVwZGF0ZSgoaGlzdG9yeSkgPT4ge1xuICAgICAgY29uc3QgbmV3SGlzdG9yeSA9IFtldmVudCwgLi4uaGlzdG9yeV07XG4gICAgICByZXR1cm4gbmV3SGlzdG9yeS5zbGljZSgwLCBNQVhfREVCVUdfSElTVE9SWSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|