@eo-sdk/client 8.15.0-rc.1 → 8.16.0-rc.2
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/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts +4 -5
- package/app/eo-framework/actions/actions/open-context-action/open-context-action.d.ts +2 -0
- package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts +1 -0
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts +6 -5
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +3 -1
- package/app/eo-framework-core/agent/agent.service.d.ts +3 -2
- package/assets/_default/i18n/de.json +5 -3
- package/assets/_default/i18n/en.json +5 -3
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +4274 -4240
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +64 -34
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-client/inbox-state/inbox-state/inbox-state.component.js +16 -8
- package/esm2015/app/eo-client/result-state/result-state.component.js +3 -3
- package/esm2015/app/eo-framework/actions/actions/delete-content-action/delete-content-action.js +2 -3
- package/esm2015/app/eo-framework/actions/actions/open-context-action/open-context-action.js +11 -4
- package/esm2015/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.js +10 -4
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +2 -2
- package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +13 -11
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +3 -3
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.js +11 -4
- package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +4 -4
- package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +1 -2
- package/esm2015/app/eo-framework-core/agent/agent.service.js +7 -5
- package/esm2015/projects/eo-sdk/core/lib/config/core-config.js +3 -1
- package/esm2015/projects/eo-sdk/core/lib/config/core-init.service.js +4 -2
- package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +4 -3
- package/esm2015/projects/eo-sdk/core/lib/service/backend/backend.service.js +11 -7
- package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +6 -5
- package/esm2015/projects/eo-sdk/core/lib/service/upload/upload.service.js +8 -4
- package/esm2015/projects/eo-sdk/core/lib/util/utils.js +25 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +3769 -3736
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +65 -36
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/config/core-config.d.ts +1 -0
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +3 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +4 -3
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +3 -1
- package/projects/eo-sdk/core/lib/util/utils.d.ts +3 -0
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { AppCacheService, BackendService, Logger, NotificationsService, SystemService, TranslateService, UserService, Utils } from '@eo-sdk/core';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { AppCacheService, BackendService, CoreConfig, CORE_CONFIG, Logger, NotificationsService, SystemService, TranslateService, UserService, Utils } from '@eo-sdk/core';
|
|
4
4
|
import { BehaviorSubject, forkJoin, of, ReplaySubject } from 'rxjs';
|
|
5
5
|
import { catchError, map, tap } from 'rxjs/operators';
|
|
6
6
|
export var agentConfigKeys;
|
|
@@ -9,7 +9,8 @@ export var agentConfigKeys;
|
|
|
9
9
|
agentConfigKeys["LOCKSETTINGS"] = "locksettings";
|
|
10
10
|
})(agentConfigKeys || (agentConfigKeys = {}));
|
|
11
11
|
export class AgentService {
|
|
12
|
-
constructor(logger, http, systemService, backendService, userService, translate, notifications, appCacheService) {
|
|
12
|
+
constructor(coreConfig, logger, http, systemService, backendService, userService, translate, notifications, appCacheService) {
|
|
13
|
+
this.coreConfig = coreConfig;
|
|
13
14
|
this.logger = logger;
|
|
14
15
|
this.http = http;
|
|
15
16
|
this.systemService = systemService;
|
|
@@ -36,7 +37,7 @@ export class AgentService {
|
|
|
36
37
|
.pipe(tap(([storage, config]) => this.isConnected = (config && config.hasOwnProperty(agentConfigKeys.AUTOCONNECT) ? config.autoconnect : storage !== null ? storage : null))).subscribe();
|
|
37
38
|
}
|
|
38
39
|
getAgentConfig() {
|
|
39
|
-
return this.http.get('assets/_default/config/extend.json').pipe(catchError(() => of(null)), tap((config) => this.agentConfig.next(Object.assign({}, config === null || config === void 0 ? void 0 : config.agent))), map((config) => config === null || config === void 0 ? void 0 : config.agent));
|
|
40
|
+
return this.http.get('assets/_default/config/extend.json', { withCredentials: this.coreConfig.withCredentials }).pipe(catchError(() => of(null)), tap((config) => this.agentConfig.next(Object.assign({}, config === null || config === void 0 ? void 0 : config.agent))), map((config) => config === null || config === void 0 ? void 0 : config.agent));
|
|
40
41
|
}
|
|
41
42
|
set isConnected(isConnected) {
|
|
42
43
|
this._isConnected = isConnected;
|
|
@@ -168,6 +169,7 @@ AgentService.decorators = [
|
|
|
168
169
|
{ type: Injectable }
|
|
169
170
|
];
|
|
170
171
|
AgentService.ctorParameters = () => [
|
|
172
|
+
{ type: CoreConfig, decorators: [{ type: Inject, args: [CORE_CONFIG,] }] },
|
|
171
173
|
{ type: Logger },
|
|
172
174
|
{ type: HttpClient },
|
|
173
175
|
{ type: SystemService },
|
|
@@ -177,4 +179,4 @@ AgentService.ctorParameters = () => [
|
|
|
177
179
|
{ type: NotificationsService },
|
|
178
180
|
{ type: AppCacheService }
|
|
179
181
|
];
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGNBQWMsRUFBYSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0osT0FBTyxFQUFDLGVBQWUsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUtwRCxNQUFNLENBQU4sSUFBWSxlQUdYO0FBSEQsV0FBWSxlQUFlO0lBQ3pCLDhDQUEyQixDQUFBO0lBQzNCLGdEQUE2QixDQUFBO0FBQy9CLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQVdELE1BQU0sT0FBTyxZQUFZO0lBZ0J2QixZQUNVLE1BQWMsRUFDZCxJQUFnQixFQUNoQixhQUE0QixFQUM1QixjQUE4QixFQUM5QixXQUF3QixFQUN4QixTQUEyQixFQUMzQixhQUFtQyxFQUNuQyxlQUFnQztRQVBoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isa0JBQWEs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QUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUk7WUFDNUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7U0FDckIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVPLE9BQU87UUFDYixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7OztZQW5MRixVQUFVOzs7WUFwQnlDLE1BQU07WUFGbEQsVUFBVTtZQUVnRSxhQUFhO1lBQXRFLGNBQWM7WUFBNEUsV0FBVztZQUE3QixnQkFBZ0I7WUFBckQsb0JBQW9CO1lBQXhFLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBcHBDYWNoZVNlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLCBEbXNPYmplY3QsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIFN5c3RlbVNlcnZpY2UsIFRyYW5zbGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL3RyZWUvdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge0xvY2tTZXR0aW5nc30gZnJvbSAnLi8uLi8uLi9lby1jbGllbnQvc2V0dGluZ3MvYWdlbnQtbG9jay1zZXR0aW5ncy5lbnVtJztcclxuaW1wb3J0IHtDdXN0b21FbWFpbH0gZnJvbSAnLi9hZ2VudC5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGVudW0gYWdlbnRDb25maWdLZXlzIHtcclxuICBBVVRPQ09OTkVDVCA9ICdhdXRvY29ubmVjdCcsXHJcbiAgTE9DS1NFVFRJTkdTID0gJ2xvY2tzZXR0aW5ncydcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkQ29uZmlnIHtcclxuICBhZ2VudDoge1xyXG4gICAgW2FnZW50Q29uZmlnS2V5cy5BVVRPQ09OTkVDVF0/OiBib29sZWFuO1xyXG4gICAgW2FnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1NdPzogTG9ja1NldHRpbmdzXHJcbiAgfVxyXG59XHJcbmV4cG9ydCB0eXBlIEFnZW50Q29ubmVjdGlvbkNvbmZpZyA9IEV4dGVuZGVkQ29uZmlnWydhZ2VudCddXHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWdlbnRTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBFTkFJT19QUk9UT0NPTCA9ICd5dXV2aXM6Ly8nO1xyXG5cclxuICBhZ2VudEF2YWlsYWJpbGl0eSA9IHtcclxuICAgIENPTk5FQ1RFRDogJ2VvLmFnZW50LmF2YWlsYWJpbGl0eS5jb25uZWN0ZWQnLFxyXG4gICAgQVZBSUxBQkxFOiAnZW8uYWdlbnQuYXZhaWxhYmlsaXR5LmF2YWlsYWJsZScsXHJcbiAgICBVTkFWQUlMQUJMRTogJ2VvLmFnZW50LmF2YWlsYWJpbGl0eS51bmF2YWlsYWJsZSdcclxuICB9O1xyXG5cclxuICBwcml2YXRlIF9pc0Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNDb25uZWN0ZWRTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcclxuICBwdWJsaWMgaXNDb25uZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc0Nvbm5lY3RlZFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICBwcml2YXRlIGFnZW50Q29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBZ2VudENvbm5lY3Rpb25Db25maWc+KG51bGwpO1xyXG4gIHB1YmxpYyBhZ2VudENvbmZpZyQ6IE9ic2VydmFibGU8QWdlbnRDb25uZWN0aW9uQ29uZmlnPiA9IHRoaXMuYWdlbnRDb25maWcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENhY2hlU2VydmljZTogQXBwQ2FjaGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmdldEFnZW50Q29ubmVjdGlvblN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBZ2VudENvbm5lY3Rpb25TdGF0dXMoKSB7XHJcbiAgICBmb3JrSm9pbihbdGhpcy5hcHBDYWNoZVNlcnZpY2UuZ2V0SXRlbSgnZW8uYWdlbnQuY29ubmVjdGVkJyksIHRoaXMuZ2V0QWdlbnRDb25maWcoKV0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoW3N0b3JhZ2UsIGNvbmZpZ10pID0+IHRoaXMuaXNDb25uZWN0ZWQgPSAoY29uZmlnICYmIGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShhZ2VudENvbmZpZ0tleXMuQVVUT0NPTk5FQ1QpID8gY29uZmlnLmF1dG9jb25uZWN0IDogc3RvcmFnZSAhPT0gbnVsbCA/IHN0b3JhZ2UgOiBudWxsKSlcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGdldEFnZW50Q29uZmlnKCk6IE9ic2VydmFibGU8QWdlbnRDb25uZWN0aW9uQ29uZmlnPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBZ2VudENvbm5lY3Rpb25Db25maWc+KCdhc3NldHMvX2RlZmF1bHQvY29uZmlnL2V4dGVuZC5qc29uJykucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSksXHJcbiAgICAgIHRhcCgoY29uZmlnOiBFeHRlbmRlZENvbmZpZykgPT4gdGhpcy5hZ2VudENvbmZpZy5uZXh0KHsuLi5jb25maWc/LmFnZW50fSkpLFxyXG4gICAgICBtYXAoKGNvbmZpZzogRXh0ZW5kZWRDb25maWcpID0+IGNvbmZpZz8uYWdlbnQpKVxyXG4gIH1cclxuXHJcbiAgc2V0IGlzQ29ubmVjdGVkKGlzQ29ubmVjdGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc0Nvbm5lY3RlZCA9IGlzQ29ubmVjdGVkO1xyXG4gICAgdGhpcy5pc0Nvbm5lY3RlZFNvdXJjZS5uZXh0KGlzQ29ubmVjdGVkKTtcclxuICAgIHRoaXMuYXBwQ2FjaGVTZXJ2aWNlLnNldEl0ZW0oJ2VvLmFnZW50LmNvbm5lY3RlZCcsIGlzQ29ubmVjdGVkKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0Nvbm5lY3RlZDtcclxuICB9XHJcblxyXG4gIHNldEFnZW50U3RhdHVzKGNvbm5lY3RhZ2VudCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHR5cGVvZiBjb25uZWN0YWdlbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBjb25uZWN0YWdlbnQ7XHJcbiAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGEgbG9jYXRpb24gZW50cnkgdG8gdGhlIGFnZW50IHNlcnZpY2VzIGxvY2F0aW9uIGhpc3RvcnkuXHJcbiAgICogQHBhcmFtIGNvbnRleHRGb2xkZXIgVGhlIGxvY2F0aW9ucyBjb250ZXh0IGZvbGRlclxyXG4gICAqIEBwYXJhbSB0cmVlTm9kZSBOb2RlIGZyb20gdGhlIGNvbnRleHQgZm9sZGVycyBzdHJ1Y3R1cmUgdHJlZVxyXG4gICAqL1xyXG4gIHVwZGF0ZVVzZXJMb2NhdGlvbihjb250ZXh0Rm9sZGVyOiBEbXNPYmplY3QsIHRyZWVOb2RlPzogVHJlZU5vZGUpIHtcclxuXHJcbiAgICBpZiAodHJlZU5vZGUgJiYgdHJlZU5vZGUuZGF0YSAmJiB0cmVlTm9kZS5kYXRhLnR5cGUpIHtcclxuXHJcbiAgICAgIC8vIGlmIGEgZ2l2ZW4gdHJlZU5vZGUgY29udGFpbnMgYSB0YXJnZXQgdHlwZSwgd2UnbGwgb25seSBhZGQgYSB1c2VyIGxvY2F0aW9uXHJcbiAgICAgIC8vIHdoZW4gdGhlIHR5cGUgaXMgYWJsZSB0byBhY2NlcHQgY29udGVudCAob3RoZXJ3aXNlIHVzZWxlc3MgZm9yIG9mZmljZSBBZGRJbnMpXHJcbiAgICAgIGNvbnN0IHRhcmdldFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSh0cmVlTm9kZS5kYXRhLnR5cGUpO1xyXG4gICAgICBpZiAodGFyZ2V0VHlwZS5tYXhGaWxlcyA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB0aXRsZSA9IGNvbnRleHRGb2xkZXIudGl0bGU7XHJcbiAgICBpZiAodHJlZU5vZGUpIHtcclxuICAgICAgdGl0bGUgKz0gJyA+ICcgKyB0cmVlTm9kZS5wYXRoLmpvaW4oJyA+ICcpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpZCA9IGNvbnRleHRGb2xkZXIuaWQ7XHJcbiAgICBpZiAodHJlZU5vZGUpIHtcclxuICAgICAgaWQgKz0gJ18nICsgdHJlZU5vZGUuZGF0YS5rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5wb3N0KCcvbG9jYXRpb25zJywge1xyXG4gICAgICBpZDogaWQsXHJcbiAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgdHlwZTogY29udGV4dEZvbGRlci50eXBlLm5hbWUsXHJcbiAgICAgIGNoaWxkVHlwZTogKHRyZWVOb2RlICYmIHRyZWVOb2RlLmRhdGEpID8gdHJlZU5vZGUuZGF0YS50eXBlIDogdW5kZWZpbmVkLFxyXG4gICAgICBkYXRhOiAodHJlZU5vZGUgJiYgdHJlZU5vZGUuZGF0YSkgPyB0cmVlTm9kZS5kYXRhLmRhdGEgOiB1bmRlZmluZWRcclxuICAgIH0sIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0QWdlbnRCYXNlKCkpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYGFkZGVkIGxvY2F0aW9uICcke3RpdGxlfScgdG8gYWdlbnQgc2VydmljZWApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgZG9jdW1lbnQgdmlhIGFnZW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRvY3VtZW50IEEgZG9jdW1lbnQgdG8gb3Blbi5cclxuICAgKiBAcGFyYW0gbG9jayBCb29sZWFuLCBpZiB0aGUgZG1zIGl0ZW0gc2hvdWxkIGJlIGxvY2tlZC5cclxuICAgKi9cclxuICBvcGVuRG9jdW1lbnQoZG9jdW1lbnQsIGxvY2spIHtcclxuICAgIGNvbnN0IGlkID0gZG9jdW1lbnQuaWQ7XHJcbiAgICBpZiAobG9jaykge1xyXG4gICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnB1dCgnL2Rtcy9sb2NrLycgKyBpZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIGRvY3VtZW50LmxvY2sgPSB7XHJcbiAgICAgICAgYnk6IHtcclxuICAgICAgICAgIG1lOiB0cnVlLFxyXG4gICAgICAgICAgbmFtZTogdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLm5hbWUsXHJcbiAgICAgICAgICBvdGhlcjogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ29wZW5Eb2N1bWVudCcsIGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERvd25sb2FkIGNvbnRlbnQgdmlhIGFnZW50LlxyXG4gICAqIE9uIGNvbXBsZXRpb24sIHRoZSBhZ2VudCB3aWxsIHZpc3VhbGl6ZSB0aGUgZG93bmxvYWRlZCBpdGVtcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkb2N1bWVudHMgQSBkb2N1bWVudCB0byBvcGVuLlxyXG4gICAqL1xyXG4gIGRvd25sb2FkQ29udGVudChkb2N1bWVudHMpIHtcclxuICAgIGxldCBkb2NzID0gZG9jdW1lbnRzLm1hcChkb2MgPT4ge1xyXG4gICAgICByZXR1cm4ge2lkOiBkb2MuaWQsIHRpdGxlOiBkb2MudGl0bGUsIHR5cGU6IGRvYy50eXBlLm5hbWUgfHwgJycsIHZlcnNpb246IGRvYy52ZXJzaW9ufTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZW5kTWVzc2FnZSgnZG93bmxvYWRDb250ZW50JywgZG9jcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb3B5IGl0ZW1zIHRvIGNsaXBib2FyZC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkb2N1bWVudHMgTGlzdCBvZiBkb2N1bWVudHMgd2l0aCBpZCwgdGl0bGUsIHR5cGUgYW5kIHJlbmRpdGlvbi5cclxuICAgKi9cclxuICBjb3B5VG9DbGlwYm9hcmQoZG9jdW1lbnRzKSB7XHJcbiAgICBpZiAoIWRvY3VtZW50cyB8fCBkb2N1bWVudHMubGVuZ3RoIDwgMSkge1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignQWdlbnQgY29weVRvQ2xpcGJvYXJkIGVycm9yOiBkb2N1bWVudHMgZG9lcyBub3QgY29udGFpbiBlbGVtZW50cycpO1xyXG4gICAgICByZXR1cm4gVXRpbHMudGhyb3cobnVsbCwgJ2RvY3VtZW50cyBkb2VzIG5vdCBjb250YWluIGVsZW1lbnRzJykuY2FsbCh0aGlzLCB7fSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbmRNZXNzYWdlKCdjb3B5VG9DbGlwYm9hcmQnLCBkb2N1bWVudHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBpdGVtcyBhcyBlbWFpbC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBDdXN0b21FbWFpbCBjb250YWluIGF0dGFjaGVtbnRzIGFuZCBtZXNzYWdlLiBNZXNzYWdlIG15IGNvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIG1haWwuXHJcbiAgICovXHJcbiAgc2VuZEFzTWFpbCh7YXR0YWNobWVudHMsIG1lc3NhZ2V9OiBDdXN0b21FbWFpbCkge1xyXG4gICAgaWYgKCFhdHRhY2htZW50cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdBZ2VudCBzZW5kQXNNYWlsIGVycm9yOiBkb2N1bWVudHMgYXJyYXkgZG9lcyBub3QgY29udGFpbiBlbGVtZW50cy4gQXR0YWNobWVudHMgY291bGQgbm90IGJlIGZvdW5kLicpO1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZG9jdW1lbnQub3Blbi5lcnJvci50aXRsZScpLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5kb2N1bWVudC5vcGVuLmVycm9yLm1lc3NhZ2UnKSk7XHJcbiAgICAgIHJldHVybiBVdGlscy50aHJvdyhudWxsLCAnZG9jdW1lbnRzIGFycmF5IGRvZXMgbm90IGNvbnRhaW4gZWxlbWVudHMnKS5jYWxsKHRoaXMsIHt9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ3NlbmRBc01haWwnLCB7YXR0YWNobWVudHMsIG1lc3NhZ2V9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbmRFeHRlcm5hbEFjdGlvbihleGVjdXRhYmxlLCBhcmdzKSB7XHJcbiAgICB0aGlzLnNlbmRNZXNzYWdlKCdleHRlcm5hbCcsIHtleGVjdXRhYmxlLCBhcmdzfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbmRNZXNzYWdlKGFjdGlvbiwgZGF0YSkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLm5hbWUsXHJcbiAgICAgIGhvc3Q6IHRoaXMuZ2V0SG9zdCgpXHJcbiAgICB9O1xyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLkVOQUlPX1BST1RPQ09MICsgYWN0aW9uICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SG9zdCgpIHtcclxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDcEwsT0FBTyxFQUFDLGVBQWUsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUtwRCxNQUFNLENBQU4sSUFBWSxlQUdYO0FBSEQsV0FBWSxlQUFlO0lBQ3pCLDhDQUEyQixDQUFBO0lBQzNCLGdEQUE2QixDQUFBO0FBQy9CLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQVdELE1BQU0sT0FBTyxZQUFZO0lBZ0J2QixZQUM4QixVQUFzQixFQUMxQyxNQUFjLEVBQ2QsSUFBZ0IsRUFDaEIsYUFBNEIsRUFDNUIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDeEIsU0FBMkIsRUFDM0IsYUFBbUMsRUFDbkMsZUFBZ0M7UUFSWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQzFDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFn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SUFBSSxFQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJO1FBQzlCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJO1lBQzVDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1NBQ3JCLENBQUM7UUFDRixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTyxPQUFPO1FBQ2IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDOzs7WUFwTEYsVUFBVTs7O1lBcEI4QixVQUFVLHVCQXNDOUMsTUFBTSxTQUFDLFdBQVc7WUF0Q3NELE1BQU07WUFGM0UsVUFBVTtZQUV5RixhQUFhO1lBQS9GLGNBQWM7WUFBcUcsV0FBVztZQUE3QixnQkFBZ0I7WUFBckQsb0JBQW9CO1lBQWpHLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FwcENhY2hlU2VydmljZSwgQmFja2VuZFNlcnZpY2UsIENvcmVDb25maWcsIENPUkVfQ09ORklHLCBEbXNPYmplY3QsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIFN5c3RlbVNlcnZpY2UsIFRyYW5zbGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL3RyZWUvdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge0xvY2tTZXR0aW5nc30gZnJvbSAnLi8uLi8uLi9lby1jbGllbnQvc2V0dGluZ3MvYWdlbnQtbG9jay1zZXR0aW5ncy5lbnVtJztcclxuaW1wb3J0IHtDdXN0b21FbWFpbH0gZnJvbSAnLi9hZ2VudC5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGVudW0gYWdlbnRDb25maWdLZXlzIHtcclxuICBBVVRPQ09OTkVDVCA9ICdhdXRvY29ubmVjdCcsXHJcbiAgTE9DS1NFVFRJTkdTID0gJ2xvY2tzZXR0aW5ncydcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkQ29uZmlnIHtcclxuICBhZ2VudDoge1xyXG4gICAgW2FnZW50Q29uZmlnS2V5cy5BVVRPQ09OTkVDVF0/OiBib29sZWFuO1xyXG4gICAgW2FnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1NdPzogTG9ja1NldHRpbmdzXHJcbiAgfVxyXG59XHJcbmV4cG9ydCB0eXBlIEFnZW50Q29ubmVjdGlvbkNvbmZpZyA9IEV4dGVuZGVkQ29uZmlnWydhZ2VudCddXHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWdlbnRTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBFTkFJT19QUk9UT0NPTCA9ICd5dXV2aXM6Ly8nO1xyXG5cclxuICBhZ2VudEF2YWlsYWJpbGl0eSA9IHtcclxuICAgIENPTk5FQ1RFRDogJ2VvLmFnZW50LmF2YWlsYWJpbGl0eS5jb25uZWN0ZWQnLFxyXG4gICAgQVZBSUxBQkxFOiAnZW8uYWdlbnQuYXZhaWxhYmlsaXR5LmF2YWlsYWJsZScsXHJcbiAgICBVTkFWQUlMQUJMRTogJ2VvLmFnZW50LmF2YWlsYWJpbGl0eS51bmF2YWlsYWJsZSdcclxuICB9O1xyXG5cclxuICBwcml2YXRlIF9pc0Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNDb25uZWN0ZWRTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcclxuICBwdWJsaWMgaXNDb25uZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc0Nvbm5lY3RlZFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICBwcml2YXRlIGFnZW50Q29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBZ2VudENvbm5lY3Rpb25Db25maWc+KG51bGwpO1xyXG4gIHB1YmxpYyBhZ2VudENvbmZpZyQ6IE9ic2VydmFibGU8QWdlbnRDb25uZWN0aW9uQ29uZmlnPiA9IHRoaXMuYWdlbnRDb25maWcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYWNrZW5kU2VydmljZTogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ2FjaGVTZXJ2aWNlOiBBcHBDYWNoZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuZ2V0QWdlbnRDb25uZWN0aW9uU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEFnZW50Q29ubmVjdGlvblN0YXR1cygpIHtcclxuICAgIGZvcmtKb2luKFt0aGlzLmFwcENhY2hlU2VydmljZS5nZXRJdGVtKCdlby5hZ2VudC5jb25uZWN0ZWQnKSwgdGhpcy5nZXRBZ2VudENvbmZpZygpXSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKChbc3RvcmFnZSwgY29uZmlnXSkgPT4gdGhpcy5pc0Nvbm5lY3RlZCA9IChjb25maWcgJiYgY29uZmlnLmhhc093blByb3BlcnR5KGFnZW50Q29uZmlnS2V5cy5BVVRPQ09OTkVDVCkgPyBjb25maWcuYXV0b2Nvbm5lY3QgOiBzdG9yYWdlICE9PSBudWxsID8gc3RvcmFnZSA6IG51bGwpKVxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWdlbnRDb25maWcoKTogT2JzZXJ2YWJsZTxBZ2VudENvbm5lY3Rpb25Db25maWc+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFnZW50Q29ubmVjdGlvbkNvbmZpZz4oJ2Fzc2V0cy9fZGVmYXVsdC9jb25maWcvZXh0ZW5kLmpzb24nLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzfSkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSksXHJcbiAgICAgIHRhcCgoY29uZmlnOiBFeHRlbmRlZENvbmZpZykgPT4gdGhpcy5hZ2VudENvbmZpZy5uZXh0KHsuLi5jb25maWc/LmFnZW50fSkpLFxyXG4gICAgICBtYXAoKGNvbmZpZzogRXh0ZW5kZWRDb25maWcpID0+IGNvbmZpZz8uYWdlbnQpKVxyXG4gIH1cclxuXHJcbiAgc2V0IGlzQ29ubmVjdGVkKGlzQ29ubmVjdGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc0Nvbm5lY3RlZCA9IGlzQ29ubmVjdGVkO1xyXG4gICAgdGhpcy5pc0Nvbm5lY3RlZFNvdXJjZS5uZXh0KGlzQ29ubmVjdGVkKTtcclxuICAgIHRoaXMuYXBwQ2FjaGVTZXJ2aWNlLnNldEl0ZW0oJ2VvLmFnZW50LmNvbm5lY3RlZCcsIGlzQ29ubmVjdGVkKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0Nvbm5lY3RlZDtcclxuICB9XHJcblxyXG4gIHNldEFnZW50U3RhdHVzKGNvbm5lY3RhZ2VudCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHR5cGVvZiBjb25uZWN0YWdlbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBjb25uZWN0YWdlbnQ7XHJcbiAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGEgbG9jYXRpb24gZW50cnkgdG8gdGhlIGFnZW50IHNlcnZpY2VzIGxvY2F0aW9uIGhpc3RvcnkuXHJcbiAgICogQHBhcmFtIGNvbnRleHRGb2xkZXIgVGhlIGxvY2F0aW9ucyBjb250ZXh0IGZvbGRlclxyXG4gICAqIEBwYXJhbSB0cmVlTm9kZSBOb2RlIGZyb20gdGhlIGNvbnRleHQgZm9sZGVycyBzdHJ1Y3R1cmUgdHJlZVxyXG4gICAqL1xyXG4gIHVwZGF0ZVVzZXJMb2NhdGlvbihjb250ZXh0Rm9sZGVyOiBEbXNPYmplY3QsIHRyZWVOb2RlPzogVHJlZU5vZGUpIHtcclxuXHJcbiAgICBpZiAodHJlZU5vZGUgJiYgdHJlZU5vZGUuZGF0YSAmJiB0cmVlTm9kZS5kYXRhLnR5cGUpIHtcclxuXHJcbiAgICAgIC8vIGlmIGEgZ2l2ZW4gdHJlZU5vZGUgY29udGFpbnMgYSB0YXJnZXQgdHlwZSwgd2UnbGwgb25seSBhZGQgYSB1c2VyIGxvY2F0aW9uXHJcbiAgICAgIC8vIHdoZW4gdGhlIHR5cGUgaXMgYWJsZSB0byBhY2NlcHQgY29udGVudCAob3RoZXJ3aXNlIHVzZWxlc3MgZm9yIG9mZmljZSBBZGRJbnMpXHJcbiAgICAgIGNvbnN0IHRhcmdldFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSh0cmVlTm9kZS5kYXRhLnR5cGUpO1xyXG4gICAgICBpZiAodGFyZ2V0VHlwZS5tYXhGaWxlcyA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB0aXRsZSA9IGNvbnRleHRGb2xkZXIudGl0bGU7XHJcbiAgICBpZiAodHJlZU5vZGUpIHtcclxuICAgICAgdGl0bGUgKz0gJyA+ICcgKyB0cmVlTm9kZS5wYXRoLmpvaW4oJyA+ICcpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpZCA9IGNvbnRleHRGb2xkZXIuaWQ7XHJcbiAgICBpZiAodHJlZU5vZGUpIHtcclxuICAgICAgaWQgKz0gJ18nICsgdHJlZU5vZGUuZGF0YS5rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5wb3N0KCcvbG9jYXRpb25zJywge1xyXG4gICAgICBpZDogaWQsXHJcbiAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgdHlwZTogY29udGV4dEZvbGRlci50eXBlLm5hbWUsXHJcbiAgICAgIGNoaWxkVHlwZTogKHRyZWVOb2RlICYmIHRyZWVOb2RlLmRhdGEpID8gdHJlZU5vZGUuZGF0YS50eXBlIDogdW5kZWZpbmVkLFxyXG4gICAgICBkYXRhOiAodHJlZU5vZGUgJiYgdHJlZU5vZGUuZGF0YSkgPyB0cmVlTm9kZS5kYXRhLmRhdGEgOiB1bmRlZmluZWRcclxuICAgIH0sIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0QWdlbnRCYXNlKCkpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYGFkZGVkIGxvY2F0aW9uICcke3RpdGxlfScgdG8gYWdlbnQgc2VydmljZWApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgZG9jdW1lbnQgdmlhIGFnZW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRvY3VtZW50IEEgZG9jdW1lbnQgdG8gb3Blbi5cclxuICAgKiBAcGFyYW0gbG9jayBCb29sZWFuLCBpZiB0aGUgZG1zIGl0ZW0gc2hvdWxkIGJlIGxvY2tlZC5cclxuICAgKi9cclxuICBvcGVuRG9jdW1lbnQoZG9jdW1lbnQsIGxvY2spIHtcclxuICAgIGNvbnN0IGlkID0gZG9jdW1lbnQuaWQ7XHJcbiAgICBpZiAobG9jaykge1xyXG4gICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnB1dCgnL2Rtcy9sb2NrLycgKyBpZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIGRvY3VtZW50LmxvY2sgPSB7XHJcbiAgICAgICAgYnk6IHtcclxuICAgICAgICAgIG1lOiB0cnVlLFxyXG4gICAgICAgICAgbmFtZTogdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLm5hbWUsXHJcbiAgICAgICAgICBvdGhlcjogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ29wZW5Eb2N1bWVudCcsIGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERvd25sb2FkIGNvbnRlbnQgdmlhIGFnZW50LlxyXG4gICAqIE9uIGNvbXBsZXRpb24sIHRoZSBhZ2VudCB3aWxsIHZpc3VhbGl6ZSB0aGUgZG93bmxvYWRlZCBpdGVtcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkb2N1bWVudHMgQSBkb2N1bWVudCB0byBvcGVuLlxyXG4gICAqL1xyXG4gIGRvd25sb2FkQ29udGVudChkb2N1bWVudHMpIHtcclxuICAgIGxldCBkb2NzID0gZG9jdW1lbnRzLm1hcChkb2MgPT4ge1xyXG4gICAgICByZXR1cm4ge2lkOiBkb2MuaWQsIHRpdGxlOiBkb2MudGl0bGUsIHR5cGU6IGRvYy50eXBlLm5hbWUgfHwgJycsIHZlcnNpb246IGRvYy52ZXJzaW9ufTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZW5kTWVzc2FnZSgnZG93bmxvYWRDb250ZW50JywgZG9jcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb3B5IGl0ZW1zIHRvIGNsaXBib2FyZC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkb2N1bWVudHMgTGlzdCBvZiBkb2N1bWVudHMgd2l0aCBpZCwgdGl0bGUsIHR5cGUgYW5kIHJlbmRpdGlvbi5cclxuICAgKi9cclxuICBjb3B5VG9DbGlwYm9hcmQoZG9jdW1lbnRzKSB7XHJcbiAgICBpZiAoIWRvY3VtZW50cyB8fCBkb2N1bWVudHMubGVuZ3RoIDwgMSkge1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignQWdlbnQgY29weVRvQ2xpcGJvYXJkIGVycm9yOiBkb2N1bWVudHMgZG9lcyBub3QgY29udGFpbiBlbGVtZW50cycpO1xyXG4gICAgICByZXR1cm4gVXRpbHMudGhyb3cobnVsbCwgJ2RvY3VtZW50cyBkb2VzIG5vdCBjb250YWluIGVsZW1lbnRzJykuY2FsbCh0aGlzLCB7fSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbmRNZXNzYWdlKCdjb3B5VG9DbGlwYm9hcmQnLCBkb2N1bWVudHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBpdGVtcyBhcyBlbWFpbC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBDdXN0b21FbWFpbCBjb250YWluIGF0dGFjaGVtbnRzIGFuZCBtZXNzYWdlLiBNZXNzYWdlIG15IGNvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIG1haWwuXHJcbiAgICovXHJcbiAgc2VuZEFzTWFpbCh7YXR0YWNobWVudHMsIG1lc3NhZ2V9OiBDdXN0b21FbWFpbCkge1xyXG4gICAgaWYgKCFhdHRhY2htZW50cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdBZ2VudCBzZW5kQXNNYWlsIGVycm9yOiBkb2N1bWVudHMgYXJyYXkgZG9lcyBub3QgY29udGFpbiBlbGVtZW50cy4gQXR0YWNobWVudHMgY291bGQgbm90IGJlIGZvdW5kLicpO1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZG9jdW1lbnQub3Blbi5lcnJvci50aXRsZScpLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5kb2N1bWVudC5vcGVuLmVycm9yLm1lc3NhZ2UnKSk7XHJcbiAgICAgIHJldHVybiBVdGlscy50aHJvdyhudWxsLCAnZG9jdW1lbnRzIGFycmF5IGRvZXMgbm90IGNvbnRhaW4gZWxlbWVudHMnKS5jYWxsKHRoaXMsIHt9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ3NlbmRBc01haWwnLCB7YXR0YWNobWVudHMsIG1lc3NhZ2V9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbmRFeHRlcm5hbEFjdGlvbihleGVjdXRhYmxlLCBhcmdzKSB7XHJcbiAgICB0aGlzLnNlbmRNZXNzYWdlKCdleHRlcm5hbCcsIHtleGVjdXRhYmxlLCBhcmdzfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbmRNZXNzYWdlKGFjdGlvbiwgZGF0YSkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLm5hbWUsXHJcbiAgICAgIGhvc3Q6IHRoaXMuZ2V0SG9zdCgpXHJcbiAgICB9O1xyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLkVOQUlPX1BST1RPQ09MICsgYWN0aW9uICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SG9zdCgpIHtcclxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -10,10 +10,12 @@ export class CoreConfig {
|
|
|
10
10
|
// paths to the translations
|
|
11
11
|
this.translations = ['assets/_default/i18n/'];
|
|
12
12
|
this.environment = { production: true };
|
|
13
|
+
// sets the HTTP 'withCredentials' flag for every backend call
|
|
14
|
+
this.withCredentials = false;
|
|
13
15
|
Object.assign(this, __config);
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
CoreConfig.ctorParameters = () => [
|
|
17
19
|
{ type: CoreConfig, decorators: [{ type: Inject, args: [CUSTOM_CONFIG,] }] }
|
|
18
20
|
];
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL2NvbmZpZy9jb3JlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBU3JCLFlBQW1DLFFBQW9CO1FBUnZELDhDQUE4QztRQUM5QyxTQUFJLEdBQTRCLENBQUMsa0NBQWtDLEVBQUUsb0NBQW9DLENBQUMsQ0FBQztRQUMzRyw0QkFBNEI7UUFDNUIsaUJBQVksR0FBYyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFcEQsZ0JBQVcsR0FBMkIsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDekQsOERBQThEO1FBQzlELG9CQUFlLEdBQWEsS0FBSyxDQUFDO1FBRWhDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OztZQUY0QyxVQUFVLHVCQUExQyxNQUFNLFNBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RW5haW9Db25maWd9IGZyb20gJy4uL3NlcnZpY2UvY29uZmlnL2NvbmZpZy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q1VTVE9NX0NPTkZJR30gZnJvbSAnLi9jb3JlLWluaXQudG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ29yZUNvbmZpZyB7XHJcbiAgLy8gbWFpbiBjb25maWd1cmF0aW9uIG9yIHBhdGhzIHRvIGNvbmZpZyBmaWxlc1xyXG4gIG1haW4/OiBFbmFpb0NvbmZpZyB8IHN0cmluZ1tdID0gWydhc3NldHMvX2RlZmF1bHQvY29uZmlnL21haW4uanNvbicsICdhc3NldHMvX2RlZmF1bHQvY29uZmlnL2V4dGVuZC5qc29uJ107XHJcbiAgLy8gcGF0aHMgdG8gdGhlIHRyYW5zbGF0aW9uc1xyXG4gIHRyYW5zbGF0aW9ucz86IHN0cmluZ1tdID0gWydhc3NldHMvX2RlZmF1bHQvaTE4bi8nXTtcclxuXHJcbiAgZW52aXJvbm1lbnQ/OiB7cHJvZHVjdGlvbjogYm9vbGVhbn0gPSB7cHJvZHVjdGlvbjogdHJ1ZX07XHJcbiAgLy8gc2V0cyB0aGUgSFRUUCAnd2l0aENyZWRlbnRpYWxzJyBmbGFnIGZvciBldmVyeSBiYWNrZW5kIGNhbGxcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChDVVNUT01fQ09ORklHKSBfX2NvbmZpZzogQ29yZUNvbmZpZykge1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBfX2NvbmZpZyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -36,7 +36,9 @@ export class CoreInit {
|
|
|
36
36
|
* getting a string means that we got an URL to load the config from
|
|
37
37
|
*/
|
|
38
38
|
let config = !Array.isArray(this.coreConfig.main) ? observableOf([this.coreConfig.main]) :
|
|
39
|
-
forkJoin(this.coreConfig.main.map(c => this.http.get(c
|
|
39
|
+
forkJoin(this.coreConfig.main.map(c => this.http.get(c, {
|
|
40
|
+
withCredentials: this.coreConfig.withCredentials
|
|
41
|
+
}).pipe(catchError(e => {
|
|
40
42
|
this.logger.error('failed to catch config file', e);
|
|
41
43
|
return observableOf({});
|
|
42
44
|
}))));
|
|
@@ -67,4 +69,4 @@ CoreInit.ctorParameters = () => [
|
|
|
67
69
|
{ type: Config },
|
|
68
70
|
{ type: AuthService }
|
|
69
71
|
];
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL2NvbmZpZy9jb3JlLWluaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsRUFBRSxJQUFJLFlBQVksRUFBRSxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRS9DOzs7Ozs7O0dBT0c7QUFHSCxNQUFNLE9BQU8sUUFBUTtJQUVuQjs7T0FFRztJQUNILFlBQXlDLFVBQXNCLEVBQVUsTUFBYyxFQUM3RSxJQUFnQixFQUFVLGFBQXFCLEVBQVUsV0FBd0I7UUFEbEQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDN0UsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDM0YsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFVBQVU7UUFFZixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBRXJDOztlQUVHO1lBQ0gsSUFBSSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4RixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUN0RCxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlO2lCQUNqRCxDQUFDLENBQUMsSUFBSSxDQUNMLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDYixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDcEQsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUNILENBQUMsQ0FBQyxDQUFDO1lBRU4sTUFBTSxDQUFDLElBQUksQ0FDVCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLG1DQUFtQztnQkFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEksT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ0wsRUFDRCxRQUFRLENBQUMsQ0FBQyxHQUFnQixFQUFFLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO3FCQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBbERGLFVBQVU7OztZQVpILFVBQVUsdUJBa0JILE1BQU0sU0FBQyxXQUFXO1lBbkJ6QixNQUFNO1lBTk4sVUFBVTtZQUVWLE1BQU07WUFDTixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtFbmFpb0NvbmZpZ30gZnJvbSAnLi4vc2VydmljZS9jb25maWcvY29uZmlnLmludGVyZmFjZSc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9zZXJ2aWNlL2NvbmZpZy9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7QXV0aFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvYXV0aC9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQge29mIGFzIG9ic2VydmFibGVPZiwgZm9ya0pvaW59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21lcmdlTWFwLCBtYXAsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL3NlcnZpY2UvbG9nZ2VyL2xvZ2dlcic7XHJcbmltcG9ydCB7Q29yZUNvbmZpZ30gZnJvbSAnLi9jb3JlLWNvbmZpZyc7XHJcbmltcG9ydCB7Q09SRV9DT05GSUd9IGZyb20gJy4vY29yZS1pbml0LnRva2Vucyc7XHJcblxyXG4vKipcclxuICogTWFpbiBpbml0aWFsaXphdGlvbiBzZXJ2aWNlIG9mIHRoZSBlb0ZyYW1ld29ya0NvcmUgbW9kdWxlLiBUaGUgYGxvYWQoKWAgZnVuY3Rpb24gd2lsbCBjb250YWluXHJcbiAqIGFsbCBzdGVwcyB0aGF0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGJlZm9yZSB0aGUgYXBwbGljYXRpb24gc3RhcnRzLiBUaGVyZWZvcmUgaXQgd2lsbCBiZSB1c2VkXHJcbiAqIGFzIGBBUFBfSU5JVElBTElaRVJgIGZyb20gdGhlIHByb3ZpZGVycyBzZWN0aW9uIG9mIHRoZSBhcHAgbW9kdWxlLlxyXG4gKlxyXG4gKiBMYXRlciBvbiB0aGlzIHNlcnZpY2UgY2FuIGJlIHVzZWQgYnkgb3RoZXIgY29tcG9uZW50cyBvciBzZXJ2aWNlcyB0byBmZXRjaCB0aGUgcmVzdWx0IG9mIHRoZVxyXG4gKiBpbml0aWFsaXphdGlvbiBwcm9jZXNzIChlLmcuIGluZm9zIG9uIHRoZSBjdXJyZW50IHVzZXIpLlxyXG4gKi9cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvcmVJbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQ09SRV9DT05GSUcpIHByaXZhdGUgY29yZUNvbmZpZzogQ29yZUNvbmZpZywgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWcsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyBjb3JlIG1vZHVsZS4gRXhlY3V0ZWQgaW4gY29udGV4dCBvZiBgQVBQX0lOSVRJQUxJWkVSYC5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgeXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgY29yZSBoYXMgYmVlbiBpbml0aWFsaXplZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbml0aWFsaXplKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogZ2V0dGluZyBhIHN0cmluZyBtZWFucyB0aGF0IHdlIGdvdCBhbiBVUkwgdG8gbG9hZCB0aGUgY29uZmlnIGZyb21cclxuICAgICAgICovXHJcbiAgICAgIGxldCBjb25maWcgPSAhQXJyYXkuaXNBcnJheSh0aGlzLmNvcmVDb25maWcubWFpbikgPyBvYnNlcnZhYmxlT2YoW3RoaXMuY29yZUNvbmZpZy5tYWluXSkgOlxyXG4gICAgICAgIGZvcmtKb2luKHRoaXMuY29yZUNvbmZpZy5tYWluLm1hcChjID0+IHRoaXMuaHR0cC5nZXQoYywge1xyXG4gICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzXHJcbiAgICAgICAgfSkucGlwZShcclxuICAgICAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdmYWlsZWQgdG8gY2F0Y2ggY29uZmlnIGZpbGUnLCBlKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVPZih7fSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkpKTtcclxuXHJcbiAgICAgIGNvbmZpZy5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzKSA9PiByZXMucmVkdWNlKChhY2MsIHgpID0+IHtcclxuICAgICAgICAgIC8vIG1lcmdlIG9iamVjdCB2YWx1ZXMgb24gMm5kIGxldmVsXHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh4KS5mb3JFYWNoKGsgPT4gIWFjY1trXSB8fCBBcnJheS5pc0FycmF5KHhba10pIHx8IHR5cGVvZiB4W2tdICE9PSAnb2JqZWN0JyA/IGFjY1trXSA9IHhba10gOiBPYmplY3QuYXNzaWduKGFjY1trXSwgeFtrXSkpO1xyXG4gICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICB9LCB7fSlcclxuICAgICAgICApLFxyXG4gICAgICAgIG1lcmdlTWFwKChyZXM6IEVuYWlvQ29uZmlnKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2V0KHJlcyk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pbml0VXNlcigpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoZSA9PiBvYnNlcnZhYmxlT2YodHJ1ZSkpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZXJyKTtcclxuICAgICAgICByZWplY3QoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -96,7 +96,8 @@ export class AuthService {
|
|
|
96
96
|
});
|
|
97
97
|
return this.http.post(host + this.config.getLoginBase() + '/login', `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, {
|
|
98
98
|
headers: loginHeader,
|
|
99
|
-
responseType: 'text'
|
|
99
|
+
responseType: 'text',
|
|
100
|
+
withCredentials: this.coreConfig.withCredentials
|
|
100
101
|
}).pipe(switchMap(() => this.initUser(host)));
|
|
101
102
|
}
|
|
102
103
|
/**
|
|
@@ -295,7 +296,7 @@ export class AuthService {
|
|
|
295
296
|
if (gatewayLogout) {
|
|
296
297
|
// by default we are just resetting internal state to 'logged out' and in
|
|
297
298
|
// some cases call gateways logout endpoint to do logout stuff there silently
|
|
298
|
-
this.http.get(`${this.profile.host || ''}${this.config.getLoginBase()}/logout
|
|
299
|
+
this.http.get(`${this.profile.host || ''}${this.config.getLoginBase()}/logout`, { withCredentials: this.coreConfig.withCredentials }).subscribe();
|
|
299
300
|
}
|
|
300
301
|
this.backend.setAuthProfile(this.profile);
|
|
301
302
|
this.eventService.trigger(EnaioEvent.LOGOUT);
|
|
@@ -372,4 +373,4 @@ AuthService.ctorParameters = () => [
|
|
|
372
373
|
{ type: LocalStorage },
|
|
373
374
|
{ type: LocalStorageService }
|
|
374
375
|
];
|
|
375
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFFLE9BQU8sRUFDUCxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFDM0QsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDbEQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFxQixXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVB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SSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDakQsQ0FBQztRQUVGLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ3BCLENBQUM7SUFDSixDQUFDOzs7WUF2WEYsVUFBVTs7O1lBM0JILE1BQU07WUFvQk4sVUFBVSx1QkF5Q2IsTUFBTSxTQUFDLFdBQVc7WUE5RGYsZUFBZTtZQXVCZixrQkFBa0I7WUF4QmxCLFVBQVU7WUFnQlYsVUFBVTtZQWpCVSxNQUFNO1lBc0IxQixnQkFBZ0I7WUFWaEIsbUJBQW1CO1lBSm5CLE1BQU07WUFHTixZQUFZO1lBRFosY0FBYztZQUpkLGNBQWM7WUFEZCxhQUFhO1lBRWIsV0FBVztZQVFYLFlBQVk7WUFJWixtQkFBbUI7WUFObkIsWUFBWTtZQUNaLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIiAgaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbixcclxuICBvZiBhcyBvYnNlcnZhYmxlT2YsIFN1YmplY3QsIHRocm93RXJyb3IsIGludGVydmFsXHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7bWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwLCBjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0FwcENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtFb1VzZXJ9IGZyb20gJy4uLy4uL21vZGVsL2VvLXVzZXIubW9kZWwnO1xyXG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSAnLi4vdXNlci91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XHJcbmltcG9ydCB7QXV0aFByb2ZpbGV9IGZyb20gJy4vYXV0aC1wcm9maWxlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7UHJlcGFyZVNlcnZpY2V9IGZyb20gJy4uL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7TG9jYWxTdG9yYWdlfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuLi9zdG9yYWdlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcbmltcG9ydCB7QnBtU2VydmljZX0gZnJvbSAnLi4vYnBtL2JwbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtHYXRld2F5SW5mb30gZnJvbSAnLi9nYXRld2F5LWluZm8uaW50ZXJmYWNlJztcclxuaW1wb3J0IHtTeXN0ZW1TdGF0dXNTZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0tc3RhdHVzL3N5c3RlbS1zdGF0dXMuc2VydmljZSc7XHJcbmltcG9ydCB7RW52aXJvbm1lbnRFbmFpb30gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQuZW5haW8nO1xyXG5pbXBvcnQge0xvZ2luRGV2aWNlUmVzdWx0LCBTdG9yZWRUb2tlbn0gZnJvbSAnLi9hdXRoLmNsb3VkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7UGxhdGZvcm1Mb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtDb3JlQ29uZmlnfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1jb25maWcnO1xyXG5pbXBvcnQge0NPUkVfQ09ORklHfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1pbml0LnRva2Vucyc7XHJcbmltcG9ydCB7RW52aXJvbm1lbnRTZXJ2aWNlfSBmcm9tICcuLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBgQXV0aFNlcnZpY2VgIGhhbmRsZXMgYXV0aGVudGljYXRpb24gYWdhaW5zdCBhbiB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBiYWNrZW5kLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIFRPS0VOX1NUT1JBR0VfS0VZID0gJ2VvLmF1dGguY2xvdWQuY3JlZGVudGlhbHMnO1xyXG4gIHByaXZhdGUgdXNlclByb2ZpbGVVcmkgPSB0aGlzLnVzZXJTZXJ2aWNlLlVTRVJfRkVUQ0hfVVJJO1xyXG4gIHByaXZhdGUgYXV0aFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByaXZhdGUgbG9nZ2VkSW5DYWNoZUtleSA9ICdlby51c2VyLmxvZ2dlZEluJztcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSB0byBzdWJzY3JpYmUgdG8gZm9yIGdldHRpbmcgdGhlIHN0YXRlIG9mIGJlaW5nIGF1dGhlbnRpY2F0ZWQuIFdpbGwgZW1pdCB0cnVlIHdoZW4gYSB1c2VyIGxvZ2dlZCBpbixcclxuICAgKiBmYWxzZSB3aGVuIHRoZSB1c2VyIGxvZ2dlZCBvdXQgb3IgdGhlIGdhdGV3YXlzIHNlc3Npb24gdGltZWQgb3V0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhdXRoZW50aWNhdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXV0aFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBob3N0czogc3RyaW5nW10gPSBbXTtcclxuICBwcml2YXRlIGdhdGV3YXlJbmZvOiBHYXRld2F5SW5mbztcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9maWxlOiBBdXRoUHJvZmlsZSA9IHtcclxuICAgIGhvc3Q6ICcnLFxyXG4gICAgdXNlcjogbnVsbCxcclxuICAgIGF1dGg6IG51bGwsXHJcbiAgICBhY3RpdmU6IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBDb25maWcsXHJcbiAgICBASW5qZWN0KENPUkVfQ09ORklHKSBwdWJsaWMgY29yZUNvbmZpZzogQ29yZUNvbmZpZyxcclxuICAgIHByaXZhdGUgYXBwQ2FjaGU6IEFwcENhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBicG1TZXJ2aWNlOiBCcG1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IFBsYXRmb3JtTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIGNhcGFiaWxpdGllc1NlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHJpdmF0ZSBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzdGVtU3RhdHVzU2VydmljZTogU3lzdGVtU3RhdHVzU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBzdG9yYWdlOiBMb2NhbFN0b3JhZ2UsXHJcbiAgICBwcm90ZWN0ZWQgbG9jYWw6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgZXZ0ID0+IHtcclxuICAgICAgaWYgKGV2dC5rZXkgPT09IHRoaXMubG9nZ2VkSW5DYWNoZUtleSkge1xyXG4gICAgICAgIGNvbnN0IGhvc3QgPSBKU09OLnBhcnNlKGV2dC5uZXdWYWx1ZSkuaG9zdDtcclxuICAgICAgICB0aGlzLmluaXRVc2VyKGhvc3QpLnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZ2luIGEgdXNlciB1c2luZyBmb3JtIGJhc2VkIGxvZ2luLlxyXG4gICAqIEBwYXJhbSBob3N0IFRoZSB0YXJnZXQgaG9zdCAoY291bGQgYmUgbnVsbCBpZiB5b3UgYXJlIHJ1bm5pbmcgaW4gd2ViIGVudmlyb25tZW50KVxyXG4gICAqIEBwYXJhbSB1c2VybmFtZSBUaGUgdXNlcm5hbWVcclxuICAgKiBAcGFyYW0gcGFzc3dvcmQgVGhlIHBhc3N3b3JkXHJcbiAgICogQHJldHVybnMgUmVzb2x2ZXMgd2l0aCB0aGUgbG9nZ2VkIGluIHVzZXJcclxuICAgKi9cclxuICBwdWJsaWMgbG9naW4oaG9zdDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuXHJcbiAgICBob3N0ID0gaG9zdCB8fCAnJztcclxuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmZC5hcHBlbmQoJ3VzZXJuYW1lJywgZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJuYW1lKSk7XHJcbiAgICBmZC5hcHBlbmQoJ3Bhc3N3b3JkJywgZW5jb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKSk7XHJcblxyXG4gICAgY29uc3QgbG9naW5IZWFkZXIgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGhvc3QgKyB0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKSArICcvbG9naW4nLFxyXG4gICAgICBgdXNlcm5hbWU9JHtlbmNvZGVVUklDb21wb25lbnQodXNlcm5hbWUpfSZwYXNzd29yZD0ke2VuY29kZVVSSUNvbXBvbmVudChwYXNzd29yZCl9YCwge1xyXG4gICAgICBoZWFkZXJzOiBsb2dpbkhlYWRlcixcclxuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcclxuICAgIH0pLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmluaXRVc2VyKGhvc3QpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZyBpbiB0byBhIGNsb3VkIGJhY2tlbmQgdXNpbmcgZGV2aWNlIGZsb3cuXHJcbiAgICogQHBhcmFtIGhvc3QgVGhlIHRhcmdldCBob3N0IChjb3VsZCBiZSBudWxsIGlmIHlvdSBhcmUgcnVubmluZyBpbiB3ZWIgZW52aXJvbm1lbnQpXHJcbiAgICogQHBhcmFtIHRlbmFudCBUaGUgdGVuYW50XHJcbiAgICogQHJldHVybnMgUmVzb2x2ZXMgd2l0aCB0aGUgbG9nZ2VkIGluIHVzZXJcclxuICAgKi9cclxuICBwdWJsaWMgY2xvdWRMb2dpbihob3N0OiBzdHJpbmcsIHRlbmFudDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShvID0+IHtcclxuICAgICAgY29uc3Qgc3RvcFRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgICAgLy9jb25zdCB0YXJnZXRIb3N0ID0gdGhpcy5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCwgdGhpcy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKCcvZW50ZXInKSk7IC8vIGhvc3QgfHwgJyc7XHJcbiAgICAgIGNvbnN0IHRhcmdldEhvc3QgPSBob3N0IHx8ICcnO1xyXG4gICAgICAvLyBzdGFydCBhdXRoIGZsb3dcclxuICAgICAgdGhpcy5odHRwLmdldChgJHt0YXJnZXRIb3N0fS90ZW5hbnQvJHt0ZW5hbnR9L2xvZ2luRGV2aWNlYCkuc3Vic2NyaWJlKChyZXM6IExvZ2luRGV2aWNlUmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICAgIC8vIG9wZW4gbmV3IHdpbmRvdyBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgLi4uXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0VXJpID0gYCR7dGFyZ2V0SG9zdH0vb2F1dGgvJHt0ZW5hbnR9P3VzZXJfY29kZT0ke3Jlcy51c2VyX2NvZGV9YDtcclxuICAgICAgICBjb25zdCB3aW4gPSB3aW5kb3cub3Blbih0YXJnZXRVcmksICdhdXRoJyk7XHJcbiAgICAgICAgaWYgKHdpbikge1xyXG4gICAgICAgICAgLy8gQHNlZTogaHR0cDovL2F0YXNoYmFoYXIuY29tL3Bvc3QvMjAxMC0wNC0yNy1kZXRlY3Qtd2hlbi1hLWphdmFzY3JpcHQtcG9wdXAtd2luZG93LWdldHMtY2xvc2VkXHJcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpblRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh3aW4uY2xvc2VkKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHdpblRpbWVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHN0b3BUcmlnZ2VyJC5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHN0b3BUcmlnZ2VyJC5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gLi4uIGFuZCBzdGFydCBwb2xsaW5nIGZvciBhdXRoZW50aWNhdGlvbiByZXN1bHRzXHJcbiAgICAgICAgdGhpcy5jbG91ZExvZ2luUG9sbEZvclJlc3VsdChgJHt0YXJnZXRIb3N0fS9hdXRoL2luZm8vc3RhdGU/ZGV2aWNlX2NvZGU9JHtyZXMuZGV2aWNlX2NvZGV9YCwgMTAwMCwgc3RvcFRyaWdnZXIkKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoYWNjZXNzVG9rZW46IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChhY2Nlc3NUb2tlbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG91ZExvZ2luU2V0SGVhZGVycyhhY2Nlc3NUb2tlbiwgdGVuYW50KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlVG9rZW46IFN0b3JlZFRva2VuID0ge1xyXG4gICAgICAgICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudCxcclxuICAgICAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IGFjY2Vzc1Rva2VuXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSwgc3RvcmVUb2tlbikuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKChhdXRoUmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXV0aFJlcykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdFVzZXIodGFyZ2V0SG9zdCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ25vdCBhdXRoZW50aWNhdGVkJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICh1c2VyOiBFb1VzZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgd2luLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgby5uZXh0KHVzZXIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgICB3aW4uY2xvc2UoKTtcclxuICAgICAgICAgICAgICBvLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApXHJcbiAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgby5lcnJvcigndW5hYmxlIHRvIGNhbGwgZGV2aWNlIGZsb3cgZW5kcG9pbnQnLCBlcnIpO1xyXG4gICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnRzIHBvbGxpbmcgZm9yIGxvZ2luIHJlc3VsdHMgaW4gY2FzZSBvZiBsb2dnaW5nIGluIHRvIGEgY2xvdWQgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdXJpIFVSSSB0byBwb2xsXHJcbiAgICogQHBhcmFtIHBvbGxpbmdJbnRlcnZhbCBQb2xsaW5nIGludGVydmFsbCBpbiBtaWxsaXNlY29uZHNcclxuICAgKiBAcGFyYW0gc3RvcFRyaWdnZXIgU3ViamVjdCBhY3RpbmcgYXMgc3RvcCB0cmlnZ2VyXHJcbiAgICogQHJldHVybnMgQWNjZXNzIFRva2VuIGlmIGxvZ2dlZCBpbiBzdWNjZXNzZnVsbHkgb3IgTlVMTCBvdGhlcndpc2VcclxuICAgKi9cclxuICBwcml2YXRlIGNsb3VkTG9naW5Qb2xsRm9yUmVzdWx0KHVyaTogc3RyaW5nLCBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlciwgc3RvcFRyaWdnZXI6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XHJcbiAgICAgIGxldCBhY2Nlc3NHcmFudGVkID0gZmFsc2U7XHJcbiAgICAgIGxldCBhY2Nlc3NEZW5pZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBpbnRlcnZhbChwb2xsaW5nSW50ZXJ2YWwpLnBpcGUoXHJcbiAgICAgICAgICB0YWtlVW50aWwoc3RvcFRyaWdnZXIpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaHR0cC5nZXQodXJpKS5waXBlKFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gT0F1dGggc3RhbmRhcmQgd2UgYXJlIHVzaW5nIGlzIHJldHVybmluZyB3aXRoIGEgc3RhdHVzIG9mIDQwMCB3aGlsZSBsb2dnaW5nIGluIChubyBpZGVhIHdoeT8/PylcclxuICAgICAgICAgICAgICAvLyBzbyB3ZSBnb3QgdG8gZmV0Y2ggdGhhdCB0byBub3QgYnJlYWsgdGhlIHBhcmVudCBwaXBlXHJcbiAgICAgICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVPZihlcnIuZXJyb3IpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKSlcclxuICAgICAgICApLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGFjY2Vzc0dyYW50ZWQgPSAhIXJlcy5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgYWNjZXNzRGVuaWVkID0gcmVzLmVycm9yID09PSAnYWNjZXNzX2RlbmllZCc7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChhY2Nlc3NHcmFudGVkIHx8IGFjY2Vzc0RlbmllZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gbG9nZ2VkIGluXHJcbiAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlci5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgby5uZXh0KGFjY2Vzc0dyYW50ZWQgPyByZXMuYWNjZXNzX3Rva2VuIDogbnVsbCk7XHJcbiAgICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMuZXJyb3IgPT09ICdleHBpcmVkX3Rva2VuJykge1xyXG4gICAgICAgICAgICAgICAgLy8gZXhwaXJlZCBzbyBza2lwIHBvbGxpbmdcclxuICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ1Rva2VuIGV4cGlyZWQnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBvLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBvLm5leHQoYWNjZXNzR3JhbnRlZCk7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG91ZExvZ2luU2V0SGVhZGVycyhhY2Nlc3NUb2tlbjogc3RyaW5nLCB0ZW5hbnQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5iYWNrZW5kLnNldEhlYWRlcignQXV0aG9yaXphdGlvbicsICdiZWFyZXIgJyArIGFjY2Vzc1Rva2VuKTtcclxuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ1gtSUQtVEVOQU5ULU5BTUUnLCB0ZW5hbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBjYWxsZWQgd2hpbGUgYXBwIGluaXRcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgaW5pdFVzZXIoaG9zdD86IHN0cmluZykge1xyXG5cclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7aG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldExvZ2luQmFzZSgpfS9hdXRoL2luZm9gLCB7aGVhZGVyc30pXHJcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoaW5mbzogR2F0ZXdheUluZm8pID0+IHtcclxuICAgICAgICB0aGlzLmdhdGV3YXlJbmZvID0gaW5mbztcclxuXHJcbiAgICAgICAgdGhpcy5lbnZTZXJ2aWNlLmNsb3VkRW52aXJvbm1lbnQgPSAodGhpcy5nYXRld2F5SW5mbyAmJiB0aGlzLmdhdGV3YXlJbmZvLm9hdXRoMik7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNDbG91ZEVudmlyb25tZW50KCkpIHtcclxuICAgICAgICAgIC8vIGluIGNhc2Ugb2YgcnVubmluZyBhZ2FpbnN0IGNsb3VkIGJhY2tlbmQsIHdlIHRyeSB0byBmZXRjaFxyXG4gICAgICAgICAgLy8gYWNjZXNzIHRva2VuIGFuZCB0ZW5hbnQgZnJvbSBsb2NhbCBzdG9yYWdlXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSkucGlwZShcclxuICAgICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvdWRMb2dpblNldEhlYWRlcnMocmVzLmFjY2Vzc1Rva2VuLCByZXMudGVuYW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hVc2VyKGluZm8sIGhvc3QpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFVzZXIoaW5mbywgaG9zdClcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGdhdGV3YXlJbmZvXHJcbiAgICogQHBhcmFtIGhvc3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEVvVXNlcj5cclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoVXNlcihnYXRld2F5SW5mbzogYW55LCBob3N0Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChgJHtob3N0IHx8ICcnfSR7dGhpcy5jb25maWcuZ2V0VXJpKCdzZXJ2aWNlQmFzZScpfSR7dGhpcy51c2VyUHJvZmlsZVVyaX1gLCB7aGVhZGVyc30pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByb2ZpbGUgPSB7XHJcbiAgICAgICAgICAgIGhvc3Q6IGhvc3QgfHwgJycsXHJcbiAgICAgICAgICAgIHVzZXI6IHVzZXIudXNlci5uYW1lLFxyXG4gICAgICAgICAgICBhdXRoOiBudWxsLFxyXG4gICAgICAgICAgICBhY3RpdmU6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBpZiAoaG9zdCkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZEhvc3RDb25maWcoaG9zdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sb2dnZWRJbkNhY2hlS2V5LCBKU09OLnN0cmluZ2lmeSh7dXNlcklkOiB1c2VyLnVzZXIuaWQsIGhvc3Q6IGhvc3R9KSk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0QXBwKHVzZXIsIGdhdGV3YXlJbmZvLm50bG0pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmF1dGhTb3VyY2UubmV4dCh0aGlzLmlzTG9nZ2VkSW4oKSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2dzIG91dCB0aGUgY3VycmVudCB1c2VyLlxyXG4gICAqIEBwYXJhbSBnYXRld2F5TG9nb3V0IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byBwZXJmb3JtIGEgZ2F0ZXdheSBsb2dvdXQgYXMgd2VsbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2dvdXQoZ2F0ZXdheUxvZ291dD86IGJvb2xlYW4pIHtcclxuXHJcbiAgICB0aGlzLmF1dGhTb3VyY2UubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLnN5c3RlbVN0YXR1c1NlcnZpY2Uuc3RvcCgpO1xyXG5cclxuICAgIHRoaXMucHJvZmlsZSA9IHtcclxuICAgICAgaG9zdDogJycsXHJcbiAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgIGF1dGg6IG51bGwsXHJcbiAgICAgIGFjdGl2ZTogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNDbG91ZEVudmlyb25tZW50KCkpIHtcclxuICAgICAgLy8gcmVtb3ZlIHN0b3JlZCBhY2Nlc3MgZGF0YVxyXG4gICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRPS0VOX1NUT1JBR0VfS0VZKS5zdWJzY3JpYmUoKTtcclxuICAgICAgaWYgKHRoaXMuY29yZUNvbmZpZy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uICYmIEVudmlyb25tZW50RW5haW8uaXNXZWJFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLmxvY2F0aW9uLmhyZWYgPSB0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKSArICcvbG9nb3V0JztcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChnYXRld2F5TG9nb3V0KSB7XHJcbiAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgYXJlIGp1c3QgcmVzZXR0aW5nIGludGVybmFsIHN0YXRlIHRvICdsb2dnZWQgb3V0JyBhbmQgaW5cclxuICAgICAgLy8gc29tZSBjYXNlcyBjYWxsIGdhdGV3YXlzIGxvZ291dCBlbmRwb2ludCB0byBkbyBsb2dvdXQgc3R1ZmYgdGhlcmUgc2lsZW50bHlcclxuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLnByb2ZpbGUuaG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldExvZ2luQmFzZSgpfS9sb2dvdXRgKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5iYWNrZW5kLnNldEF1dGhQcm9maWxlKHRoaXMucHJvZmlsZSk7XHJcbiAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuTE9HT1VUKTtcclxuICB9XHJcblxyXG4gIGlzQ2xvdWRFbnZpcm9ubWVudCgpOiBib29sZWFuIHtcclxuICAgIC8vIG9hdXRoMiBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgcnVubmluZyBpbiBhIGNsb3VkIGVudmlyb25tZW50XHJcbiAgICByZXR1cm4gdGhpcy5nYXRld2F5SW5mbyAmJiB0aGlzLmdhdGV3YXlJbmZvLm9hdXRoMjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGZvciBkZXNrdG9wIGFuZCBtb2JpbGUgZGV2aWNlcyB3ZSBwcm92aWRlIGEgbGlzdCBvZiBob3N0cyBmb3IgdGhlIGxvZ2luXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIGhvc3RcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEhvc3RDb25maWcoaG9zdDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBleGlzdGluZ0hvc3QgPSB0aGlzLmhvc3RzLmZpbmQoaCA9PiBoID09PSBob3N0KTtcclxuICAgIGlmICghZXhpc3RpbmdIb3N0KSB7XHJcbiAgICAgIHRoaXMuaG9zdHMucHVzaChob3N0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhIHVzZXIgYmVpbmcgbG9nZ2VkIGluLiBUaGlzIGlzIGtpbmQgb2YgdGhlIHN5bmNocm9ub3VzIHZlcnNpb24gb2Ygc3Vic2NyaWJpbmcgdG8gYGF1dGhlbnRpY2F0ZWQkYC5cclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZXJlIGlzIGEgbG9nZ2VkIGluIHVzZXIsIGZhbHNlIG90aGVyd2lzZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZS51c2VyICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXNlclxyXG4gICAqIEBwYXJhbSBib29sZWFuIHNzb1xyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RW9Vc2VyPlxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdEFwcCh1c2VyOiBhbnksIHNzbz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEVvVXNlcj4ge1xyXG5cclxuICAgIGNvbnN0IGN1cnJVc2VyID0gbmV3IEVvVXNlcih1c2VyKTtcclxuICAgIHRoaXMuYmFja2VuZC5zZXRBdXRoUHJvZmlsZSh0aGlzLnByb2ZpbGUpO1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5zZXRDdXJyZW50VXNlcih1c2VyKTtcclxuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5zZXRDYXBhYmlsaXRpZXModXNlci5jYXBhYmlsaXRpZXMsIHNzbyk7XHJcblxyXG4gICAgdGhpcy5zeXN0ZW1TdGF0dXNTZXJ2aWNlLmluaXQodGhpcy5jb25maWcuZ2V0UmF3KCdzeXN0ZW1TdGF0dXNVcGRhdGVJbnRlcnZhbCcpKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgc3RhdGVzXHJcbiAgICBpZiAoY2FwYWJpbGl0aWVzLmluYm94KSB7XHJcbiAgICAgIHRoaXMuaW5ib3hTZXJ2aWNlLnJlZnJlc2hJbmJveFN0YXRlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2FwYWJpbGl0aWVzLmludHJheSkge1xyXG4gICAgICB0aGlzLnByZXBhcmVTZXJ2aWNlLnJlZnJlc2hQcmVwYXJlZEl0ZW1zQ291bnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0b2RvID0gW1xyXG4gICAgICB0aGlzLmJwbVNlcnZpY2UuaW5pdEV4ZWN1dGFibGVQcm9jZXNzZXMoKSxcclxuICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldFN5c3RlbURlZmluaXRpb24oY3VyclVzZXIpXHJcbiAgICBdO1xyXG5cclxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odG9kbykucGlwZShcclxuICAgICAgbWFwKCgpID0+IGN1cnJVc2VyKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFDM0QsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDbEQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFxQixXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVB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Qyx5QkFBeUIsRUFBRSxDQUFDO1NBQ2pEO1FBRUQsTUFBTSxJQUFJLEdBQUc7WUFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFO1lBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1NBQ2pELENBQUM7UUFFRixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUNwQixDQUFDO0lBQ0osQ0FBQzs7O1lBeFhGLFVBQVU7OztZQTNCSCxNQUFNO1lBb0JOLFVBQVUsdUJBeUNiLE1BQU0sU0FBQyxXQUFXO1lBOURmLGVBQWU7WUF1QmYsa0JBQWtCO1lBeEJsQixVQUFVO1lBZ0JWLFVBQVU7WUFqQlUsTUFBTTtZQXNCMUIsZ0JBQWdCO1lBVmhCLG1CQUFtQjtZQUpuQixNQUFNO1lBR04sWUFBWTtZQURaLGNBQWM7WUFKZCxjQUFjO1lBRGQsYUFBYTtZQUViLFdBQVc7WUFRWCxZQUFZO1lBSVosbUJBQW1CO1lBTm5CLFlBQVk7WUFDWixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLFxyXG4gIG9mIGFzIG9ic2VydmFibGVPZiwgU3ViamVjdCwgdGhyb3dFcnJvciwgaW50ZXJ2YWxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7QXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9hcHAtY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge0VvVXNlcn0gZnJvbSAnLi4vLi4vbW9kZWwvZW8tdXNlci5tb2RlbCc7XHJcbmltcG9ydCB7U3lzdGVtU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi91c2VyL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyJztcclxuaW1wb3J0IHtBdXRoUHJvZmlsZX0gZnJvbSAnLi9hdXRoLXByb2ZpbGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtQcmVwYXJlU2VydmljZX0gZnJvbSAnLi4vcHJlcGFyZS9wcmVwYXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0luYm94U2VydmljZX0gZnJvbSAnLi4vaW5ib3gvaW5ib3guc2VydmljZSc7XHJcbmltcG9ydCB7Q2FwYWJpbGl0aWVzU2VydmljZX0gZnJvbSAnLi4vY2FwYWJpbGl0aWVzL2NhcGFiaWxpdGllcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2V9IGZyb20gJ0BuZ3gtcHdhL2xvY2FsLXN0b3JhZ2UnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4uL3N0b3JhZ2UvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtFdmVudFNlcnZpY2V9IGZyb20gJy4uL2V2ZW50cy9ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtFbmFpb0V2ZW50fSBmcm9tICcuLi9ldmVudHMvZXZlbnRzJztcclxuaW1wb3J0IHtCcG1TZXJ2aWNlfSBmcm9tICcuLi9icG0vYnBtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0dhdGV3YXlJbmZvfSBmcm9tICcuL2dhdGV3YXktaW5mby5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1N5c3RlbVN0YXR1c1NlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS1zdGF0dXMvc3lzdGVtLXN0YXR1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtFbnZpcm9ubWVudEVuYWlvfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC5lbmFpbyc7XHJcbmltcG9ydCB7TG9naW5EZXZpY2VSZXN1bHQsIFN0b3JlZFRva2VufSBmcm9tICcuL2F1dGguY2xvdWQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtQbGF0Zm9ybUxvY2F0aW9ufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0NvcmVDb25maWd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWNvbmZpZyc7XHJcbmltcG9ydCB7Q09SRV9DT05GSUd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWluaXQudG9rZW5zJztcclxuaW1wb3J0IHtFbnZpcm9ubWVudFNlcnZpY2V9IGZyb20gJy4uL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIGBBdXRoU2VydmljZWAgaGFuZGxlcyBhdXRoZW50aWNhdGlvbiBhZ2FpbnN0IGFuIHl1dXZpczxzdXA+JnJlZzs8L3N1cD4gUkFEIGJhY2tlbmQuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgVE9LRU5fU1RPUkFHRV9LRVkgPSAnZW8uYXV0aC5jbG91ZC5jcmVkZW50aWFscyc7XHJcbiAgcHJpdmF0ZSB1c2VyUHJvZmlsZVVyaSA9IHRoaXMudXNlclNlcnZpY2UuVVNFUl9GRVRDSF9VUkk7XHJcbiAgcHJpdmF0ZSBhdXRoU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJpdmF0ZSBsb2dnZWRJbkNhY2hlS2V5ID0gJ2VvLnVzZXIubG9nZ2VkSW4nO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIHRvIHN1YnNjcmliZSB0byBmb3IgZ2V0dGluZyB0aGUgc3RhdGUgb2YgYmVpbmcgYXV0aGVudGljYXRlZC4gV2lsbCBlbWl0IHRydWUgd2hlbiBhIHVzZXIgbG9nZ2VkIGluLFxyXG4gICAqIGZhbHNlIHdoZW4gdGhlIHVzZXIgbG9nZ2VkIG91dCBvciB0aGUgZ2F0ZXdheXMgc2Vzc2lvbiB0aW1lZCBvdXQuXHJcbiAgICovXHJcbiAgcHVibGljIGF1dGhlbnRpY2F0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIGhvc3RzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgZ2F0ZXdheUluZm86IEdhdGV3YXlJbmZvO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIHByb2ZpbGU6IEF1dGhQcm9maWxlID0ge1xyXG4gICAgaG9zdDogJycsXHJcbiAgICB1c2VyOiBudWxsLFxyXG4gICAgYXV0aDogbnVsbCxcclxuICAgIGFjdGl2ZTogZmFsc2VcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IENvbmZpZyxcclxuICAgIEBJbmplY3QoQ09SRV9DT05GSUcpIHB1YmxpYyBjb3JlQ29uZmlnOiBDb3JlQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSBhcHBDYWNoZTogQXBwQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcclxuICAgIHByaXZhdGUgY2FwYWJpbGl0aWVzU2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICBwcml2YXRlIGluYm94U2VydmljZTogSW5ib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzeXN0ZW1TdGF0dXNTZXJ2aWNlOiBTeXN0ZW1TdGF0dXNTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHN0b3JhZ2U6IExvY2FsU3RvcmFnZSxcclxuICAgIHByb3RlY3RlZCBsb2NhbDogTG9jYWxTdG9yYWdlU2VydmljZSkge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCBldnQgPT4ge1xyXG4gICAgICBpZiAoZXZ0LmtleSA9PT0gdGhpcy5sb2dnZWRJbkNhY2hlS2V5KSB7XHJcbiAgICAgICAgY29uc3QgaG9zdCA9IEpTT04ucGFyc2UoZXZ0Lm5ld1ZhbHVlKS5ob3N0O1xyXG4gICAgICAgIHRoaXMuaW5pdFVzZXIoaG9zdCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9naW4gYSB1c2VyIHVzaW5nIGZvcm0gYmFzZWQgbG9naW4uXHJcbiAgICogQHBhcmFtIGhvc3QgVGhlIHRhcmdldCBob3N0IChjb3VsZCBiZSBudWxsIGlmIHlvdSBhcmUgcnVubmluZyBpbiB3ZWIgZW52aXJvbm1lbnQpXHJcbiAgICogQHBhcmFtIHVzZXJuYW1lIFRoZSB1c2VybmFtZVxyXG4gICAqIEBwYXJhbSBwYXNzd29yZCBUaGUgcGFzc3dvcmRcclxuICAgKiBAcmV0dXJucyBSZXNvbHZlcyB3aXRoIHRoZSBsb2dnZWQgaW4gdXNlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2dpbihob3N0OiBzdHJpbmcsIHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVvVXNlcj4ge1xyXG5cclxuICAgIGhvc3QgPSBob3N0IHx8ICcnO1xyXG4gICAgY29uc3QgZmQgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZkLmFwcGVuZCgndXNlcm5hbWUnLCBlbmNvZGVVUklDb21wb25lbnQodXNlcm5hbWUpKTtcclxuICAgIGZkLmFwcGVuZCgncGFzc3dvcmQnLCBlbmNvZGVVUklDb21wb25lbnQocGFzc3dvcmQpKTtcclxuXHJcbiAgICBjb25zdCBsb2dpbkhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoaG9zdCArIHRoaXMuY29uZmlnLmdldExvZ2luQmFzZSgpICsgJy9sb2dpbicsXHJcbiAgICAgIGB1c2VybmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudCh1c2VybmFtZSl9JnBhc3N3b3JkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKX1gLCB7XHJcbiAgICAgIGhlYWRlcnM6IGxvZ2luSGVhZGVyLFxyXG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcclxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pbml0VXNlcihob3N0KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgaW4gdG8gYSBjbG91ZCBiYWNrZW5kIHVzaW5nIGRldmljZSBmbG93LlxyXG4gICAqIEBwYXJhbSBob3N0IFRoZSB0YXJnZXQgaG9zdCAoY291bGQgYmUgbnVsbCBpZiB5b3UgYXJlIHJ1bm5pbmcgaW4gd2ViIGVudmlyb25tZW50KVxyXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGhlIHRlbmFudFxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3VkTG9naW4oaG9zdDogc3RyaW5nLCB0ZW5hbnQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XHJcbiAgICAgIGNvbnN0IHN0b3BUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAgIC8vY29uc3QgdGFyZ2V0SG9zdCA9IHRoaXMubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHRoaXMubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignL2VudGVyJykpOyAvLyBob3N0IHx8ICcnO1xyXG4gICAgICBjb25zdCB0YXJnZXRIb3N0ID0gaG9zdCB8fCAnJztcclxuICAgICAgLy8gc3RhcnQgYXV0aCBmbG93XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGFyZ2V0SG9zdH0vdGVuYW50LyR7dGVuYW50fS9sb2dpbkRldmljZWApLnN1YnNjcmliZSgocmVzOiBMb2dpbkRldmljZVJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgICAvLyBvcGVuIG5ldyB3aW5kb3cgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIC4uLlxyXG4gICAgICAgIGNvbnN0IHRhcmdldFVyaSA9IGAke3RhcmdldEhvc3R9L29hdXRoLyR7dGVuYW50fT91c2VyX2NvZGU9JHtyZXMudXNlcl9jb2RlfWA7XHJcbiAgICAgICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4odGFyZ2V0VXJpLCAnYXV0aCcpO1xyXG4gICAgICAgIGlmICh3aW4pIHtcclxuICAgICAgICAgIC8vIEBzZWU6IGh0dHA6Ly9hdGFzaGJhaGFyLmNvbS9wb3N0LzIwMTAtMDQtMjctZGV0ZWN0LXdoZW4tYS1qYXZhc2NyaXB0LXBvcHVwLXdpbmRvdy1nZXRzLWNsb3NlZFxyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3aW5UaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAod2luLmNsb3NlZCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh3aW5UaW1lcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIC4uLiBhbmQgc3RhcnQgcG9sbGluZyBmb3IgYXV0aGVudGljYXRpb24gcmVzdWx0c1xyXG4gICAgICAgIHRoaXMuY2xvdWRMb2dpblBvbGxGb3JSZXN1bHQoYCR7dGFyZ2V0SG9zdH0vYXV0aC9pbmZvL3N0YXRlP2RldmljZV9jb2RlPSR7cmVzLmRldmljZV9jb2RlfWAsIDEwMDAsIHN0b3BUcmlnZ2VyJClcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKGFjY2Vzc1Rva2VuOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW4sIHRlbmFudCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZVRva2VuOiBTdG9yZWRUb2tlbiA9IHtcclxuICAgICAgICAgICAgICAgICAgdGVuYW50OiB0ZW5hbnQsXHJcbiAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBhY2Nlc3NUb2tlblxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVksIHN0b3JlVG9rZW4pLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoYXV0aFJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGF1dGhSZXMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRVc2VyKHRhcmdldEhvc3QpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdub3QgYXV0aGVudGljYXRlZCcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAodXNlcjogRW9Vc2VyKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIHdpbi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgIG8ubmV4dCh1c2VyKTtcclxuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgd2luLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKVxyXG4gICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgIG8uZXJyb3IoJ3VuYWJsZSB0byBjYWxsIGRldmljZSBmbG93IGVuZHBvaW50JywgZXJyKTtcclxuICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0cyBwb2xsaW5nIGZvciBsb2dpbiByZXN1bHRzIGluIGNhc2Ugb2YgbG9nZ2luZyBpbiB0byBhIGNsb3VkIGJhY2tlbmQuXHJcbiAgICogQHBhcmFtIHVyaSBVUkkgdG8gcG9sbFxyXG4gICAqIEBwYXJhbSBwb2xsaW5nSW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbGwgaW4gbWlsbGlzZWNvbmRzXHJcbiAgICogQHBhcmFtIHN0b3BUcmlnZ2VyIFN1YmplY3QgYWN0aW5nIGFzIHN0b3AgdHJpZ2dlclxyXG4gICAqIEByZXR1cm5zIEFjY2VzcyBUb2tlbiBpZiBsb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5IG9yIE5VTEwgb3RoZXJ3aXNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbG91ZExvZ2luUG9sbEZvclJlc3VsdCh1cmk6IHN0cmluZywgcG9sbGluZ0ludGVydmFsOiBudW1iZXIsIHN0b3BUcmlnZ2VyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG8gPT4ge1xyXG4gICAgICBsZXQgYWNjZXNzR3JhbnRlZCA9IGZhbHNlO1xyXG4gICAgICBsZXQgYWNjZXNzRGVuaWVkID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgaW50ZXJ2YWwocG9sbGluZ0ludGVydmFsKS5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHN0b3BUcmlnZ2VyKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmh0dHAuZ2V0KHVyaSkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIE9BdXRoIHN0YW5kYXJkIHdlIGFyZSB1c2luZyBpcyByZXR1cm5pbmcgd2l0aCBhIHN0YXR1cyBvZiA0MDAgd2hpbGUgbG9nZ2luZyBpbiAobm8gaWRlYSB3aHk/Pz8pXHJcbiAgICAgICAgICAgICAgLy8gc28gd2UgZ290IHRvIGZldGNoIHRoYXQgdG8gbm90IGJyZWFrIHRoZSBwYXJlbnQgcGlwZVxyXG4gICAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoZXJyLmVycm9yKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBhY2Nlc3NHcmFudGVkID0gISFyZXMuYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICAgIGFjY2Vzc0RlbmllZCA9IHJlcy5lcnJvciA9PT0gJ2FjY2Vzc19kZW5pZWQnO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoYWNjZXNzR3JhbnRlZCB8fCBhY2Nlc3NEZW5pZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxvZ2dlZCBpblxyXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIG8ubmV4dChhY2Nlc3NHcmFudGVkID8gcmVzLmFjY2Vzc190b2tlbiA6IG51bGwpO1xyXG4gICAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmVycm9yID09PSAnZXhwaXJlZF90b2tlbicpIHtcclxuICAgICAgICAgICAgICAgIC8vIGV4cGlyZWQgc28gc2tpcCBwb2xsaW5nXHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdUb2tlbiBleHBpcmVkJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgby5uZXh0KGFjY2Vzc0dyYW50ZWQpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW46IHN0cmluZywgdGVuYW50OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnYmVhcmVyICcgKyBhY2Nlc3NUb2tlbik7XHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0SGVhZGVyKCdYLUlELVRFTkFOVC1OQU1FJywgdGVuYW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgY2FsbGVkIHdoaWxlIGFwcCBpbml0XHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGluaXRVc2VyKGhvc3Q/OiBzdHJpbmcpIHtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KGAke2hvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vYXV0aC9pbmZvYCwge2hlYWRlcnN9KVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKGluZm86IEdhdGV3YXlJbmZvKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nYXRld2F5SW5mbyA9IGluZm87XHJcblxyXG4gICAgICAgIHRoaXMuZW52U2VydmljZS5jbG91ZEVudmlyb25tZW50ID0gKHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDIpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgICAgICAvLyBpbiBjYXNlIG9mIHJ1bm5pbmcgYWdhaW5zdCBjbG91ZCBiYWNrZW5kLCB3ZSB0cnkgdG8gZmV0Y2hcclxuICAgICAgICAgIC8vIGFjY2VzcyB0b2tlbiBhbmQgdGVuYW50IGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVkpLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3VkTG9naW5TZXRIZWFkZXJzKHJlcy5hY2Nlc3NUb2tlbiwgcmVzLnRlbmFudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hVc2VyKGluZm8sIGhvc3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBnYXRld2F5SW5mb1xyXG4gICAqIEBwYXJhbSBob3N0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaFVzZXIoZ2F0ZXdheUluZm86IGFueSwgaG9zdD86IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7aG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldFVyaSgnc2VydmljZUJhc2UnKX0ke3RoaXMudXNlclByb2ZpbGVVcml9YCwge2hlYWRlcnN9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9maWxlID0ge1xyXG4gICAgICAgICAgICBob3N0OiBob3N0IHx8ICcnLFxyXG4gICAgICAgICAgICB1c2VyOiB1c2VyLnVzZXIubmFtZSxcclxuICAgICAgICAgICAgYXV0aDogbnVsbCxcclxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKGhvc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRIb3N0Q29uZmlnKGhvc3QpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9nZ2VkSW5DYWNoZUtleSwgSlNPTi5zdHJpbmdpZnkoe3VzZXJJZDogdXNlci51c2VyLmlkLCBob3N0OiBob3N0fSkpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdEFwcCh1c2VyLCBnYXRld2F5SW5mby5udGxtKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5hdXRoU291cmNlLm5leHQodGhpcy5pc0xvZ2dlZEluKCkpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBvdXQgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gZ2F0ZXdheUxvZ291dCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gcGVyZm9ybSBhIGdhdGV3YXkgbG9nb3V0IGFzIHdlbGxcclxuICAgKi9cclxuICBwdWJsaWMgbG9nb3V0KGdhdGV3YXlMb2dvdXQ/OiBib29sZWFuKSB7XHJcblxyXG4gICAgdGhpcy5hdXRoU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5zeXN0ZW1TdGF0dXNTZXJ2aWNlLnN0b3AoKTtcclxuXHJcbiAgICB0aGlzLnByb2ZpbGUgPSB7XHJcbiAgICAgIGhvc3Q6ICcnLFxyXG4gICAgICB1c2VyOiBudWxsLFxyXG4gICAgICBhdXRoOiBudWxsLFxyXG4gICAgICBhY3RpdmU6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgIC8vIHJlbW92ZSBzdG9yZWQgYWNjZXNzIGRhdGFcclxuICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvcmVDb25maWcuZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiBFbnZpcm9ubWVudEVuYWlvLmlzV2ViRW52aXJvbm1lbnQoKSkge1xyXG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb25maWcuZ2V0TG9naW5CYXNlKCkgKyAnL2xvZ291dCc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZ2F0ZXdheUxvZ291dCkge1xyXG4gICAgICAvLyBieSBkZWZhdWx0IHdlIGFyZSBqdXN0IHJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSB0byAnbG9nZ2VkIG91dCcgYW5kIGluXHJcbiAgICAgIC8vIHNvbWUgY2FzZXMgY2FsbCBnYXRld2F5cyBsb2dvdXQgZW5kcG9pbnQgdG8gZG8gbG9nb3V0IHN0dWZmIHRoZXJlIHNpbGVudGx5XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5wcm9maWxlLmhvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vbG9nb3V0YCwge3dpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5MT0dPVVQpO1xyXG4gIH1cclxuXHJcbiAgaXNDbG91ZEVudmlyb25tZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gb2F1dGgyIGluZGljYXRlcyB0aGF0IHdlIGFyZSBydW5uaW5nIGluIGEgY2xvdWQgZW52aXJvbm1lbnRcclxuICAgIHJldHVybiB0aGlzLmdhdGV3YXlJbmZvICYmIHRoaXMuZ2F0ZXdheUluZm8ub2F1dGgyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZm9yIGRlc2t0b3AgYW5kIG1vYmlsZSBkZXZpY2VzIHdlIHByb3ZpZGUgYSBsaXN0IG9mIGhvc3RzIGZvciB0aGUgbG9naW5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzdHJpbmcgaG9zdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkSG9zdENvbmZpZyhob3N0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nSG9zdCA9IHRoaXMuaG9zdHMuZmluZChoID0+IGggPT09IGhvc3QpO1xyXG4gICAgaWYgKCFleGlzdGluZ0hvc3QpIHtcclxuICAgICAgdGhpcy5ob3N0cy5wdXNoKGhvc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIGEgdXNlciBiZWluZyBsb2dnZWQgaW4uIFRoaXMgaXMga2luZCBvZiB0aGUgc3luY2hyb25vdXMgdmVyc2lvbiBvZiBzdWJzY3JpYmluZyB0byBgYXV0aGVudGljYXRlZCRgLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlcmUgaXMgYSBsb2dnZWQgaW4gdXNlciwgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgICovXHJcbiAgcHVibGljIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlLnVzZXIgIT09IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSB1c2VyXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gc3NvXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0QXBwKHVzZXI6IGFueSwgc3NvPzogYm9vbGVhbik6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcblxyXG4gICAgY29uc3QgY3VyclVzZXIgPSBuZXcgRW9Vc2VyKHVzZXIpO1xyXG4gICAgdGhpcy5iYWNrZW5kLnNldEF1dGhQcm9maWxlKHRoaXMucHJvZmlsZSk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldEN1cnJlbnRVc2VyKHVzZXIpO1xyXG4gICAgY29uc3QgY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXRpZXNTZXJ2aWNlLnNldENhcGFiaWxpdGllcyh1c2VyLmNhcGFiaWxpdGllcywgc3NvKTtcclxuXHJcbiAgICB0aGlzLnN5c3RlbVN0YXR1c1NlcnZpY2UuaW5pdCh0aGlzLmNvbmZpZy5nZXRSYXcoJ3N5c3RlbVN0YXR1c1VwZGF0ZUludGVydmFsJykpO1xyXG5cclxuICAgIC8vIHVwZGF0ZSBzdGF0ZXNcclxuICAgIGlmIChjYXBhYmlsaXRpZXMuaW5ib3gpIHtcclxuICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcclxuICAgIH1cclxuICAgIGlmIChjYXBhYmlsaXRpZXMuaW50cmF5KSB7XHJcbiAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2UucmVmcmVzaFByZXBhcmVkSXRlbXNDb3VudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRvZG8gPSBbXHJcbiAgICAgIHRoaXMuYnBtU2VydmljZS5pbml0RXhlY3V0YWJsZVByb2Nlc3NlcygpLFxyXG4gICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0U3lzdGVtRGVmaW5pdGlvbihjdXJyVXNlcilcclxuICAgIF07XHJcblxyXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0b2RvKS5waXBlKFxyXG4gICAgICBtYXAoKCkgPT4gY3VyclVzZXIpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { of as observableOf } from 'rxjs';
|
|
2
2
|
import { map, tap } from 'rxjs/operators';
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Inject, Injectable } from '@angular/core';
|
|
4
4
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
5
5
|
import { Config } from '../config/config.service';
|
|
6
6
|
import * as FileSaver from 'file-saver';
|
|
7
7
|
import { Logger } from '../logger/logger';
|
|
8
8
|
import { finalize, shareReplay } from 'rxjs/operators';
|
|
9
|
+
import { CoreConfig } from '../../config/core-config';
|
|
10
|
+
import { CORE_CONFIG } from '../../config/core-init.tokens';
|
|
9
11
|
/**
|
|
10
12
|
* `BackendService` encapsulates the communication with the yuuvis<sup>®</sup> RAD REST endpoints.
|
|
11
13
|
*
|
|
@@ -15,8 +17,9 @@ export class BackendService {
|
|
|
15
17
|
/**
|
|
16
18
|
* @ignore
|
|
17
19
|
*/
|
|
18
|
-
constructor(http, logger, config) {
|
|
20
|
+
constructor(http, coreConfig, logger, config) {
|
|
19
21
|
this.http = http;
|
|
22
|
+
this.coreConfig = coreConfig;
|
|
20
23
|
this.logger = logger;
|
|
21
24
|
this.config = config;
|
|
22
25
|
this.gridDataFilter = map((data) => data === null || data === void 0 ? void 0 : data.filter((v) => !v.__removed));
|
|
@@ -66,7 +69,7 @@ export class BackendService {
|
|
|
66
69
|
* @ignore
|
|
67
70
|
*/
|
|
68
71
|
getHttpOptions(requestOptions) {
|
|
69
|
-
return Object.assign({ headers: this.getHeaders() }, requestOptions);
|
|
72
|
+
return Object.assign({ headers: this.getHeaders(), withCredentials: this.coreConfig.withCredentials }, requestOptions);
|
|
70
73
|
}
|
|
71
74
|
/**
|
|
72
75
|
* Gets the base URI for the DMS-Service endpoint
|
|
@@ -181,7 +184,7 @@ export class BackendService {
|
|
|
181
184
|
const baseUri = base || this.getServiceBase();
|
|
182
185
|
const headers = this.getHeaders();
|
|
183
186
|
headers.delete('Content-Type');
|
|
184
|
-
const reqOptions = Object.assign({ headers: headers }, requestOptions);
|
|
187
|
+
const reqOptions = Object.assign({ headers: headers, withCredentials: this.coreConfig.withCredentials }, requestOptions);
|
|
185
188
|
return this.http.post(`${baseUri}${uri}`, formData, reqOptions);
|
|
186
189
|
}
|
|
187
190
|
/**
|
|
@@ -229,7 +232,7 @@ export class BackendService {
|
|
|
229
232
|
return observableOf(this.cache.get(uri));
|
|
230
233
|
}
|
|
231
234
|
else {
|
|
232
|
-
return this.getViaTempCache(uri, () => this.http.get(uri, { responseType: 'text' }).pipe(tap(text => this.cache.set(uri, text))));
|
|
235
|
+
return this.getViaTempCache(uri, () => this.http.get(uri, { withCredentials: this.coreConfig.withCredentials, responseType: 'text' }).pipe(tap(text => this.cache.set(uri, text))));
|
|
233
236
|
}
|
|
234
237
|
}
|
|
235
238
|
/**
|
|
@@ -278,7 +281,7 @@ export class BackendService {
|
|
|
278
281
|
});
|
|
279
282
|
}
|
|
280
283
|
download(uri, version) {
|
|
281
|
-
this.http.get(uri, { observe: 'response', responseType: 'blob' })
|
|
284
|
+
this.http.get(uri, { observe: 'response', responseType: 'blob', withCredentials: this.coreConfig.withCredentials })
|
|
282
285
|
.subscribe((res) => {
|
|
283
286
|
FileSaver.saveAs(res.body, this.getFileNameFromHttpResponse(res, version));
|
|
284
287
|
});
|
|
@@ -311,7 +314,8 @@ BackendService.decorators = [
|
|
|
311
314
|
];
|
|
312
315
|
BackendService.ctorParameters = () => [
|
|
313
316
|
{ type: HttpClient },
|
|
317
|
+
{ type: CoreConfig, decorators: [{ type: Inject, args: [CORE_CONFIG,] }] },
|
|
314
318
|
{ type: Logger },
|
|
315
319
|
{ type: Config }
|
|
316
320
|
];
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUF1QyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFaEQsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBR3hDLE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUF5QnJEOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQVN6Qjs7T0FFRztJQUNILFlBQW9CLElBQWdCLEVBQ2hCLE1BQWMsRUFDZCxNQUFjO1FBRmQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVozQixtQkFBYyxHQUFrQyxHQUFHLENBQUMsQ0FBQyxJQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFHNUcsVUFBSyxHQUFHLElBQUksR0FB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QUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDakcsQ0FBQztJQUdEOzs7O09BSUc7SUFDSyxpQkFBaUI7UUFDdkIsT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLG9CQUFvQixFQUFFLE9BQU87WUFDN0Isc0JBQXNCLEVBQUUsT0FBTztZQUMvQixpQkFBaUIsRUFBRSxNQUFNO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXpVRixVQUFVOzs7WUFyQ0gsVUFBVTtZQUlWLE1BQU07WUFITixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtvZiBhcyBvYnNlcnZhYmxlT2YsIE9ic2VydmFibGUsIE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7bWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Rtc09iamVjdH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xyXG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuLi9hdXRoL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0h0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtmaW5hbGl6ZSwgc2hhcmVSZXBsYXl9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8qKlxyXG4gKiBIdHRwT3B0aW9ucyBmb3IgaHR0cCByZXF1ZXN0XHJcbiAqIEBwYXJhbSBvYnNlcnZlOiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSdcclxuICogQHBhcmFtIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0J1xyXG4gKi9cclxuIGV4cG9ydCBpbnRlcmZhY2UgSHR0cE9wdGlvbnMge1xyXG4gIGhlYWRlcnM/OlxyXG4gICAgfCBIdHRwSGVhZGVyc1xyXG4gICAgfCB7XHJcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICAgIH07XHJcbiAgb2JzZXJ2ZT86IGFueTtcclxuICBwYXJhbXM/OlxyXG4gICAgfCBIdHRwUGFyYW1zXHJcbiAgICB8IHtcclxuICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gICAgICB9O1xyXG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcclxuICByZXNwb25zZVR5cGU/OiBhbnk7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBgQmFja2VuZFNlcnZpY2VgIGVuY2Fwc3VsYXRlcyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBSRVNUIGVuZHBvaW50cy5cclxuICpcclxuICogQXMgeXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgcHJvdmlkZXMgZGlmZmVyZW50IHNlcnZpY2VzLCB0aGlzIHNlcnZpY2UgaXMgYWxzbyBjYXBhYmxlIG9mIHByb3ZpZGluZyB0aGUgYmFzZSBVUklzIGZvciB0aG9zZSBzZXJ2aWNlcy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhY2tlbmRTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIGdyaWREYXRhRmlsdGVyOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248YW55PiA9IG1hcCgoZGF0YTogYW55W10pID0+IGRhdGE/LmZpbHRlcigodjogYW55KSA9PiAhdi5fX3JlbW92ZWQpKTtcclxuXHJcbiAgcHJpdmF0ZSBhdXRoUHJvZmlsZTogQXV0aFByb2ZpbGU7XHJcbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XHJcbiAgcHJpdmF0ZSB0ZW1wID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4oKTtcclxuICBwcml2YXRlIGhlYWRlcnMgPSB0aGlzLnNldERlZmF1bHRIZWFkZXJzKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWZhdWx0IHByb2ZpbGUgaXMgc3VwcG9zZWQgdG8gdXNlIE5UTE1cclxuICAgICAqIEB0eXBlIHtob3N0OiBzdHJpbmc7IG50bG06IGJvb2xlYW59XHJcbiAgICAgKi9cclxuICAgIHRoaXMuYXV0aFByb2ZpbGUgPSB7XHJcbiAgICAgIGhvc3Q6ICcnLFxyXG4gICAgICBudGxtOiB0cnVlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRBdXRoUHJvZmlsZShwcm9maWxlPzogQXV0aFByb2ZpbGUpIHtcclxuICAgIGlmIChwcm9maWxlKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuc2V0RGVmYXVsdEhlYWRlcnMoKTtcclxuICAgICAgdGhpcy5hdXRoUHJvZmlsZSA9IHByb2ZpbGU7XHJcbiAgICAgIGlmICh0aGlzLmF1dGhQcm9maWxlLmF1dGgpIHtcclxuICAgICAgICAvLyB0aGlzLnNldEhlYWRlcignQXV0aG9yaXphdGlvbicsIHRoaXMuYXV0aFByb2ZpbGUuYXV0aCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5oZWFkZXJzLmRlbGV0ZSgnQXV0aG9yaXphdGlvbicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgbmV3IGhlYWRlci5cclxuICAgKiBAcGFyYW0ga2V5IFRoZSBoZWFkZXJzIG5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlXHJcbiAgICovXHJcbiAgcHVibGljIHNldEhlYWRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmhlYWRlcnMgPSB0aGlzLmhlYWRlcnMuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBUaGUgYEh0dHBIZWFkZXJzYCB0aGF0IGFyZSBjdXJyZW50bHkgc2V0IHVwXHJcbiAgICovXHJcbiAgcHVibGljIGdldEhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xyXG4gICAgcmV0dXJuIHRoaXMuaGVhZGVycztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IEh0dHBPcHRpb25zIHtcclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHtoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKX0sIHJlcXVlc3RPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgRE1TLVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTZXJ2aWNlQmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnc2VydmljZUJhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgU2VhcmNoLVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTZWFyY2hCYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdzZWFyY2hCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIENvbnRleHQtU2VydmljZSBlbmRwb2ludFxyXG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXHJcbiAgICovXHJcbiAgcHVibGljIGdldENvbnRleHRCYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdjb250ZXh0QmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBJbmJveC1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SW5ib3hCYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdpbmJveEJhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgQlBNLVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRCcG1CYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdicG1CYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIEFnZW50LVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRBZ2VudEJhc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ2FnZW50QmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBTdGF0dXMtU2VydmljZSBlbmRwb2ludFxyXG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXHJcbiAgICovXHJcbiAgcHVibGljIGdldFN0YXR1c0Jhc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ3N0YXR1c0Jhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SWNvbkJhc2UoaWQ6IHN0cmluZyA9ICcnKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTZXJ2aWNlQmFzZSgpICsgJy91aS9pY29uLycgKyBpZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SG9zdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmF1dGhQcm9maWxlLmhvc3QgfHwgJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcmFwcGVkIEhUVFAgR0VUIG1ldGhvZFxyXG4gICAqIEBwYXJhbSB1cmkgVGhlIFJFU1QgVVJJIHRvIGJlIHF1ZXJpZWRcclxuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIFRoZSBkYXRhIHJldHJpZXZlZCBmcm9tIHRoZSBnaXZlbiBlbmRwb2ludFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQodXJpOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoKGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpKSArIHVyaSwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xyXG4gIH1cclxuICBcclxuICAvKipcclxuICAgKiBXcmFwcGVkIEhUVFAgUFVUIG1ldGhvZFxyXG4gICAqIEBwYXJhbSB1cmkgVGhlIHRhcmdldCBSRVNUIFVSSVxyXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgJ3Bvc3RlZCdcclxuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBQVVQgZW5kcG9pbnRcclxuICAgKi9cclxuICBwdWJsaWMgcHV0KHVyaTogc3RyaW5nLCBkYXRhPzogYW55LCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KChiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKSkgKyB1cmksIGRhdGEsIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SnNvbih1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQodXJpLCBiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKSwge3Jlc3BvbnNlVHlwZTogJ2pzb24nfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcmFwcGVkIEhUVFAgUE9TVCBtZXRob2RcclxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcclxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIGJlICdwb3N0ZWQnXHJcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcclxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgUE9TVCBlbmRwb2ludFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwb3N0KHVyaTogc3RyaW5nLCBkYXRhPywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBiYXNlVXJpID0gYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCk7XHJcbiAgICBjb25zdCBwYXlsb2FkID0gZGF0YSA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogJyc7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7YmFzZVVyaX0ke3VyaX1gLCBwYXlsb2FkLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtcyBhIG11bHRpcGFydCBmb3JtIGRhdGEgUE9TVCByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSB1cmkgVGhlIHRhcmdldCBSRVNUIFVSSVxyXG4gICAqIEBwYXJhbSBmb3JtRGF0YSBGb3JtRGF0YSB0byBiZSAncG9zdGVkJ1xyXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXHJcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXHJcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IFBPU1QgZW5kcG9pbnRcclxuICAgKi9cclxuICBwdWJsaWMgcG9zdE11bHRpUGFydCh1cmk6IHN0cmluZywgZm9ybURhdGE6IEZvcm1EYXRhLCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJhc2VVcmkgPSBiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMoKTtcclxuICAgIGhlYWRlcnMuZGVsZXRlKCdDb250ZW50LVR5cGUnKTtcclxuICAgIGNvbnN0IHJlcU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtoZWFkZXJzOiBoZWFkZXJzfSwgcmVxdWVzdE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke2Jhc2VVcml9JHt1cml9YCwgZm9ybURhdGEsIHJlcU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV3JhcHBlZCBIVFRQIERFTEVURSBtZXRob2RcclxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcclxuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBERUxFVEUgZW5kcG9pbnRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsKHVyaTogc3RyaW5nLCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKChiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKSkgKyB1cmksIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKiBTb2Z0IHVwZGF0ZSBmb3IgbGlzdHMgLSBlbmFibGVzIGdyaWQgdG8gaGFuZGxlIGFsbCBjaGFuZ2VzXHJcbiAgICogdG8gYWRkIG5ldyAtIG9ubHkgaXRlbSBzaG91bGQgYmUgc3BlY2lmaWVkXHJcbiAgICogdG8gcmVtb3ZlIC0gb25seSBpZCBzaG91bGQgYmUgc3BlY2lmaWVkXHJcbiAgICogdG8gdXBkYXRlIC0gYm90aCBwYXJhbXMgc2hvdWxkIGJlIHNwZWNpZmllZFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGFueVtdIGxpc3QgT3JpZ2luYWwgbGlzdCBvZiBpdGVtc1xyXG4gICAqIEBwYXJhbSBpZD86IHN0cmluZzsgaXRlbT86IGFueSBkYXRhW11cclxuICAgKiBAcmV0dXJucyBhbnlbXVxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGUobGlzdDogYW55W10sIGRhdGE6IHsgaWQ/OiBzdHJpbmcsIGl0ZW0/OiBhbnkgfVtdKSB7XHJcbiAgICBkYXRhLmZvckVhY2goKHtpZCwgaXRlbX0pID0+IHtcclxuICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgY29uc3QgX2l0ZW0gPSBsaXN0LmZpbmQobCA9PiBsLmlkID09PSBpZCk7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihfaXRlbSwgaXRlbSwgaXRlbSA/IHtfX3VwZGF0ZWQ6IHRydWV9IDoge19fcmVtb3ZlZDogdHJ1ZX0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0pIHtcclxuICAgICAgICBsaXN0LnVuc2hpZnQoT2JqZWN0LmFzc2lnbihpdGVtLCB7X19hZGRlZDogdHJ1ZX0pKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKiBDYWNoZSBmb3Igc21hbGwgcmVxdWVzdHMgbGlrZSBpY29ucyBhbmQgY29uZmlnc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyB1cmlcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VmlhQ2FjaGUodXJpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKHVyaSkpIHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmNhY2hlLmdldCh1cmkpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFZpYVRlbXBDYWNoZSh1cmksICgpID0+IHRoaXMuaHR0cC5nZXQodXJpLCB7cmVzcG9uc2VUeXBlOiAndGV4dCd9KS5waXBlKFxyXG4gICAgICAgIHRhcCh0ZXh0ID0+IHRoaXMuY2FjaGUuc2V0KHVyaSwgdGV4dCkpKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICogVGVtcG9yYXJ5IENhY2hlIGZvciBtdWx0aXBsZSBpZGVudGljYWwgcmVxdWVzdHNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzdHJpbmcgaWRcclxuICAgKiBAcGFyYW0gRnVuY3Rpb24gcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRWaWFUZW1wQ2FjaGUoaWQ6IHN0cmluZywgcmVxdWVzdD86IEZ1bmN0aW9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmICh0aGlzLnRlbXAuaGFzKGlkKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy50ZW1wLmdldChpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXNwID0gKHJlcXVlc3QgPyByZXF1ZXN0KCkgOiB0aGlzLmdldChpZCkpLnBpcGUoXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy50ZW1wLmRlbGV0ZShpZCkpLFxyXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudGVtcC5zZXQoaWQsIHJlc3ApO1xyXG4gICAgICByZXR1cm4gcmVzcDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERvd25sb2FkIHRoZSBjb250ZW50IG9mIGRtcyBvYmplY3RzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdFtdIGRtc09iamVjdHMgQXJyYXkgb2YgZG1zIG9iamVjdHMgdG8gYmUgZG93bmxvYWRlZFxyXG4gICAqIEBwYXJhbSBcIlBERlwiIHwgXCJUSUZGXCIgfCBcIlRFWFRcIiB8IFwiSlBFR1wiIHJlbmRpdGlvbiBUaGUgdHlwZSBvZiByZW5kaXRpb24gdG8gYmUgZG93bmxvYWRlZC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIG9yaWdpbmFsIGNvbnRlbnQgd2lsbCBiZSBkb3dubG9hZGVkLlxyXG4gICAqIFBvc3NpYmxlIHJlbmRpdGlvbnMgYXJlIGBQREZgLCBgVElGRmAsIGBURVhUYCwgYEpQRUdgLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBkb3dubG9hZENvbnRlbnQoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIHJlbmRpdGlvbj86ICdQREYnIHwgJ1RJRkYnIHwgJ1RFWFQnIHwgJ0pQRUcnLCBmaWxlTmFtZVdpdGhWZXJzaW9uTnVtYmVyPzogYm9vbGVhbikge1xyXG5cclxuICAgIGRtc09iamVjdHMuZm9yRWFjaChkbXNPYmplY3QgPT4ge1xyXG4gICAgICBpZiAoZG1zT2JqZWN0LmNvbnRlbnQpIHtcclxuXHJcbiAgICAgICAgbGV0IHVyaSA9IGAke3RoaXMuZ2V0U2VydmljZUJhc2UoKX0vZG1zLyR7ZG1zT2JqZWN0LmNvbnRlbnQuaWR9L2NvbnRlbnQ/dHlwZT0ke2Rtc09iamVjdC5jb250ZW50LnR5cGV9JmFzZG93bmxvYWQ9dHJ1ZWA7XHJcbiAgICAgICAgaWYgKHJlbmRpdGlvbikge1xyXG4gICAgICAgICAgdXJpICs9IGAmcmVuZGl0aW9uPSR7cmVuZGl0aW9ufSZfaW50ZW50PURPV05MT0FEXyR7cmVuZGl0aW9ufWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVyaSArPSAnJl9pbnRlbnQ9RE9XTkxPQUQnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZG1zT2JqZWN0LmNvbnRlbnQuaWQgPT09IGRtc09iamVjdC5pZCkge1xyXG4gICAgICAgICAgdXJpICs9IGAmdmVyc2lvbj0ke2Rtc09iamVjdC52ZXJzaW9ufWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG93bmxvYWQodXJpLCBmaWxlTmFtZVdpdGhWZXJzaW9uTnVtYmVyID8gZG1zT2JqZWN0LnZlcnNpb24gOiBudWxsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignVGhlIHByb3ZpZGVkIGRtcyBvYmplY3QgaGFzIG5vIGNvbnRlbnQnLCBkbXNPYmplY3QpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZCh1cmk6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcikge1xyXG4gICAgdGhpcy5odHRwLmdldCh1cmksIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdibG9iJ30pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoXHJcbiAgICAgICAgICByZXMuYm9keSxcclxuICAgICAgICAgIHRoaXMuZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlcywgdmVyc2lvbilcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlczogSHR0cFJlc3BvbnNlPGFueT4sIHZlcnNpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgY29udGVudERpc3Bvc2l0aW9uSGVhZGVyID0gcmVzLmhlYWRlcnMuZ2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJykgfHwgJyc7XHJcbiAgICBjb25zdCBlbmNvZGVkRmlsZU5hbWVNYXRjaFJlc3VsdCA9IGNvbnRlbnREaXNwb3NpdGlvbkhlYWRlci5tYXRjaCgnZmlsZW5hbWVcXFxcKj1VVEYtOFxcJ1xcJyguKiknKVxyXG4gICAgICB8fCBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIubWF0Y2goJ2ZpbGVuYW1lPVxcXCIoLiopXFxcIicpO1xyXG4gICAgY29uc3QgZW5jb2RlZEZpbGVOYW1lID0gZW5jb2RlZEZpbGVOYW1lTWF0Y2hSZXN1bHQgPyBlbmNvZGVkRmlsZU5hbWVNYXRjaFJlc3VsdFsxXSA6IG51bGw7XHJcbiAgICBjb25zdCBmaWxlbmFtZSA9IGVuY29kZWRGaWxlTmFtZSA/IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkRmlsZU5hbWUpIDogJ3Vua25vd24nO1xyXG4gICAgY29uc3QgaW5kZXggPSAhfmZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgPyBmaWxlbmFtZS5sZW5ndGggOiBmaWxlbmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgcmV0dXJuICF2ZXJzaW9uID8gZmlsZW5hbWUgOiBgJHtmaWxlbmFtZS5zbGljZSgwLCBpbmRleCl9X3Yke3ZlcnNpb259JHtmaWxlbmFtZS5zbGljZShpbmRleCl9YDtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBIVFRQIEhlYWRlcnNcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIEh0dHBIZWFkZXJzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0SGVhZGVycygpOiBIdHRwSGVhZGVycyB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ1gtb3MtaW5jbHVkZS1saW5rcyc6ICdmYWxzZScsXHJcbiAgICAgICdYLW9zLWluY2x1ZGUtYWN0aW9ucyc6ICdmYWxzZScsXHJcbiAgICAgICdYLW9zLXN5bmMtaW5kZXgnOiAndHJ1ZSdcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUF1QyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUd4QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUF5QjFEOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQVF6Qjs7T0FFRztJQUNILFlBQW9CLElBQWdCLEVBQ04sVUFBc0IsRUFDMUMsTUFBYyxFQUNkLE1BQWM7UUFISixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ04sZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUMxQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVpqQixtQkFBYyxHQUFrQyxHQUFHLENBQUMsQ0FBQyxJQUFXLEVBQUUsRUFB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ekYsd0JBQXdCLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsTUFBTSxlQUFlLEdBQUcsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUYsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ25GLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ2pHLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ssaUJBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxXQUFXLENBQUM7WUFDckIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxvQkFBb0IsRUFBRSxPQUFPO1lBQzdCLHNCQUFzQixFQUFFLE9BQU87WUFDL0IsaUJBQWlCLEVBQUUsTUFBTTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUF6VUYsVUFBVTs7O1lBdkNILFVBQVU7WUFRVixVQUFVLHVCQTRDYixNQUFNLFNBQUMsV0FBVztZQWhEZixNQUFNO1lBSE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7b2YgYXMgb2JzZXJ2YWJsZU9mLCBPYnNlcnZhYmxlLCBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Rtc09iamVjdH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xyXG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuLi9hdXRoL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0h0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtmaW5hbGl6ZSwgc2hhcmVSZXBsYXl9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtDb3JlQ29uZmlnfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1jb25maWcnO1xyXG5pbXBvcnQge0NPUkVfQ09ORklHfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1pbml0LnRva2Vucyc7XHJcblxyXG4vKipcclxuICogSHR0cE9wdGlvbnMgZm9yIGh0dHAgcmVxdWVzdFxyXG4gKiBAcGFyYW0gb2JzZXJ2ZTogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnXHJcbiAqIEBwYXJhbSByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCdcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSHR0cE9wdGlvbnMge1xyXG4gIGhlYWRlcnM/OlxyXG4gIHwgSHR0cEhlYWRlcnNcclxuICB8IHtcclxuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIH07XHJcbiAgb2JzZXJ2ZT86IGFueTtcclxuICBwYXJhbXM/OlxyXG4gIHwgSHR0cFBhcmFtc1xyXG4gIHwge1xyXG4gICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICB9O1xyXG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcclxuICByZXNwb25zZVR5cGU/OiBhbnk7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBgQmFja2VuZFNlcnZpY2VgIGVuY2Fwc3VsYXRlcyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBSRVNUIGVuZHBvaW50cy5cclxuICpcclxuICogQXMgeXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgcHJvdmlkZXMgZGlmZmVyZW50IHNlcnZpY2VzLCB0aGlzIHNlcnZpY2UgaXMgYWxzbyBjYXBhYmxlIG9mIHByb3ZpZGluZyB0aGUgYmFzZSBVUklzIGZvciB0aG9zZSBzZXJ2aWNlcy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhY2tlbmRTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIGdyaWREYXRhRmlsdGVyOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248YW55PiA9IG1hcCgoZGF0YTogYW55W10pID0+IGRhdGE/LmZpbHRlcigodjogYW55KSA9PiAhdi5fX3JlbW92ZWQpKTtcclxuICBwcml2YXRlIGF1dGhQcm9maWxlOiBBdXRoUHJvZmlsZTtcclxuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcclxuICBwcml2YXRlIHRlbXAgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+PigpO1xyXG4gIHByaXZhdGUgaGVhZGVycyA9IHRoaXMuc2V0RGVmYXVsdEhlYWRlcnMoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIEBJbmplY3QoQ09SRV9DT05GSUcpIHB1YmxpYyBjb3JlQ29uZmlnOiBDb3JlQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcclxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlZmF1bHQgcHJvZmlsZSBpcyBzdXBwb3NlZCB0byB1c2UgTlRMTVxyXG4gICAgICogQHR5cGUge2hvc3Q6IHN0cmluZzsgbnRsbTogYm9vbGVhbn1cclxuICAgICAqL1xyXG4gICAgdGhpcy5hdXRoUHJvZmlsZSA9IHtcclxuICAgICAgaG9zdDogJycsXHJcbiAgICAgIG50bG06IHRydWVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIHNldEF1dGhQcm9maWxlKHByb2ZpbGU/OiBBdXRoUHJvZmlsZSkge1xyXG4gICAgaWYgKHByb2ZpbGUpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzID0gdGhpcy5zZXREZWZhdWx0SGVhZGVycygpO1xyXG4gICAgICB0aGlzLmF1dGhQcm9maWxlID0gcHJvZmlsZTtcclxuICAgICAgaWYgKHRoaXMuYXV0aFByb2ZpbGUuYXV0aCkge1xyXG4gICAgICAgIC8vIHRoaXMuc2V0SGVhZGVyKCdBdXRob3JpemF0aW9uJywgdGhpcy5hdXRoUHJvZmlsZS5hdXRoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmhlYWRlcnMuZGVsZXRlKCdBdXRob3JpemF0aW9uJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBuZXcgaGVhZGVyLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGhlYWRlcnMgbmFtZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0SGVhZGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuaGVhZGVycy5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgaGVhZGVyc1xyXG4gICAqIEByZXR1cm5zIFRoZSBgSHR0cEhlYWRlcnNgIHRoYXQgYXJlIGN1cnJlbnRseSBzZXQgdXBcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SGVhZGVycygpOiBIdHRwSGVhZGVycyB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogSHR0cE9wdGlvbnMge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe2hlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLCB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHN9LCByZXF1ZXN0T3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIERNUy1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VydmljZUJhc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ3NlcnZpY2VCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIFNlYXJjaC1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VhcmNoQmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnc2VhcmNoQmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBDb250ZXh0LVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDb250ZXh0QmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnY29udGV4dEJhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgSW5ib3gtU2VydmljZSBlbmRwb2ludFxyXG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXHJcbiAgICovXHJcbiAgcHVibGljIGdldEluYm94QmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnaW5ib3hCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIEJQTS1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0QnBtQmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnYnBtQmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBBZ2VudC1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0QWdlbnRCYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdhZ2VudEJhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgU3RhdHVzLVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTdGF0dXNCYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdzdGF0dXNCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIGdldEljb25CYXNlKGlkOiBzdHJpbmcgPSAnJykge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VydmljZUJhc2UoKSArICcvdWkvaWNvbi8nICsgaWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIGdldEhvc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoUHJvZmlsZS5ob3N0IHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV3JhcHBlZCBIVFRQIEdFVCBtZXRob2RcclxuICAgKiBAcGFyYW0gdXJpIFRoZSBSRVNUIFVSSSB0byBiZSBxdWVyaWVkXHJcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcclxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcclxuICAgKiBAcmV0dXJucyBUaGUgZGF0YSByZXRyaWV2ZWQgZnJvbSB0aGUgZ2l2ZW4gZW5kcG9pbnRcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0KHVyaTogc3RyaW5nLCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KChiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKSkgKyB1cmksIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyYXBwZWQgSFRUUCBQVVQgbWV0aG9kXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXHJcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSAncG9zdGVkJ1xyXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXHJcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXHJcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IFBVVCBlbmRwb2ludFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXQodXJpOiBzdHJpbmcsIGRhdGE/OiBhbnksIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoKGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpKSArIHVyaSwgZGF0YSwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRKc29uKHVyaTogc3RyaW5nLCBiYXNlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmdldCh1cmksIGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpLCB7cmVzcG9uc2VUeXBlOiAnanNvbid9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyYXBwZWQgSFRUUCBQT1NUIG1ldGhvZFxyXG4gICAqIEBwYXJhbSB1cmkgVGhlIHRhcmdldCBSRVNUIFVSSVxyXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgJ3Bvc3RlZCdcclxuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBQT1NUIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHVibGljIHBvc3QodXJpOiBzdHJpbmcsIGRhdGE/LCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJhc2VVcmkgPSBiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiAnJztcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtiYXNlVXJpfSR7dXJpfWAsIHBheWxvYWQsIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm1zIGEgbXVsdGlwYXJ0IGZvcm0gZGF0YSBQT1NUIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXHJcbiAgICogQHBhcmFtIGZvcm1EYXRhIEZvcm1EYXRhIHRvIGJlICdwb3N0ZWQnXHJcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcclxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgUE9TVCBlbmRwb2ludFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwb3N0TXVsdGlQYXJ0KHVyaTogc3RyaW5nLCBmb3JtRGF0YTogRm9ybURhdGEsIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYmFzZVVyaSA9IGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuZ2V0SGVhZGVycygpO1xyXG4gICAgaGVhZGVycy5kZWxldGUoJ0NvbnRlbnQtVHlwZScpO1xyXG4gICAgY29uc3QgcmVxT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe2hlYWRlcnM6IGhlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30sIHJlcXVlc3RPcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtiYXNlVXJpfSR7dXJpfWAsIGZvcm1EYXRhLCByZXFPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyYXBwZWQgSFRUUCBERUxFVEUgbWV0aG9kXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXHJcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcclxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgREVMRVRFIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHVibGljIGRlbCh1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSgoYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCkpICsgdXJpLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICogU29mdCB1cGRhdGUgZm9yIGxpc3RzIC0gZW5hYmxlcyBncmlkIHRvIGhhbmRsZSBhbGwgY2hhbmdlc1xyXG4gICAqIHRvIGFkZCBuZXcgLSBvbmx5IGl0ZW0gc2hvdWxkIGJlIHNwZWNpZmllZFxyXG4gICAqIHRvIHJlbW92ZSAtIG9ubHkgaWQgc2hvdWxkIGJlIHNwZWNpZmllZFxyXG4gICAqIHRvIHVwZGF0ZSAtIGJvdGggcGFyYW1zIHNob3VsZCBiZSBzcGVjaWZpZWRcclxuICAgKlxyXG4gICAqIEBwYXJhbSBhbnlbXSBsaXN0IE9yaWdpbmFsIGxpc3Qgb2YgaXRlbXNcclxuICAgKiBAcGFyYW0gaWQ/OiBzdHJpbmc7IGl0ZW0/OiBhbnkgZGF0YVtdXHJcbiAgICogQHJldHVybnMgYW55W11cclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlKGxpc3Q6IGFueVtdLCBkYXRhOiB7aWQ/OiBzdHJpbmcsIGl0ZW0/OiBhbnl9W10pIHtcclxuICAgIGRhdGEuZm9yRWFjaCgoe2lkLCBpdGVtfSkgPT4ge1xyXG4gICAgICBpZiAoaWQpIHtcclxuICAgICAgICBjb25zdCBfaXRlbSA9IGxpc3QuZmluZChsID0+IGwuaWQgPT09IGlkKTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKF9pdGVtLCBpdGVtLCBpdGVtID8ge19fdXBkYXRlZDogdHJ1ZX0gOiB7X19yZW1vdmVkOiB0cnVlfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbSkge1xyXG4gICAgICAgIGxpc3QudW5zaGlmdChPYmplY3QuYXNzaWduKGl0ZW0sIHtfX2FkZGVkOiB0cnVlfSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqIENhY2hlIGZvciBzbWFsbCByZXF1ZXN0cyBsaWtlIGljb25zIGFuZCBjb25maWdzXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIHVyaVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRWaWFDYWNoZSh1cmk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAodGhpcy5jYWNoZS5oYXModXJpKSkge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuY2FjaGUuZ2V0KHVyaSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmlhVGVtcENhY2hlKHVyaSwgKCkgPT4gdGhpcy5odHRwLmdldCh1cmksIHt3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHMsIHJlc3BvbnNlVHlwZTogJ3RleHQnfSkucGlwZShcclxuICAgICAgICB0YXAodGV4dCA9PiB0aGlzLmNhY2hlLnNldCh1cmksIHRleHQpKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqIFRlbXBvcmFyeSBDYWNoZSBmb3IgbXVsdGlwbGUgaWRlbnRpY2FsIHJlcXVlc3RzXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIGlkXHJcbiAgICogQHBhcmFtIEZ1bmN0aW9uIHJlcXVlc3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VmlhVGVtcENhY2hlKGlkOiBzdHJpbmcsIHJlcXVlc3Q/OiBGdW5jdGlvbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAodGhpcy50ZW1wLmhhcyhpZCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudGVtcC5nZXQoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcmVzcCA9IChyZXF1ZXN0ID8gcmVxdWVzdCgpIDogdGhpcy5nZXQoaWQpKS5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMudGVtcC5kZWxldGUoaWQpKSxcclxuICAgICAgICBzaGFyZVJlcGxheSgxKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnRlbXAuc2V0KGlkLCByZXNwKTtcclxuICAgICAgcmV0dXJuIHJlc3A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEb3dubG9hZCB0aGUgY29udGVudCBvZiBkbXMgb2JqZWN0cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3RbXSBkbXNPYmplY3RzIEFycmF5IG9mIGRtcyBvYmplY3RzIHRvIGJlIGRvd25sb2FkZWRcclxuICAgKiBAcGFyYW0gXCJQREZcIiB8IFwiVElGRlwiIHwgXCJURVhUXCIgfCBcIkpQRUdcIiByZW5kaXRpb24gVGhlIHR5cGUgb2YgcmVuZGl0aW9uIHRvIGJlIGRvd25sb2FkZWQuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBvcmlnaW5hbCBjb250ZW50IHdpbGwgYmUgZG93bmxvYWRlZC5cclxuICAgKiBQb3NzaWJsZSByZW5kaXRpb25zIGFyZSBgUERGYCwgYFRJRkZgLCBgVEVYVGAsIGBKUEVHYC5cclxuICAgKi9cclxuICBwdWJsaWMgZG93bmxvYWRDb250ZW50KGRtc09iamVjdHM6IERtc09iamVjdFtdLCByZW5kaXRpb24/OiAnUERGJyB8ICdUSUZGJyB8ICdURVhUJyB8ICdKUEVHJywgZmlsZU5hbWVXaXRoVmVyc2lvbk51bWJlcj86IGJvb2xlYW4pIHtcclxuXHJcbiAgICBkbXNPYmplY3RzLmZvckVhY2goZG1zT2JqZWN0ID0+IHtcclxuICAgICAgaWYgKGRtc09iamVjdC5jb250ZW50KSB7XHJcblxyXG4gICAgICAgIGxldCB1cmkgPSBgJHt0aGlzLmdldFNlcnZpY2VCYXNlKCl9L2Rtcy8ke2Rtc09iamVjdC5jb250ZW50LmlkfS9jb250ZW50P3R5cGU9JHtkbXNPYmplY3QuY29udGVudC50eXBlfSZhc2Rvd25sb2FkPXRydWVgO1xyXG4gICAgICAgIGlmIChyZW5kaXRpb24pIHtcclxuICAgICAgICAgIHVyaSArPSBgJnJlbmRpdGlvbj0ke3JlbmRpdGlvbn0mX2ludGVudD1ET1dOTE9BRF8ke3JlbmRpdGlvbn1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB1cmkgKz0gJyZfaW50ZW50PURPV05MT0FEJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRtc09iamVjdC5jb250ZW50LmlkID09PSBkbXNPYmplY3QuaWQpIHtcclxuICAgICAgICAgIHVyaSArPSBgJnZlcnNpb249JHtkbXNPYmplY3QudmVyc2lvbn1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvd25sb2FkKHVyaSwgZmlsZU5hbWVXaXRoVmVyc2lvbk51bWJlciA/IGRtc09iamVjdC52ZXJzaW9uIDogbnVsbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ1RoZSBwcm92aWRlZCBkbXMgb2JqZWN0IGhhcyBubyBjb250ZW50JywgZG1zT2JqZWN0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWQodXJpOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpIHtcclxuICAgIHRoaXMuaHR0cC5nZXQodXJpLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnYmxvYicsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoXHJcbiAgICAgICAgICByZXMuYm9keSxcclxuICAgICAgICAgIHRoaXMuZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlcywgdmVyc2lvbilcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlczogSHR0cFJlc3BvbnNlPGFueT4sIHZlcnNpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgY29udGVudERpc3Bvc2l0aW9uSGVhZGVyID0gcmVzLmhlYWRlcnMuZ2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJykgfHwgJyc7XHJcbiAgICBjb25zdCBlbmNvZGVkRmlsZU5hbWVNYXRjaFJlc3VsdCA9IGNvbnRlbnREaXNwb3NpdGlvbkhlYWRlci5tYXRjaCgnZmlsZW5hbWVcXFxcKj1VVEYtOFxcJ1xcJyguKiknKVxyXG4gICAgICB8fCBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIubWF0Y2goJ2ZpbGVuYW1lPVxcXCIoLiopXFxcIicpO1xyXG4gICAgY29uc3QgZW5jb2RlZEZpbGVOYW1lID0gZW5jb2RlZEZpbGVOYW1lTWF0Y2hSZXN1bHQgPyBlbmNvZGVkRmlsZU5hbWVNYXRjaFJlc3VsdFsxXSA6IG51bGw7XHJcbiAgICBjb25zdCBmaWxlbmFtZSA9IGVuY29kZWRGaWxlTmFtZSA/IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkRmlsZU5hbWUpIDogJ3Vua25vd24nO1xyXG4gICAgY29uc3QgaW5kZXggPSAhfmZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgPyBmaWxlbmFtZS5sZW5ndGggOiBmaWxlbmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgcmV0dXJuICF2ZXJzaW9uID8gZmlsZW5hbWUgOiBgJHtmaWxlbmFtZS5zbGljZSgwLCBpbmRleCl9X3Yke3ZlcnNpb259JHtmaWxlbmFtZS5zbGljZShpbmRleCl9YDtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBIVFRQIEhlYWRlcnNcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIEh0dHBIZWFkZXJzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0SGVhZGVycygpOiBIdHRwSGVhZGVycyB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ1gtb3MtaW5jbHVkZS1saW5rcyc6ICdmYWxzZScsXHJcbiAgICAgICdYLW9zLWluY2x1ZGUtYWN0aW9ucyc6ICdmYWxzZScsXHJcbiAgICAgICdYLW9zLXN5bmMtaW5kZXgnOiAndHJ1ZSdcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|