mesauth-angular 0.2.2 โ 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -6
- package/dist/README.md +72 -6
- package/dist/esm2020/mes-auth.service.mjs +7 -8
- package/dist/esm2020/notification-panel.component.mjs +5 -6
- package/dist/esm2020/user-profile.component.mjs +2 -5
- package/dist/fesm2015/mesauth-angular.mjs +11 -16
- package/dist/fesm2015/mesauth-angular.mjs.map +1 -1
- package/dist/fesm2020/mesauth-angular.mjs +11 -16
- package/dist/fesm2020/mesauth-angular.mjs.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,55 @@
|
|
|
1
1
|
# mesauth-angular
|
|
2
2
|
|
|
3
|
-
Angular helper library to connect to a backend API and SignalR hub to surface the current logged-in user and incoming notifications.
|
|
3
|
+
Angular helper library to connect to a backend API and SignalR hub to surface the current logged-in user and incoming notifications with dark/light theme support.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- ๐ **Authentication**: User login/logout with API integration
|
|
8
|
+
- ๐ **Real-time Notifications**: SignalR integration for live notifications
|
|
9
|
+
- ๐จ **Dark/Light Theme**: Automatic theme detection and support
|
|
10
|
+
- ๐ผ๏ธ **Avatar Support**: Direct API-based avatar loading
|
|
11
|
+
- ๐ **Toast Notifications**: In-app notification toasts
|
|
12
|
+
- ๐ก๏ธ **HTTP Interceptor**: Automatic 403 error handling
|
|
13
|
+
|
|
14
|
+
## Theme Support
|
|
15
|
+
|
|
16
|
+
The library automatically detects and adapts to your application's theme:
|
|
17
|
+
|
|
18
|
+
### Automatic Theme Detection
|
|
19
|
+
The library checks for theme indicators on the `<html>` element:
|
|
20
|
+
- `class="dark"`
|
|
21
|
+
- `data-theme="dark"`
|
|
22
|
+
- `theme="dark"`
|
|
23
|
+
- `data-coreui-theme="dark"`
|
|
24
|
+
|
|
25
|
+
### Dynamic Theme Changes
|
|
26
|
+
Theme changes are detected in real-time using `MutationObserver`, so components automatically update when your app switches themes.
|
|
27
|
+
|
|
28
|
+
### Manual Theme Control
|
|
29
|
+
```ts
|
|
30
|
+
import { ThemeService } from 'mesauth-angular';
|
|
31
|
+
|
|
32
|
+
// Check current theme
|
|
33
|
+
const currentTheme = themeService.currentTheme; // 'light' | 'dark'
|
|
34
|
+
|
|
35
|
+
// Manually set theme
|
|
36
|
+
themeService.setTheme('dark');
|
|
37
|
+
|
|
38
|
+
// Listen for theme changes
|
|
39
|
+
themeService.currentTheme$.subscribe(theme => {
|
|
40
|
+
console.log('Theme changed to:', theme);
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Avatar Loading
|
|
45
|
+
|
|
46
|
+
Avatars are loaded directly from your API using the pattern: `GET /auth/{userId}/avatar`
|
|
47
|
+
|
|
48
|
+
- **API Endpoint**: `GET {apiBaseUrl}/auth/{userId}/avatar`
|
|
49
|
+
- **Fallback**: UI Avatars service if userId is not available
|
|
50
|
+
- **Authentication**: Uses the same credentials as other API calls
|
|
51
|
+
|
|
52
|
+
## Quick Start
|
|
4
53
|
|
|
5
54
|
## Quick Start
|
|
6
55
|
|
|
@@ -80,7 +129,6 @@ Angular helper library to connect to a backend API and SignalR hub to surface th
|
|
|
80
129
|
this.mesAuth.init({
|
|
81
130
|
apiBaseUrl: 'https://api.example.com',
|
|
82
131
|
withCredentials: true,
|
|
83
|
-
avatarUrl: 'https://api.example.com/avatars',
|
|
84
132
|
userBaseUrl: 'https://api.example.com/users'
|
|
85
133
|
});
|
|
86
134
|
|
|
@@ -97,7 +145,6 @@ Angular helper library to connect to a backend API and SignalR hub to surface th
|
|
|
97
145
|
mesAuth.init({
|
|
98
146
|
apiBaseUrl: 'https://api.example.com',
|
|
99
147
|
withCredentials: true,
|
|
100
|
-
avatarUrl: 'https://api.example.com/avatars',
|
|
101
148
|
userBaseUrl: 'https://api.example.com/users'
|
|
102
149
|
});
|
|
103
150
|
|
|
@@ -123,7 +170,6 @@ Angular helper library to connect to a backend API and SignalR hub to surface th
|
|
|
123
170
|
mesAuth.init({
|
|
124
171
|
apiBaseUrl: 'https://api.example.com',
|
|
125
172
|
withCredentials: true,
|
|
126
|
-
avatarUrl: 'https://api.example.com/avatars',
|
|
127
173
|
userBaseUrl: 'https://api.example.com/users'
|
|
128
174
|
});
|
|
129
175
|
},
|
|
@@ -210,9 +256,29 @@ A standalone component for displaying a slide-out notification panel with real-t
|
|
|
210
256
|
notificationPanel.open();
|
|
211
257
|
```
|
|
212
258
|
|
|
259
|
+
## Changelog
|
|
260
|
+
|
|
261
|
+
### v0.2.2 (Latest)
|
|
262
|
+
- โจ **Theme Support**: Added automatic dark/light theme detection and real-time theme switching
|
|
263
|
+
- ๐ผ๏ธ **Avatar API**: Changed avatar loading to use API endpoint (`/auth/{userId}/avatar`) instead of external service
|
|
264
|
+
- ๐งน **Code Cleanup**: Removed console.log statements for production readiness
|
|
265
|
+
- ๐จ **UI Improvements**: Better toast styling with proper borders and sizing
|
|
266
|
+
|
|
267
|
+
### v0.2.1
|
|
268
|
+
- ๐ **Dynamic Themes**: Added real-time theme change detection using MutationObserver
|
|
269
|
+
- ๐ **Toast Fixes**: Improved toast background and sizing for dark themes
|
|
270
|
+
|
|
271
|
+
### v0.2.0
|
|
272
|
+
- ๐จ **Initial Theme Support**: Basic dark/light theme implementation
|
|
273
|
+
- ๐ผ๏ธ **Avatar Updates**: Changed to API-based avatar loading
|
|
274
|
+
|
|
275
|
+
### v0.1.20
|
|
276
|
+
- ๐ **Bug fixes and improvements**
|
|
277
|
+
|
|
213
278
|
## Notes
|
|
214
|
-
- The service expects an endpoint `GET /
|
|
215
|
-
-
|
|
279
|
+
- The service expects an endpoint `GET {apiBaseUrl}/auth/me` that returns the current user.
|
|
280
|
+
- Avatar endpoint: `GET {apiBaseUrl}/auth/{userId}/avatar`
|
|
281
|
+
- SignalR events used: `ReceiveNotification` (adjust to your backend).
|
|
216
282
|
|
|
217
283
|
## Troubleshooting
|
|
218
284
|
|
package/dist/README.md
CHANGED
|
@@ -1,6 +1,55 @@
|
|
|
1
1
|
# mesauth-angular
|
|
2
2
|
|
|
3
|
-
Angular helper library to connect to a backend API and SignalR hub to surface the current logged-in user and incoming notifications.
|
|
3
|
+
Angular helper library to connect to a backend API and SignalR hub to surface the current logged-in user and incoming notifications with dark/light theme support.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- ๐ **Authentication**: User login/logout with API integration
|
|
8
|
+
- ๐ **Real-time Notifications**: SignalR integration for live notifications
|
|
9
|
+
- ๐จ **Dark/Light Theme**: Automatic theme detection and support
|
|
10
|
+
- ๐ผ๏ธ **Avatar Support**: Direct API-based avatar loading
|
|
11
|
+
- ๐ **Toast Notifications**: In-app notification toasts
|
|
12
|
+
- ๐ก๏ธ **HTTP Interceptor**: Automatic 403 error handling
|
|
13
|
+
|
|
14
|
+
## Theme Support
|
|
15
|
+
|
|
16
|
+
The library automatically detects and adapts to your application's theme:
|
|
17
|
+
|
|
18
|
+
### Automatic Theme Detection
|
|
19
|
+
The library checks for theme indicators on the `<html>` element:
|
|
20
|
+
- `class="dark"`
|
|
21
|
+
- `data-theme="dark"`
|
|
22
|
+
- `theme="dark"`
|
|
23
|
+
- `data-coreui-theme="dark"`
|
|
24
|
+
|
|
25
|
+
### Dynamic Theme Changes
|
|
26
|
+
Theme changes are detected in real-time using `MutationObserver`, so components automatically update when your app switches themes.
|
|
27
|
+
|
|
28
|
+
### Manual Theme Control
|
|
29
|
+
```ts
|
|
30
|
+
import { ThemeService } from 'mesauth-angular';
|
|
31
|
+
|
|
32
|
+
// Check current theme
|
|
33
|
+
const currentTheme = themeService.currentTheme; // 'light' | 'dark'
|
|
34
|
+
|
|
35
|
+
// Manually set theme
|
|
36
|
+
themeService.setTheme('dark');
|
|
37
|
+
|
|
38
|
+
// Listen for theme changes
|
|
39
|
+
themeService.currentTheme$.subscribe(theme => {
|
|
40
|
+
console.log('Theme changed to:', theme);
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Avatar Loading
|
|
45
|
+
|
|
46
|
+
Avatars are loaded directly from your API using the pattern: `GET /auth/{userId}/avatar`
|
|
47
|
+
|
|
48
|
+
- **API Endpoint**: `GET {apiBaseUrl}/auth/{userId}/avatar`
|
|
49
|
+
- **Fallback**: UI Avatars service if userId is not available
|
|
50
|
+
- **Authentication**: Uses the same credentials as other API calls
|
|
51
|
+
|
|
52
|
+
## Quick Start
|
|
4
53
|
|
|
5
54
|
## Quick Start
|
|
6
55
|
|
|
@@ -80,7 +129,6 @@ Angular helper library to connect to a backend API and SignalR hub to surface th
|
|
|
80
129
|
this.mesAuth.init({
|
|
81
130
|
apiBaseUrl: 'https://api.example.com',
|
|
82
131
|
withCredentials: true,
|
|
83
|
-
avatarUrl: 'https://api.example.com/avatars',
|
|
84
132
|
userBaseUrl: 'https://api.example.com/users'
|
|
85
133
|
});
|
|
86
134
|
|
|
@@ -97,7 +145,6 @@ Angular helper library to connect to a backend API and SignalR hub to surface th
|
|
|
97
145
|
mesAuth.init({
|
|
98
146
|
apiBaseUrl: 'https://api.example.com',
|
|
99
147
|
withCredentials: true,
|
|
100
|
-
avatarUrl: 'https://api.example.com/avatars',
|
|
101
148
|
userBaseUrl: 'https://api.example.com/users'
|
|
102
149
|
});
|
|
103
150
|
|
|
@@ -123,7 +170,6 @@ Angular helper library to connect to a backend API and SignalR hub to surface th
|
|
|
123
170
|
mesAuth.init({
|
|
124
171
|
apiBaseUrl: 'https://api.example.com',
|
|
125
172
|
withCredentials: true,
|
|
126
|
-
avatarUrl: 'https://api.example.com/avatars',
|
|
127
173
|
userBaseUrl: 'https://api.example.com/users'
|
|
128
174
|
});
|
|
129
175
|
},
|
|
@@ -210,9 +256,29 @@ A standalone component for displaying a slide-out notification panel with real-t
|
|
|
210
256
|
notificationPanel.open();
|
|
211
257
|
```
|
|
212
258
|
|
|
259
|
+
## Changelog
|
|
260
|
+
|
|
261
|
+
### v0.2.2 (Latest)
|
|
262
|
+
- โจ **Theme Support**: Added automatic dark/light theme detection and real-time theme switching
|
|
263
|
+
- ๐ผ๏ธ **Avatar API**: Changed avatar loading to use API endpoint (`/auth/{userId}/avatar`) instead of external service
|
|
264
|
+
- ๐งน **Code Cleanup**: Removed console.log statements for production readiness
|
|
265
|
+
- ๐จ **UI Improvements**: Better toast styling with proper borders and sizing
|
|
266
|
+
|
|
267
|
+
### v0.2.1
|
|
268
|
+
- ๐ **Dynamic Themes**: Added real-time theme change detection using MutationObserver
|
|
269
|
+
- ๐ **Toast Fixes**: Improved toast background and sizing for dark themes
|
|
270
|
+
|
|
271
|
+
### v0.2.0
|
|
272
|
+
- ๐จ **Initial Theme Support**: Basic dark/light theme implementation
|
|
273
|
+
- ๐ผ๏ธ **Avatar Updates**: Changed to API-based avatar loading
|
|
274
|
+
|
|
275
|
+
### v0.1.20
|
|
276
|
+
- ๐ **Bug fixes and improvements**
|
|
277
|
+
|
|
213
278
|
## Notes
|
|
214
|
-
- The service expects an endpoint `GET /
|
|
215
|
-
-
|
|
279
|
+
- The service expects an endpoint `GET {apiBaseUrl}/auth/me` that returns the current user.
|
|
280
|
+
- Avatar endpoint: `GET {apiBaseUrl}/auth/{userId}/avatar`
|
|
281
|
+
- SignalR events used: `ReceiveNotification` (adjust to your backend).
|
|
216
282
|
|
|
217
283
|
## Troubleshooting
|
|
218
284
|
|
|
@@ -41,7 +41,7 @@ export class MesAuthService {
|
|
|
41
41
|
this.startConnection(this.config);
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
|
-
error: (err) =>
|
|
44
|
+
error: (err) => { }
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
fetchInitialNotifications() {
|
|
@@ -53,7 +53,7 @@ export class MesAuthService {
|
|
|
53
53
|
notifications.items.forEach((n) => this._notifications.next(n));
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
|
-
error: (err) =>
|
|
56
|
+
error: (err) => { }
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
getUnreadCount() {
|
|
@@ -85,13 +85,12 @@ export class MesAuthService {
|
|
|
85
85
|
.configureLogging(LogLevel.Warning);
|
|
86
86
|
this.hubConnection = builder.build();
|
|
87
87
|
this.hubConnection.on('ReceiveNotification', (n) => {
|
|
88
|
-
console.log('Received notification:', n);
|
|
89
88
|
this._notifications.next(n);
|
|
90
89
|
});
|
|
91
|
-
this.hubConnection.start().then(() =>
|
|
92
|
-
this.hubConnection.onclose(() =>
|
|
93
|
-
this.hubConnection.onreconnecting(() =>
|
|
94
|
-
this.hubConnection.onreconnected(() =>
|
|
90
|
+
this.hubConnection.start().then(() => { }).catch((err) => { });
|
|
91
|
+
this.hubConnection.onclose(() => { });
|
|
92
|
+
this.hubConnection.onreconnecting(() => { });
|
|
93
|
+
this.hubConnection.onreconnected(() => { });
|
|
95
94
|
}
|
|
96
95
|
stop() {
|
|
97
96
|
if (!this.hubConnection)
|
|
@@ -114,4 +113,4 @@ MesAuthService.ษตprov = i0.ษตษตngDeclareInjectable({ minVersion: "12.0.0", versi
|
|
|
114
113
|
i0.ษตษตngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MesAuthService, decorators: [{
|
|
115
114
|
type: Injectable
|
|
116
115
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXMtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQW9DckMsTUFBTSxDQUFOLElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQixpQ0FBYSxDQUFBO0lBQ2IsdUNBQW1CLENBQUE7SUFDbkIsbUNBQWUsQ0FBQTtJQUNmLHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBc0NELE1BQU0sT0FBTyxjQUFjO0lBVXpCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFUNUIsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7UUFDeEQsaUJBQVksR0FBNkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6RSxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDckMsbUJBQWMsR0FBb0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwRSxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsV0FBTSxHQUF5QixJQUFJLENBQUM7SUFFTCxDQUFDO0lBRXhDLElBQUksQ0FBQyxNQUFxQjtRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFH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QUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDM0QsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDOzsyR0EvR1UsY0FBYzsrR0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvbiwgSHViQ29ubmVjdGlvbkJ1aWxkZXIsIExvZ0xldmVsIH0gZnJvbSAnQG1pY3Jvc29mdC9zaWduYWxyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVzQXV0aENvbmZpZyB7ICBcclxuICBhcGlCYXNlVXJsOiBzdHJpbmc7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxuICB1c2VyQmFzZVVybD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVXNlciB7XHJcbiAgdXNlcklkPzogc3RyaW5nO1xyXG4gIHVzZXJOYW1lPzogc3RyaW5nO1xyXG4gIGZ1bGxOYW1lPzogc3RyaW5nO1xyXG4gIGdlbmRlcj86IHN0cmluZztcclxuICBlbWFpbD86IHN0cmluZztcclxuICBwaG9uZU51bWJlcj86IHN0cmluZztcclxuICBkZXBhcnRtZW50Pzogc3RyaW5nO1xyXG4gIHBvc2l0aW9uPzogc3RyaW5nO1xyXG4gIHRva2VuVmVyc2lvbj86IHN0cmluZztcclxuICBwZXJtRW5kcG9pbnQ/OiBzdHJpbmc7XHJcbiAgcGVybXM/OiBTZXQ8c3RyaW5nPjtcclxuICBlbXBsb3llZUNvZGU/OiBzdHJpbmc7XHJcbiAgaHJGdWxsTmFtZVZuPzogc3RyaW5nO1xyXG4gIGhyRnVsbE5hbWVFbj86IHN0cmluZztcclxuICBoclBvc2l0aW9uPzogc3RyaW5nO1xyXG4gIGhySm9iVGl0bGU/OiBzdHJpbmc7XHJcbiAgaHJHZW5kZXI/OiBzdHJpbmc7XHJcbiAgaHJNb2JpbGU/OiBzdHJpbmc7XHJcbiAgaHJFbWFpbD86IHN0cmluZztcclxuICBockpvaW5EYXRlPzogc3RyaW5nO1xyXG4gIGhyQmlydGhEYXRlPzogc3RyaW5nO1xyXG4gIGhyV29ya1N0YXR1cz86IHN0cmluZztcclxuICBockRvaVR1b25nPzogc3RyaW5nO1xyXG4gIGhyVGVhbUNvZGU/OiBzdHJpbmc7XHJcbiAgaHJMaW5lQ29kZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uVHlwZSB7XHJcbiAgSW5mbyA9ICdJbmZvJyxcclxuICBXYXJuaW5nID0gJ1dhcm5pbmcnLFxyXG4gIEVycm9yID0gJ0Vycm9yJyxcclxuICBTdWNjZXNzID0gJ1N1Y2Nlc3MnXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRHRvIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2VIdG1sPzogc3RyaW5nO1xyXG4gIHVybD86IHN0cmluZztcclxuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlO1xyXG4gIGlzUmVhZDogYm9vbGVhbjtcclxuICBjcmVhdGVkQXQ6IHN0cmluZztcclxuICBzb3VyY2VBcHBOYW1lOiBzdHJpbmc7XHJcbiAgc291cmNlQXBwSWNvblVybD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdlZExpc3Q8VD4ge1xyXG4gIGl0ZW1zOiBUW107XHJcbiAgdG90YWxDb3VudDogbnVtYmVyO1xyXG4gIHBhZ2U6IG51bWJlcjtcclxuICBwYWdlU2l6ZTogbnVtYmVyO1xyXG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcclxuICBoYXNOZXh0OiBib29sZWFuO1xyXG4gIGhhc1ByZXZpb3VzOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlYWxUaW1lTm90aWZpY2F0aW9uRHRvIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2VIdG1sPzogc3RyaW5nO1xyXG4gIHVybD86IHN0cmluZztcclxuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlO1xyXG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xyXG4gIHNvdXJjZUFwcE5hbWU6IHN0cmluZztcclxuICBzb3VyY2VBcHBJY29uVXJsPzogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNZXNBdXRoU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBodWJDb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3VycmVudFVzZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElVc2VyIHwgbnVsbD4obnVsbCk7XHJcbiAgcHVibGljIGN1cnJlbnRVc2VyJDogT2JzZXJ2YWJsZTxJVXNlciB8IG51bGw+ID0gdGhpcy5fY3VycmVudFVzZXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHJpdmF0ZSBfbm90aWZpY2F0aW9ucyA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwdWJsaWMgbm90aWZpY2F0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX25vdGlmaWNhdGlvbnMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgYXBpQmFzZSA9ICcnO1xyXG4gIHByaXZhdGUgY29uZmlnOiBNZXNBdXRoQ29uZmlnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cclxuXHJcbiAgaW5pdChjb25maWc6IE1lc0F1dGhDb25maWcpIHtcclxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xyXG4gICAgdGhpcy5hcGlCYXNlID0gY29uZmlnLmFwaUJhc2VVcmwucmVwbGFjZSgvXFwvJC8sICcnKTtcclxuICAgIHRoaXMuZmV0Y2hDdXJyZW50VXNlcigpO1xyXG4gICAgdGhpcy5mZXRjaEluaXRpYWxOb3RpZmljYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb25maWcoKTogTWVzQXV0aENvbmZpZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaEN1cnJlbnRVc2VyKCkge1xyXG4gICAgaWYgKCF0aGlzLmFwaUJhc2UpIHJldHVybjtcclxuICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcGlCYXNlfS9hdXRoL21lYCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHUpID0+IHtcclxuICAgICAgICB0aGlzLl9jdXJyZW50VXNlci5uZXh0KHUpO1xyXG4gICAgICAgIGlmICh1ICYmIHRoaXMuY29uZmlnKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0Q29ubmVjdGlvbih0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4gY29uc29sZS5lcnJvcignZmV0Y2hDdXJyZW50VXNlciBlcnJvcicsIGVycilcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaEluaXRpYWxOb3RpZmljYXRpb25zKCkge1xyXG4gICAgaWYgKCF0aGlzLmFwaUJhc2UpIHJldHVybjtcclxuICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcGlCYXNlfS9ub3RpZi9tZWApLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChub3RpZmljYXRpb25zOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub3RpZmljYXRpb25zPy5pdGVtcykpIHtcclxuICAgICAgICAgIG5vdGlmaWNhdGlvbnMuaXRlbXMuZm9yRWFjaCgobjogYW55KSA9PiB0aGlzLl9ub3RpZmljYXRpb25zLm5leHQobikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IGNvbnNvbGUuZXJyb3IoJ2ZldGNoSW5pdGlhbE5vdGlmaWNhdGlvbnMgZXJyb3InLCBlcnIpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRVbnJlYWRDb3VudCgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcGlCYXNlfS9ub3RpZi9tZS91bnJlYWQtY291bnRgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXROb3RpZmljYXRpb25zKHBhZ2U6IG51bWJlciA9IDEsIHBhZ2VTaXplOiBudW1iZXIgPSAyMCwgaW5jbHVkZVJlYWQ6IGJvb2xlYW4gPSBmYWxzZSwgdHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5hcGlCYXNlfS9ub3RpZi9tZT9wYWdlPSR7cGFnZX0mcGFnZVNpemU9JHtwYWdlU2l6ZX0maW5jbHVkZVJlYWQ9JHtpbmNsdWRlUmVhZH1gO1xyXG4gICAgaWYgKHR5cGUpIHtcclxuICAgICAgdXJsICs9IGAmdHlwZT0ke3R5cGV9YDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWFya0FzUmVhZChub3RpZmljYXRpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7dGhpcy5hcGlCYXNlfS9ub3RpZi8ke25vdGlmaWNhdGlvbklkfS9yZWFkYCwge30pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1hcmtBbGxBc1JlYWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7dGhpcy5hcGlCYXNlfS9ub3RpZi9tZS9yZWFkLWFsbGAsIHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmFwaUJhc2V9L25vdGlmLyR7bm90aWZpY2F0aW9uSWR9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0Q29ubmVjdGlvbihjb25maWc6IE1lc0F1dGhDb25maWcpIHtcclxuICAgIGlmICh0aGlzLmh1YkNvbm5lY3Rpb24pIHJldHVybjtcclxuICAgIGNvbnN0IHNpZ25hbHJVcmwgPSBjb25maWcuYXBpQmFzZVVybC5yZXBsYWNlKC9cXC8kLywgJycpICsgJy9odWIvbm90aWZpY2F0aW9uJztcclxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxyXG4gICAgICAud2l0aFVybChzaWduYWxyVXJsLCB7IHdpdGhDcmVkZW50aWFsczogY29uZmlnLndpdGhDcmVkZW50aWFscyA/PyB0cnVlIH0pXHJcbiAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KClcclxuICAgICAgLmNvbmZpZ3VyZUxvZ2dpbmcoTG9nTGV2ZWwuV2FybmluZyk7XHJcblxyXG4gICAgdGhpcy5odWJDb25uZWN0aW9uID0gYnVpbGRlci5idWlsZCgpO1xyXG5cclxuICAgIHRoaXMuaHViQ29ubmVjdGlvbi5vbignUmVjZWl2ZU5vdGlmaWNhdGlvbicsIChuOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIG5vdGlmaWNhdGlvbjonLCBuKTtcclxuICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucy5uZXh0KG4pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5odWJDb25uZWN0aW9uLnN0YXJ0KCkudGhlbigoKSA9PiBjb25zb2xlLmxvZygnU2lnbmFsUiBjb25uZWN0ZWQnKSkuY2F0Y2goKGVycikgPT4gY29uc29sZS5lcnJvcignU2lnbmFsUiBzdGFydCBlcnJvcicsIGVycikpO1xyXG5cclxuICAgIHRoaXMuaHViQ29ubmVjdGlvbi5vbmNsb3NlKCgpID0+IGNvbnNvbGUubG9nKCdTaWduYWxSIGNvbm5lY3Rpb24gY2xvc2VkJykpO1xyXG4gICAgdGhpcy5odWJDb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKCgpID0+IGNvbnNvbGUubG9nKCdTaWduYWxSIHJlY29ubmVjdGluZycpKTtcclxuICAgIHRoaXMuaHViQ29ubmVjdGlvbi5vbnJlY29ubmVjdGVkKCgpID0+IGNvbnNvbGUubG9nKCdTaWduYWxSIHJlY29ubmVjdGVkJykpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0b3AoKSB7XHJcbiAgICBpZiAoIXRoaXMuaHViQ29ubmVjdGlvbikgcmV0dXJuO1xyXG4gICAgdGhpcy5odWJDb25uZWN0aW9uLnN0b3AoKS5jYXRjaCgoKSA9PiB7fSk7XHJcbiAgICB0aGlzLmh1YkNvbm5lY3Rpb24gPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ291dCgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXBpQmFzZX0vYXV0aC9sb2dvdXRgLCB7fSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9jdXJyZW50VXNlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoVXNlcigpIHtcclxuICAgIHRoaXMuZmV0Y2hDdXJyZW50VXNlcigpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXMtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQW9DckMsTUFBTSxDQUFOLElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQixpQ0FBYSxDQUFBO0lBQ2IsdUNBQW1CLENBQUE7SUFDbkIsbUNBQWUsQ0FBQTtJQUNmLHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBc0NELE1BQU0sT0FBTyxjQUFjO0lBVXpCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFUNUIsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7UUFDeEQsaUJBQVksR0FBNkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6RSxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDckMsbUJBQWMsR0FBb0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwRSxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsV0FBTSxHQUF5QixJQUFJLENBQUM7SUFFTCxDQUFDO0lBRXhDLElBQUksQ0FBQyxNQUFxQjtRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFH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QUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQzs7MkdBOUdVLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb24sIEh1YkNvbm5lY3Rpb25CdWlsZGVyLCBMb2dMZXZlbCB9IGZyb20gJ0BtaWNyb3NvZnQvc2lnbmFscic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lc0F1dGhDb25maWcgeyAgXHJcbiAgYXBpQmFzZVVybDogc3RyaW5nO1xyXG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XHJcbiAgdXNlckJhc2VVcmw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXIge1xyXG4gIHVzZXJJZD86IHN0cmluZztcclxuICB1c2VyTmFtZT86IHN0cmluZztcclxuICBmdWxsTmFtZT86IHN0cmluZztcclxuICBnZW5kZXI/OiBzdHJpbmc7XHJcbiAgZW1haWw/OiBzdHJpbmc7XHJcbiAgcGhvbmVOdW1iZXI/OiBzdHJpbmc7XHJcbiAgZGVwYXJ0bWVudD86IHN0cmluZztcclxuICBwb3NpdGlvbj86IHN0cmluZztcclxuICB0b2tlblZlcnNpb24/OiBzdHJpbmc7XHJcbiAgcGVybUVuZHBvaW50Pzogc3RyaW5nO1xyXG4gIHBlcm1zPzogU2V0PHN0cmluZz47XHJcbiAgZW1wbG95ZWVDb2RlPzogc3RyaW5nO1xyXG4gIGhyRnVsbE5hbWVWbj86IHN0cmluZztcclxuICBockZ1bGxOYW1lRW4/OiBzdHJpbmc7XHJcbiAgaHJQb3NpdGlvbj86IHN0cmluZztcclxuICBockpvYlRpdGxlPzogc3RyaW5nO1xyXG4gIGhyR2VuZGVyPzogc3RyaW5nO1xyXG4gIGhyTW9iaWxlPzogc3RyaW5nO1xyXG4gIGhyRW1haWw/OiBzdHJpbmc7XHJcbiAgaHJKb2luRGF0ZT86IHN0cmluZztcclxuICBockJpcnRoRGF0ZT86IHN0cmluZztcclxuICBocldvcmtTdGF0dXM/OiBzdHJpbmc7XHJcbiAgaHJEb2lUdW9uZz86IHN0cmluZztcclxuICBoclRlYW1Db2RlPzogc3RyaW5nO1xyXG4gIGhyTGluZUNvZGU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvblR5cGUge1xyXG4gIEluZm8gPSAnSW5mbycsXHJcbiAgV2FybmluZyA9ICdXYXJuaW5nJyxcclxuICBFcnJvciA9ICdFcnJvcicsXHJcbiAgU3VjY2VzcyA9ICdTdWNjZXNzJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkR0byB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBtZXNzYWdlSHRtbD86IHN0cmluZztcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZTtcclxuICBpc1JlYWQ6IGJvb2xlYW47XHJcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XHJcbiAgc291cmNlQXBwTmFtZTogc3RyaW5nO1xyXG4gIHNvdXJjZUFwcEljb25Vcmw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZWRMaXN0PFQ+IHtcclxuICBpdGVtczogVFtdO1xyXG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcclxuICBwYWdlOiBudW1iZXI7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICB0b3RhbFBhZ2VzOiBudW1iZXI7XHJcbiAgaGFzTmV4dDogYm9vbGVhbjtcclxuICBoYXNQcmV2aW91czogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWFsVGltZU5vdGlmaWNhdGlvbkR0byB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBtZXNzYWdlSHRtbD86IHN0cmluZztcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZTtcclxuICBjcmVhdGVkQXQ6IHN0cmluZztcclxuICBzb3VyY2VBcHBOYW1lOiBzdHJpbmc7XHJcbiAgc291cmNlQXBwSWNvblVybD86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTWVzQXV0aFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgaHViQ29ubmVjdGlvbjogSHViQ29ubmVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRVc2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJVXNlciB8IG51bGw+KG51bGwpO1xyXG4gIHB1YmxpYyBjdXJyZW50VXNlciQ6IE9ic2VydmFibGU8SVVzZXIgfCBudWxsPiA9IHRoaXMuX2N1cnJlbnRVc2VyLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHByaXZhdGUgX25vdGlmaWNhdGlvbnMgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHVibGljIG5vdGlmaWNhdGlvbnMkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9ub3RpZmljYXRpb25zLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIGFwaUJhc2UgPSAnJztcclxuICBwcml2YXRlIGNvbmZpZzogTWVzQXV0aENvbmZpZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XHJcblxyXG4gIGluaXQoY29uZmlnOiBNZXNBdXRoQ29uZmlnKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcclxuICAgIHRoaXMuYXBpQmFzZSA9IGNvbmZpZy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7XHJcbiAgICB0aGlzLmZldGNoQ3VycmVudFVzZXIoKTtcclxuICAgIHRoaXMuZmV0Y2hJbml0aWFsTm90aWZpY2F0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29uZmlnKCk6IE1lc0F1dGhDb25maWcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hDdXJyZW50VXNlcigpIHtcclxuICAgIGlmICghdGhpcy5hcGlCYXNlKSByZXR1cm47XHJcbiAgICB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXBpQmFzZX0vYXV0aC9tZWApLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICh1KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFVzZXIubmV4dCh1KTtcclxuICAgICAgICBpZiAodSAmJiB0aGlzLmNvbmZpZykge1xyXG4gICAgICAgICAgdGhpcy5zdGFydENvbm5lY3Rpb24odGhpcy5jb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHt9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hJbml0aWFsTm90aWZpY2F0aW9ucygpIHtcclxuICAgIGlmICghdGhpcy5hcGlCYXNlKSByZXR1cm47XHJcbiAgICB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXBpQmFzZX0vbm90aWYvbWVgKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAobm90aWZpY2F0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm90aWZpY2F0aW9ucz8uaXRlbXMpKSB7XHJcbiAgICAgICAgICBub3RpZmljYXRpb25zLml0ZW1zLmZvckVhY2goKG46IGFueSkgPT4gdGhpcy5fbm90aWZpY2F0aW9ucy5uZXh0KG4pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7fVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VW5yZWFkQ291bnQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXBpQmFzZX0vbm90aWYvbWUvdW5yZWFkLWNvdW50YCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Tm90aWZpY2F0aW9ucyhwYWdlOiBudW1iZXIgPSAxLCBwYWdlU2l6ZTogbnVtYmVyID0gMjAsIGluY2x1ZGVSZWFkOiBib29sZWFuID0gZmFsc2UsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuYXBpQmFzZX0vbm90aWYvbWU/cGFnZT0ke3BhZ2V9JnBhZ2VTaXplPSR7cGFnZVNpemV9JmluY2x1ZGVSZWFkPSR7aW5jbHVkZVJlYWR9YDtcclxuICAgIGlmICh0eXBlKSB7XHJcbiAgICAgIHVybCArPSBgJnR5cGU9JHt0eXBlfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1hcmtBc1JlYWQobm90aWZpY2F0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGAke3RoaXMuYXBpQmFzZX0vbm90aWYvJHtub3RpZmljYXRpb25JZH0vcmVhZGAsIHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYXJrQWxsQXNSZWFkKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGAke3RoaXMuYXBpQmFzZX0vbm90aWYvbWUvcmVhZC1hbGxgLCB7fSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5hcGlCYXNlfS9ub3RpZi8ke25vdGlmaWNhdGlvbklkfWApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydENvbm5lY3Rpb24oY29uZmlnOiBNZXNBdXRoQ29uZmlnKSB7XHJcbiAgICBpZiAodGhpcy5odWJDb25uZWN0aW9uKSByZXR1cm47XHJcbiAgICBjb25zdCBzaWduYWxyVXJsID0gY29uZmlnLmFwaUJhc2VVcmwucmVwbGFjZSgvXFwvJC8sICcnKSArICcvaHViL25vdGlmaWNhdGlvbic7XHJcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgLndpdGhVcmwoc2lnbmFsclVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgPz8gdHJ1ZSB9KVxyXG4gICAgICAud2l0aEF1dG9tYXRpY1JlY29ubmVjdCgpXHJcbiAgICAgIC5jb25maWd1cmVMb2dnaW5nKExvZ0xldmVsLldhcm5pbmcpO1xyXG5cclxuICAgIHRoaXMuaHViQ29ubmVjdGlvbiA9IGJ1aWxkZXIuYnVpbGQoKTtcclxuXHJcbiAgICB0aGlzLmh1YkNvbm5lY3Rpb24ub24oJ1JlY2VpdmVOb3RpZmljYXRpb24nLCAobjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMubmV4dChuKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaHViQ29ubmVjdGlvbi5zdGFydCgpLnRoZW4oKCkgPT4ge30pLmNhdGNoKChlcnIpID0+IHt9KTtcclxuXHJcbiAgICB0aGlzLmh1YkNvbm5lY3Rpb24ub25jbG9zZSgoKSA9PiB7fSk7XHJcbiAgICB0aGlzLmh1YkNvbm5lY3Rpb24ub25yZWNvbm5lY3RpbmcoKCkgPT4ge30pO1xyXG4gICAgdGhpcy5odWJDb25uZWN0aW9uLm9ucmVjb25uZWN0ZWQoKCkgPT4ge30pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0b3AoKSB7XHJcbiAgICBpZiAoIXRoaXMuaHViQ29ubmVjdGlvbikgcmV0dXJuO1xyXG4gICAgdGhpcy5odWJDb25uZWN0aW9uLnN0b3AoKS5jYXRjaCgoKSA9PiB7fSk7XHJcbiAgICB0aGlzLmh1YkNvbm5lY3Rpb24gPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ291dCgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXBpQmFzZX0vYXV0aC9sb2dvdXRgLCB7fSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9jdXJyZW50VXNlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoVXNlcigpIHtcclxuICAgIHRoaXMuZmV0Y2hDdXJyZW50VXNlcigpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -30,7 +30,6 @@ export class NotificationPanelComponent {
|
|
|
30
30
|
this.authService.notifications$
|
|
31
31
|
.pipe(takeUntil(this.destroy$))
|
|
32
32
|
.subscribe((notification) => {
|
|
33
|
-
console.log('New notification received:', notification);
|
|
34
33
|
// Show toast for new notification
|
|
35
34
|
this.toastService.show(notification.message, '[' + notification.sourceAppName + '] ' + notification.title, 'info', 5000);
|
|
36
35
|
// Reload notifications list
|
|
@@ -46,7 +45,7 @@ export class NotificationPanelComponent {
|
|
|
46
45
|
next: (response) => {
|
|
47
46
|
this.notifications = response.items || [];
|
|
48
47
|
},
|
|
49
|
-
error: (err) =>
|
|
48
|
+
error: (err) => { }
|
|
50
49
|
});
|
|
51
50
|
}
|
|
52
51
|
open() {
|
|
@@ -63,7 +62,7 @@ export class NotificationPanelComponent {
|
|
|
63
62
|
notification.isRead = true;
|
|
64
63
|
}
|
|
65
64
|
},
|
|
66
|
-
error: (err) =>
|
|
65
|
+
error: (err) => { }
|
|
67
66
|
});
|
|
68
67
|
}
|
|
69
68
|
markAllAsRead() {
|
|
@@ -71,7 +70,7 @@ export class NotificationPanelComponent {
|
|
|
71
70
|
next: () => {
|
|
72
71
|
this.notifications.forEach(n => n.isRead = true);
|
|
73
72
|
},
|
|
74
|
-
error: (err) =>
|
|
73
|
+
error: (err) => { }
|
|
75
74
|
});
|
|
76
75
|
}
|
|
77
76
|
delete(notificationId, event) {
|
|
@@ -80,7 +79,7 @@ export class NotificationPanelComponent {
|
|
|
80
79
|
next: () => {
|
|
81
80
|
this.notifications = this.notifications.filter(n => n.id !== notificationId);
|
|
82
81
|
},
|
|
83
|
-
error: (err) =>
|
|
82
|
+
error: (err) => { }
|
|
84
83
|
});
|
|
85
84
|
}
|
|
86
85
|
formatDate(dateString) {
|
|
@@ -208,4 +207,4 @@ i0.ษตษตngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
208
207
|
type: HostBinding,
|
|
209
208
|
args: ['class']
|
|
210
209
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RpZmljYXRpb24tcGFuZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQW9RM0MsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUFvQixXQUEyQixFQUFVLFlBQTBCLEVBQVUsWUFBMEI7UUFBbkcsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUx2SCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2Ysa0JBQWEsR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLGlCQUFZLEdBQVUsT0FBTyxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRW1GLENBQUM7SUFUM0gsSUFBMEIsVUFBVTtRQUNsQyxPQUFPLFNBQVMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFTRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhO2FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLHlD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaURULHFpR0FsRFMsSUFBSSw2RkFBRSxLQUFLOzJGQStQViwwQkFBMEI7a0JBbFF0QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQ1o7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRFQ7MkpBOE15QixVQUFVO3NCQUFuQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lc0F1dGhTZXJ2aWNlLCBOb3RpZmljYXRpb25EdG8sIFBhZ2VkTGlzdCwgUmVhbFRpbWVOb3RpZmljYXRpb25EdG8gfSBmcm9tICcuL21lcy1hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UsIFRoZW1lIH0gZnJvbSAnLi90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hLW5vdGlmaWNhdGlvbi1wYW5lbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdJZiwgTmdGb3JdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLXBhbmVsXCIgW2NsYXNzLm9wZW5dPVwiaXNPcGVuXCI+XHJcbiAgICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGgzPk5vdGlmaWNhdGlvbnM8L2gzPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIiAoY2xpY2spPVwiY2xvc2UoKVwiIHRpdGxlPVwiQ2xvc2VcIj7inJU8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIE5vdGlmaWNhdGlvbnMgTGlzdCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtbGlzdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub3RpZmljYXRpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxyXG4gICAgICAgICAgICBbY2xhc3MudW5yZWFkXT1cIiFub3RpZmljYXRpb24uaXNSZWFkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm1hcmtBc1JlYWQobm90aWZpY2F0aW9uLmlkKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24tdGl0bGVcIj57eyAnWycgKyBub3RpZmljYXRpb24uc291cmNlQXBwTmFtZSArICddICcgKyBub3RpZmljYXRpb24udGl0bGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLW1lc3NhZ2VcIj57eyBub3RpZmljYXRpb24ubWVzc2FnZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24tbWV0YVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbmFtZVwiPnt7IG5vdGlmaWNhdGlvbi5zb3VyY2VBcHBOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCI+e3sgZm9ybWF0RGF0ZShub3RpZmljYXRpb24uY3JlYXRlZEF0KSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtYnRuXCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShub3RpZmljYXRpb24uaWQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgIHRpdGxlPVwiRGVsZXRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOKclVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxyXG4gICAgICAgICAgICBObyBub3RpZmljYXRpb25zXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIEZvb3RlciBBY3Rpb25zIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtZm9vdGVyXCIgKm5nSWY9XCJub3RpZmljYXRpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0blwiIChjbGljayk9XCJtYXJrQWxsQXNSZWFkKClcIj5cclxuICAgICAgICAgIE1hcmsgYWxsIGFzIHJlYWRcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuICAgIDpob3N0IHtcclxuICAgICAgLS1wcmltYXJ5LWNvbG9yOiAjMTk3NmQyO1xyXG4gICAgICAtLXByaW1hcnktaG92ZXI6ICMxNTY1YzA7XHJcbiAgICAgIC0tZXJyb3ItY29sb3I6ICNmNDQzMzY7XHJcbiAgICAgIC0tdGV4dC1wcmltYXJ5OiAjMzMzO1xyXG4gICAgICAtLXRleHQtc2Vjb25kYXJ5OiAjNjY2O1xyXG4gICAgICAtLXRleHQtbXV0ZWQ6ICM5OTk7XHJcbiAgICAgIC0tYmctcHJpbWFyeTogd2hpdGU7XHJcbiAgICAgIC0tYmctc2Vjb25kYXJ5OiAjZjVmNWY1O1xyXG4gICAgICAtLWJnLXRlcnRpYXJ5OiAjZmFmYWZhO1xyXG4gICAgICAtLWJnLWhvdmVyOiAjZjVmNWY1O1xyXG4gICAgICAtLWJnLXVucmVhZDogI2UzZjJmZDtcclxuICAgICAgLS1ib3JkZXItY29sb3I6ICNlMGUwZTA7XHJcbiAgICAgIC0tYm9yZGVyLWxpZ2h0OiAjZjBmMGYwO1xyXG4gICAgICAtLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgfVxyXG5cclxuICAgIDpob3N0KC50aGVtZS1kYXJrKSB7XHJcbiAgICAgIC0tcHJpbWFyeS1jb2xvcjogIzkwY2FmOTtcclxuICAgICAgLS1wcmltYXJ5LWhvdmVyOiAjNjRiNWY2O1xyXG4gICAgICAtLWVycm9yLWNvbG9yOiAjZWY1MzUwO1xyXG4gICAgICAtLXRleHQtcHJpbWFyeTogI2UwZTBlMDtcclxuICAgICAgLS10ZXh0LXNlY29uZGFyeTogI2IwYjBiMDtcclxuICAgICAgLS10ZXh0LW11dGVkOiAjODg4O1xyXG4gICAgICAtLWJnLXByaW1hcnk6ICMxZTFlMWU7XHJcbiAgICAgIC0tYmctc2Vjb25kYXJ5OiAjMmQyZDJkO1xyXG4gICAgICAtLWJnLXRlcnRpYXJ5OiAjMjUyNTI1O1xyXG4gICAgICAtLWJnLWhvdmVyOiAjMzMzO1xyXG4gICAgICAtLWJnLXVucmVhZDogcmdiYSgxNDQsIDIwMiwgMjQ5LCAwLjEpO1xyXG4gICAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDtcclxuICAgICAgLS1ib3JkZXItbGlnaHQ6ICMzMzM7XHJcbiAgICAgIC0tc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbi1wYW5lbCB7XHJcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICByaWdodDogLTM1MHB4O1xyXG4gICAgICB3aWR0aDogMzUwcHg7XHJcbiAgICAgIGhlaWdodDogMTAwdmg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpO1xyXG4gICAgICBib3gtc2hhZG93OiAtMnB4IDAgOHB4IHZhcigtLXNoYWRvdyk7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIHotaW5kZXg6IDEwMDA7XHJcbiAgICAgIHRyYW5zaXRpb246IHJpZ2h0IDAuM3MgZWFzZTtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLXBhbmVsLm9wZW4ge1xyXG4gICAgICByaWdodDogMDtcclxuICAgIH1cclxuXHJcbiAgICAucGFuZWwtaGVhZGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAxNnB4O1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctc2Vjb25kYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAucGFuZWwtaGVhZGVyIGgzIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC5jbG9zZS1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICB3aWR0aDogMzJweDtcclxuICAgICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcclxuICAgIH1cclxuXHJcbiAgICAuY2xvc2UtYnRuOmhvdmVyIHtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbnMtbGlzdCB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbi1pdGVtIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXRlcnRpYXJ5KTtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5ub3RpZmljYXRpb24taXRlbTpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLWl0ZW0udW5yZWFkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctdW5yZWFkKTtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLWNvbnRlbnQge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbi10aXRsZSB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLW1lc3NhZ2Uge1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xyXG4gICAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcclxuICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLW1ldGEge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC5hcHAtbmFtZSB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuZGVsZXRlLWJ0biB7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgICAgd2lkdGg6IDI0cHg7XHJcbiAgICAgIGhlaWdodDogMjRweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5kZWxldGUtYnRuOmhvdmVyIHtcclxuICAgICAgY29sb3I6IHZhcigtLWVycm9yLWNvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuZW1wdHktc3RhdGUge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAucGFuZWwtZm9vdGVyIHtcclxuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctc2Vjb25kYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWJ0biB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWJ0bjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xyXG4gICAgICAubm90aWZpY2F0aW9uLXBhbmVsIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICByaWdodDogLTEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCB0aGVtZUNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYHRoZW1lLSR7dGhpcy5jdXJyZW50VGhlbWV9YDtcclxuICB9XHJcblxyXG4gIGlzT3BlbiA9IGZhbHNlO1xyXG4gIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdID0gW107XHJcbiAgY3VycmVudFRoZW1lOiBUaGVtZSA9ICdsaWdodCc7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IE1lc0F1dGhTZXJ2aWNlLCBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHRoZW1lID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRUaGVtZSA9IHRoZW1lO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKCk7XHJcblxyXG4gICAgLy8gTGlzdGVuIGZvciBuZXcgcmVhbC10aW1lIG5vdGlmaWNhdGlvbnNcclxuICAgIHRoaXMuYXV0aFNlcnZpY2Uubm90aWZpY2F0aW9ucyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChub3RpZmljYXRpb246IFJlYWxUaW1lTm90aWZpY2F0aW9uRHRvKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ05ldyBub3RpZmljYXRpb24gcmVjZWl2ZWQ6Jywgbm90aWZpY2F0aW9uKTtcclxuICAgICAgICAvLyBTaG93IHRvYXN0IGZvciBuZXcgbm90aWZpY2F0aW9uXHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyhcclxuICAgICAgICAgIG5vdGlmaWNhdGlvbi5tZXNzYWdlLFxyXG4gICAgICAgICAgJ1snICsgbm90aWZpY2F0aW9uLnNvdXJjZUFwcE5hbWUgKyAnXSAnICsgbm90aWZpY2F0aW9uLnRpdGxlLFxyXG4gICAgICAgICAgJ2luZm8nLFxyXG4gICAgICAgICAgNTAwMFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gUmVsb2FkIG5vdGlmaWNhdGlvbnMgbGlzdFxyXG4gICAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkTm90aWZpY2F0aW9ucygpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9ucygxLCA1MCwgZmFsc2UpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZTogUGFnZWRMaXN0PE5vdGlmaWNhdGlvbkR0bz4pID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSByZXNwb25zZS5pdGVtcyB8fCBbXTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbm90aWZpY2F0aW9uczonLCBlcnIpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW4oKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBtYXJrQXNSZWFkKG5vdGlmaWNhdGlvbklkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubWFya0FzUmVhZChub3RpZmljYXRpb25JZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kKG4gPT4gbi5pZCA9PT0gbm90aWZpY2F0aW9uSWQpO1xyXG4gICAgICAgIGlmIChub3RpZmljYXRpb24pIHtcclxuICAgICAgICAgIG5vdGlmaWNhdGlvbi5pc1JlYWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG1hcmtpbmcgYXMgcmVhZDonLCBlcnIpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG1hcmtBbGxBc1JlYWQoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLm1hcmtBbGxBc1JlYWQoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmZvckVhY2gobiA9PiBuLmlzUmVhZCA9IHRydWUpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4gY29uc29sZS5lcnJvcignRXJyb3IgbWFya2luZyBhbGwgYXMgcmVhZDonLCBlcnIpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZShub3RpZmljYXRpb25JZDogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5kZWxldGVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmlsdGVyKG4gPT4gbi5pZCAhPT0gbm90aWZpY2F0aW9uSWQpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4gY29uc29sZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgbm90aWZpY2F0aW9uOicsIGVycilcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IGRpZmZNcyA9IG5vdy5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IGRpZmZNaW5zID0gTWF0aC5mbG9vcihkaWZmTXMgLyA2MDAwMCk7XHJcbiAgICBjb25zdCBkaWZmSG91cnMgPSBNYXRoLmZsb29yKGRpZmZNcyAvIDM2MDAwMDApO1xyXG4gICAgY29uc3QgZGlmZkRheXMgPSBNYXRoLmZsb29yKGRpZmZNcyAvIDg2NDAwMDAwKTtcclxuXHJcbiAgICBpZiAoZGlmZk1pbnMgPCAxKSByZXR1cm4gJ05vdyc7XHJcbiAgICBpZiAoZGlmZk1pbnMgPCA2MCkgcmV0dXJuIGAke2RpZmZNaW5zfW0gYWdvYDtcclxuICAgIGlmIChkaWZmSG91cnMgPCAyNCkgcmV0dXJuIGAke2RpZmZIb3Vyc31oIGFnb2A7XHJcbiAgICBpZiAoZGlmZkRheXMgPCA3KSByZXR1cm4gYCR7ZGlmZkRheXN9ZCBhZ29gO1xyXG4gICAgXHJcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RpZmljYXRpb24tcGFuZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQW9RM0MsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUFvQixXQUEyQixFQUFVLFlBQTBCLEVBQVUsWUFBMEI7UUFBbkcsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUx2SCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2Ysa0JBQWEsR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLGlCQUFZLEdBQVUsT0FBTyxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRW1GLENBQUM7SUFUM0gsSUFBMEIsVUFBVTtRQUNsQyxPQUFPLFNBQVMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFTRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhO2FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLHlD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R0FpRFQ7MkpBOE15QixVQUFVO3NCQUFuQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lc0F1dGhTZXJ2aWNlLCBOb3RpZmljYXRpb25EdG8sIFBhZ2VkTGlzdCwgUmVhbFRpbWVOb3RpZmljYXRpb25EdG8gfSBmcm9tICcuL21lcy1hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UsIFRoZW1lIH0gZnJvbSAnLi90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hLW5vdGlmaWNhdGlvbi1wYW5lbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdJZiwgTmdGb3JdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLXBhbmVsXCIgW2NsYXNzLm9wZW5dPVwiaXNPcGVuXCI+XHJcbiAgICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGgzPk5vdGlmaWNhdGlvbnM8L2gzPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIiAoY2xpY2spPVwiY2xvc2UoKVwiIHRpdGxlPVwiQ2xvc2VcIj7inJU8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIE5vdGlmaWNhdGlvbnMgTGlzdCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtbGlzdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub3RpZmljYXRpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxyXG4gICAgICAgICAgICBbY2xhc3MudW5yZWFkXT1cIiFub3RpZmljYXRpb24uaXNSZWFkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm1hcmtBc1JlYWQobm90aWZpY2F0aW9uLmlkKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24tdGl0bGVcIj57eyAnWycgKyBub3RpZmljYXRpb24uc291cmNlQXBwTmFtZSArICddICcgKyBub3RpZmljYXRpb24udGl0bGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLW1lc3NhZ2VcIj57eyBub3RpZmljYXRpb24ubWVzc2FnZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24tbWV0YVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbmFtZVwiPnt7IG5vdGlmaWNhdGlvbi5zb3VyY2VBcHBOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCI+e3sgZm9ybWF0RGF0ZShub3RpZmljYXRpb24uY3JlYXRlZEF0KSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtYnRuXCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShub3RpZmljYXRpb24uaWQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgIHRpdGxlPVwiRGVsZXRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOKclVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxyXG4gICAgICAgICAgICBObyBub3RpZmljYXRpb25zXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIEZvb3RlciBBY3Rpb25zIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtZm9vdGVyXCIgKm5nSWY9XCJub3RpZmljYXRpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0blwiIChjbGljayk9XCJtYXJrQWxsQXNSZWFkKClcIj5cclxuICAgICAgICAgIE1hcmsgYWxsIGFzIHJlYWRcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuICAgIDpob3N0IHtcclxuICAgICAgLS1wcmltYXJ5LWNvbG9yOiAjMTk3NmQyO1xyXG4gICAgICAtLXByaW1hcnktaG92ZXI6ICMxNTY1YzA7XHJcbiAgICAgIC0tZXJyb3ItY29sb3I6ICNmNDQzMzY7XHJcbiAgICAgIC0tdGV4dC1wcmltYXJ5OiAjMzMzO1xyXG4gICAgICAtLXRleHQtc2Vjb25kYXJ5OiAjNjY2O1xyXG4gICAgICAtLXRleHQtbXV0ZWQ6ICM5OTk7XHJcbiAgICAgIC0tYmctcHJpbWFyeTogd2hpdGU7XHJcbiAgICAgIC0tYmctc2Vjb25kYXJ5OiAjZjVmNWY1O1xyXG4gICAgICAtLWJnLXRlcnRpYXJ5OiAjZmFmYWZhO1xyXG4gICAgICAtLWJnLWhvdmVyOiAjZjVmNWY1O1xyXG4gICAgICAtLWJnLXVucmVhZDogI2UzZjJmZDtcclxuICAgICAgLS1ib3JkZXItY29sb3I6ICNlMGUwZTA7XHJcbiAgICAgIC0tYm9yZGVyLWxpZ2h0OiAjZjBmMGYwO1xyXG4gICAgICAtLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgfVxyXG5cclxuICAgIDpob3N0KC50aGVtZS1kYXJrKSB7XHJcbiAgICAgIC0tcHJpbWFyeS1jb2xvcjogIzkwY2FmOTtcclxuICAgICAgLS1wcmltYXJ5LWhvdmVyOiAjNjRiNWY2O1xyXG4gICAgICAtLWVycm9yLWNvbG9yOiAjZWY1MzUwO1xyXG4gICAgICAtLXRleHQtcHJpbWFyeTogI2UwZTBlMDtcclxuICAgICAgLS10ZXh0LXNlY29uZGFyeTogI2IwYjBiMDtcclxuICAgICAgLS10ZXh0LW11dGVkOiAjODg4O1xyXG4gICAgICAtLWJnLXByaW1hcnk6ICMxZTFlMWU7XHJcbiAgICAgIC0tYmctc2Vjb25kYXJ5OiAjMmQyZDJkO1xyXG4gICAgICAtLWJnLXRlcnRpYXJ5OiAjMjUyNTI1O1xyXG4gICAgICAtLWJnLWhvdmVyOiAjMzMzO1xyXG4gICAgICAtLWJnLXVucmVhZDogcmdiYSgxNDQsIDIwMiwgMjQ5LCAwLjEpO1xyXG4gICAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDtcclxuICAgICAgLS1ib3JkZXItbGlnaHQ6ICMzMzM7XHJcbiAgICAgIC0tc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbi1wYW5lbCB7XHJcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICByaWdodDogLTM1MHB4O1xyXG4gICAgICB3aWR0aDogMzUwcHg7XHJcbiAgICAgIGhlaWdodDogMTAwdmg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpO1xyXG4gICAgICBib3gtc2hhZG93OiAtMnB4IDAgOHB4IHZhcigtLXNoYWRvdyk7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIHotaW5kZXg6IDEwMDA7XHJcbiAgICAgIHRyYW5zaXRpb246IHJpZ2h0IDAuM3MgZWFzZTtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLXBhbmVsLm9wZW4ge1xyXG4gICAgICByaWdodDogMDtcclxuICAgIH1cclxuXHJcbiAgICAucGFuZWwtaGVhZGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAxNnB4O1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctc2Vjb25kYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAucGFuZWwtaGVhZGVyIGgzIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC5jbG9zZS1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICB3aWR0aDogMzJweDtcclxuICAgICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcclxuICAgIH1cclxuXHJcbiAgICAuY2xvc2UtYnRuOmhvdmVyIHtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbnMtbGlzdCB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbi1pdGVtIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXRlcnRpYXJ5KTtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5ub3RpZmljYXRpb24taXRlbTpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLWl0ZW0udW5yZWFkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctdW5yZWFkKTtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLWNvbnRlbnQge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbi10aXRsZSB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLW1lc3NhZ2Uge1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xyXG4gICAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcclxuICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLW1ldGEge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC5hcHAtbmFtZSB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuZGVsZXRlLWJ0biB7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgICAgd2lkdGg6IDI0cHg7XHJcbiAgICAgIGhlaWdodDogMjRweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5kZWxldGUtYnRuOmhvdmVyIHtcclxuICAgICAgY29sb3I6IHZhcigtLWVycm9yLWNvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuZW1wdHktc3RhdGUge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAucGFuZWwtZm9vdGVyIHtcclxuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctc2Vjb25kYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWJ0biB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWJ0bjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xyXG4gICAgICAubm90aWZpY2F0aW9uLXBhbmVsIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICByaWdodDogLTEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCB0aGVtZUNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYHRoZW1lLSR7dGhpcy5jdXJyZW50VGhlbWV9YDtcclxuICB9XHJcblxyXG4gIGlzT3BlbiA9IGZhbHNlO1xyXG4gIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdID0gW107XHJcbiAgY3VycmVudFRoZW1lOiBUaGVtZSA9ICdsaWdodCc7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IE1lc0F1dGhTZXJ2aWNlLCBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHRoZW1lID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRUaGVtZSA9IHRoZW1lO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKCk7XHJcblxyXG4gICAgLy8gTGlzdGVuIGZvciBuZXcgcmVhbC10aW1lIG5vdGlmaWNhdGlvbnNcclxuICAgIHRoaXMuYXV0aFNlcnZpY2Uubm90aWZpY2F0aW9ucyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChub3RpZmljYXRpb246IFJlYWxUaW1lTm90aWZpY2F0aW9uRHRvKSA9PiB7XHJcbiAgICAgICAgLy8gU2hvdyB0b2FzdCBmb3IgbmV3IG5vdGlmaWNhdGlvblxyXG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgICBub3RpZmljYXRpb24ubWVzc2FnZSxcclxuICAgICAgICAgICdbJyArIG5vdGlmaWNhdGlvbi5zb3VyY2VBcHBOYW1lICsgJ10gJyArIG5vdGlmaWNhdGlvbi50aXRsZSxcclxuICAgICAgICAgICdpbmZvJyxcclxuICAgICAgICAgIDUwMDBcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIFJlbG9hZCBub3RpZmljYXRpb25zIGxpc3RcclxuICAgICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE5vdGlmaWNhdGlvbnMoMSwgNTAsIGZhbHNlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2U6IFBhZ2VkTGlzdDxOb3RpZmljYXRpb25EdG8+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gcmVzcG9uc2UuaXRlbXMgfHwgW107XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7fVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbWFya0FzUmVhZChub3RpZmljYXRpb25JZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLm1hcmtBc1JlYWQobm90aWZpY2F0aW9uSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZChuID0+IG4uaWQgPT09IG5vdGlmaWNhdGlvbklkKTtcclxuICAgICAgICBpZiAobm90aWZpY2F0aW9uKSB7XHJcbiAgICAgICAgICBub3RpZmljYXRpb24uaXNSZWFkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7fVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBtYXJrQWxsQXNSZWFkKCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5tYXJrQWxsQXNSZWFkKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5mb3JFYWNoKG4gPT4gbi5pc1JlYWQgPSB0cnVlKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHt9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZShub3RpZmljYXRpb25JZDogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5kZWxldGVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmlsdGVyKG4gPT4gbi5pZCAhPT0gbm90aWZpY2F0aW9uSWQpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge31cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IGRpZmZNcyA9IG5vdy5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IGRpZmZNaW5zID0gTWF0aC5mbG9vcihkaWZmTXMgLyA2MDAwMCk7XHJcbiAgICBjb25zdCBkaWZmSG91cnMgPSBNYXRoLmZsb29yKGRpZmZNcyAvIDM2MDAwMDApO1xyXG4gICAgY29uc3QgZGlmZkRheXMgPSBNYXRoLmZsb29yKGRpZmZNcyAvIDg2NDAwMDAwKTtcclxuXHJcbiAgICBpZiAoZGlmZk1pbnMgPCAxKSByZXR1cm4gJ05vdyc7XHJcbiAgICBpZiAoZGlmZk1pbnMgPCA2MCkgcmV0dXJuIGAke2RpZmZNaW5zfW0gYWdvYDtcclxuICAgIGlmIChkaWZmSG91cnMgPCAyNCkgcmV0dXJuIGAke2RpZmZIb3Vyc31oIGFnb2A7XHJcbiAgICBpZiAoZGlmZkRheXMgPCA3KSByZXR1cm4gYCR7ZGlmZkRheXN9ZCBhZ29gO1xyXG4gICAgXHJcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -22,11 +22,9 @@ export class UserProfileComponent {
|
|
|
22
22
|
return `theme-${this.currentTheme}`;
|
|
23
23
|
}
|
|
24
24
|
ngOnInit() {
|
|
25
|
-
console.log('UserProfileComponent: Service injected?', !!this.authService);
|
|
26
25
|
this.authService.currentUser$
|
|
27
26
|
.pipe(takeUntil(this.destroy$))
|
|
28
27
|
.subscribe(user => {
|
|
29
|
-
console.log('UserProfileComponent: currentUser', user);
|
|
30
28
|
this.currentUser = user;
|
|
31
29
|
});
|
|
32
30
|
this.themeService.currentTheme$
|
|
@@ -52,7 +50,7 @@ export class UserProfileComponent {
|
|
|
52
50
|
next: (response) => {
|
|
53
51
|
this.unreadCount = response.unreadCount || 0;
|
|
54
52
|
},
|
|
55
|
-
error: (err) =>
|
|
53
|
+
error: (err) => { }
|
|
56
54
|
});
|
|
57
55
|
}
|
|
58
56
|
getAvatarUrl(user) {
|
|
@@ -107,7 +105,6 @@ export class UserProfileComponent {
|
|
|
107
105
|
window.location.href = `${baseUrl}/login?returnUrl=${returnUrl}`;
|
|
108
106
|
},
|
|
109
107
|
error: (err) => {
|
|
110
|
-
console.error('Logout error:', err);
|
|
111
108
|
// Still navigate to login even if logout fails
|
|
112
109
|
const config = this.authService.getConfig();
|
|
113
110
|
const baseUrl = config?.userBaseUrl || '';
|
|
@@ -223,4 +220,4 @@ i0.ษตษตngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
223
220
|
type: HostListener,
|
|
224
221
|
args: ['document:click', ['$event']]
|
|
225
222
|
}] } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91c2VyLXByb2ZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBaVMzQyxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQW9CLFdBQTJCLEVBQVUsTUFBYyxFQUFVLFlBQTBCO1FBQXZGLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVhqRyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBS3ZELGdCQUFXLEdBQWlCLElBQUksQ0FBQztRQUNqQyxpQkFBWSxHQUFVLE9BQU8sQ0FBQztRQUM5QixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNiLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXVFLENBQUM7SUFWL0csSUFBMEIsVUFBVTtRQUNsQyxPQUFPLFNBQVMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFVRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTthQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FB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LCBPbkRlc3Ryb3ksIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNZXNBdXRoU2VydmljZSwgSVVzZXIgfSBmcm9tICcuL21lcy1hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UsIFRoZW1lIH0gZnJvbSAnLi90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hLXVzZXItcHJvZmlsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdJZl0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXByb2ZpbGUtY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS0gTm90IGxvZ2dlZCBpbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXJyZW50VXNlclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG5cIiAoY2xpY2spPVwib25Mb2dpbigpXCI+XHJcbiAgICAgICAgICBMb2dpblxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gTG9nZ2VkIGluIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFVzZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1oZWFkZXJcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJub3RpZmljYXRpb24tYnRuXCIgKGNsaWNrKT1cIm9uTm90aWZpY2F0aW9uQ2xpY2soKVwiIHRpdGxlPVwiTm90aWZpY2F0aW9uc1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIj7wn5SUPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCIgKm5nSWY9XCJ1bnJlYWRDb3VudCA+IDBcIj57eyB1bnJlYWRDb3VudCB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidXNlci1tZW51LWJ0blwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFVzZXIuZnVsbE5hbWUgfHwgY3VycmVudFVzZXIudXNlck5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRBdmF0YXJVcmwoY3VycmVudFVzZXIpXCIgXHJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImN1cnJlbnRVc2VyLmZ1bGxOYW1lIHx8IGN1cnJlbnRVc2VyLnVzZXJOYW1lXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXZhdGFyXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIShjdXJyZW50VXNlci5mdWxsTmFtZSB8fCBjdXJyZW50VXNlci51c2VyTmFtZSlcIiBjbGFzcz1cImF2YXRhci1pbml0aWFsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRMYXN0TmFtZUluaXRpYWwoY3VycmVudFVzZXIpIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXMtZHJvcGRvd24tbWVudVwiICpuZ0lmPVwiZHJvcGRvd25PcGVuXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lcy1kcm9wZG93bi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IGN1cnJlbnRVc2VyLmZ1bGxOYW1lIHx8IGN1cnJlbnRVc2VyLnVzZXJOYW1lIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lcy1kcm9wZG93bi1pdGVtIHByb2ZpbGUtbGlua1wiIChjbGljayk9XCJvblZpZXdQcm9maWxlKClcIj5cclxuICAgICAgICAgICAgICAgIFZpZXcgUHJvZmlsZVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZXMtZHJvcGRvd24taXRlbSBsb2dvdXQtaXRlbVwiIChjbGljayk9XCJvbkxvZ291dCgpXCI+XHJcbiAgICAgICAgICAgICAgICBMb2dvdXRcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuICAgIDpob3N0IHtcclxuICAgICAgLS1wcmltYXJ5LWNvbG9yOiAjMTk3NmQyO1xyXG4gICAgICAtLXByaW1hcnktaG92ZXI6ICMxNTY1YzA7XHJcbiAgICAgIC0tcHJpbWFyeS1saWdodDogcmdiYSgyNSwgMTE4LCAyMTAsIDAuMSk7XHJcbiAgICAgIC0tZXJyb3ItY29sb3I6ICNmNDQzMzY7XHJcbiAgICAgIC0tZXJyb3ItbGlnaHQ6ICNmZmViZWU7XHJcbiAgICAgIC0tdGV4dC1wcmltYXJ5OiAjMzMzO1xyXG4gICAgICAtLXRleHQtc2Vjb25kYXJ5OiAjNjY2O1xyXG4gICAgICAtLXRleHQtbXV0ZWQ6ICM5OTk7XHJcbiAgICAgIC0tYmctcHJpbWFyeTogd2hpdGU7XHJcbiAgICAgIC0tYmctc2Vjb25kYXJ5OiAjZjVmNWY1O1xyXG4gICAgICAtLWJnLXRlcnRpYXJ5OiAjZmFmYWZhO1xyXG4gICAgICAtLWJnLWhvdmVyOiAjZjVmNWY1O1xyXG4gICAgICAtLWJvcmRlci1jb2xvcjogI2UwZTBlMDtcclxuICAgICAgLS1ib3JkZXItbGlnaHQ6ICNmMGYwZjA7XHJcbiAgICAgIC0tc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4gICAgICAtLXNoYWRvdy1saWdodDogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgfVxyXG5cclxuICAgIDpob3N0KC50aGVtZS1kYXJrKSB7XHJcbiAgICAgIC0tcHJpbWFyeS1jb2xvcjogIzkwY2FmOTtcclxuICAgICAgLS1wcmltYXJ5LWhvdmVyOiAjNjRiNWY2O1xyXG4gICAgICAtLXByaW1hcnktbGlnaHQ6IHJnYmEoMTQ0LCAyMDIsIDI0OSwgMC4xKTtcclxuICAgICAgLS1lcnJvci1jb2xvcjogI2VmNTM1MDtcclxuICAgICAgLS1lcnJvci1saWdodDogcmdiYSgyMzksIDgzLCA4MCwgMC4xKTtcclxuICAgICAgLS10ZXh0LXByaW1hcnk6ICNlMGUwZTA7XHJcbiAgICAgIC0tdGV4dC1zZWNvbmRhcnk6ICNiMGIwYjA7XHJcbiAgICAgIC0tdGV4dC1tdXRlZDogIzg4ODtcclxuICAgICAgLS1iZy1wcmltYXJ5OiAjMWUxZTFlO1xyXG4gICAgICAtLWJnLXNlY29uZGFyeTogIzJkMmQyZDtcclxuICAgICAgLS1iZy10ZXJ0aWFyeTogIzI1MjUyNTtcclxuICAgICAgLS1iZy1ob3ZlcjogIzMzMztcclxuICAgICAgLS1ib3JkZXItY29sb3I6ICM0MDQwNDA7XHJcbiAgICAgIC0tYm9yZGVyLWxpZ2h0OiAjMzMzO1xyXG4gICAgICAtLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjMpO1xyXG4gICAgICAtLXNoYWRvdy1saWdodDogcmdiYSgwLCAwLCAwLCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLXByb2ZpbGUtY29udGFpbmVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgZ2FwOiAxNnB4O1xyXG4gICAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmxvZ2luLWJ0biB7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAxNnB4O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XHJcbiAgICB9XHJcblxyXG4gICAgLmxvZ2luLWJ0bjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLWhlYWRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGdhcDogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAubm90aWZpY2F0aW9uLWJ0biB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogOHB4O1xyXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbi1idG46aG92ZXIge1xyXG4gICAgICBvcGFjaXR5OiAwLjc7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcblxyXG4gICAgLmJhZGdlIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lcnJvci1jb2xvcik7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICB3aWR0aDogMjBweDtcclxuICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1tZW51LXdyYXBwZXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItbWVudS1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItbWVudS1idG46aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWxpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAuYXZhdGFyIHtcclxuICAgICAgd2lkdGg6IDQwcHg7XHJcbiAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDtcclxuICAgIH1cclxuXHJcbiAgICAuYXZhdGFyLWluaXRpYWwge1xyXG4gICAgICB3aWR0aDogNDBweDtcclxuICAgICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5tZXMtZHJvcGRvd24tbWVudSB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiBjYWxjKDEwMCUgKyA4cHgpO1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHZhcigtLXNoYWRvdyk7XHJcbiAgICAgIG1pbi13aWR0aDogMjAwcHg7XHJcbiAgICAgIHotaW5kZXg6IDEwMDA7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB9XHJcblxyXG4gICAgLm1lcy1kcm9wZG93bi1oZWFkZXIge1xyXG4gICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5tZXMtZHJvcGRvd24taXRlbSB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XHJcbiAgICB9XHJcblxyXG4gICAgLm1lcy1kcm9wZG93bi1pdGVtOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctaG92ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcm9maWxlLWxpbmsge1xyXG4gICAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmxvZ291dC1pdGVtIHtcclxuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1lcnJvci1jb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmxvZ291dC1pdGVtOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXJyb3ItbGlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLWluZm8ge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBnYXA6IDJweDtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1uYW1lIHtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1wb3NpdGlvbiB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAubG9nb3V0LWJ0biB7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XHJcbiAgICAgIHBhZGRpbmc6IDRweCA4cHg7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICB9XHJcblxyXG4gICAgLmxvZ291dC1idG46aG92ZXIge1xyXG4gICAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgICAgIC51c2VyLWluZm8ge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5hdmF0YXIge1xyXG4gICAgICAgIHdpZHRoOiAzMnB4O1xyXG4gICAgICAgIGhlaWdodDogMzJweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VyUHJvZmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCB0aGVtZUNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYHRoZW1lLSR7dGhpcy5jdXJyZW50VGhlbWV9YDtcclxuICB9XHJcblxyXG4gIGN1cnJlbnRVc2VyOiBJVXNlciB8IG51bGwgPSBudWxsO1xyXG4gIGN1cnJlbnRUaGVtZTogVGhlbWUgPSAnbGlnaHQnO1xyXG4gIHVucmVhZENvdW50ID0gMDtcclxuICBkcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogTWVzQXV0aFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc29sZS5sb2coJ1VzZXJQcm9maWxlQ29tcG9uZW50OiBTZXJ2aWNlIGluamVjdGVkPycsICEhdGhpcy5hdXRoU2VydmljZSk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRVc2VyJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUodXNlciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1VzZXJQcm9maWxlQ29tcG9uZW50OiBjdXJyZW50VXNlcicsIHVzZXIpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFVzZXIgPSB1c2VyO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRoZW1lU2VydmljZS5jdXJyZW50VGhlbWUkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh0aGVtZSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGhlbWUgPSB0aGVtZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2FkVW5yZWFkQ291bnQoKTtcclxuXHJcbiAgICAvLyBMaXN0ZW4gZm9yIG5ldyBub3RpZmljYXRpb25zXHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLm5vdGlmaWNhdGlvbnMkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ05vdGlmaWNhdGlvbiByZWNlaXZlZCwgdXBkYXRpbmcgdW5yZWFkIGNvdW50Jyk7XHJcbiAgICAgICAgdGhpcy5sb2FkVW5yZWFkQ291bnQoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkVW5yZWFkQ291bnQoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVucmVhZENvdW50KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnVucmVhZENvdW50ID0gcmVzcG9uc2UudW5yZWFkQ291bnQgfHwgMDtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgdW5yZWFkIGNvdW50OicsIGVycilcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXZhdGFyVXJsKHVzZXI6IElVc2VyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0Q29uZmlnKCk7XHJcbiAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnPy5hcGlCYXNlVXJsIHx8ICcnO1xyXG4gICAgXHJcbiAgICAvLyBVc2UgdXNlcklkIGZvciB0aGUgYXZhdGFyIGVuZHBvaW50XHJcbiAgICBjb25zdCB1c2VySWQgPSB1c2VyLnVzZXJJZDtcclxuICAgIGlmICh1c2VySWQgJiYgYmFzZVVybCkge1xyXG4gICAgICByZXR1cm4gYCR7YmFzZVVybC5yZXBsYWNlKC9cXC8kLywgJycpfS9hdXRoLyR7dXNlcklkfS9hdmF0YXJgO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBGYWxsYmFjayB0byBVSSBhdmF0YXJzIHNlcnZpY2UgaWYgbm8gdXNlcklkIG9yIGJhc2VVcmxcclxuICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gdXNlci51c2VyTmFtZSB8fCB1c2VyLnVzZXJJZCB8fCAnVXNlcic7XHJcbiAgICByZXR1cm4gYGh0dHBzOi8vdWktYXZhdGFycy5jb20vYXBpLz9uYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGRpc3BsYXlOYW1lKX0mYmFja2dyb3VuZD0xOTc2ZDImY29sb3I9ZmZmYDtcclxuICB9XHJcblxyXG4gIGdldExhc3ROYW1lSW5pdGlhbCh1c2VyOiBJVXNlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmdWxsTmFtZSA9IHVzZXIuZnVsbE5hbWUgfHwgdXNlci51c2VyTmFtZSB8fCAnVSc7XHJcbiAgICBjb25zdCBwYXJ0cyA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XHJcbiAgICBjb25zdCBsYXN0UGFydCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgcmV0dXJuIGxhc3RQYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9ICF0aGlzLmRyb3Bkb3duT3BlbjtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGFyZ2V0LmNsb3Nlc3QoJy51c2VyLW1lbnUtd3JhcHBlcicpO1xyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkxvZ2luKCkge1xyXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5hdXRoU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSBjb25maWc/LnVzZXJCYXNlVXJsIHx8ICcnO1xyXG4gICAgY29uc3QgcmV0dXJuVXJsID0gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucm91dGVyLnVybCk7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke2Jhc2VVcmx9L2xvZ2luP3JldHVyblVybD0ke3JldHVyblVybH1gO1xyXG4gIH1cclxuXHJcbiAgb25WaWV3UHJvZmlsZSgpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0Q29uZmlnKCk7XHJcbiAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnPy51c2VyQmFzZVVybCB8fCAnJztcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7YmFzZVVybH0vcHJvZmlsZWA7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25Mb2dvdXQoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAvLyBDbGVhciBjdXJyZW50IHVzZXIgYWZ0ZXIgc3VjY2Vzc2Z1bCBsb2dvdXRcclxuICAgICAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIE5hdmlnYXRlIHRvIGxvZ2luIHdpdGggcmV0dXJuIFVSTFxyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0Q29uZmlnKCk7XHJcbiAgICAgICAgY29uc3QgYmFzZVVybCA9IGNvbmZpZz8udXNlckJhc2VVcmwgfHwgJyc7XHJcbiAgICAgICAgY29uc3QgcmV0dXJuVXJsID0gZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke2Jhc2VVcmx9L2xvZ2luP3JldHVyblVybD0ke3JldHVyblVybH1gO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xvZ291dCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgIC8vIFN0aWxsIG5hdmlnYXRlIHRvIGxvZ2luIGV2ZW4gaWYgbG9nb3V0IGZhaWxzXHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5hdXRoU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgICAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnPy51c2VyQmFzZVVybCB8fCAnJztcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke2Jhc2VVcmx9L2xvZ2luYDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk5vdGlmaWNhdGlvbkNsaWNrKCkge1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25DbGljay5lbWl0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91c2VyLXByb2ZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBaVMzQyxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQW9CLFdBQTJCLEVBQVUsTUFBYyxFQUFVLFlBQTBCO1FBQXZGLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVhqRyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBS3ZELGdCQUFXLEdBQWlCLElBQUksQ0FBQztRQUNqQyxpQkFBWSxHQUFVLE9BQU8sQ0FBQztRQUM5QixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNiLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXVFLENBQUM7SUFWL0csSUFBMEIsVUFBVTtRQUNsQyxPQUFPLFNBQVMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFVRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZO2FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYTthQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYzthQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzFDLElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFFLENBQUM7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFXO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFFekMscUNBQXFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO1lBQ3JCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsU0FBUyxNQUFNLFNBQVMsQ0FBQztTQUM5RDtRQUVELHlEQUF5RDtRQUN6RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDO1FBQzNELE9BQU8sb0NBQW9DLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQztJQUMzRyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBVztRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUdELGVBQWUsQ0FBQyxLQUFZO1FBQzFCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxPQUFPLG9CQUFvQixTQUFTLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDMUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxPQUFPLFVBQVUsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ2xDLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsNkNBQTZDO2dCQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFFMUIsb0NBQW9DO2dCQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxPQUFPLG9CQUFvQixTQUFTLEVBQUUsQ0FBQztZQUNuRSxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsK0NBQStDO2dCQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxPQUFPLFFBQVEsQ0FBQztZQUM1QyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQzs7aUhBNUhVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGtQQTNSckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVCxnNkdBOUNTLElBQUk7MkZBNFJILG9CQUFvQjtrQkEvUmhDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsSUFBSSxDQUFDLFlBQ0w7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDtxSkErT1MsaUJBQWlCO3NCQUExQixNQUFNO2dCQUNtQixVQUFVO3NCQUFuQyxXQUFXO3VCQUFDLE9BQU87Z0JBNkVwQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWVzQXV0aFNlcnZpY2UsIElVc2VyIH0gZnJvbSAnLi9tZXMtYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlLCBUaGVtZSB9IGZyb20gJy4vdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtYS11c2VyLXByb2ZpbGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nSWZdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwidXNlci1wcm9maWxlLWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0tIE5vdCBsb2dnZWQgaW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VycmVudFVzZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibG9naW4tYnRuXCIgKGNsaWNrKT1cIm9uTG9naW4oKVwiPlxyXG4gICAgICAgICAgTG9naW5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIExvZ2dlZCBpbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRVc2VyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItaGVhZGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm90aWZpY2F0aW9uLWJ0blwiIChjbGljayk9XCJvbk5vdGlmaWNhdGlvbkNsaWNrKClcIiB0aXRsZT1cIk5vdGlmaWNhdGlvbnNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCI+8J+UlDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiICpuZ0lmPVwidW5yZWFkQ291bnQgPiAwXCI+e3sgdW5yZWFkQ291bnQgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVzZXItbWVudS1idG5cIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRVc2VyLmZ1bGxOYW1lIHx8IGN1cnJlbnRVc2VyLnVzZXJOYW1lXCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0QXZhdGFyVXJsKGN1cnJlbnRVc2VyKVwiIFxyXG4gICAgICAgICAgICAgICAgW2FsdF09XCJjdXJyZW50VXNlci5mdWxsTmFtZSB8fCBjdXJyZW50VXNlci51c2VyTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF2YXRhclwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiEoY3VycmVudFVzZXIuZnVsbE5hbWUgfHwgY3VycmVudFVzZXIudXNlck5hbWUpXCIgY2xhc3M9XCJhdmF0YXItaW5pdGlhbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgZ2V0TGFzdE5hbWVJbml0aWFsKGN1cnJlbnRVc2VyKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzLWRyb3Bkb3duLW1lbnVcIiAqbmdJZj1cImRyb3Bkb3duT3BlblwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXMtZHJvcGRvd24taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBjdXJyZW50VXNlci5mdWxsTmFtZSB8fCBjdXJyZW50VXNlci51c2VyTmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZXMtZHJvcGRvd24taXRlbSBwcm9maWxlLWxpbmtcIiAoY2xpY2spPVwib25WaWV3UHJvZmlsZSgpXCI+XHJcbiAgICAgICAgICAgICAgICBWaWV3IFByb2ZpbGVcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVzLWRyb3Bkb3duLWl0ZW0gbG9nb3V0LWl0ZW1cIiAoY2xpY2spPVwib25Mb2dvdXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgTG9nb3V0XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICA6aG9zdCB7XHJcbiAgICAgIC0tcHJpbWFyeS1jb2xvcjogIzE5NzZkMjtcclxuICAgICAgLS1wcmltYXJ5LWhvdmVyOiAjMTU2NWMwO1xyXG4gICAgICAtLXByaW1hcnktbGlnaHQ6IHJnYmEoMjUsIDExOCwgMjEwLCAwLjEpO1xyXG4gICAgICAtLWVycm9yLWNvbG9yOiAjZjQ0MzM2O1xyXG4gICAgICAtLWVycm9yLWxpZ2h0OiAjZmZlYmVlO1xyXG4gICAgICAtLXRleHQtcHJpbWFyeTogIzMzMztcclxuICAgICAgLS10ZXh0LXNlY29uZGFyeTogIzY2NjtcclxuICAgICAgLS10ZXh0LW11dGVkOiAjOTk5O1xyXG4gICAgICAtLWJnLXByaW1hcnk6IHdoaXRlO1xyXG4gICAgICAtLWJnLXNlY29uZGFyeTogI2Y1ZjVmNTtcclxuICAgICAgLS1iZy10ZXJ0aWFyeTogI2ZhZmFmYTtcclxuICAgICAgLS1iZy1ob3ZlcjogI2Y1ZjVmNTtcclxuICAgICAgLS1ib3JkZXItY29sb3I6ICNlMGUwZTA7XHJcbiAgICAgIC0tYm9yZGVyLWxpZ2h0OiAjZjBmMGYwO1xyXG4gICAgICAtLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgICAgLS1zaGFkb3ctbGlnaHQ6IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgIH1cclxuXHJcbiAgICA6aG9zdCgudGhlbWUtZGFyaykge1xyXG4gICAgICAtLXByaW1hcnktY29sb3I6ICM5MGNhZjk7XHJcbiAgICAgIC0tcHJpbWFyeS1ob3ZlcjogIzY0YjVmNjtcclxuICAgICAgLS1wcmltYXJ5LWxpZ2h0OiByZ2JhKDE0NCwgMjAyLCAyNDksIDAuMSk7XHJcbiAgICAgIC0tZXJyb3ItY29sb3I6ICNlZjUzNTA7XHJcbiAgICAgIC0tZXJyb3ItbGlnaHQ6IHJnYmEoMjM5LCA4MywgODAsIDAuMSk7XHJcbiAgICAgIC0tdGV4dC1wcmltYXJ5OiAjZTBlMGUwO1xyXG4gICAgICAtLXRleHQtc2Vjb25kYXJ5OiAjYjBiMGIwO1xyXG4gICAgICAtLXRleHQtbXV0ZWQ6ICM4ODg7XHJcbiAgICAgIC0tYmctcHJpbWFyeTogIzFlMWUxZTtcclxuICAgICAgLS1iZy1zZWNvbmRhcnk6ICMyZDJkMmQ7XHJcbiAgICAgIC0tYmctdGVydGlhcnk6ICMyNTI1MjU7XHJcbiAgICAgIC0tYmctaG92ZXI6ICMzMzM7XHJcbiAgICAgIC0tYm9yZGVyLWNvbG9yOiAjNDA0MDQwO1xyXG4gICAgICAtLWJvcmRlci1saWdodDogIzMzMztcclxuICAgICAgLS1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zKTtcclxuICAgICAgLS1zaGFkb3ctbGlnaHQ6IHJnYmEoMCwgMCwgMCwgMC4yKTtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1wcm9maWxlLWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGdhcDogMTZweDtcclxuICAgICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5sb2dpbi1idG4ge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTZweDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xyXG4gICAgfVxyXG5cclxuICAgIC5sb2dpbi1idG46aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1oZWFkZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBnYXA6IDE2cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vdGlmaWNhdGlvbi1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDhweDtcclxuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5ub3RpZmljYXRpb24tYnRuOmhvdmVyIHtcclxuICAgICAgb3BhY2l0eTogMC43O1xyXG4gICAgfVxyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIC5iYWRnZSB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXJyb3ItY29sb3IpO1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItbWVudS13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLW1lbnUtYnRuIHtcclxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC51c2VyLW1lbnUtYnRuOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1saWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgLmF2YXRhciB7XHJcbiAgICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XHJcbiAgICB9XHJcblxyXG4gICAgLmF2YXRhci1pbml0aWFsIHtcclxuICAgICAgd2lkdGg6IDQwcHg7XHJcbiAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAubWVzLWRyb3Bkb3duLW1lbnUge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogY2FsYygxMDAlICsgOHB4KTtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCB2YXIoLS1zaGFkb3cpO1xyXG4gICAgICBtaW4td2lkdGg6IDIwMHB4O1xyXG4gICAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgfVxyXG5cclxuICAgIC5tZXMtZHJvcGRvd24taGVhZGVyIHtcclxuICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAubWVzLWRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5tZXMtZHJvcGRvd24taXRlbTpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICAucHJvZmlsZS1saW5rIHtcclxuICAgICAgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC5sb2dvdXQtaXRlbSB7XHJcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO1xyXG4gICAgICBjb2xvcjogdmFyKC0tZXJyb3ItY29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC5sb2dvdXQtaXRlbTpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWVycm9yLWxpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAudXNlci1pbmZvIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZ2FwOiAycHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItbmFtZSB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLnVzZXItcG9zaXRpb24ge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLmxvZ291dC1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xyXG4gICAgICBwYWRkaW5nOiA0cHggOHB4O1xyXG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5sb2dvdXQtYnRuOmhvdmVyIHtcclxuICAgICAgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICAgICAudXNlci1pbmZvIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuYXZhdGFyIHtcclxuICAgICAgICB3aWR0aDogMzJweDtcclxuICAgICAgICBoZWlnaHQ6IDMycHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclByb2ZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIG5vdGlmaWNhdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgdGhlbWVDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGB0aGVtZS0ke3RoaXMuY3VycmVudFRoZW1lfWA7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50VXNlcjogSVVzZXIgfCBudWxsID0gbnVsbDtcclxuICBjdXJyZW50VGhlbWU6IFRoZW1lID0gJ2xpZ2h0JztcclxuICB1bnJlYWRDb3VudCA9IDA7XHJcbiAgZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IE1lc0F1dGhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuY3VycmVudFVzZXIkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh1c2VyID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRVc2VyID0gdXNlcjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy50aGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUodGhlbWUgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRoZW1lID0gdGhlbWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMubG9hZFVucmVhZENvdW50KCk7XHJcblxyXG4gICAgLy8gTGlzdGVuIGZvciBuZXcgbm90aWZpY2F0aW9uc1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5ub3RpZmljYXRpb25zJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdOb3RpZmljYXRpb24gcmVjZWl2ZWQsIHVwZGF0aW5nIHVucmVhZCBjb3VudCcpO1xyXG4gICAgICAgIHRoaXMubG9hZFVucmVhZENvdW50KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFVucmVhZENvdW50KCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVbnJlYWRDb3VudCgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy51bnJlYWRDb3VudCA9IHJlc3BvbnNlLnVucmVhZENvdW50IHx8IDA7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7fVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBdmF0YXJVcmwodXNlcjogSVVzZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5hdXRoU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSBjb25maWc/LmFwaUJhc2VVcmwgfHwgJyc7XHJcbiAgICBcclxuICAgIC8vIFVzZSB1c2VySWQgZm9yIHRoZSBhdmF0YXIgZW5kcG9pbnRcclxuICAgIGNvbnN0IHVzZXJJZCA9IHVzZXIudXNlcklkO1xyXG4gICAgaWYgKHVzZXJJZCAmJiBiYXNlVXJsKSB7XHJcbiAgICAgIHJldHVybiBgJHtiYXNlVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyl9L2F1dGgvJHt1c2VySWR9L2F2YXRhcmA7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIEZhbGxiYWNrIHRvIFVJIGF2YXRhcnMgc2VydmljZSBpZiBubyB1c2VySWQgb3IgYmFzZVVybFxyXG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSB1c2VyLnVzZXJOYW1lIHx8IHVzZXIudXNlcklkIHx8ICdVc2VyJztcclxuICAgIHJldHVybiBgaHR0cHM6Ly91aS1hdmF0YXJzLmNvbS9hcGkvP25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQoZGlzcGxheU5hbWUpfSZiYWNrZ3JvdW5kPTE5NzZkMiZjb2xvcj1mZmZgO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFzdE5hbWVJbml0aWFsKHVzZXI6IElVc2VyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZ1bGxOYW1lID0gdXNlci5mdWxsTmFtZSB8fCB1c2VyLnVzZXJOYW1lIHx8ICdVJztcclxuICAgIGNvbnN0IHBhcnRzID0gZnVsbE5hbWUuc3BsaXQoJyAnKTtcclxuICAgIGNvbnN0IGxhc3RQYXJ0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XHJcbiAgICByZXR1cm4gbGFzdFBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVEcm9wZG93bigpIHtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gIXRoaXMuZHJvcGRvd25PcGVuO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0YXJnZXQuY2xvc2VzdCgnLnVzZXItbWVudS13cmFwcGVyJyk7XHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTG9naW4oKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldENvbmZpZygpO1xyXG4gICAgY29uc3QgYmFzZVVybCA9IGNvbmZpZz8udXNlckJhc2VVcmwgfHwgJyc7XHJcbiAgICBjb25zdCByZXR1cm5VcmwgPSBlbmNvZGVVUklDb21wb25lbnQodGhpcy5yb3V0ZXIudXJsKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7YmFzZVVybH0vbG9naW4/cmV0dXJuVXJsPSR7cmV0dXJuVXJsfWA7XHJcbiAgfVxyXG5cclxuICBvblZpZXdQcm9maWxlKCkge1xyXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5hdXRoU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSBjb25maWc/LnVzZXJCYXNlVXJsIHx8ICcnO1xyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtiYXNlVXJsfS9wcm9maWxlYDtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkxvZ291dCgpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgIC8vIENsZWFyIGN1cnJlbnQgdXNlciBhZnRlciBzdWNjZXNzZnVsIGxvZ291dFxyXG4gICAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gTmF2aWdhdGUgdG8gbG9naW4gd2l0aCByZXR1cm4gVVJMXHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5hdXRoU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgICAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnPy51c2VyQmFzZVVybCB8fCAnJztcclxuICAgICAgICBjb25zdCByZXR1cm5VcmwgPSBlbmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpO1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7YmFzZVVybH0vbG9naW4/cmV0dXJuVXJsPSR7cmV0dXJuVXJsfWA7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgLy8gU3RpbGwgbmF2aWdhdGUgdG8gbG9naW4gZXZlbiBpZiBsb2dvdXQgZmFpbHNcclxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldENvbmZpZygpO1xyXG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSBjb25maWc/LnVzZXJCYXNlVXJsIHx8ICcnO1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7YmFzZVVybH0vbG9naW5gO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uTm90aWZpY2F0aW9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkNsaWNrLmVtaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|