http-request-manager 18.4.5 → 18.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/http-request-manager.module.mjs +14 -3
- package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +7 -5
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.mjs +92 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.mjs +14 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.mjs +57 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.mjs +107 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.mjs +14 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.mjs +5 -6
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.mjs +14 -36
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/services/state-request-demo.service.mjs +13 -39
- package/esm2022/lib/interceptors/index.mjs +2 -1
- package/esm2022/lib/models/database-storage.model.mjs +3 -1
- package/esm2022/lib/services/request-manager-services/request.service.mjs +4 -1
- package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +27 -25
- package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +4 -4
- package/esm2022/lib/services/store-state-manager-service/store-state-manager.service.mjs +2 -2
- package/esm2022/lib/services/utils/encryption/index.mjs +2 -1
- package/esm2022/lib/services/utils/encryption/random.mjs +13 -1
- package/esm2022/lib/services/utils/index.mjs +2 -1
- package/esm2022/lib/services/ws-manager-service/index.mjs +2 -2
- package/esm2022/lib/services/ws-manager-service/services/index.mjs +2 -0
- package/esm2022/lib/services/ws-manager-service/services/websocket.service.mjs +16 -7
- package/fesm2022/http-request-manager.mjs +337 -96
- package/fesm2022/http-request-manager.mjs.map +1 -1
- package/http-request-manager-18.4.9.tgz +0 -0
- package/lib/http-request-manager.module.d.ts +26 -22
- package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +3 -1
- package/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.d.ts +15 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.d.ts +8 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.d.ts +20 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.d.ts +33 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.d.ts +8 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.d.ts +3 -5
- package/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.d.ts +3 -5
- package/lib/http-request-services-demo/request-manager-ws-demo/services/state-request-demo.service.d.ts +1 -5
- package/lib/interceptors/index.d.ts +1 -0
- package/lib/models/database-storage.model.d.ts +1 -1
- package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +3 -1
- package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +3 -4
- package/lib/services/store-state-manager-service/store-state-manager.service.d.ts +1 -1
- package/lib/services/utils/encryption/index.d.ts +1 -0
- package/lib/services/utils/encryption/random.d.ts +4 -0
- package/lib/services/utils/index.d.ts +1 -0
- package/lib/services/ws-manager-service/index.d.ts +1 -1
- package/lib/services/ws-manager-service/services/index.d.ts +1 -0
- package/lib/services/ws-manager-service/services/websocket.service.d.ts +3 -1
- package/package.json +1 -1
- package/http-request-manager-18.4.5.tgz +0 -0
|
@@ -2,5 +2,6 @@ export * from './app.service';
|
|
|
2
2
|
export * from './headers.service';
|
|
3
3
|
export * from './path-query.service';
|
|
4
4
|
export * from './utils.service';
|
|
5
|
+
export * from './object-merger.service';
|
|
5
6
|
export * from './encryption/index';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWFkZXJzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXRoLXF1ZXJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LW1lcmdlci5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9lbmNyeXB0aW9uL2luZGV4JztcblxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from "./models/index";
|
|
2
|
-
export * from "./services/
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export * from "./services/index";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVscy9pbmRleFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2VydmljZXMvaW5kZXhcIjtcblxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from "./websocket.service";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgKiBmcm9tIFwiLi93ZWJzb2NrZXQuc2VydmljZVwiO1xuXG4iXX0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { UUID_STR } from '../../utils/encryption/random';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export class WebsocketService {
|
|
5
6
|
constructor() {
|
|
@@ -10,12 +11,19 @@ export class WebsocketService {
|
|
|
10
11
|
this.connectionStatus$ = this.connectionStatus.asObservable();
|
|
11
12
|
this.isSubscribed = false;
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
+
getSessionId() {
|
|
15
|
+
return sessionStorage.getItem('WSID') ?? (() => {
|
|
16
|
+
const uuid = UUID_STR();
|
|
17
|
+
sessionStorage.setItem('WSID', uuid);
|
|
18
|
+
return uuid;
|
|
19
|
+
})();
|
|
20
|
+
}
|
|
21
|
+
sendSubscribe(channelName, user) {
|
|
14
22
|
if (this.socket?.readyState === WebSocket.OPEN && !this.isSubscribed) {
|
|
15
23
|
const message = {
|
|
16
24
|
type: 'subscribe',
|
|
17
25
|
subscribedChannel: channelName,
|
|
18
|
-
content:
|
|
26
|
+
content: user
|
|
19
27
|
};
|
|
20
28
|
this.socket.send(JSON.stringify(message));
|
|
21
29
|
this.isSubscribed = true; // Set the flag immediately after sending
|
|
@@ -25,7 +33,7 @@ export class WebsocketService {
|
|
|
25
33
|
console.warn(`[CLIENT] Subscription prevented. Open: ${this.socket?.readyState === WebSocket.OPEN}, Subscribed: ${this.isSubscribed}`);
|
|
26
34
|
}
|
|
27
35
|
}
|
|
28
|
-
connect(
|
|
36
|
+
connect(options, jwtToken) {
|
|
29
37
|
if (this.socket) {
|
|
30
38
|
if (this.socket.readyState === WebSocket.OPEN) {
|
|
31
39
|
console.log('WebSocket connection is already OPEN.');
|
|
@@ -42,12 +50,13 @@ export class WebsocketService {
|
|
|
42
50
|
}
|
|
43
51
|
}
|
|
44
52
|
this.isSubscribed = false;
|
|
45
|
-
const
|
|
53
|
+
const sessionId = this.getSessionId();
|
|
54
|
+
const URL = (jwtToken) ? `${options.wsServer}?token=${jwtToken}&sessionId=${sessionId}` : `${options.wsServer}?sessionId=${sessionId}`;
|
|
46
55
|
this.socket = new WebSocket(URL);
|
|
47
|
-
this.socket.onopen = (
|
|
56
|
+
this.socket.onopen = () => {
|
|
48
57
|
console.log(`📡 Connected to WebSocket`);
|
|
49
58
|
this.connectionStatus.next(true);
|
|
50
|
-
this.sendSubscribe(
|
|
59
|
+
this.sendSubscribe(options.id, options.user);
|
|
51
60
|
};
|
|
52
61
|
this.socket.onmessage = (event) => {
|
|
53
62
|
try {
|
|
@@ -175,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
175
184
|
providedIn: 'root',
|
|
176
185
|
}]
|
|
177
186
|
}] });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9zZXJ2aWNlcy93ZWJzb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25ELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFLVSxXQUFNLEdBQXFCLElBQUksQ0FBQztRQUVoQyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXpELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hELHNCQUFpQixHQUF3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0UsaUJBQVksR0FBWSxLQUFLLENBQUM7S0E2THZDO0lBM0xTLGFBQWEsQ0FBQyxXQUFtQjtRQUVyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkUsTUFBTSxPQUFPLEdBQUc7Z0JBQ1osSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLGlCQUFpQixFQUFFLFdBQVc7Z0JBQzlCLE9BQU8sRUFBRSxFQUFFO2FBQ2QsQ0FBQztZQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElB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LENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQzsrR0FyTVUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJzb2NrZXRTZXJ2aWNlIHtcblxuICBwcml2YXRlIHNvY2tldDogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHVibGljIG1lc3NhZ2VzJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5tZXNzYWdlcy5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNvbm5lY3Rpb25TdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jb25uZWN0aW9uU3RhdHVzLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgaXNTdWJzY3JpYmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzZW5kU3Vic2NyaWJlKGNoYW5uZWxOYW1lOiBzdHJpbmcpIHtcblxuICAgICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTiAmJiAhdGhpcy5pc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnc3Vic2NyaWJlJyxcbiAgICAgICAgICAgICAgc3Vic2NyaWJlZENoYW5uZWw6IGNoYW5uZWxOYW1lLFxuICAgICAgICAgICAgICBjb250ZW50OiB7fVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG4gICAgICAgICAgdGhpcy5pc1N1YnNjcmliZWQgPSB0cnVlOyAvLyBTZXQgdGhlIGZsYWcgaW1tZWRpYXRlbHkgYWZ0ZXIgc2VuZGluZ1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBbQ0xJRU5UXSBTZW50IGluaXRpYWwgc3Vic2NyaXB0aW9uIHRvOiAke2NoYW5uZWxOYW1lfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFtDTElFTlRdIFN1YnNjcmlwdGlvbiBwcmV2ZW50ZWQuIE9wZW46ICR7dGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOfSwgU3Vic2NyaWJlZDogJHt0aGlzLmlzU3Vic2NyaWJlZH1gKTtcbiAgICAgIH1cbiAgfVxuXG5jb25uZWN0KHVybDogc3RyaW5nLCBqd3RUb2tlbj86IHN0cmluZykge1xuXG4gICAgaWYgKHRoaXMuc29ja2V0KSB7XG5cbiAgICAgIGlmICh0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBPUEVOLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ09OTkVDVElORykge1xuICAgICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGlzIGFscmVhZHkgQ09OTkVDVElORy4gV2FpdGluZyBmb3IgaGFuZHNoYWtlLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ0xPU0lORyB8fCB0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ0xPU0VEKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyB1cCBzdGFsZSBzb2NrZXQgKFN0YXRlOiAke3RoaXMuc29ja2V0LnJlYWR5U3RhdGV9KS5gKTtcbiAgICAgICAgdGhpcy5zb2NrZXQuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5zb2NrZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXNTdWJzY3JpYmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBVUkwgPSAoand0VG9rZW4pID8gYCR7dXJsfT90b2tlbj0ke2p3dFRva2VufWAgOiB1cmw7XG5cbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoVVJMKTtcblxuICAgIHRoaXMuc29ja2V0Lm9ub3BlbiA9IChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5OhIENvbm5lY3RlZCB0byBXZWJTb2NrZXRgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2VuZFN1YnNjcmliZSgnV1MtTVlfREFUQScpO1xuICAgIH07XG5cbiAgICB0aGlzLnNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcblxuICAgICAgdHJ5IHtcblxuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcblxuICAgICAgICBpZiAoZGF0YS5lcnJvciAmJiBkYXRhLmVycm9yID09PSAnSldUX0lOVkFMSUQnKSB7XG5cbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdKV1QgdmFsaWRhdGlvbiBmYWlsZWQuIEF1dGhlbnRpY2F0aW9uIGVycm9yIScpO1xuXG4gICAgICAgICAgdGhpcy5tZXNzYWdlcy5uZXh0KGRhdGEpO1xuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cy5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNvY2tldD8uY2xvc2UoKTtcblxuICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlcy5uZXh0KGRhdGEpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFdlYlNvY2tldCBtZXNzYWdlOicsIGV2ZW50LmRhdGEpO1xuICAgICAgfVxuXG4gICAgfTtcblxuICAgIHRoaXMuc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XG5cbiAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgY29ubmVjdGlvbiBjbG9zZWQnKTtcblxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5zb2NrZXQgPSBudWxsO1xuICAgIH07XG5cbiAgICB0aGlzLnNvY2tldC5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLm5leHQoZmFsc2UpO1xuICAgIH07XG5cbiAgfVxuXG4gIGRpc2Nvbm5lY3QoKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0KSB7XG4gICAgICB0aGlzLnNvY2tldC5jbG9zZSgpO1xuICAgICAgdGhpcy5zb2NrZXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG5zdWJzY3JpYmVUb0NoYW5uZWwoY2hhbm5lbE5hbWU6IHN0cmluZykge1xuXG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICB0eXBlOiAnc3Vic2NyaWJlJyxcbiAgICAgICAgICAgIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsTmFtZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0Nhbm5vdCBzdWJzY3JpYmU6IFdlYlNvY2tldCBub3QgeWV0IG9wZW4uJyk7XG4gICAgfVxuXG59XG5cbiAgdW5zdWJzY3JpYmVUb0NoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICd1bnN1YnNjcmliZScsIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5KsIFVuc3Vic2NyaWJlZCB0byBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHVuc3Vic2NyaWJlZCB0byBjaGFubmVsLicpO1xuICAgIH1cbiAgfVxuXG4gIHNlbmRCcm9hZGNhc3QoY29udGVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdicm9hZGNhc3QnLCBjb250ZW50IH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5OiIFNlbmQgYnJvYWRjYXN0OiAke2NvbnRlbnR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHNlbmQgYnJvYWRjYXN0LicpO1xuICAgIH1cbiAgfVxuXG4gIHNlbmRNZXNzYWdlSW5DaGFubmVsKGNoYW5uZWw6IHN0cmluZywgY29udGVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdzdGF0ZU1hbmdlck1lc3NhZ2UnLCBzdWJzY3JpYmVkQ2hhbm5lbDogY2hhbm5lbCwgY29udGVudCB9KSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5KsIFNlbmQgbWVzc2FnZTogJHtjb250ZW50fWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCBzZW5kIG1lc3NhZ2UuJyk7XG4gICAgfVxuICB9XG5cbiAgc2VuZE1lc3NhZ2VUb1VzZXIodXNlcjogc3RyaW5nLCBjb250ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3VzZXJNZXNzYWdlJywgc3Vic2NyaWJlZENoYW5uZWw6IHVzZXIsIGNvbnRlbnQgfSkpO1xuICAgICAgICBjb25zb2xlLmxvZyhg8J+SrCBTZW5kIG1lc3NhZ2U6ICR7Y29udGVudH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3Qgc2VuZCBtZXNzYWdlLicpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFsbENoYW5uZWxzKCkge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnZ2V0Q2hhbm5lbHMnIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5eC77iPIExpc3Qgb2YgYWxsIGNoYW5uZWxzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHJlcXVlc3QgY2hhbm5lbHMuJyk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQ2hhbm5lbChjaGFubmVsOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2NyZWF0ZUNoYW5uZWwnLCBjb250ZW50OiBjaGFubmVsIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5eC77iPIENyZWF0ZWQgY2hhbm5lbDonLCBjaGFubmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3QgcmVxdWVzdCBjaGFubmVscy4nKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnZGVsZXRlQ2hhbm5lbCcsIGNvbnRlbnQ6IGNoYW5uZWwgfSkpO1xuICAgICAgY29uc29sZS5sb2coJ/Cfl4LvuI8gRGVsZXRlIGNoYW5uZWw6JywgY2hhbm5lbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHJlcXVlc3QgY2hhbm5lbHMuJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlcnNJbkNoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdnZXRVc2VycycsIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5GlIExpc3QgYWxsIHVzZXJzIGluIGNoYW5uZWw6ICR7Y2hhbm5lbH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3QgcmVxdWVzdCB1c2Vycy4nKTtcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9zZXJ2aWNlcy93ZWJzb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUt6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBS1UsV0FBTSxHQUFxQixJQUFJLENBQUM7UUFFaEMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV6RCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RCxzQkFBaUIsR0FBd0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTdFLGlCQUFZLEdBQVksS0FBSyxDQUFDO0tBc012QztJQXBNUyxZQUFZO1FBQ2xCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM3QyxNQUFNLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQTtZQUN2QixjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNwQyxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDTixDQUFDO0lBRU8sYUFBYSxDQUFDLFdBQW1CLEVBQUUsSUFBUztRQUVoRCxJQUFJLElBQUksQ0FBQyxNQUFN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O2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQWU7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7K0dBOU1VLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV1NPcHRpb25zIH0gZnJvbSAnLi4vLi4vcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UnO1xuaW1wb3J0IHsgVVVJRF9TVFIgfSBmcm9tICcuLi8uLi91dGlscy9lbmNyeXB0aW9uL3JhbmRvbSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJzb2NrZXRTZXJ2aWNlIHtcblxuICBwcml2YXRlIHNvY2tldDogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHVibGljIG1lc3NhZ2VzJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5tZXNzYWdlcy5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNvbm5lY3Rpb25TdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jb25uZWN0aW9uU3RhdHVzLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgaXNTdWJzY3JpYmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBnZXRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnV1NJRCcpID8/ICgoKSA9PiB7XG4gICAgICBjb25zdCB1dWlkID0gVVVJRF9TVFIoKVxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnV1NJRCcsIHV1aWQpXG4gICAgICByZXR1cm4gdXVpZFxuICAgIH0pKClcbiAgfVxuXG4gIHByaXZhdGUgc2VuZFN1YnNjcmliZShjaGFubmVsTmFtZTogc3RyaW5nLCB1c2VyOiBhbnkpIHtcblxuICAgICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTiAmJiAhdGhpcy5pc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnc3Vic2NyaWJlJyxcbiAgICAgICAgICAgICAgc3Vic2NyaWJlZENoYW5uZWw6IGNoYW5uZWxOYW1lLFxuICAgICAgICAgICAgICBjb250ZW50OiB1c2VyXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTtcbiAgICAgICAgICB0aGlzLmlzU3Vic2NyaWJlZCA9IHRydWU7IC8vIFNldCB0aGUgZmxhZyBpbW1lZGlhdGVseSBhZnRlciBzZW5kaW5nXG4gICAgICAgICAgY29uc29sZS5sb2coYFtDTElFTlRdIFNlbnQgaW5pdGlhbCBzdWJzY3JpcHRpb24gdG86ICR7Y2hhbm5lbE5hbWV9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgW0NMSUVOVF0gU3Vic2NyaXB0aW9uIHByZXZlbnRlZC4gT3BlbjogJHt0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU59LCBTdWJzY3JpYmVkOiAke3RoaXMuaXNTdWJzY3JpYmVkfWApO1xuICAgICAgfVxuICB9XG5cbmNvbm5lY3Qob3B0aW9uczogV1NPcHRpb25zLCBqd3RUb2tlbjogc3RyaW5nKSB7XG5cbiAgICBpZiAodGhpcy5zb2NrZXQpIHtcblxuICAgICAgaWYgKHRoaXMuc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBhbHJlYWR5IE9QRU4uJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5DT05ORUNUSU5HKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgaXMgYWxyZWFkeSBDT05ORUNUSU5HLiBXYWl0aW5nIGZvciBoYW5kc2hha2UuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5DTE9TSU5HIHx8IHRoaXMuc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5DTE9TRUQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYENsZWFuaW5nIHVwIHN0YWxlIHNvY2tldCAoU3RhdGU6ICR7dGhpcy5zb2NrZXQucmVhZHlTdGF0ZX0pLmApO1xuICAgICAgICB0aGlzLnNvY2tldC5jbG9zZSgpO1xuICAgICAgICB0aGlzLnNvY2tldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pc1N1YnNjcmliZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNlc3Npb25JZCA9IHRoaXMuZ2V0U2Vzc2lvbklkKCk7XG4gICAgY29uc3QgVVJMID0gKGp3dFRva2VuKSA/IGAke29wdGlvbnMud3NTZXJ2ZXJ9P3Rva2VuPSR7and0VG9rZW59JnNlc3Npb25JZD0ke3Nlc3Npb25JZH1gIDogYCR7b3B0aW9ucy53c1NlcnZlcn0/c2Vzc2lvbklkPSR7c2Vzc2lvbklkfWA7XG5cbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoVVJMKTtcblxuICAgIHRoaXMuc29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coYPCfk6EgQ29ubmVjdGVkIHRvIFdlYlNvY2tldGApO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5zZW5kU3Vic2NyaWJlKG9wdGlvbnMuaWQsIG9wdGlvbnMudXNlcik7XG4gICAgfTtcblxuICAgIHRoaXMuc29ja2V0Lm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuXG4gICAgICAgIGlmIChkYXRhLmVycm9yICYmIGRhdGEuZXJyb3IgPT09ICdKV1RfSU5WQUxJRCcpIHtcblxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0pXVCB2YWxpZGF0aW9uIGZhaWxlZC4gQXV0aGVudGljYXRpb24gZXJyb3IhJyk7XG5cbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzLm5leHQoZGF0YSk7XG4gICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuc29ja2V0Py5jbG9zZSgpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1lc3NhZ2VzLm5leHQoZGF0YSk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgV2ViU29ja2V0IG1lc3NhZ2U6JywgZXZlbnQuZGF0YSk7XG4gICAgICB9XG5cbiAgICB9O1xuXG4gICAgdGhpcy5zb2NrZXQub25jbG9zZSA9ICgpID0+IHtcblxuICAgICAgY29uc29sZS5sb2coJ1dlYlNvY2tldCBjb25uZWN0aW9uIGNsb3NlZCcpO1xuXG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLnNvY2tldCA9IG51bGw7XG4gICAgfTtcblxuICAgIHRoaXMuc29ja2V0Lm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBlcnJvcjonLCBlcnJvcik7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMubmV4dChmYWxzZSk7XG4gICAgfTtcblxuICB9XG5cbiAgZGlzY29ubmVjdCgpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQpIHtcbiAgICAgIHRoaXMuc29ja2V0LmNsb3NlKCk7XG4gICAgICB0aGlzLnNvY2tldCA9IG51bGw7XG4gICAgfVxuICB9XG5cbnN1YnNjcmliZVRvQ2hhbm5lbChjaGFubmVsTmFtZTogc3RyaW5nKSB7XG5cbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLFxuICAgICAgICAgICAgc3Vic2NyaWJlZENoYW5uZWw6IGNoYW5uZWxOYW1lLFxuICAgICAgICAgICAgY29udGVudDoge31cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQ2Fubm90IHN1YnNjcmliZTogV2ViU29ja2V0IG5vdCB5ZXQgb3Blbi4nKTtcbiAgICB9XG5cbn1cblxuICB1bnN1YnNjcmliZVRvQ2hhbm5lbChjaGFubmVsOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3Vuc3Vic2NyaWJlJywgc3Vic2NyaWJlZENoYW5uZWw6IGNoYW5uZWwgfSkpO1xuICAgICAgY29uc29sZS5sb2coYPCfkqwgVW5zdWJzY3JpYmVkIHRvIGNoYW5uZWw6ICR7Y2hhbm5lbH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3QgdW5zdWJzY3JpYmVkIHRvIGNoYW5uZWwuJyk7XG4gICAgfVxuICB9XG5cbiAgc2VuZEJyb2FkY2FzdChjb250ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2Jyb2FkY2FzdCcsIGNvbnRlbnQgfSkpO1xuICAgICAgY29uc29sZS5sb2coYPCfk6IgU2VuZCBicm9hZGNhc3Q6ICR7Y29udGVudH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3Qgc2VuZCBicm9hZGNhc3QuJyk7XG4gICAgfVxuICB9XG5cbiAgc2VuZE1lc3NhZ2VJbkNoYW5uZWwoY2hhbm5lbDogc3RyaW5nLCBjb250ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3N0YXRlTWFuZ2VyTWVzc2FnZScsIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsLCBjb250ZW50IH0pKTtcbiAgICAgICAgY29uc29sZS5sb2coYPCfkqwgU2VuZCBtZXNzYWdlOiAke2NvbnRlbnR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHNlbmQgbWVzc2FnZS4nKTtcbiAgICB9XG4gIH1cblxuICBzZW5kTWVzc2FnZVRvVXNlcih1c2VyOiBzdHJpbmcsIGNvbnRlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAndXNlck1lc3NhZ2UnLCBzdWJzY3JpYmVkQ2hhbm5lbDogdXNlciwgY29udGVudCB9KSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5KsIFNlbmQgbWVzc2FnZTogJHtjb250ZW50fWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCBzZW5kIG1lc3NhZ2UuJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWxsQ2hhbm5lbHMoKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdnZXRDaGFubmVscycgfSkpO1xuICAgICAgY29uc29sZS5sb2coJ/Cfl4LvuI8gTGlzdCBvZiBhbGwgY2hhbm5lbHMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3QgcmVxdWVzdCBjaGFubmVscy4nKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVDaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnY3JlYXRlQ2hhbm5lbCcsIGNvbnRlbnQ6IGNoYW5uZWwgfSkpO1xuICAgICAgY29uc29sZS5sb2coJ/Cfl4LvuI8gQ3JlYXRlZCBjaGFubmVsOicsIGNoYW5uZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCByZXF1ZXN0IGNoYW5uZWxzLicpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUNoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdkZWxldGVDaGFubmVsJywgY29udGVudDogY2hhbm5lbCB9KSk7XG4gICAgICBjb25zb2xlLmxvZygn8J+Xgu+4jyBEZWxldGUgY2hhbm5lbDonLCBjaGFubmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGlzIG5vdCBvcGVuLiBDYW5ub3QgcmVxdWVzdCBjaGFubmVscy4nKTtcbiAgICB9XG4gIH1cblxuICBnZXRVc2Vyc0luQ2hhbm5lbChjaGFubmVsOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2dldFVzZXJzJywgc3Vic2NyaWJlZENoYW5uZWw6IGNoYW5uZWwgfSkpO1xuICAgICAgY29uc29sZS5sb2coYPCfkaUgTGlzdCBhbGwgdXNlcnMgaW4gY2hhbm5lbDogJHtjaGFubmVsfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCByZXF1ZXN0IHVzZXJzLicpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|