ng-pli-commons 1.0.12 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/backoffice.commons.component.mjs +1 -1
- package/esm2022/lib/components/common.lists.component.mjs +1 -19
- package/esm2022/lib/components/configuration-token/configuration-token.component.mjs +2 -2
- package/esm2022/lib/components/configuration.commons.component.mjs +1 -1
- package/esm2022/lib/components/frontoffice.commons.component.mjs +4 -2
- package/esm2022/lib/services/common.service.mjs +4 -10
- package/esm2022/lib/services/send-application.service.mjs +1 -9
- package/esm2022/lib/services/token.service.mjs +72 -1
- package/esm2022/version.mjs +8 -8
- package/fesm2022/ng-pli-commons.mjs +1611 -1567
- package/fesm2022/ng-pli-commons.mjs.map +1 -1
- package/lib/components/backoffice.commons.component.d.ts +1 -1
- package/lib/components/common.lists.component.d.ts +0 -1
- package/lib/components/configuration.commons.component.d.ts +1 -1
- package/lib/services/common.service.d.ts +1 -7
- package/lib/services/send-application.service.d.ts +1 -2
- package/lib/services/token.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -67,7 +67,9 @@ export class FrontofficeCommonsComponent extends CommonListsComponent {
|
|
|
67
67
|
* @returns True if actual date is before than end application date and the stateAppId is equals of the cnfIniStateId
|
|
68
68
|
*/
|
|
69
69
|
async validateCloseApplicationProcess(cnfIniStateId) {
|
|
70
|
-
let response = await this.commonService
|
|
70
|
+
let response = await this.commonService
|
|
71
|
+
.validateCloseApplicationProcess(this.promCodigo, this.stateId, cnfIniStateId)
|
|
72
|
+
.toPromise();
|
|
71
73
|
this.dateClose = response.closeApplicationDate;
|
|
72
74
|
return new Promise((resolve) => {
|
|
73
75
|
resolve(response.userAllowSave);
|
|
@@ -83,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
83
85
|
template: ''
|
|
84
86
|
}]
|
|
85
87
|
}], ctorParameters: () => [{ type: i1.CommonService }, { type: i0.ChangeDetectorRef }] });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRvZmZpY2UuY29tbW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wbGktY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZnJvbnRvZmZpY2UuY29tbW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFxQixzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBTXhFLE1BQU0sT0FBZ0IsMkJBQTRCLFNBQVEsb0JBQW9CO0lBUTdFLFlBQXNCLGFBQTRCLEVBQVksS0FBd0I7UUFDckYsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQURQLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVksVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFQdEYsa0JBQWEsR0FBVyxLQUFLLENBQUM7SUFTOUIsQ0FBQztJQUVELFFBQVE7UUFDUCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGtDQUFrQyxDQUNqQyxhQUFxQixFQUNyQixNQUF5QixFQUN6QixjQUF1QixFQUN2QixjQUFzQixTQUFTLEVBQy9CLGdCQUF3QixTQUFTLEVBQ2pDLGlCQUF5QixTQUFTO1FBRWxDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDN0MsTUFBTSxFQUNOLGNBQWMsRUFDZCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGNBQWMsQ0FDZCxDQUFDO1FBQ0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDMUIsTUFBTSw0QkFBNEIsR0FBRztZQUNwQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsc0JBQXNCO1lBQ3hELGFBQWEsRUFBRSxhQUFhO1lBQzVCLGNB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uSW5pdCwgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25MaXN0c0NvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uLmxpc3RzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uQnVkZ2V0LCBBcHBsaWNhdGlvbkJ1ZGdldFRvdGFsIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtZnJvbnRvZmZpY2UtY29tbW9ucycsXHJcblx0dGVtcGxhdGU6ICcnXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGcm9udG9mZmljZUNvbW1vbnNDb21wb25lbnQgZXh0ZW5kcyBDb21tb25MaXN0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0dG9hc3REdXJhdGlvbjogbnVtYmVyID0gMTAwMDA7XHJcblx0Ly8gVHJ1ZSBJZiBhY3R1YWwgZGF0ZSBpcyBiZWZvcmUgdGhhbiBlbmQgYXBwbGljYXRpb24gZGF0ZVxyXG5cdGRhdGVDbG9zZTogYm9vbGVhbjtcclxuXHRwcm9tQ29kaWdvOiBudW1iZXI7XHJcblx0c3RhdGVJZDogbnVtYmVyO1xyXG5cdHN0YXRlTmFtZTogc3RyaW5nO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSwgcHJvdGVjdGVkIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0c3VwZXIoY29tbW9uU2VydmljZSwgY2RSZWYpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xyXG5cdH1cclxuXHJcblx0Y3JlYXRlQXBwbGljYXRpb25CdWRnZXRUb3RhbEFtb3VudChcclxuXHRcdGFwcGxpY2F0aW9uSWQ6IHN0cmluZyxcclxuXHRcdGJ1ZGdldDogQXBwbGljYXRpb25CdWRnZXQsXHJcblx0XHRjcmVkaXRBY2NlcHRlZDogYm9vbGVhbixcclxuXHRcdHRvdGFsQW1vdW50OiBudW1iZXIgPSB1bmRlZmluZWQsXHJcblx0XHR0b3RhbE93bkZ1bmRzOiBudW1iZXIgPSB1bmRlZmluZWQsXHJcblx0XHR0b3RhbEZpbmFuY2luZzogbnVtYmVyID0gdW5kZWZpbmVkXHJcblx0KTogYW55IHtcclxuXHRcdGNvbnN0IGJ1ZGdldEFwcCA9IHRoaXMuY3JlYXRlQnVkZ2V0QXBwbGljYXRpb24oXHJcblx0XHRcdGJ1ZGdldCxcclxuXHRcdFx0Y3JlZGl0QWNjZXB0ZWQsXHJcblx0XHRcdHRvdGFsQW1vdW50LFxyXG5cdFx0XHR0b3RhbE93bkZ1bmRzLFxyXG5cdFx0XHR0b3RhbEZpbmFuY2luZ1xyXG5cdFx0KTtcclxuXHRcdGJ1ZGdldCA9IGJ1ZGdldEFwcC5idWRnZXQ7XHJcblx0XHRjb25zdCBhcHBsaWNhdGlvbkJ1ZGdldFRvdGFsQW1vdW50ID0ge1xyXG5cdFx0XHRhcHBsaWNhdGlvbkJ1ZGdldFRvdGFsOiBidWRnZXRBcHAuYXBwbGljYXRpb25CdWRnZXRUb3RhbCxcclxuXHRcdFx0YXBwbGljYXRpb25JZDogYXBwbGljYXRpb25JZCxcclxuXHRcdFx0Y3JlZGl0QWNjZXB0ZWQ6IGNyZWRpdEFjY2VwdGVkXHJcblx0XHR9O1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0YXBwbGljYXRpb25CdWRnZXRUb3RhbEFtb3VudDogYXBwbGljYXRpb25CdWRnZXRUb3RhbEFtb3VudCxcclxuXHRcdFx0YnVkZ2V0OiBidWRnZXRcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRjcmVhdGVCdWRnZXRBcHBsaWNhdGlvbihcclxuXHRcdGJ1ZGdldDogQXBwbGljYXRpb25CdWRnZXQsXHJcblx0XHRjcmVkaXRBY2NlcHRlZDogYm9vbGVhbixcclxuXHRcdHRvdGFsQW1vdW50OiBudW1iZXIgPSB1bmRlZmluZWQsXHJcblx0XHR0b3RhbE93bkZ1bmRzOiBudW1iZXIgPSB1bmRlZmluZWQsXHJcblx0XHR0b3RhbEZpbmFuY2luZzogbnVtYmVyID0gdW5kZWZpbmVkXHJcblx0KTogYW55IHtcclxuXHRcdC8vIENob29zZSBpZiB0aGUgdG90YWwgYnVkZ2V0IGlzIGZyb20gYXBwbGljYXRpb24gb3IgbGVnYWxpemF0aW9uIHByb2Nlc3NcclxuXHRcdGNvbnN0IGlzQXBwbGljYXRpb25Qcm9jZXNzID0gY3JlZGl0QWNjZXB0ZWQgPT0gdW5kZWZpbmVkIHx8IGNyZWRpdEFjY2VwdGVkID09IGZhbHNlO1xyXG5cdFx0bGV0IGFwcFByb2Nlc3NCdWRnZXRUb3RhbCA9IGlzQXBwbGljYXRpb25Qcm9jZXNzXHJcblx0XHRcdD8gYnVkZ2V0LmFwcGxpY2F0aW9uUHJvY2Vzc1xyXG5cdFx0XHQ6IGJ1ZGdldC5sZWdhbGl6YXRpb25Qcm9jZXNzO1xyXG5cdFx0Ly8gSW5pdCB0aGUgYW1vdW50IG9yIGFkZCBuZXcgdmFsdWVzXHJcblx0XHRpZiAoYXBwUHJvY2Vzc0J1ZGdldFRvdGFsID09IHVuZGVmaW5lZCB8fCBhcHBQcm9jZXNzQnVkZ2V0VG90YWwgPT0gbnVsbCkge1xyXG5cdFx0XHR0b3RhbEFtb3VudCA9IHRvdGFsQW1vdW50ID09IHVuZGVmaW5lZCA/IDAgOiB0b3RhbEFtb3VudDtcclxuXHRcdFx0dG90YWxPd25GdW5kcyA9IHRvdGFsT3duRnVuZHMgPT0gdW5kZWZpbmVkID8gMCA6IHRvdGFsT3duRnVuZHM7XHJcblx0XHRcdHRvdGFsRmluYW5jaW5nID0gdG90YWxGaW5hbmNpbmcgPT0gdW5kZWZpbmVkID8gMCA6IHRvdGFsRmluYW5jaW5nO1xyXG5cdFx0XHRhcHBQcm9jZXNzQnVkZ2V0VG90YWwgPSBuZXcgQXBwbGljYXRpb25CdWRnZXRUb3RhbCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dG90YWxBbW91bnQgPVxyXG5cdFx0XHRcdHRvdGFsQW1vdW50ID09IHVuZGVmaW5lZCA/IGFwcFByb2Nlc3NCdWRnZXRUb3RhbC50b3RhbEFtb3VudCA6IHRvdGFsQW1vdW50O1xyXG5cdFx0XHR0b3RhbE93bkZ1bmRzID1cclxuXHRcdFx0XHR0b3RhbE93bkZ1bmRzID09IHVuZGVmaW5lZCA/IGFwcFByb2Nlc3NCdWRnZXRUb3RhbC50b3RhbE93bkZ1bmRzIDogdG90YWxPd25GdW5kcztcclxuXHRcdFx0dG90YWxGaW5hbmNpbmcgPVxyXG5cdFx0XHRcdHRvdGFsRmluYW5jaW5nID09IHVuZGVmaW5lZCA/IGFwcFByb2Nlc3NCdWRnZXRUb3RhbC50b3RhbEZpbmFuY2luZyA6IHRvdGFsRmluYW5jaW5nO1xyXG5cdFx0fVxyXG5cdFx0YXBwUHJvY2Vzc0J1ZGdldFRvdGFsLnRvdGFsQW1vdW50ID0gdG90YWxBbW91bnQ7XHJcblx0XHRhcHBQcm9jZXNzQnVkZ2V0VG90YWwudG90YWxPd25GdW5kcyA9IHRvdGFsT3duRnVuZHM7XHJcblx0XHRhcHBQcm9jZXNzQnVkZ2V0VG90YWwudG90YWxGaW5hbmNpbmcgPSB0b3RhbEZpbmFuY2luZztcclxuXHRcdGlmIChpc0FwcGxpY2F0aW9uUHJvY2Vzcykge1xyXG5cdFx0XHRidWRnZXQuYXBwbGljYXRpb25Qcm9jZXNzID0gYXBwUHJvY2Vzc0J1ZGdldFRvdGFsO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0YnVkZ2V0LmxlZ2FsaXphdGlvblByb2Nlc3MgPSBhcHBQcm9jZXNzQnVkZ2V0VG90YWw7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRhcHBsaWNhdGlvbkJ1ZGdldFRvdGFsOiBhcHBQcm9jZXNzQnVkZ2V0VG90YWwsXHJcblx0XHRcdGJ1ZGdldDogYnVkZ2V0XHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbCB0aGUgdmFsaWRhdGFpb24gc2VydmljZVxyXG5cdCAqIEBwYXJhbSBjbmZJbmlTdGF0ZUlkIEluaXRpYWwgY29uZmlnIHN0YXR1cyBpZCwgaWYgbm90IGV4aXN0LCBnZXQgdGhlIGNvbmZpZyBzdGF0dXMgaWQgZnJvbSB0aGUgc2VydmljZVxyXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgYWN0dWFsIGRhdGUgaXMgYmVmb3JlIHRoYW4gZW5kIGFwcGxpY2F0aW9uIGRhdGUgYW5kIHRoZSBzdGF0ZUFwcElkIGlzIGVxdWFscyBvZiB0aGUgY25mSW5pU3RhdGVJZFxyXG5cdCAqL1xyXG5cdGFzeW5jIHZhbGlkYXRlQ2xvc2VBcHBsaWNhdGlvblByb2Nlc3MoY25mSW5pU3RhdGVJZD86IG51bWJlcik6IFByb21pc2U8YW55PiB7XHJcblx0XHRsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbW1vblNlcnZpY2VcclxuXHRcdFx0LnZhbGlkYXRlQ2xvc2VBcHBsaWNhdGlvblByb2Nlc3ModGhpcy5wcm9tQ29kaWdvLCB0aGlzLnN0YXRlSWQsIGNuZkluaVN0YXRlSWQpXHJcblx0XHRcdC50b1Byb21pc2UoKTtcclxuXHRcdHRoaXMuZGF0ZUNsb3NlID0gcmVzcG9uc2UuY2xvc2VBcHBsaWNhdGlvbkRhdGU7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHRcdFx0cmVzb2x2ZShyZXNwb25zZS51c2VyQWxsb3dTYXZlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -5,17 +5,11 @@ import { Moneda, Rubro, TasaCambio, DateUtil, Proceso } from 'ng-pli-util';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/common/http";
|
|
7
7
|
import * as i2 from "./tasa.cambio.service";
|
|
8
|
-
import * as i3 from "./ppp.service";
|
|
9
|
-
import * as i4 from "./status.service";
|
|
10
|
-
import * as i5 from "./configuration.service";
|
|
11
8
|
export class CommonService {
|
|
12
|
-
constructor(environment, httpClient, tasaCambioService
|
|
9
|
+
constructor(environment, httpClient, tasaCambioService) {
|
|
13
10
|
this.environment = environment;
|
|
14
11
|
this.httpClient = httpClient;
|
|
15
12
|
this.tasaCambioService = tasaCambioService;
|
|
16
|
-
this.pppService = pppService;
|
|
17
|
-
this.statusService = statusService;
|
|
18
|
-
this.configurationService = configurationService;
|
|
19
13
|
this.headerJson = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };
|
|
20
14
|
/** Notify when the currencies info change */
|
|
21
15
|
this.currencyChanged = new BehaviorSubject(undefined);
|
|
@@ -276,7 +270,7 @@ export class CommonService {
|
|
|
276
270
|
params
|
|
277
271
|
});
|
|
278
272
|
}
|
|
279
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommonService, deps: [{ token: 'environment' }, { token: i1.HttpClient }, { token: i2.TasaCambioService }
|
|
273
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommonService, deps: [{ token: 'environment' }, { token: i1.HttpClient }, { token: i2.TasaCambioService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
280
274
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommonService, providedIn: 'root' }); }
|
|
281
275
|
}
|
|
282
276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommonService, decorators: [{
|
|
@@ -287,5 +281,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
287
281
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
288
282
|
type: Inject,
|
|
289
283
|
args: ['environment']
|
|
290
|
-
}] }, { type: i1.HttpClient }, { type: i2.TasaCambioService }
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wbGktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUVSLE9BQU8sRUFJUCxNQUFNLGFBQWEsQ0FBQzs7Ozs7OztBQVNyQixNQUFNLE9BQU8sYUFBYTtJQXVCekIsWUFDZ0MsV0FBZ0IsRUFDdkMsVUFBc0IsRUFDdEIsaUJBQW9DLEVBQ3BDLFVBQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLG9CQUEwQztRQUxuQixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUN2QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBNUIzQyxlQUFVLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUYsNkNBQTZDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVcsU0FBUyxDQUFDLENBQUM7UUFHM0QsNkNBQTZDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsU0FBUyxDQUFDLENBQUM7UUFHMUQsZ0RBQWdEO1FBQ2hELHdC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QWE7bUhBeEJWLGFBQWEsY0FGYixNQUFNOzs0RkFFTixhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBeUJFLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcblx0TW9uZWRhLFxyXG5cdFJ1YnJvLFxyXG5cdFRhc2FDYW1iaW8sXHJcblx0RGF0ZVV0aWwsXHJcblx0SWRpb21hLFxyXG5cdFByb2Nlc28sXHJcblx0UmVxdWVzdFBkZixcclxuXHRFQ2F0ZWdvcnlTdGF0dXMsXHJcblx0UGxpQ25mU3RhdHVzXHJcbn0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBUYXNhQ2FtYmlvU2VydmljZSB9IGZyb20gJy4vdGFzYS5jYW1iaW8uc2VydmljZSc7XHJcbmltcG9ydCB7IFN0YXR1c1NlcnZpY2UgfSBmcm9tICcuL3N0YXR1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBwcFNlcnZpY2UgfSBmcm9tICcuL3BwcC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vblNlcnZpY2Uge1xyXG5cdHByaXZhdGUgaGVhZGVySnNvbiA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSB9O1xyXG5cdC8qKiBOb3RpZnkgd2hlbiB0aGUgY3VycmVuY2llcyBpbmZvIGNoYW5nZSAqL1xyXG5cdGN1cnJlbmN5Q2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TW9uZWRhW10+KHVuZGVmaW5lZCk7XHJcblx0LyoqIExpc3Qgb2YgY3VycmVuY3kgKi9cclxuXHRwcml2YXRlIGxDdXJyZW5jeTogTW9uZWRhW107XHJcblx0LyoqIE5vdGlmeSB3aGVuIHRoZSBjYXRlZ29yaWVzIGluZm8gY2hhbmdlICovXHJcblx0Y2F0ZWdvcnlDaGFuZ2VkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSdWJyb1tdPih1bmRlZmluZWQpO1xyXG5cdC8qKiBMaXN0IG9mIGN1cnJlbmN5ICovXHJcblx0cHJpdmF0ZSBsQ2F0ZWdvcnk6IFJ1YnJvW107XHJcblx0LyoqIE5vdGlmeSB3aGVuIHRoZSBleGNoYW5nZSByYXRlIGluZm8gY2hhbmdlICovXHJcblx0ZXhjaGFuZ2VSYXRlQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFzYUNhbWJpb1tdPih1bmRlZmluZWQpO1xyXG5cdC8qKiBMaXN0IG9mIGV4Y2hhbmdlIHJhdGUgKi9cclxuXHRwcml2YXRlIGxFeGNoYW5nZVJhdGU6IFRhc2FDYW1iaW9bXTtcclxuXHQvKiogTm90aWZ5IHdoZW4gdGhlIGlkaW9tYSBoYXMgY2hhbmdlZCAqL1xyXG5cdGxhbmd1YWdlQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SWRpb21hW10+KHVuZGVmaW5lZCk7XHJcblx0LyoqIExpc3Qgb2YgZXhjaGFuZ2UgcmF0ZSAqL1xyXG5cdHByaXZhdGUgbExhbmd1YWdlOiBJZGlvbWFbXTtcclxuXHQvKiogTm90aWZ5IHdoZW4gdGhlIHByb2Nlc3MgaW5mbyBjaGFuZ2UgKi9cclxuXHRwcm9jZXNzQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJvY2Vzb1tdPih1bmRlZmluZWQpO1xyXG5cdC8qKiBMaXN0IG9mIHByb2Nlc3MgKi9cclxuXHRwcml2YXRlIGxQcm9jZXNzOiBQcm9jZXNvW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksXHJcblx0XHRwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIHRhc2FDYW1iaW9TZXJ2aWNlOiBUYXNhQ2FtYmlvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcHBwU2VydmljZTogUHBwU2VydmljZSxcclxuXHRcdHByaXZhdGUgc3RhdHVzU2VydmljZTogU3RhdHVzU2VydmljZSxcclxuXHRcdHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlXHJcblx0KSB7XHJcblx0XHR0aGlzLmluaXRWYWx1ZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKiAgSXQgaGFzIGFuIG9ic2VydmFibGUgdG8gbm90aWZ5IGlmIHRoZSBsYW5ndWFnZSBpcyBjaGFuZ2VkICovXHJcblx0b25MYW5ndWFnZUNoYW5nZWQoKTogT2JzZXJ2YWJsZTxJZGlvbWFbXT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMubGFuZ3VhZ2VDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqICBJdCBoYXMgYW4gb2JzZXJ2YWJsZSB0byBub3RpZnkgaWYgdGhlIGNhdGVvZ3J5IGlzIGNoYW5nZWQgKi9cclxuXHRvbkN1cnJlbmN5Q2hhbmdlZCgpOiBPYnNlcnZhYmxlPE1vbmVkYVtdPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jdXJyZW5jeUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XHJcblx0fVxyXG5cclxuXHQvKiogIEl0IGhhcyBhbiBvYnNlcnZhYmxlIHRvIG5vdGlmeSBpZiB0aGUgY2F0ZWdvcnkgaXMgY2hhbmdlZCAqL1xyXG5cdG9uQ2F0ZWdvcnlDaGFuZ2VkKCk6IE9ic2VydmFibGU8UnVicm9bXT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2F0ZWdvcnlDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqICBJdCBoYXMgYW4gb2JzZXJ2YWJsZSB0byBub3RpZnkgaWYgdGhlIGV4Y2hhbmdlIHJhdGUgaXMgY2hhbmdlZCAqL1xyXG5cdG9uRXhjaGFuZ2VSYXRlQ2hhbmdlZCgpOiBPYnNlcnZhYmxlPFRhc2FDYW1iaW9bXT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZXhjaGFuZ2VSYXRlQ2hhbmdlZC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdC8qKiAgSXQgaGFzIGFuIG9ic2VydmFibGUgdG8gbm90aWZ5IGlmIHRoZSBsaXN0IG9mIHByb2Nlc3MgaXMgY2hhbmdlZCAqL1xyXG5cdG9uUHJvY2Vzc0NoYW5nZWQoKTogT2JzZXJ2YWJsZTxQcm9jZXNvW10+IHtcclxuXHRcdHJldHVybiB0aGlzLnByb2Nlc3NDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2VhcmNoIHRoZSBpbmZvIG9mIHRoZSB2YXJpYWJsZXMsIGZpcnN0IHRyeSB0byBzZWFyY2ggaW4gdGhlIGxvY2FsIHN0b3JhZ2UsXHJcblx0ICogaWYgbm90IGZpbmQgaW5mbywgZ2V0IHRoZSBpbmZvIGZyb20gdGhlIHNlcnZpY2VzXHJcblx0ICovXHJcblx0aW5pdFZhbHVlcygpIHtcclxuXHRcdHRoaXMuc2VhcmNoTEN1cnJlbmN5KCk7XHJcblx0XHR0aGlzLnNlYXJjaExDYXRlZ29yeSgpO1xyXG5cdFx0dGhpcy5zZWFyY2hMRXhjaGFuZ2VSYXRlKCk7XHJcblx0XHR0aGlzLnNlYXJjaExMYW5ndWFnZSgpO1xyXG5cdFx0dGhpcy5zZWFyY2hMUHJvY2VzcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlIGFsbCB2YXJpYWJsZXMgb2YgdGhlIGxvY2FsIHN0b3JhZ2VcclxuXHQgKi9cclxuXHRyZWxvYWRWYWx1ZXMoKSB7XHJcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbEN1cnJlbmN5Jyk7XHJcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbENhdGVnb3J5Jyk7XHJcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbEV4Y2hhbmdlUmF0ZScpO1xyXG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xMYW5ndWFnZScpO1xyXG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xQcm9jZXNzJyk7XHJcblx0fVxyXG5cclxuXHQvKiogU2VhcmNoIGxpc3Qgb2YgY3VycmVuY2llcyAqL1xyXG5cdGdldExhbmd1YWdlcygpIHtcclxuXHRcdHRoaXMuaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PElkaW9tYVtdPih0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5wbGlzICsgJ2lkaW9tYS9nZXRBbGwnKVxyXG5cdFx0XHQuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChsTGFuZ3VhZ2U6IElkaW9tYVtdKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnNldExMYW5ndWFnZShsTGFuZ3VhZ2UpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciAtIGdldExpc3RDdXJyZW5jaWVzIC1FbCBzaXN0ZW1hIG5vIHJlc3BvbmRlJywgZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBTZWFyY2ggbGlzdCBvZiBjdXJyZW5jaWVzICovXHJcblx0Z2V0Q3VycmVuY2llcygpIHtcclxuXHRcdHRoaXMuaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PE1vbmVkYVtdPih0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5wbGlzICsgJ21vbmVkYS9nZXRBbGwnKVxyXG5cdFx0XHQuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChsQ3VycmVuY3k6IE1vbmVkYVtdKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnNldExDdXJyZW5jaWVzKGxDdXJyZW5jeSk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIC0gZ2V0TGlzdEN1cnJlbmNpZXMgLUVsIHNpc3RlbWEgbm8gcmVzcG9uZGUnLCBlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIFNlYXJjaCBsaXN0IG9mIGNhdGVnb3JpZXMgKi9cclxuXHRnZXRDYXRlZ29yaWVzKCkge1xyXG5cdFx0dGhpcy5odHRwQ2xpZW50XHJcblx0XHRcdC5nZXQ8UnVicm9bXT4odGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQucGxpcyArICdydWJyby9nZXRBbGwnLCB7XHJcblx0XHRcdFx0cGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnY2FyZ2FyTGlzdGFzJywgJ3RydWUnKVxyXG5cdFx0XHR9KVxyXG5cdFx0XHQuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChsQ2F0ZWdvcnk6IFJ1YnJvW10pID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuc2V0TENhdGVnb3J5KGxDYXRlZ29yeSk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIC0gZ2V0Q2F0ZWdvcmllcyAtRWwgc2lzdGVtYSBubyByZXNwb25kZScsIGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogU2VhcmNoIGxpc3Qgb2YgZXhjaGFuZ2UgcmF0ZXMgKi9cclxuXHRnZXRFeGNoYW5nZVJhdGUoZGF0ZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnRhc2FDYW1iaW9TZXJ2aWNlLmdldEFsbFRhc2FDYW1iaW9MaWdodEluRGF0ZShkYXRlKS5zdWJzY3JpYmUoXHJcblx0XHRcdChsRXhjaGFuZ2VSYXRlOiBUYXNhQ2FtYmlvW10pID0+IHtcclxuXHRcdFx0XHR0aGlzLnNldExFeGNoYW5nZVJhdGUobEV4Y2hhbmdlUmF0ZSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIC0gZ2V0RXhjaGFuZ2VSYXRlIC1FbCBzaXN0ZW1hIG5vIHJlc3BvbmRlJywgZXJyb3IpO1xyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIFNlYXJjaCBsaXN0IG9mIGV4Y2hhbmdlIHJhdGVzICovXHJcblx0Z2V0UHJvY2VzcygpIHtcclxuXHRcdHRoaXMuaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PFByb2Nlc29bXT4odGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQucGxpcyArICdjb21tb24vZ2V0QWxsUHJvY2Vzb3MnKVxyXG5cdFx0XHQuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChsUHJvY2VzczogUHJvY2Vzb1tdKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnNldExQcm9jZXNzKGxQcm9jZXNzKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgLSBnZXRQcm9jZXNzIC1FbCBzaXN0ZW1hIG5vIHJlc3BvbmRlJywgZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHR9XHJcblxyXG5cdHNldExDdXJyZW5jaWVzKGxDdXJyZW5jeTogTW9uZWRhW10pIHtcclxuXHRcdGZvciAobGV0IGtleSBpbiBsQ3VycmVuY3kpIHtcclxuXHRcdFx0bGV0IGN1cnJlbmN5OiBNb25lZGEgPSBPYmplY3QuYXNzaWduKG5ldyBNb25lZGEoKSwgbEN1cnJlbmN5W2tleV0pO1xyXG5cdFx0XHRsQ3VycmVuY3lba2V5XSA9IGN1cnJlbmN5O1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sQ3VycmVuY3kgPSBsQ3VycmVuY3k7XHJcblx0XHRsZXQgbEN1cnJlbmN5U2xpY2UgPSB0aGlzLmxDdXJyZW5jeS5zbGljZSgpO1xyXG5cdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xDdXJyZW5jeScsIEpTT04uc3RyaW5naWZ5KGxDdXJyZW5jeVNsaWNlKSk7XHJcblx0XHR0aGlzLmN1cnJlbmN5Q2hhbmdlZC5uZXh0KGxDdXJyZW5jeVNsaWNlKTtcclxuXHR9XHJcblxyXG5cdHNldExDYXRlZ29yeShsQ2F0ZWdvcnk6IFJ1YnJvW10pIHtcclxuXHRcdGZvciAobGV0IGtleSBpbiBsQ2F0ZWdvcnkpIHtcclxuXHRcdFx0bGV0IGNhdGVnb3J5OiBSdWJybyA9IE9iamVjdC5hc3NpZ24obmV3IFJ1YnJvKCksIGxDYXRlZ29yeVtrZXldKTtcclxuXHRcdFx0bENhdGVnb3J5W2tleV0gPSBjYXRlZ29yeTtcclxuXHRcdH1cclxuXHRcdHRoaXMubENhdGVnb3J5ID0gbENhdGVnb3J5O1xyXG5cdFx0bGV0IGxDYXRlZ29yeVNsaWNlID0gdGhpcy5sQ2F0ZWdvcnkuc2xpY2UoKTtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsQ2F0ZWdvcnknLCBKU09OLnN0cmluZ2lmeShsQ2F0ZWdvcnlTbGljZSkpO1xyXG5cdFx0dGhpcy5jYXRlZ29yeUNoYW5nZWQubmV4dChsQ2F0ZWdvcnlTbGljZSk7XHJcblx0fVxyXG5cclxuXHRzZXRMTGFuZ3VhZ2UobExhbmd1YWdlOiBJZGlvbWFbXSkge1xyXG5cdFx0dGhpcy5sTGFuZ3VhZ2UgPSBsTGFuZ3VhZ2U7XHJcblx0XHRsZXQgbExhbmd1YWdlU2xpY2UgPSB0aGlzLmxMYW5ndWFnZSA/IHRoaXMubExhbmd1YWdlLnNsaWNlKCkgOiB0aGlzLmxMYW5ndWFnZTtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsTGFuZ3VhZ2UnLCBKU09OLnN0cmluZ2lmeShsTGFuZ3VhZ2VTbGljZSkpO1xyXG5cdFx0dGhpcy5sYW5ndWFnZUNoYW5nZWQubmV4dChsTGFuZ3VhZ2VTbGljZSk7XHJcblx0fVxyXG5cclxuXHRzZXRMRXhjaGFuZ2VSYXRlKGxFeGNoYW5nZVJhdGU6IFRhc2FDYW1iaW9bXSkge1xyXG5cdFx0Zm9yIChsZXQga2V5IGluIGxFeGNoYW5nZVJhdGUpIHtcclxuXHRcdFx0bGV0IGV4Y2hhbmdlUmF0ZTogVGFzYUNhbWJpbyA9IE9iamVjdC5hc3NpZ24obmV3IFRhc2FDYW1iaW8oKSwgbEV4Y2hhbmdlUmF0ZVtrZXldKTtcclxuXHRcdFx0bEV4Y2hhbmdlUmF0ZVtrZXldID0gZXhjaGFuZ2VSYXRlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sRXhjaGFuZ2VSYXRlID0gbEV4Y2hhbmdlUmF0ZTtcclxuXHRcdGxldCBsRXhjaGFuZ2VSYXRlU2xpY2UgPSB0aGlzLmxFeGNoYW5nZVJhdGVcclxuXHRcdFx0PyB0aGlzLmxFeGNoYW5nZVJhdGUuc2xpY2UoKVxyXG5cdFx0XHQ6IHRoaXMubEV4Y2hhbmdlUmF0ZTtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsRXhjaGFuZ2VSYXRlJywgSlNPTi5zdHJpbmdpZnkobEV4Y2hhbmdlUmF0ZVNsaWNlKSk7XHJcblx0XHR0aGlzLmV4Y2hhbmdlUmF0ZUNoYW5nZWQubmV4dChsRXhjaGFuZ2VSYXRlU2xpY2UpO1xyXG5cdH1cclxuXHJcblx0c2V0TFByb2Nlc3MobFByb2Nlc3M6IFByb2Nlc29bXSkge1xyXG5cdFx0Zm9yIChsZXQga2V5IGluIGxQcm9jZXNzKSB7XHJcblx0XHRcdGxldCBwcm9jZXNzOiBQcm9jZXNvID0gT2JqZWN0LmFzc2lnbihuZXcgUHJvY2VzbygpLCBsUHJvY2Vzc1trZXldKTtcclxuXHRcdFx0bFByb2Nlc3Nba2V5XSA9IHByb2Nlc3M7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxQcm9jZXNzID0gbFByb2Nlc3M7XHJcblx0XHRsZXQgbFByb2Nlc3NTbGljZSA9IHRoaXMubFByb2Nlc3MgPyB0aGlzLmxQcm9jZXNzLnNsaWNlKCkgOiB0aGlzLmxQcm9jZXNzO1xyXG5cdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xQcm9jZXNzJywgSlNPTi5zdHJpbmdpZnkobFByb2Nlc3NTbGljZSkpO1xyXG5cdFx0dGhpcy5wcm9jZXNzQ2hhbmdlZC5uZXh0KGxQcm9jZXNzU2xpY2UpO1xyXG5cdH1cclxuXHJcblx0c2VhcmNoTEN1cnJlbmN5KCkge1xyXG5cdFx0bGV0IGxDdXJyZW5jeSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsQ3VycmVuY3knKTtcclxuXHRcdGlmICghbEN1cnJlbmN5IHx8IGxDdXJyZW5jeSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0dGhpcy5nZXRDdXJyZW5jaWVzKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnNldExDdXJyZW5jaWVzKEpTT04ucGFyc2UobEN1cnJlbmN5KSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWFyY2hMTGFuZ3VhZ2UoKSB7XHJcblx0XHRsZXQgbExhbmd1YWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xMYW5ndWFnZScpO1xyXG5cdFx0aWYgKCFsTGFuZ3VhZ2UgfHwgbExhbmd1YWdlID09PSAndW5kZWZpbmVkJykge1xyXG5cdFx0XHR0aGlzLmdldExhbmd1YWdlcygpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zZXRMTGFuZ3VhZ2UoSlNPTi5wYXJzZShsTGFuZ3VhZ2UpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNlYXJjaExDYXRlZ29yeSgpIHtcclxuXHRcdGxldCBsQ2F0ZWdvcnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbENhdGVnb3J5Jyk7XHJcblx0XHRpZiAoIWxDYXRlZ29yeSB8fCBsQ2F0ZWdvcnkgPT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zZXRMQ2F0ZWdvcnkoSlNPTi5wYXJzZShsQ2F0ZWdvcnkpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNlYXJjaExFeGNoYW5nZVJhdGUoKSB7XHJcblx0XHRsZXQgc2VhcmNoRVI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdGxldCBzZWFyY2hEYXRlID0gRGF0ZVV0aWwuZ2V0TW9tZW50VGltZVpvbmUoKTtcclxuXHRcdC8vIGxldCBzZWFyY2hEYXkgPSBzZWFyY2hEYXRlLmRhdGUoKTtcclxuXHRcdGxldCBsRXhjaGFuZ2VSYXRlU3RyaW5nOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbEV4Y2hhbmdlUmF0ZScpO1xyXG5cdFx0bGV0IGxFeGNoYW5nZVJhdGU6IFRhc2FDYW1iaW9bXSA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRsRXhjaGFuZ2VSYXRlU3RyaW5nICYmXHJcblx0XHRcdGxFeGNoYW5nZVJhdGVTdHJpbmcgIT0gJ3VuZGVmaW5lZCcgJiZcclxuXHRcdFx0bEV4Y2hhbmdlUmF0ZVN0cmluZy5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0bEV4Y2hhbmdlUmF0ZSA9IEpTT04ucGFyc2UobEV4Y2hhbmdlUmF0ZVN0cmluZyk7XHJcblx0XHRcdGlmIChsRXhjaGFuZ2VSYXRlICYmIGxFeGNoYW5nZVJhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGxldCBkYXlFUjogc3RyaW5nID0gRGF0ZVV0aWwuZ2V0Rm9ybWF0RGF0ZVRpbWVab25lKGxFeGNoYW5nZVJhdGVbMF0udGNhbUZlY2hhKTtcclxuXHRcdFx0XHRpZiAoIURhdGVVdGlsLmlzRGF5RXF1YWxTdHJpbmcoc2VhcmNoRGF0ZS5mb3JtYXQoKSwgZGF5RVIpKSB7XHJcblx0XHRcdFx0XHRzZWFyY2hFUiA9IHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzZWFyY2hFUiA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoc2VhcmNoRVIgfHwgIWxFeGNoYW5nZVJhdGUgfHwgbEV4Y2hhbmdlUmF0ZS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHR0aGlzLmdldEV4Y2hhbmdlUmF0ZShzZWFyY2hEYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgJyAwMDowMDowMCcpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zZXRMRXhjaGFuZ2VSYXRlKGxFeGNoYW5nZVJhdGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2VhcmNoTFByb2Nlc3MoKSB7XHJcblx0XHRsZXQgbFByb2Nlc3MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbFByb2Nlc3MnKTtcclxuXHRcdGlmICghbFByb2Nlc3MgfHwgbFByb2Nlc3MgPT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdHRoaXMuZ2V0UHJvY2VzcygpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zZXRMUHJvY2VzcyhKU09OLnBhcnNlKGxQcm9jZXNzKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zXHJcblx0ICogQHBhcmFtIGh0bWxcclxuXHQgKi9cclxuXHRnZXRCYXNlNjRQZGYocmVxdWVzdFBkZjogUmVxdWVzdFBkZik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmJhY2tvZmZpY2UgKyAncGRmL2dldEJhc2U2NFBkZicsXHJcblx0XHRcdHJlcXVlc3RQZGYsXHJcblx0XHRcdHRoaXMuaGVhZGVySnNvblxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnMgYSBwZGZcclxuXHQgKiBAcGFyYW0gbFBkZlJlcXVlc3RcclxuXHQgKi9cclxuXHRnZXRCYXNlNjRQZGZMaXN0KGxQZGZSZXF1ZXN0OiBSZXF1ZXN0UGRmW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5iYWNrb2ZmaWNlICsgJ3BkZi9nZXRCYXNlNjRQZGZMaXN0JyxcclxuXHRcdFx0bFBkZlJlcXVlc3QsXHJcblx0XHRcdHRoaXMuaGVhZGVySnNvblxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnNcclxuXHQgKiBAcGFyYW0gaHRtbFxyXG5cdCAqL1xyXG5cdGdldEJhc2U2NFBkZkJ5VXJsKHVybEZpbGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmJhY2tvZmZpY2UgKyAncGRmL2dldEJhc2U2NFBkZkJ5VXJsJyxcclxuXHRcdFx0dXJsRmlsZSxcclxuXHRcdFx0dGhpcy5oZWFkZXJKc29uXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJuc1xyXG5cdCAqIEBwYXJhbSB1cmxGaWxlXHJcblx0ICovXHJcblx0Z2V0QmFzZTY0SW1hZ2VCeVVybCh1cmxGaWxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5iYWNrb2ZmaWNlICsgJ3BkZi9nZXRCYXNlNjRJbWFnZUJ5VXJsJyxcclxuXHRcdFx0dXJsRmlsZSxcclxuXHRcdFx0dGhpcy5oZWFkZXJKc29uXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEdldCB0aGUgYWN0dWFsIGRhdGUgKi9cclxuXHRnZXRBY3R1YWxEYXRlKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICdjb25maWd1cmF0aW9uL2dldEFjdHVhbERhdGUnXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEdldCB0aGUgYWN0dWFsIGRhdGUgKi9cclxuXHR2YWxpZGF0ZUNsb3NlQXBwbGljYXRpb25Qcm9jZXNzKFxyXG5cdFx0cHJvbUNvZGlnbzogbnVtYmVyLFxyXG5cdFx0YXBwU3RhdGVJZDogbnVtYmVyLFxyXG5cdFx0Y25mSW5pU3RhdGVJZD86IG51bWJlclxyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxyXG5cdFx0XHQuc2V0KCdwcm9tQ29kaWdvJywgcHJvbUNvZGlnby50b1N0cmluZygpKVxyXG5cdFx0XHQuc2V0KCdhcHBTdGF0ZUlkJywgYXBwU3RhdGVJZC50b1N0cmluZygpKTtcclxuXHRcdGlmIChjbmZJbmlTdGF0ZUlkICE9IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRwYXJhbXMuc2V0KCdjbmZJbmlTdGF0ZUlkJywgY25mSW5pU3RhdGVJZC50b1N0cmluZygpKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICtcclxuXHRcdFx0XHQnY29uZmlndXJhdGlvbi92YWxpZGF0ZUNsb3NlQXBwbGljYXRpb25Qcm9jZXNzJyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHBhcmFtc1xyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iXX0=
|
|
284
|
+
}] }, { type: i1.HttpClient }, { type: i2.TasaCambioService }] });
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wbGktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLE9BQU8sRUFBYyxNQUFNLGFBQWEsQ0FBQzs7OztBQU0vRixNQUFNLE9BQU8sYUFBYTtJQXVCekIsWUFDZ0MsV0FBZ0IsRUFDdkMsVUFBc0IsRUFDdEIsaUJBQW9DO1FBRmIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBekJyQyxlQUFVLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUYsNkNBQTZDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVcsU0FBUyxDQUFDLENBQUM7UUFHM0QsNkNBQTZDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsU0FBUyxDQUFDLENBQUM7UUFHMUQsZ0RBQWdEO1FBQ2hELHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFlLFNBQVMsQ0FBQyxDQUFDO1FBR25FLHlDQUF5QztRQUN6QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFXLFNBQVMsQ0FBQyxDQUFDO1FBRzNELDBDQUEwQztRQUMxQyxtQkFBYyxH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ImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1vbmVkYSwgUnVicm8sIFRhc2FDYW1iaW8sIERhdGVVdGlsLCBJZGlvbWEsIFByb2Nlc28sIFJlcXVlc3RQZGYgfSBmcm9tICduZy1wbGktdXRpbCc7XHJcbmltcG9ydCB7IFRhc2FDYW1iaW9TZXJ2aWNlIH0gZnJvbSAnLi90YXNhLmNhbWJpby5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vblNlcnZpY2Uge1xyXG5cdHByaXZhdGUgaGVhZGVySnNvbiA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSB9O1xyXG5cdC8qKiBOb3RpZnkgd2hlbiB0aGUgY3VycmVuY2llcyBpbmZvIGNoYW5nZSAqL1xyXG5cdGN1cnJlbmN5Q2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TW9uZWRhW10+KHVuZGVmaW5lZCk7XHJcblx0LyoqIExpc3Qgb2YgY3VycmVuY3kgKi9cclxuXHRwcml2YXRlIGxDdXJyZW5jeTogTW9uZWRhW107XHJcblx0LyoqIE5vdGlmeSB3aGVuIHRoZSBjYXRlZ29yaWVzIGluZm8gY2hhbmdlICovXHJcblx0Y2F0ZWdvcnlDaGFuZ2VkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSdWJyb1tdPih1bmRlZmluZWQpO1xyXG5cdC8qKiBMaXN0IG9mIGN1cnJlbmN5ICovXHJcblx0cHJpdmF0ZSBsQ2F0ZWdvcnk6IFJ1YnJvW107XHJcblx0LyoqIE5vdGlmeSB3aGVuIHRoZSBleGNoYW5nZSByYXRlIGluZm8gY2hhbmdlICovXHJcblx0ZXhjaGFuZ2VSYXRlQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFzYUNhbWJpb1tdPih1bmRlZmluZWQpO1xyXG5cdC8qKiBMaXN0IG9mIGV4Y2hhbmdlIHJhdGUgKi9cclxuXHRwcml2YXRlIGxFeGNoYW5nZVJhdGU6IFRhc2FDYW1iaW9bXTtcclxuXHQvKiogTm90aWZ5IHdoZW4gdGhlIGlkaW9tYSBoYXMgY2hhbmdlZCAqL1xyXG5cdGxhbmd1YWdlQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SWRpb21hW10+KHVuZGVmaW5lZCk7XHJcblx0LyoqIExpc3Qgb2YgZXhjaGFuZ2UgcmF0ZSAqL1xyXG5cdHByaXZhdGUgbExhbmd1YWdlOiBJZGlvbWFbXTtcclxuXHQvKiogTm90aWZ5IHdoZW4gdGhlIHByb2Nlc3MgaW5mbyBjaGFuZ2UgKi9cclxuXHRwcm9jZXNzQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJvY2Vzb1tdPih1bmRlZmluZWQpO1xyXG5cdC8qKiBMaXN0IG9mIHByb2Nlc3MgKi9cclxuXHRwcml2YXRlIGxQcm9jZXNzOiBQcm9jZXNvW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksXHJcblx0XHRwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIHRhc2FDYW1iaW9TZXJ2aWNlOiBUYXNhQ2FtYmlvU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5pbml0VmFsdWVzKCk7XHJcblx0fVxyXG5cclxuXHQvKiogIEl0IGhhcyBhbiBvYnNlcnZhYmxlIHRvIG5vdGlmeSBpZiB0aGUgbGFuZ3VhZ2UgaXMgY2hhbmdlZCAqL1xyXG5cdG9uTGFuZ3VhZ2VDaGFuZ2VkKCk6IE9ic2VydmFibGU8SWRpb21hW10+IHtcclxuXHRcdHJldHVybiB0aGlzLmxhbmd1YWdlQ2hhbmdlZC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdC8qKiAgSXQgaGFzIGFuIG9ic2VydmFibGUgdG8gbm90aWZ5IGlmIHRoZSBjYXRlb2dyeSBpcyBjaGFuZ2VkICovXHJcblx0b25DdXJyZW5jeUNoYW5nZWQoKTogT2JzZXJ2YWJsZTxNb25lZGFbXT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY3VycmVuY3lDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqICBJdCBoYXMgYW4gb2JzZXJ2YWJsZSB0byBub3RpZnkgaWYgdGhlIGNhdGVnb3J5IGlzIGNoYW5nZWQgKi9cclxuXHRvbkNhdGVnb3J5Q2hhbmdlZCgpOiBPYnNlcnZhYmxlPFJ1YnJvW10+IHtcclxuXHRcdHJldHVybiB0aGlzLmNhdGVnb3J5Q2hhbmdlZC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdC8qKiAgSXQgaGFzIGFuIG9ic2VydmFibGUgdG8gbm90aWZ5IGlmIHRoZSBleGNoYW5nZSByYXRlIGlzIGNoYW5nZWQgKi9cclxuXHRvbkV4Y2hhbmdlUmF0ZUNoYW5nZWQoKTogT2JzZXJ2YWJsZTxUYXNhQ2FtYmlvW10+IHtcclxuXHRcdHJldHVybiB0aGlzLmV4Y2hhbmdlUmF0ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XHJcblx0fVxyXG5cclxuXHQvKiogIEl0IGhhcyBhbiBvYnNlcnZhYmxlIHRvIG5vdGlmeSBpZiB0aGUgbGlzdCBvZiBwcm9jZXNzIGlzIGNoYW5nZWQgKi9cclxuXHRvblByb2Nlc3NDaGFuZ2VkKCk6IE9ic2VydmFibGU8UHJvY2Vzb1tdPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5wcm9jZXNzQ2hhbmdlZC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlYXJjaCB0aGUgaW5mbyBvZiB0aGUgdmFyaWFibGVzLCBmaXJzdCB0cnkgdG8gc2VhcmNoIGluIHRoZSBsb2NhbCBzdG9yYWdlLFxyXG5cdCAqIGlmIG5vdCBmaW5kIGluZm8sIGdldCB0aGUgaW5mbyBmcm9tIHRoZSBzZXJ2aWNlc1xyXG5cdCAqL1xyXG5cdGluaXRWYWx1ZXMoKSB7XHJcblx0XHR0aGlzLnNlYXJjaExDdXJyZW5jeSgpO1xyXG5cdFx0dGhpcy5zZWFyY2hMQ2F0ZWdvcnkoKTtcclxuXHRcdHRoaXMuc2VhcmNoTEV4Y2hhbmdlUmF0ZSgpO1xyXG5cdFx0dGhpcy5zZWFyY2hMTGFuZ3VhZ2UoKTtcclxuXHRcdHRoaXMuc2VhcmNoTFByb2Nlc3MoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbW92ZSBhbGwgdmFyaWFibGVzIG9mIHRoZSBsb2NhbCBzdG9yYWdlXHJcblx0ICovXHJcblx0cmVsb2FkVmFsdWVzKCkge1xyXG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xDdXJyZW5jeScpO1xyXG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xDYXRlZ29yeScpO1xyXG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xFeGNoYW5nZVJhdGUnKTtcclxuXHRcdGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsTGFuZ3VhZ2UnKTtcclxuXHRcdGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsUHJvY2VzcycpO1xyXG5cdH1cclxuXHJcblx0LyoqIFNlYXJjaCBsaXN0IG9mIGN1cnJlbmNpZXMgKi9cclxuXHRnZXRMYW5ndWFnZXMoKSB7XHJcblx0XHR0aGlzLmh0dHBDbGllbnRcclxuXHRcdFx0LmdldDxJZGlvbWFbXT4odGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQucGxpcyArICdpZGlvbWEvZ2V0QWxsJylcclxuXHRcdFx0LnN1YnNjcmliZShcclxuXHRcdFx0XHQobExhbmd1YWdlOiBJZGlvbWFbXSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRMTGFuZ3VhZ2UobExhbmd1YWdlKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgLSBnZXRMaXN0Q3VycmVuY2llcyAtRWwgc2lzdGVtYSBubyByZXNwb25kZScsIGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogU2VhcmNoIGxpc3Qgb2YgY3VycmVuY2llcyAqL1xyXG5cdGdldEN1cnJlbmNpZXMoKSB7XHJcblx0XHR0aGlzLmh0dHBDbGllbnRcclxuXHRcdFx0LmdldDxNb25lZGFbXT4odGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQucGxpcyArICdtb25lZGEvZ2V0QWxsJylcclxuXHRcdFx0LnN1YnNjcmliZShcclxuXHRcdFx0XHQobEN1cnJlbmN5OiBNb25lZGFbXSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRMQ3VycmVuY2llcyhsQ3VycmVuY3kpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciAtIGdldExpc3RDdXJyZW5jaWVzIC1FbCBzaXN0ZW1hIG5vIHJlc3BvbmRlJywgZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBTZWFyY2ggbGlzdCBvZiBjYXRlZ29yaWVzICovXHJcblx0Z2V0Q2F0ZWdvcmllcygpIHtcclxuXHRcdHRoaXMuaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PFJ1YnJvW10+KHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLnBsaXMgKyAncnVicm8vZ2V0QWxsJywge1xyXG5cdFx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2Nhcmdhckxpc3RhcycsICd0cnVlJylcclxuXHRcdFx0fSlcclxuXHRcdFx0LnN1YnNjcmliZShcclxuXHRcdFx0XHQobENhdGVnb3J5OiBSdWJyb1tdKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnNldExDYXRlZ29yeShsQ2F0ZWdvcnkpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciAtIGdldENhdGVnb3JpZXMgLUVsIHNpc3RlbWEgbm8gcmVzcG9uZGUnLCBlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIFNlYXJjaCBsaXN0IG9mIGV4Y2hhbmdlIHJhdGVzICovXHJcblx0Z2V0RXhjaGFuZ2VSYXRlKGRhdGU6IHN0cmluZykge1xyXG5cdFx0dGhpcy50YXNhQ2FtYmlvU2VydmljZS5nZXRBbGxUYXNhQ2FtYmlvTGlnaHRJbkRhdGUoZGF0ZSkuc3Vic2NyaWJlKFxyXG5cdFx0XHQobEV4Y2hhbmdlUmF0ZTogVGFzYUNhbWJpb1tdKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5zZXRMRXhjaGFuZ2VSYXRlKGxFeGNoYW5nZVJhdGUpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciAtIGdldEV4Y2hhbmdlUmF0ZSAtRWwgc2lzdGVtYSBubyByZXNwb25kZScsIGVycm9yKTtcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBTZWFyY2ggbGlzdCBvZiBleGNoYW5nZSByYXRlcyAqL1xyXG5cdGdldFByb2Nlc3MoKSB7XHJcblx0XHR0aGlzLmh0dHBDbGllbnRcclxuXHRcdFx0LmdldDxQcm9jZXNvW10+KHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLnBsaXMgKyAnY29tbW9uL2dldEFsbFByb2Nlc29zJylcclxuXHRcdFx0LnN1YnNjcmliZShcclxuXHRcdFx0XHQobFByb2Nlc3M6IFByb2Nlc29bXSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRMUHJvY2VzcyhsUHJvY2Vzcyk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIC0gZ2V0UHJvY2VzcyAtRWwgc2lzdGVtYSBubyByZXNwb25kZScsIGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0fVxyXG5cclxuXHRzZXRMQ3VycmVuY2llcyhsQ3VycmVuY3k6IE1vbmVkYVtdKSB7XHJcblx0XHRmb3IgKGxldCBrZXkgaW4gbEN1cnJlbmN5KSB7XHJcblx0XHRcdGxldCBjdXJyZW5jeTogTW9uZWRhID0gT2JqZWN0LmFzc2lnbihuZXcgTW9uZWRhKCksIGxDdXJyZW5jeVtrZXldKTtcclxuXHRcdFx0bEN1cnJlbmN5W2tleV0gPSBjdXJyZW5jeTtcclxuXHRcdH1cclxuXHRcdHRoaXMubEN1cnJlbmN5ID0gbEN1cnJlbmN5O1xyXG5cdFx0bGV0IGxDdXJyZW5jeVNsaWNlID0gdGhpcy5sQ3VycmVuY3kuc2xpY2UoKTtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsQ3VycmVuY3knLCBKU09OLnN0cmluZ2lmeShsQ3VycmVuY3lTbGljZSkpO1xyXG5cdFx0dGhpcy5jdXJyZW5jeUNoYW5nZWQubmV4dChsQ3VycmVuY3lTbGljZSk7XHJcblx0fVxyXG5cclxuXHRzZXRMQ2F0ZWdvcnkobENhdGVnb3J5OiBSdWJyb1tdKSB7XHJcblx0XHRmb3IgKGxldCBrZXkgaW4gbENhdGVnb3J5KSB7XHJcblx0XHRcdGxldCBjYXRlZ29yeTogUnVicm8gPSBPYmplY3QuYXNzaWduKG5ldyBSdWJybygpLCBsQ2F0ZWdvcnlba2V5XSk7XHJcblx0XHRcdGxDYXRlZ29yeVtrZXldID0gY2F0ZWdvcnk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxDYXRlZ29yeSA9IGxDYXRlZ29yeTtcclxuXHRcdGxldCBsQ2F0ZWdvcnlTbGljZSA9IHRoaXMubENhdGVnb3J5LnNsaWNlKCk7XHJcblx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbENhdGVnb3J5JywgSlNPTi5zdHJpbmdpZnkobENhdGVnb3J5U2xpY2UpKTtcclxuXHRcdHRoaXMuY2F0ZWdvcnlDaGFuZ2VkLm5leHQobENhdGVnb3J5U2xpY2UpO1xyXG5cdH1cclxuXHJcblx0c2V0TExhbmd1YWdlKGxMYW5ndWFnZTogSWRpb21hW10pIHtcclxuXHRcdHRoaXMubExhbmd1YWdlID0gbExhbmd1YWdlO1xyXG5cdFx0bGV0IGxMYW5ndWFnZVNsaWNlID0gdGhpcy5sTGFuZ3VhZ2UgPyB0aGlzLmxMYW5ndWFnZS5zbGljZSgpIDogdGhpcy5sTGFuZ3VhZ2U7XHJcblx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbExhbmd1YWdlJywgSlNPTi5zdHJpbmdpZnkobExhbmd1YWdlU2xpY2UpKTtcclxuXHRcdHRoaXMubGFuZ3VhZ2VDaGFuZ2VkLm5leHQobExhbmd1YWdlU2xpY2UpO1xyXG5cdH1cclxuXHJcblx0c2V0TEV4Y2hhbmdlUmF0ZShsRXhjaGFuZ2VSYXRlOiBUYXNhQ2FtYmlvW10pIHtcclxuXHRcdGZvciAobGV0IGtleSBpbiBsRXhjaGFuZ2VSYXRlKSB7XHJcblx0XHRcdGxldCBleGNoYW5nZVJhdGU6IFRhc2FDYW1iaW8gPSBPYmplY3QuYXNzaWduKG5ldyBUYXNhQ2FtYmlvKCksIGxFeGNoYW5nZVJhdGVba2V5XSk7XHJcblx0XHRcdGxFeGNoYW5nZVJhdGVba2V5XSA9IGV4Y2hhbmdlUmF0ZTtcclxuXHRcdH1cclxuXHRcdHRoaXMubEV4Y2hhbmdlUmF0ZSA9IGxFeGNoYW5nZVJhdGU7XHJcblx0XHRsZXQgbEV4Y2hhbmdlUmF0ZVNsaWNlID0gdGhpcy5sRXhjaGFuZ2VSYXRlXHJcblx0XHRcdD8gdGhpcy5sRXhjaGFuZ2VSYXRlLnNsaWNlKClcclxuXHRcdFx0OiB0aGlzLmxFeGNoYW5nZVJhdGU7XHJcblx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbEV4Y2hhbmdlUmF0ZScsIEpTT04uc3RyaW5naWZ5KGxFeGNoYW5nZVJhdGVTbGljZSkpO1xyXG5cdFx0dGhpcy5leGNoYW5nZVJhdGVDaGFuZ2VkLm5leHQobEV4Y2hhbmdlUmF0ZVNsaWNlKTtcclxuXHR9XHJcblxyXG5cdHNldExQcm9jZXNzKGxQcm9jZXNzOiBQcm9jZXNvW10pIHtcclxuXHRcdGZvciAobGV0IGtleSBpbiBsUHJvY2Vzcykge1xyXG5cdFx0XHRsZXQgcHJvY2VzczogUHJvY2VzbyA9IE9iamVjdC5hc3NpZ24obmV3IFByb2Nlc28oKSwgbFByb2Nlc3Nba2V5XSk7XHJcblx0XHRcdGxQcm9jZXNzW2tleV0gPSBwcm9jZXNzO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sUHJvY2VzcyA9IGxQcm9jZXNzO1xyXG5cdFx0bGV0IGxQcm9jZXNzU2xpY2UgPSB0aGlzLmxQcm9jZXNzID8gdGhpcy5sUHJvY2Vzcy5zbGljZSgpIDogdGhpcy5sUHJvY2VzcztcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsUHJvY2VzcycsIEpTT04uc3RyaW5naWZ5KGxQcm9jZXNzU2xpY2UpKTtcclxuXHRcdHRoaXMucHJvY2Vzc0NoYW5nZWQubmV4dChsUHJvY2Vzc1NsaWNlKTtcclxuXHR9XHJcblxyXG5cdHNlYXJjaExDdXJyZW5jeSgpIHtcclxuXHRcdGxldCBsQ3VycmVuY3kgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbEN1cnJlbmN5Jyk7XHJcblx0XHRpZiAoIWxDdXJyZW5jeSB8fCBsQ3VycmVuY3kgPT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdHRoaXMuZ2V0Q3VycmVuY2llcygpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zZXRMQ3VycmVuY2llcyhKU09OLnBhcnNlKGxDdXJyZW5jeSkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2VhcmNoTExhbmd1YWdlKCkge1xyXG5cdFx0bGV0IGxMYW5ndWFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsTGFuZ3VhZ2UnKTtcclxuXHRcdGlmICghbExhbmd1YWdlIHx8IGxMYW5ndWFnZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0dGhpcy5nZXRMYW5ndWFnZXMoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuc2V0TExhbmd1YWdlKEpTT04ucGFyc2UobExhbmd1YWdlKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWFyY2hMQ2F0ZWdvcnkoKSB7XHJcblx0XHRsZXQgbENhdGVnb3J5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xDYXRlZ29yeScpO1xyXG5cdFx0aWYgKCFsQ2F0ZWdvcnkgfHwgbENhdGVnb3J5ID09PSAndW5kZWZpbmVkJykge1xyXG5cdFx0XHR0aGlzLmdldENhdGVnb3JpZXMoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuc2V0TENhdGVnb3J5KEpTT04ucGFyc2UobENhdGVnb3J5KSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWFyY2hMRXhjaGFuZ2VSYXRlKCkge1xyXG5cdFx0bGV0IHNlYXJjaEVSOiBib29sZWFuID0gZmFsc2U7XHJcblx0XHRsZXQgc2VhcmNoRGF0ZSA9IERhdGVVdGlsLmdldE1vbWVudFRpbWVab25lKCk7XHJcblx0XHQvLyBsZXQgc2VhcmNoRGF5ID0gc2VhcmNoRGF0ZS5kYXRlKCk7XHJcblx0XHRsZXQgbEV4Y2hhbmdlUmF0ZVN0cmluZzogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xFeGNoYW5nZVJhdGUnKTtcclxuXHRcdGxldCBsRXhjaGFuZ2VSYXRlOiBUYXNhQ2FtYmlvW10gPSBbXTtcclxuXHRcdGlmIChcclxuXHRcdFx0bEV4Y2hhbmdlUmF0ZVN0cmluZyAmJlxyXG5cdFx0XHRsRXhjaGFuZ2VSYXRlU3RyaW5nICE9ICd1bmRlZmluZWQnICYmXHJcblx0XHRcdGxFeGNoYW5nZVJhdGVTdHJpbmcubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGxFeGNoYW5nZVJhdGUgPSBKU09OLnBhcnNlKGxFeGNoYW5nZVJhdGVTdHJpbmcpO1xyXG5cdFx0XHRpZiAobEV4Y2hhbmdlUmF0ZSAmJiBsRXhjaGFuZ2VSYXRlLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgZGF5RVI6IHN0cmluZyA9IERhdGVVdGlsLmdldEZvcm1hdERhdGVUaW1lWm9uZShsRXhjaGFuZ2VSYXRlWzBdLnRjYW1GZWNoYSk7XHJcblx0XHRcdFx0aWYgKCFEYXRlVXRpbC5pc0RheUVxdWFsU3RyaW5nKHNlYXJjaERhdGUuZm9ybWF0KCksIGRheUVSKSkge1xyXG5cdFx0XHRcdFx0c2VhcmNoRVIgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c2VhcmNoRVIgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHNlYXJjaEVSIHx8ICFsRXhjaGFuZ2VSYXRlIHx8IGxFeGNoYW5nZVJhdGUubGVuZ3RoID09IDApIHtcclxuXHRcdFx0dGhpcy5nZXRFeGNoYW5nZVJhdGUoc2VhcmNoRGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQnKSArICcgMDA6MDA6MDAnKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuc2V0TEV4Y2hhbmdlUmF0ZShsRXhjaGFuZ2VSYXRlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNlYXJjaExQcm9jZXNzKCkge1xyXG5cdFx0bGV0IGxQcm9jZXNzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xQcm9jZXNzJyk7XHJcblx0XHRpZiAoIWxQcm9jZXNzIHx8IGxQcm9jZXNzID09PSAndW5kZWZpbmVkJykge1xyXG5cdFx0XHR0aGlzLmdldFByb2Nlc3MoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuc2V0TFByb2Nlc3MoSlNPTi5wYXJzZShsUHJvY2VzcykpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJuc1xyXG5cdCAqIEBwYXJhbSBodG1sXHJcblx0ICovXHJcblx0Z2V0QmFzZTY0UGRmKHJlcXVlc3RQZGY6IFJlcXVlc3RQZGYpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5iYWNrb2ZmaWNlICsgJ3BkZi9nZXRCYXNlNjRQZGYnLFxyXG5cdFx0XHRyZXF1ZXN0UGRmLFxyXG5cdFx0XHR0aGlzLmhlYWRlckpzb25cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIGEgcGRmXHJcblx0ICogQHBhcmFtIGxQZGZSZXF1ZXN0XHJcblx0ICovXHJcblx0Z2V0QmFzZTY0UGRmTGlzdChsUGRmUmVxdWVzdDogUmVxdWVzdFBkZltdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuYmFja29mZmljZSArICdwZGYvZ2V0QmFzZTY0UGRmTGlzdCcsXHJcblx0XHRcdGxQZGZSZXF1ZXN0LFxyXG5cdFx0XHR0aGlzLmhlYWRlckpzb25cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zXHJcblx0ICogQHBhcmFtIGh0bWxcclxuXHQgKi9cclxuXHRnZXRCYXNlNjRQZGZCeVVybCh1cmxGaWxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5iYWNrb2ZmaWNlICsgJ3BkZi9nZXRCYXNlNjRQZGZCeVVybCcsXHJcblx0XHRcdHVybEZpbGUsXHJcblx0XHRcdHRoaXMuaGVhZGVySnNvblxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnNcclxuXHQgKiBAcGFyYW0gdXJsRmlsZVxyXG5cdCAqL1xyXG5cdGdldEJhc2U2NEltYWdlQnlVcmwodXJsRmlsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuYmFja29mZmljZSArICdwZGYvZ2V0QmFzZTY0SW1hZ2VCeVVybCcsXHJcblx0XHRcdHVybEZpbGUsXHJcblx0XHRcdHRoaXMuaGVhZGVySnNvblxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBHZXQgdGhlIGFjdHVhbCBkYXRlICovXHJcblx0Z2V0QWN0dWFsRGF0ZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAnY29uZmlndXJhdGlvbi9nZXRBY3R1YWxEYXRlJ1xyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBHZXQgdGhlIGFjdHVhbCBkYXRlICovXHJcblx0dmFsaWRhdGVDbG9zZUFwcGxpY2F0aW9uUHJvY2VzcyhcclxuXHRcdHByb21Db2RpZ286IG51bWJlcixcclxuXHRcdGFwcFN0YXRlSWQ6IG51bWJlcixcclxuXHRcdGNuZkluaVN0YXRlSWQ/OiBudW1iZXJcclxuXHQpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0bGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcclxuXHRcdFx0LnNldCgncHJvbUNvZGlnbycsIHByb21Db2RpZ28udG9TdHJpbmcoKSlcclxuXHRcdFx0LnNldCgnYXBwU3RhdGVJZCcsIGFwcFN0YXRlSWQudG9TdHJpbmcoKSk7XHJcblx0XHRpZiAoY25mSW5pU3RhdGVJZCAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0cGFyYW1zLnNldCgnY25mSW5pU3RhdGVJZCcsIGNuZkluaVN0YXRlSWQudG9TdHJpbmcoKSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArXHJcblx0XHRcdFx0J2NvbmZpZ3VyYXRpb24vdmFsaWRhdGVDbG9zZUFwcGxpY2F0aW9uUHJvY2VzcycsXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwYXJhbXNcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -79,14 +79,6 @@ export class SendApplicationService {
|
|
|
79
79
|
interactionAppUser.observation = observation ? observation : 'Envío de solicitud';
|
|
80
80
|
return this.interactionApplicationUserService.save(interactionAppUser);
|
|
81
81
|
}
|
|
82
|
-
saveInteractionInformation(interactionAppUser, resolve, reject) {
|
|
83
|
-
this.interactionApplicationUserService.save(interactionAppUser).subscribe((result) => {
|
|
84
|
-
resolve(result);
|
|
85
|
-
}, (error) => {
|
|
86
|
-
console.error('ERROR - saveInteraction - interactionApplicationUserService.save ', error);
|
|
87
|
-
reject(error);
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
82
|
/**
|
|
91
83
|
* It validates the data
|
|
92
84
|
* @param listApplication
|
|
@@ -489,4 +481,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
489
481
|
type: Inject,
|
|
490
482
|
args: ['environment']
|
|
491
483
|
}] }, { type: i1.TokenService }, { type: i2.EmailService }, { type: i3.InteractionApplicationUserService }] });
|
|
492
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1hcHBsaWNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9zZW5kLWFwcGxpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUluRCxPQUFPLEVBSU4sZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFFBQVEsRUFDUixjQUFjLEVBQ2QsS0FBSyxFQUNMLDBCQUEwQixFQUUxQixzQkFBc0IsRUFHdEIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBS2xELE1BQU0sT0FBTyxzQkFBc0I7SUFJbEMsWUFDZ0MsV0FBVyxFQUNsQyxZQUEwQixFQUMxQixZQUEwQixFQUMxQixpQ0FBb0U7UUFIN0MsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsc0NBQWlDLEdBQWpDLGlDQUFpQyxDQUFtQztRQVA3RSxtREFBbUQ7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFPeEQsQ0FBQztJQUVKLG1FQUFtRTtJQUM1RCxrQkFBa0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELDBDQUEwQztJQUNuQyxhQUFhLENBQUMsT0FBZSxFQUFFLEtBQWE7UUFDbEQsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFF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Q0FBQyxJQUFJO3dCQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUMxRCxjQUFjLENBQUMsSUFBSSxFQUNuQixjQUFjLENBQUMsdUJBQXVCLEVBQ3RDLElBQUksQ0FDSixDQUFDO1lBQ0YsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1osSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFckMsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0Msa0NBQWtDO29CQUNsQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDckUsT0FBTyxJQUFJLENBQUM7b0JBQ2IsQ0FBQztnQkFDRixDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7K0dBN29CVyxzQkFBc0Isa0JBS3pCLGFBQWE7bUhBTFYsc0JBQXNCLGNBRnRCLE1BQU07OzRGQUVOLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQU1FLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW1haWxTZXJ2aWNlIH0gZnJvbSAnLi9lbWFpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW50ZXJhY3Rpb25BcHBsaWNhdGlvblVzZXJTZXJ2aWNlIH0gZnJvbSAnLi9pbnRlcmFjdGlvbi1hcHBsaWNhdGlvbi11c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG5cdEFwcGxpY2F0aW9uLFxyXG5cdEJ1ZGdldERhdGEsXHJcblx0Q29uZmlndXJhdGlvbkRvY3VtZW50LFxyXG5cdFNlbmRBcHBsaWNhdGlvbixcclxuXHRFVGlwb1ByZXN1cHVlc3RvLFxyXG5cdEVCdWRnZXRCdWlsZFR5cGUsXHJcblx0RUJ1ZGdldEVycm9yLFxyXG5cdERvY3VtZW50LFxyXG5cdEVEb2N1bWVudFN0YXRlLFxyXG5cdEVtYWlsLFxyXG5cdEludGVyYWN0aW9uQXBwbGljYXRpb25Vc2VyLFxyXG5cdFBsaUNuZlN0YXR1c0Zsb3dJbnRlcmFjdGlvbixcclxuXHRFVHlwZVN0YXRpY0ludGVyYWN0aW9uLFxyXG5cdFBsaUNuZlN0YXR1cyxcclxuXHRQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbixcclxuXHRBdXRoZW50aWNhdGlvblV0aWwsXHJcblx0RUNuZlBhZ2VTZWN0aW9uXHJcbn0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBGb3JtaW9VdGlsIH0gZnJvbSAnLi4vdXRpbHMvZm9ybWlvLXV0aWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VuZEFwcGxpY2F0aW9uU2VydmljZSB7XHJcblx0LyoqIFRoaXMgb2JzZXJ2YWJsZSBhbGxvd3MgdG8gZ2V0IHRoZSBwb3JjZW50YWdlICovXHJcblx0cHJpdmF0ZSBwZXJjZW50YWdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcblx0XHRwcml2YXRlIHRva2VuU2VydmljZTogVG9rZW5TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBlbWFpbFNlcnZpY2U6IEVtYWlsU2VydmljZSxcclxuXHRcdHByaXZhdGUgaW50ZXJhY3Rpb25BcHBsaWNhdGlvblVzZXJTZXJ2aWNlOiBJbnRlcmFjdGlvbkFwcGxpY2F0aW9uVXNlclNlcnZpY2VcclxuXHQpIHt9XHJcblxyXG5cdC8qKiAgSXQgaGFzIGFuIG9ic2VydmFibGUgdG8gbm90aWZ5IGlmIHRoZSBwZXJjZW50YWdlIGlzIGNoYW5nZWQgKi9cclxuXHRwdWJsaWMgb25DaGFuZ2VQZXJjZW50YWdlKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5wZXJjZW50YWdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdC8qKiBpdCBkZWZpbmVzIHRoZSB2YWx1ZSBmb3IgcGVyY2VudGFnZSAqL1xyXG5cdHB1YmxpYyBzZXRQZXJjZW50YWdlKGN1cnJlbnQ6IG51bWJlciwgdG90YWw6IG51bWJlcikge1xyXG5cdFx0aWYgKGN1cnJlbnQgJiYgdG90YWwpIHtcclxuXHRcdFx0Y29uc3QgcGVyY2VudGFnZSA9IChjdXJyZW50IC8gdG90YWwpICogMTAwO1xyXG5cdFx0XHR0aGlzLnBlcmNlbnRhZ2VTdWJqZWN0Lm5leHQocGVyY2VudGFnZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJlc2V0UGVyY2VudGFnZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqIGl0IHJlc2V0cyB0aGUgcGVyY2VudGFnZSAqL1xyXG5cdHB1YmxpYyByZXNldFBlcmNlbnRhZ2UoKSB7XHJcblx0XHR0aGlzLnBlcmNlbnRhZ2VTdWJqZWN0Lm5leHQoMCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCBzZW5kIGVtYWlsIG1hc2l2ZWx5XHJcblx0ICogQHBhcmFtIGFwcGxpY2F0aW9uXHJcblx0ICogQHBhcmFtIGkgY3VycmVudCBpZG5leFxyXG5cdCAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoXHJcblx0ICogQHBhcmFtIHNlbmRBcHBsaWNhdGlvblxyXG5cdCAqL1xyXG5cdHNlbmRFbWFpbE1hc3NpdmVseShhcHBsaWNhdGlvbjogQXBwbGljYXRpb24pIHtcclxuXHRcdGxldCBlbWFpbDogRW1haWwgPSBuZXcgRW1haWwoKTtcclxuXHRcdGVtYWlsLmFkZFRvKCdwcnVlYmFjb252b0BiZW4uY29sZnV0dXJvLm9yZycpO1xyXG5cdFx0Ly8gdW5jb21tZW50IHdoZW4gdGhlIGVudmlyb25tZW50XHJcblx0XHRlbWFpbC5zZXRTdWJqZWN0KCdFbnbDrW8gZGUgc29saWNpdHVkICcgKyBhcHBsaWNhdGlvbi5pZCk7XHJcblx0XHRlbWFpbC5zZXRCb2R5KCdDb3JkaWFsIHNhbHVkbywgPGJyLz5IZW1vcyBlbnZpYWRvIGxhIHNvbGljaXR1ZCAnICsgYXBwbGljYXRpb24uaWQpO1xyXG5cdFx0cmV0dXJuIHRoaXMuZW1haWxTZXJ2aWNlLnNlbmQoZW1haWwpO1xyXG5cdH1cclxuXHJcblx0LyoqIFNlbmQgZW1haWwgYXBwbGljYXRpb24gKi9cclxuXHRzZW5kRW1haWwoYXBwbGljYXRpb246IEFwcGxpY2F0aW9uKSB7XHJcblx0XHRsZXQgZW1haWw6IEVtYWlsID0gbmV3IEVtYWlsKCk7XHJcblx0XHRlbWFpbC5hZGRUbygncHJ1ZWJhY29udm9AYmVuLmNvbGZ1dHVyby5vcmcnKTtcclxuXHRcdC8vIHVuY29tbWVudCB3aGVuIHRoZSBlbnZpcm9ubWVudFxyXG5cdFx0ZW1haWwuc2V0U3ViamVjdCgnRW52w61vIGRlIHNvbGljaXR1ZCAnICsgYXBwbGljYXRpb24uaWQpO1xyXG5cdFx0ZW1haWwuc2V0Qm9keSgnQ29yZGlhbCBzYWx1ZG8sIDxici8+SGFzIGVudmlhZG8gbGEgc29saWNpdHVkICcgKyBhcHBsaWNhdGlvbi5pZCk7XHJcblx0XHRyZXR1cm4gdGhpcy5lbWFpbFNlcnZpY2Uuc2VuZChlbWFpbCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2F2ZXMgdGhlIGludGVyYWN0aW9uICovXHJcblx0c2F2ZUludGVyYWN0aW9uKFxyXG5cdFx0YXBwbGljYXRpb25JZDogc3RyaW5nLFxyXG5cdFx0cHJvbUNvZGlnbzogbnVtYmVyLFxyXG5cdFx0cGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uOiBQbGlDbmZTdGF0dXNGbG93SW50ZXJhY3Rpb24sXHJcblx0XHRvYnNlcnZhdGlvbj86IHN0cmluZ1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgaW50ZXJhY3Rpb25BcHBVc2VyOiBJbnRlcmFjdGlvbkFwcGxpY2F0aW9uVXNlciA9IG5ldyBJbnRlcmFjdGlvbkFwcGxpY2F0aW9uVXNlcigpO1xyXG5cdFx0aW50ZXJhY3Rpb25BcHBVc2VyLmFwcGxpY2F0aW9uSWQgPSBhcHBsaWNhdGlvbklkO1xyXG5cdFx0aW50ZXJhY3Rpb25BcHBVc2VyLnByb21Db2RpZ28gPSBwcm9tQ29kaWdvO1xyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0cGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uLnBsaUNuZkludGVyYWN0aW9uICYmXHJcblx0XHRcdHBsaUNuZlN0YXR1c0Zsb3dJbnRlcmFjdGlvbi5wbGlDbmZJbnRlcmFjdGlvbi5pZFxyXG5cdFx0KVxyXG5cdFx0XHRpbnRlcmFjdGlvbkFwcFVzZXIucGxpQ25mSW50ZXJhY3Rpb25JZCA9XHJcblx0XHRcdFx0cGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uLnBsaUNuZkludGVyYWN0aW9uLmlkO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRwbGlDbmZTdGF0dXNGbG93SW50ZXJhY3Rpb24ucGxpQ25mU3RhdHVzRmxvdyAmJlxyXG5cdFx0XHRwbGlDbmZTdGF0dXNGbG93SW50ZXJhY3Rpb24ucGxpQ25mU3RhdHVzRmxvdy5pZFxyXG5cdFx0KVxyXG5cdFx0XHRpbnRlcmFjdGlvbkFwcFVzZXIucGxpQ25mU3RhdHVzRmxvd0lkID0gcGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uLnBsaUNuZlN0YXR1c0Zsb3cuaWQ7XHJcblx0XHRpZiAocGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uLmlkKVxyXG5cdFx0XHRpbnRlcmFjdGlvbkFwcFVzZXIucGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uSWQgPSBwbGlDbmZTdGF0dXNGbG93SW50ZXJhY3Rpb24uaWQ7XHJcblxyXG5cdFx0aW50ZXJhY3Rpb25BcHBVc2VyLmludGVyYWN0aW9uU3RhdGljSWQgPSBFVHlwZVN0YXRpY0ludGVyYWN0aW9uLlNFTkRfQVBQTElDQVRJT047XHJcblx0XHRpbnRlcmFjdGlvbkFwcFVzZXIucGxpVXNlcklkID0gQXV0aGVudGljYXRpb25VdGlsLmdldFBsaVVzdWFyaW8oKVxyXG5cdFx0XHQ/IEF1dGhlbnRpY2F0aW9uVXRpbC5nZXRQbGlVc3VhcmlvKCkudXN1Q29kaWdvXHJcblx0XHRcdDogbnVsbDtcclxuXHRcdGludGVyYWN0aW9uQXBwVXNlci5wb3NpdGl2ZSA9IHRydWU7XHJcblx0XHRpbnRlcmFjdGlvbkFwcFVzZXIub2JzZXJ2YXRpb24gPSBvYnNlcnZhdGlvbiA/IG9ic2VydmF0aW9uIDogJ0VudsOtbyBkZSBzb2xpY2l0dWQnO1xyXG5cdFx0cmV0dXJuIHRoaXMuaW50ZXJhY3Rpb25BcHBsaWNhdGlvblVzZXJTZXJ2aWNlLnNhdmUoaW50ZXJhY3Rpb25BcHBVc2VyKTtcclxuXHR9XHJcblxyXG5cdHNhdmVJbnRlcmFjdGlvbkluZm9ybWF0aW9uKFxyXG5cdFx0aW50ZXJhY3Rpb25BcHBVc2VyOiBJbnRlcmFjdGlvbkFwcGxpY2F0aW9uVXNlcixcclxuXHRcdHJlc29sdmU6IGFueSxcclxuXHRcdHJlamVjdDogYW55XHJcblx0KSB7XHJcblx0XHR0aGlzLmludGVyYWN0aW9uQXBwbGljYXRpb25Vc2VyU2VydmljZS5zYXZlKGludGVyYWN0aW9uQXBwVXNlcikuc3Vic2NyaWJlKFxyXG5cdFx0XHQocmVzdWx0OiBJbnRlcmFjdGlvbkFwcGxpY2F0aW9uVXNlcikgPT4ge1xyXG5cdFx0XHRcdHJlc29sdmUocmVzdWx0KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdCdFUlJPUiAtIHNhdmVJbnRlcmFjdGlvbiAtIGludGVyYWN0aW9uQXBwbGljYXRpb25Vc2VyU2VydmljZS5zYXZlICcsXHJcblx0XHRcdFx0XHRlcnJvclxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHZhbGlkYXRlcyB0aGUgZGF0YVxyXG5cdCAqIEBwYXJhbSBsaXN0QXBwbGljYXRpb25cclxuXHQgKiBAcGFyYW0gbGlzdEZvcm1cclxuXHQgKiBAcGFyYW0gbGlzdERhdGFGb3JtXHJcblx0ICogQHBhcmFtIGxpc3RCdWRnZXRTZXR0aW5nXHJcblx0ICogQHBhcmFtIGxpc3RCdWRnZXRcclxuXHQgKiBAcGFyYW0gbGlzdENvbmZpZ3VyYXRpb25Eb2N1bWVudFxyXG5cdCAqIEBwYXJhbSBsaXN0RG9jdW1lbnRcclxuXHQgKiBAcGFyYW0gdmFsaWRhdGVKdXN0UmVxdWlyZWQgZWcuIHdoZW4gdGhlIHNjcmVlcm4gcmVxdWlyZSBnZXQganVzdCByZXF1aXJlIGRvY3VtZW50cyAoc2VuZCBhcHBsaWNhdGlvbilcclxuXHQgKi9cclxuXHRwdWJsaWMgdmFsaWRhdGUoXHJcblx0XHRsaXN0VG90YWxTdGF0dXM6IFBsaUNuZlN0YXR1c1tdLFxyXG5cdFx0bGlzdEFwcGxpY2F0aW9uOiBBcHBsaWNhdGlvbltdLFxyXG5cdFx0bGlzdEZvcm06IGFueVtdLFxyXG5cdFx0bGlzdERhdGFGb3JtOiBhbnlbXSxcclxuXHRcdGxpc3RCdWRnZXRTZXR0aW5nOiBhbnlbXSxcclxuXHRcdGxpc3RCdWRnZXQ6IEJ1ZGdldERhdGFbXSxcclxuXHRcdGxpc3RDb25maWd1cmF0aW9uRG9jdW1lbnQ6IENvbmZpZ3VyYXRpb25Eb2N1bWVudFtdLFxyXG5cdFx0bGlzdERvY3VtZW50OiBEb2N1bWVudFtdLFxyXG5cdFx0Y2FsbGJhY2s6IGFueSxcclxuXHRcdHZhbGlkYXRlSnVzdFJlcXVpcmVkOiBib29sZWFuLFxyXG5cdFx0dmFsaWRhdGVTdW1tYXJpemVkQnVkZ2V0PzogYm9vbGVhblxyXG5cdCk6IEFycmF5PFNlbmRBcHBsaWNhdGlvbj4ge1xyXG5cdFx0bGV0IGxpc3RTZW5kQXBwbGljYXRpb246IEFycmF5PFNlbmRBcHBsaWNhdGlvbj4gPSBbXTtcclxuXHRcdC8vIHJlc2V0IHBlcmNlbnRhZ2VcclxuXHRcdC8vIHRoaXMucmVzZXRQZXJjZW50YWdlKCk7XHJcblx0XHRpZiAobGlzdEFwcGxpY2F0aW9uICYmIGxpc3RBcHBsaWNhdGlvbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdC8vIGl0ZXJhdGUgb3ZlciBsaXN0QXBwbGljYXRpb25cclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0QXBwbGljYXRpb24ubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQvLyBkZWZpbmUgYXBwbGljYXRpb25cclxuXHRcdFx0XHRjb25zdCBhcHBsaWNhdGlvbiA9IGxpc3RBcHBsaWNhdGlvbltpXTtcclxuXHRcdFx0XHQvLyBjcmVhdGUgc2VuZCBhcHBsaWNhdGlvbiBvYmplY3RcclxuXHRcdFx0XHRsZXQgc2VuZEFwcGxpY2F0aW9uOiBTZW5kQXBwbGljYXRpb24gPSBuZXcgU2VuZEFwcGxpY2F0aW9uKCk7XHJcblx0XHRcdFx0Ly8gZGVmaW5lIGFwcGxpY2F0aW9uSWRcclxuXHRcdFx0XHRzZW5kQXBwbGljYXRpb24uYXBwbGljYXRpb25JZCA9IGFwcGxpY2F0aW9uLmlkO1xyXG5cclxuXHRcdFx0XHRsZXQgY3VycmVudFN0YXR1czogYW55ID0gW107XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0bGlzdFRvdGFsU3RhdHVzICYmXHJcblx0XHRcdFx0XHRsaXN0VG90YWxTdGF0dXMubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRhcHBsaWNhdGlvbi5zdGF0ZUlkICYmXHJcblx0XHRcdFx0XHRsaXN0Rm9ybSAmJlxyXG5cdFx0XHRcdFx0bGlzdEZvcm0ubGVuZ3RoXHJcblx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0Ly8gZ2V0IHRoZSBsaXN0IHBhZ2Ugc2VjdGlvbiBhY2NvcmRpbmcgdG8gc3RhdHVzSWRcclxuXHRcdFx0XHRcdGZvciAoY29uc3Qgc3RhdHVzIG9mIGxpc3RUb3RhbFN0YXR1cylcclxuXHRcdFx0XHRcdFx0aWYgKHN0YXR1cy5pZCA9PSBhcHBsaWNhdGlvbi5zdGF0ZUlkKSB7XHJcblx0XHRcdFx0XHRcdFx0Y3VycmVudFN0YXR1cyA9IHN0YXR1cztcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBkZWZpbmUgdGhlIGxpc3RGb3JtIHRoYXQgY2FuIGJlIHZhbGRpYXRlZCBhY2NvcmRpbmcgdG8gc3RhdHVzXHJcblx0XHRcdFx0Y29uc3QgbGlzdEZvcm1BY3RpdmF0ZWQgPSB0aGlzLmdldExpc3RGb3Jtc0J5U3RhdHVzKGN1cnJlbnRTdGF0dXMsIGxpc3RGb3JtKTtcclxuXHRcdFx0XHQvLyBnZXQgdmFsaWRhdGVkIGxpc3QgZm9ybVxyXG5cdFx0XHRcdHNlbmRBcHBsaWNhdGlvbi5saXN0VmFsaWRhdGVkRm9ybSA9IHRoaXMuZ2V0VmFsaWRhdGVkRm9ybUxpc3QoXHJcblx0XHRcdFx0XHRsaXN0Rm9ybUFjdGl2YXRlZCxcclxuXHRcdFx0XHRcdGxpc3REYXRhRm9ybSxcclxuXHRcdFx0XHRcdHNlbmRBcHBsaWNhdGlvbi5hcHBsaWNhdGlvbklkXHJcblx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0Ly8gZ2V0IHZhbGlkYXRlZCBsaXN0IGJ1ZGdldFxyXG5cdFx0XHRcdGlmICghdmFsaWRhdGVTdW1tYXJpemVkQnVkZ2V0KSB7XHJcblx0XHRcdFx0XHRzZW5kQXBwbGljYXRpb24ubGlzdFZhbGlkYXRlZEJ1ZGdldCA9IHRoaXMuZ2V0VmFsaWRhdGVkQnVkZ2V0KFxyXG5cdFx0XHRcdFx0XHRsaXN0QnVkZ2V0U2V0dGluZyxcclxuXHRcdFx0XHRcdFx0bGlzdEJ1ZGdldCxcclxuXHRcdFx0XHRcdFx0c2VuZEFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uSWQsXHJcblx0XHRcdFx0XHRcdGN1cnJlbnRTdGF0dXNcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHNlbmRBcHBsaWNhdGlvbi5saXN0VmFsaWRhdGVkQnVkZ2V0ID0gdGhpcy5nZXRWYWxpZGF0ZWRCdWRnZXRTdW1tYXJpemVkKFxyXG5cdFx0XHRcdFx0XHRsaXN0QnVkZ2V0U2V0dGluZyxcclxuXHRcdFx0XHRcdFx0bGlzdEJ1ZGdldCxcclxuXHRcdFx0XHRcdFx0c2VuZEFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uSWQsXHJcblx0XHRcdFx0XHRcdGN1cnJlbnRTdGF0dXNcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBnZXQgdmFsaWRhdGVkIGxpc3QgZG9jdW1lbnRcclxuXHRcdFx0XHRzZW5kQXBwbGljYXRpb24ubGlzdFZhbGlkYXRlZERvY3VtZW50ID0gdGhpcy5nZXRWYWxpZGF0ZWREb2N1bWVudChcclxuXHRcdFx0XHRcdGN1cnJlbnRTdGF0dXMsXHJcblx0XHRcdFx0XHRsaXN0Q29uZmlndXJhdGlvbkRvY3VtZW50LFxyXG5cdFx0XHRcdFx0bGlzdERvY3VtZW50LFxyXG5cdFx0XHRcdFx0YXBwbGljYXRpb24sXHJcblx0XHRcdFx0XHRsaXN0RGF0YUZvcm0sXHJcblx0XHRcdFx0XHR2YWxpZGF0ZUp1c3RSZXF1aXJlZFxyXG5cdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdC8vIHJlc29sdmUgdmFsaWRhdGlvbiAtIG5vIGxpc3RWYWxpZGF0ZWREb2MgLSAgbGlzdFZhbGlkYXRlZEJ1ZGdldCAtIGxpc3RWYWxpZGF0ZWRGb3JtXHJcblx0XHRcdFx0c2VuZEFwcGxpY2F0aW9uLnZhbGlkYXRpb24gPVxyXG5cdFx0XHRcdFx0IXNlbmRBcHBsaWNhdGlvbi5saXN0VmFsaWRhdGVkRG9jdW1lbnQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHQhc2VuZEFwcGxpY2F0aW9uLmxpc3RWYWxpZGF0ZWRCdWRnZXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHQhc2VuZEFwcGxpY2F0aW9uLmxpc3RWYWxpZGF0ZWRGb3JtLmxlbmd0aDtcclxuXHRcdFx0XHQvLyBhZGQgdG8gYXJyYXlcclxuXHRcdFx0XHRsaXN0U2VuZEFwcGxpY2F0aW9uLnB1c2goc2VuZEFwcGxpY2F0aW9uKTtcclxuXHRcdFx0XHQvLyBjYWxsIGNhbGxiYWNrXHJcblx0XHRcdFx0aWYgKGNhbGxiYWNrKSBjYWxsYmFjayhzZW5kQXBwbGljYXRpb24sIGFwcGxpY2F0aW9uLCBpLCBsaXN0QXBwbGljYXRpb24ubGVuZ3RoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGxpc3RTZW5kQXBwbGljYXRpb247XHJcblx0fVxyXG5cclxuXHQvKiogaXQgcmV0dXJucyB0aGUgZm9ybXMgdGhhdCBhcmUgYWN0aXZhdGVkIGFjY29yZGluZyB0byBzdGF0dXMgKi9cclxuXHRnZXRMaXN0Rm9ybXNCeVN0YXR1cyhjdXJyZW50U3RhdHVzOiBQbGlDbmZTdGF0dXMsIGxpc3RGb3JtOiBhbnlbXSk6IGFueVtdIHtcclxuXHRcdGxldCBsaXN0QWN0aXZhdGVkRm9ybTogYW55W10gPSBbXTtcclxuXHRcdGxldCBsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb246IFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uW10gPVxyXG5cdFx0XHRjdXJyZW50U3RhdHVzLmxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbjtcclxuXHRcdGlmIChsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb24gJiYgbGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uLmxlbmd0aClcclxuXHRcdFx0Ly8gZmlsbCB0aGUgbGlzdCBhY3RpdmF0ZWQgZm9ybVxyXG5cdFx0XHRmb3IgKGNvbnN0IGZvcm0gb2YgbGlzdEZvcm0pXHJcblx0XHRcdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbilcclxuXHRcdFx0XHRcdGlmIChzZWN0aW9uLmlkRm9ybSA9PSBmb3JtLmlkKSB7XHJcblx0XHRcdFx0XHRcdGxpc3RBY3RpdmF0ZWRGb3JtLnB1c2goZm9ybSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0cmV0dXJuIGxpc3RBY3RpdmF0ZWRGb3JtO1xyXG5cdH1cclxuXHJcblx0LyoqIGl0IHJldHVybnMgdGhlIHZhbGlkYXRlZCBkb2N1bWVudCBsaXN0ICovXHJcblx0Z2V0VmFsaWRhdGVkRG9jdW1lbnQoXHJcblx0XHRjdXJyZW50U3RhdHVzOiBhbnksXHJcblx0XHRsaXN0Q29uZmlndXJhdGlvbkRvY3VtZW50LFxyXG5cdFx0bGlzdERvY3VtZW50LFxyXG5cdFx0YXBwbGljYXRpb246IEFwcGxpY2F0aW9uLFxyXG5cdFx0bGlzdERhdGFGb3JtLFxyXG5cdFx0dmFsaWRhdGVKdXN0UmVxdWlyZWQ6IGJvb2xlYW5cclxuXHQpOiBhbnlbXSB7XHJcblx0XHRsZXQgbGlzdFZhbGlkYXRlZERvY3VtZW50ID0gW107XHJcblx0XHRpZiAobGlzdENvbmZpZ3VyYXRpb25Eb2N1bWVudCkge1xyXG5cdFx0XHQvLyBpdCBjb250YWlucyB0aGUgZG9jdW1lbnRzIHRoYXQgYXJlIHZpc2libGVcclxuXHRcdFx0bGV0IGxpc3RDb25maWd1cmF0aW9uRG9jdW1lbnRWaXNpYmxlID0gW107XHJcblxyXG5cdFx0XHQvL2NoZWNrSWZTaG91bGRWYWxpZGF0ZVxyXG5cdFx0XHRsZXQgc2hvdWxkVmFsaWRhdGVEb2N1bWVudHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdFx0bGV0IGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbjogUGxpQ25mU3RhdHVzUGFnZVNlY3Rpb25bXSA9XHJcblx0XHRcdFx0Y3VycmVudFN0YXR1cy5saXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb247XHJcblx0XHRcdGlmIChsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb24gJiYgbGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uLmxlbmd0aClcclxuXHRcdFx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgbGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uKVxyXG5cdFx0XHRcdFx0aWYgKHNlY3Rpb24ucGxpQ25mUGFnZVNlY3Rpb24pXHJcblx0XHRcdFx0XHRcdHN3aXRjaCAoc2VjdGlvbi5wbGlDbmZQYWdlU2VjdGlvbi5rZXlMYWJlbCkge1xyXG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2RvY3VtZW50b3MnOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRzaG91bGRWYWxpZGF0ZURvY3VtZW50cyA9IHRydWU7XHJcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0aWYgKCFzaG91bGRWYWxpZGF0ZURvY3VtZW50cykgcmV0dXJuIGxpc3RWYWxpZGF0ZWREb2N1bWVudDtcclxuXHJcblx0XHRcdC8vIHJlc29sdmUgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2aXNpYmxlXHJcblx0XHRcdGlmIChsaXN0Q29uZmlndXJhdGlvbkRvY3VtZW50KSB7XHJcblx0XHRcdFx0Zm9yIChjb25zdCBjb25maWd1cmF0aW9uRG9jdW1lbnQgb2YgbGlzdENvbmZpZ3VyYXRpb25Eb2N1bWVudCkge1xyXG5cdFx0XHRcdFx0bGV0IHZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdFx0XHRcdFx0aWYgKGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5mb3JtdWxhICYmIGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5mb3JtdWxhLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRsZXQgZm9ybXVsYSA9ICcnO1xyXG5cdFx0XHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBkYXRhID0geyBzdGF0dXNuYW1lOiBhcHBsaWNhdGlvbi5zdGF0ZU5hbWUgfTtcclxuXHRcdFx0XHRcdFx0XHRpZiAobGlzdERhdGFGb3JtKVxyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBkYXRhRm9ybSBvZiBsaXN0RGF0YUZvcm0pXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gZGF0YUZvcm0uZGF0YSlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRhW3Byb3BlcnR5LnRvTG93ZXJDYXNlKCldID0gZGF0YUZvcm0uZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdFx0Zm9ybXVsYSA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29uZmlndXJhdGlvbkRvY3VtZW50LmZvcm11bGEsXHJcblx0XHRcdFx0XHRcdFx0XHRkYXRhXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgcmVzdWx0ID0gZXZhbChmb3JtdWxhKTtcclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0ICE9PSB0cnVlKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdFx0XHRcdHZpc2libGUgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHZpc2libGUpIHtcclxuXHRcdFx0XHRcdFx0bGlzdENvbmZpZ3VyYXRpb25Eb2N1bWVudFZpc2libGUucHVzaChjb25maWd1cmF0aW9uRG9jdW1lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gcmVzb2x2ZSB0aGUgbGlzdCBvZiBkb2N1bWVudHNcclxuXHRcdFx0aWYgKGxpc3RDb25maWd1cmF0aW9uRG9jdW1lbnRWaXNpYmxlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Q29uZmlndXJhdGlvbkRvY3VtZW50VmlzaWJsZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0bGV0IGNvbmZpZ3VyYXRpb25Eb2N1bWVudCA9IGxpc3RDb25maWd1cmF0aW9uRG9jdW1lbnRWaXNpYmxlW2ldO1xyXG5cdFx0XHRcdFx0bGV0IGRvY3VtZW50OiBEb2N1bWVudCA9IHRoaXMuZ2V0RG9jdW1lbnRCeUNvbmZpZ3VyYXRpb25JZChcclxuXHRcdFx0XHRcdFx0Y29uZmlndXJhdGlvbkRvY3VtZW50LmlkLFxyXG5cdFx0XHRcdFx0XHRsaXN0RG9jdW1lbnQsXHJcblx0XHRcdFx0XHRcdGFwcGxpY2F0aW9uLmlkXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0aWYgKHZhbGlkYXRlSnVzdFJlcXVpcmVkKSB7XHJcblx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHQoIWRvY3VtZW50IHx8XHJcblx0XHRcdFx0XHRcdFx0XHQoZG9jdW1lbnQgJiYgZG9jdW1lbnQubGlzdEFyY2hpdmUubGVuZ3RoID09IDApIHx8XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmF1dG9tYXRpY0RvY3VtZW50c1ZhbGlkYXRlZChcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlndXJhdGlvbkRvY3VtZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0RGF0YUZvcm0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdGRvY3VtZW50XHJcblx0XHRcdFx0XHRcdFx0XHQpKSAmJlxyXG5cdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5yZXF1aXJlZFxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmZpbGxMaXN0VmFsaWRhdGVEb2N1bWVudERlZmF1bHQoXHJcblx0XHRcdFx0XHRcdFx0XHRsaXN0VmFsaWRhdGVkRG9jdW1lbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRhcHBsaWNhdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYXRpb25Eb2N1bWVudFxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGlmIChkb2N1bWVudCkge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChkb2N1bWVudC5zdGF0ZSA9PSBFRG9jdW1lbnRTdGF0ZS5QRU5ESUVOVEUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGxpc3RWYWxpZGF0ZWREb2N1bWVudC5wdXNoKGRvY3VtZW50KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5maWxsTGlzdFZhbGlkYXRlRG9jdW1lbnREZWZhdWx0KFxyXG5cdFx0XHRcdFx0XHRcdFx0bGlzdFZhbGlkYXRlZERvY3VtZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0YXBwbGljYXRpb24sXHJcblx0XHRcdFx0XHRcdFx0XHRjb25maWd1cmF0aW9uRG9jdW1lbnRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbGlzdFZhbGlkYXRlZERvY3VtZW50O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBmaWxsTGlzdFZhbGlkYXRlRG9jdW1lbnREZWZhdWx0KFxyXG5cdFx0bGlzdFZhbGlkYXRlZERvY3VtZW50LFxyXG5cdFx0YXBwbGljYXRpb24sXHJcblx0XHRjb25maWd1cmF0aW9uRG9jdW1lbnRcclxuXHQpIHtcclxuXHRcdGxldCBkb2N1bWVudCA9IG5ldyBEb2N1bWVudCgpO1xyXG5cdFx0ZG9jdW1lbnQuYXBwbGljYXRpb25JZCA9IGFwcGxpY2F0aW9uLmlkO1xyXG5cdFx0ZG9jdW1lbnQucHJvbUNvZGlnbyA9IGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5wcm9tQ29kaWdvO1xyXG5cdFx0ZG9jdW1lbnQuc3RhdGUgPSBFRG9jdW1lbnRTdGF0ZS5QRU5ESUVOVEU7XHJcblx0XHRkb2N1bWVudC5jb25maWd1cmF0aW9uRG9jdW1lbnRJZCA9IGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5pZDtcclxuXHRcdGRvY3VtZW50Lmxpc3RBcmNoaXZlID0gW107XHJcblx0XHRsaXN0VmFsaWRhdGVkRG9jdW1lbnQucHVzaChkb2N1bWVudCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZ2V0cyBkb2N1bWVudCBieSBjb25maWd1cmF0aW9uIElkICovXHJcblx0cHJpdmF0ZSBnZXREb2N1bWVudEJ5Q29uZmlndXJhdGlvbklkKFxyXG5cdFx0Y29uZmlndXJhdGlvbkRvY3VtZW50SWQ6IG51bWJlcixcclxuXHRcdGxpc3Q6IEFycmF5PERvY3VtZW50PixcclxuXHRcdGFwcGxpY2F0aW9uSWQ6IHN0cmluZ1xyXG5cdCk6IERvY3VtZW50IHtcclxuXHRcdGlmIChsaXN0KVxyXG5cdFx0XHRmb3IgKGNvbnN0IGRvY3VtZW50IG9mIGxpc3QpXHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZG9jdW1lbnQuY29uZmlndXJhdGlvbkRvY3VtZW50SWQgPT09IGNvbmZpZ3VyYXRpb25Eb2N1bWVudElkICYmXHJcblx0XHRcdFx0XHRkb2N1bWVudC5hcHBsaWNhdGlvbklkID09PSBhcHBsaWNhdGlvbklkXHJcblx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0cmV0dXJuIGRvY3VtZW50O1xyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0LyoqIGdldCB0aGUgYnVkZ2V0IGFwcGxpY2F0aW9uIGJ5IHR5cGUgYnVkZ2V0IGFuZCBidWRnZXQgc2V0dXAgaWQgKi9cclxuXHRwcml2YXRlIGdldFZhbGlkYXRlZEJ1ZGdldEFwcGxpY2F0aW9uKFxyXG5cdFx0YnVkZ2V0U2V0dGluZzogYW55LFxyXG5cdFx0dHlwZUJ1ZGdldDogYW55LFxyXG5cdFx0bGlzdEJ1ZGdldDogQnVkZ2V0RGF0YVtdLFxyXG5cdFx0YXBwbGljYXRpb25JZFxyXG5cdCk6IGFueSB7XHJcblx0XHRpZiAobGlzdEJ1ZGdldClcclxuXHRcdFx0Zm9yIChjb25zdCBidWRnZXQgb2YgbGlzdEJ1ZGdldClcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRidWRnZXQudGFnID09IHR5cGVCdWRnZXQgJiZcclxuXHRcdFx0XHRcdGJ1ZGdldFNldHRpbmcuY3ByZUNvZGlnbyA9PSBidWRnZXQuYnVkZ2V0U2V0dXBJZCAmJlxyXG5cdFx0XHRcdFx0YnVkZ2V0LmFwcGxpY2F0aW9uSWQgPT0gYXBwbGljYXRpb25JZFxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMudmFsaWRhdGVCdWRnZXQoYnVkZ2V0LCBidWRnZXRTZXR0aW5nLCB0eXBlQnVkZ2V0KTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMudmFsaWRhdGVCdWRnZXQobnVsbCwgYnVkZ2V0U2V0dGluZywgdHlwZUJ1ZGdldCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgdmFsaWRhdGVzIHRoZSBidWRnZXQgKi9cclxuXHRwcml2YXRlIHZhbGlkYXRlQnVkZ2V0KGJ1ZGdldDogYW55LCBidWRnZXRTZXR0aW5nOiBhbnksIHR5cGU6IGFueSkge1xyXG5cdFx0aWYgKCFidWRnZXQgfHwgIWJ1ZGdldC5zdW1tYXJ5IHx8ICFidWRnZXQuc3VtbWFyeS5idWRnZXRUb3RhbClcclxuXHRcdFx0Ly8gdmFsaWRhdGUgaWYgdGhlcmUgaXMgYSBidWRnZXQgb2JqZWN0XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0YnVkZ2V0OiBidWRnZXQsXHJcblx0XHRcdFx0dHlwZTogdHlwZSxcclxuXHRcdFx0XHRidWRnZXRTZXR0aW5nOiBidWRnZXRTZXR0aW5nLFxyXG5cdFx0XHRcdGVycm9yOiBFQnVkZ2V0RXJyb3IuTk9fT0JKRUNUXHJcblx0XHRcdH07XHJcblx0XHRlbHNlIGlmIChcclxuXHRcdFx0KHR5cGUgPT09IEVCdWRnZXRCdWlsZFR5cGUuZmluYW5jaW5nIHx8IHR5cGUgPT09IEVCdWRnZXRCdWlsZFR5cGUubWl4ZWQpICYmXHJcblx0XHRcdGJ1ZGdldC5zdW1tYXJ5LmJ1ZGdldFRvdGFsID4gYnVkZ2V0U2V0dGluZy5jcHJlTW9udG9Ub3RhbFxyXG5cdFx0KVxyXG5cdFx0XHQvLyB2YWxpZGF0ZSBpZiBhbW91bnQgdG90YWwgb3ZlcmNvbWVzIHRoZSBtYXhpbXVtXHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0YnVkZ2V0OiBidWRnZXQsXHJcblx0XHRcdFx0dHlwZTogdHlwZSxcclxuXHRcdFx0XHRidWRnZXRTZXR0aW5nOiBidWRnZXRTZXR0aW5nLFxyXG5cdFx0XHRcdGVycm9yOiBFQnVkZ2V0RXJyb3IuT1ZFUkNPTUVfTUFYSU1VTV9BTU9VTlRcclxuXHRcdFx0fTtcclxuXHRcdGVsc2UgaWYgKFxyXG5cdFx0XHR0eXBlID09PSBFQnVkZ2V0QnVpbGRUeXBlLmZpbmFuY2luZyAmJlxyXG5cdFx0XHQoIWJ1ZGdldC5maW5hbmNpbmdTdGFydCB8fCAhYnVkZ2V0LmZpbmFuY2luZ0VuZClcclxuXHRcdClcclxuXHRcdFx0Ly8gdmFsaWRhdGUgaWYgZmluYW5jaW5nIGRhdGVzIGFyZSBkZWZpbmVkXHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0YnVkZ2V0OiBidWRnZXQsXHJcblx0XHRcdFx0dHlwZTogdHlwZSxcclxuXHRcdFx0XHRidWRnZXRTZXR0aW5nOiBidWRnZXRTZXR0aW5nLFxyXG5cdFx0XHRcdGVycm9yOiBFQnVkZ2V0RXJyb3IuRklOQU5DSU5HX0RBVEVTXHJcblx0XHRcdH07XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdmFsaWRhdGVTdW1tYXJpemVkQnVkZ2V0KGJ1ZGdldFNldHRpbmc6IGFueSwgdHlwZTogYW55LCBidWRnZXQ6IGFueSkge1xyXG5cdFx0aWYgKCFidWRnZXQgfHwgIWJ1ZGdldC5zdW1tYXJ5IHx8ICFidWRnZXQuc3VtbWFyeS5idWRnZXRUb3RhbCkge1xyXG5cdFx0XHQvLyB2YWxpZGF0ZSBpZiB0aGVyZSBpcyBhIGJ1ZGdldCBvYmplY3RcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRidWRnZXQ6IGJ1ZGdldCxcclxuXHRcdFx0XHR0eXBlOiB0eXBlLFxyXG5cdFx0XHRcdGJ1ZGdldFNldHRpbmc6IGJ1ZGdldFNldHRpbmcsXHJcblx0XHRcdFx0ZXJyb3I6IEVCdWRnZXRFcnJvci5OT19PQkpFQ1RcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHZhbGlkYXRlQ29tcGxldGVCdWRnZXQobGlzdEJ1ZGdldFNldHRpbmcsIGxpc3RCdWRnZXQsIGFwcGxpY2F0aW9uSWQpOiBhbnlbXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXRWYWxpZGF0ZWRCdWRnZXQobGlzdEJ1ZGdldFNldHRpbmcsIGxpc3RCdWRnZXQsIGFwcGxpY2F0aW9uSWQpO1xyXG5cdH1cclxuXHJcblx0LyoqIGl0IHJldHVybnMgdGhlIHZhbGlkYXRlZCBidWRnZXQgbGlzdCAqL1xyXG5cdHByaXZhdGUgZ2V0VmFsaWRhdGVkQnVkZ2V0KFxyXG5cdFx0bGlzdEJ1ZGdldFNldHRpbmcsXHJcblx0XHRsaXN0QnVkZ2V0LFxyXG5cdFx0YXBwbGljYXRpb25JZCxcclxuXHRcdGN1cnJlbnRTdGF0dXM/XHJcblx0KTogYW55W10ge1xyXG5cdFx0bGV0IGxpc3RWYWxpZGF0ZWRCdWRnZXQ6IGFueVtdID0gW107XHJcblx0XHRpZiAobGlzdEJ1ZGdldFNldHRpbmcpIHtcclxuXHRcdFx0bGV0IHNob3VsZFZhbGlkYXRlVG90YWxCdWRnZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdFx0bGV0IHNob3VsZFZhbGlkYXRlRmluYW5jaW5nQnVkZ2V0OiBib29sZWFuID0gZmFsc2U7XHJcblx0XHRcdGlmIChjdXJyZW50U3RhdHVzKSB7XHJcblx0XHRcdFx0bGV0IGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbjogUGxpQ25mU3RhdHVzUGFnZVNlY3Rpb25bXSA9XHJcblx0XHRcdFx0XHRjdXJyZW50U3RhdHVzLmxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbjtcclxuXHRcdFx0XHRpZiAobGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uICYmIGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbi5sZW5ndGgpXHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgbGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uKVxyXG5cdFx0XHRcdFx0XHRpZiAoc2VjdGlvbi5wbGlDbmZQYWdlU2VjdGlvbilcclxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKHNlY3Rpb24ucGxpQ25mUGFnZVNlY3Rpb24ua2V5TGFiZWwpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJ3ByZXN1cHVlc3RvLnRvdGFsJzoge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG91bGRWYWxpZGF0ZVRvdGFsQnVkZ2V0ID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICdwcmVzdXB1ZXN0by5maW5hbmNpYWNpb24nOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHNob3VsZFZhbGlkYXRlRmluYW5jaW5nQnVkZ2V0ID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHNob3VsZFZhbGlkYXRlVG90YWxCdWRnZXQgPSB0cnVlO1xyXG5cdFx0XHRcdHNob3VsZFZhbGlkYXRlRmluYW5jaW5nQnVkZ2V0ID0gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gaXRlcmF0ZSBvdmVyIGxpc3RCdWRnZXRTZXR0aW5nXHJcblx0XHRcdGZvciAoY29uc3QgYnVkZ2V0U2V0dGluZyBvZiBsaXN0QnVkZ2V0U2V0dGluZykge1xyXG5cdFx0XHRcdC8vIHNraXAgZ2VuZXJhbCBidWRnZXRcclxuXHRcdFx0XHRpZiAoYnVkZ2V0U2V0dGluZy5wbGlUaXBvUHJlc3VwdWVzdG8udHByZXNDb2RpZ28gPT0gRVRpcG9QcmVzdXB1ZXN0by5HRU5FUkFMKVxyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0Ly8gYnVkZ2V0IHRvdGFsXHJcblx0XHRcdFx0Y29uc3QgYnVkZ2V0RGF0YVRvdGFsID0gdGhpcy5nZXRWYWxpZGF0ZWRCdWRnZXRBcHBsaWNhdGlvbihcclxuXHRcdFx0XHRcdGJ1ZGdldFNldHRpbmcsXHJcblx0XHRcdFx0XHRFQnVkZ2V0QnVpbGRUeXBlLnRvdGFsLFxyXG5cdFx0XHRcdFx0bGlzdEJ1ZGdldCxcclxuXHRcdFx0XHRcdGFwcGxpY2F0aW9uSWRcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGlmIChidWRnZXREYXRhVG90YWwgJiYgc2hvdWxkVmFsaWRhdGVUb3RhbEJ1ZGdldClcclxuXHRcdFx0XHRcdGxpc3RWYWxpZGF0ZWRCdWRnZXQucHVzaChidWRnZXREYXRhVG90YWwpO1xyXG5cdFx0XHRcdC8vIGlmIGl0IGhhcyBvd24gZnVuZHMsIHNvIGl0IHZhbGlkYXRlcyB0b3RhbCBhbmQgZmluYW5jaW5nXHJcblx0XHRcdFx0aWYgKGJ1ZGdldFNldHRpbmcuY3ByZUVzRm9uZG9zUHJvcGlvcykge1xyXG5cdFx0XHRcdFx0Y29uc3QgYnVkZ2V0RGF0YUZpbmFuY2luZyA9IHRoaXMuZ2V0VmFsaWRhdGVkQnVkZ2V0QXBwbGljYXRpb24oXHJcblx0XHRcdFx0XHRcdGJ1ZGdldFNldHRpbmcsXHJcblx0XHRcdFx0XHRcdEVCdWRnZXRCdWlsZFR5cGUuZmluYW5jaW5nLFxyXG5cdFx0XHRcdFx0XHRsaXN0QnVkZ2V0LFxyXG5cdFx0XHRcdFx0XHRhcHBsaWNhdGlvbklkXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0aWYgKGJ1ZGdldERhdGFGaW5hbmNpbmcgJiYgc2hvdWxkVmFsaWRhdGVGaW5hbmNpbmdCdWRnZXQpXHJcblx0XHRcdFx0XHRcdGxpc3RWYWxpZGF0ZWRCdWRnZXQucHVzaChidWRnZXREYXRhRmluYW5jaW5nKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBsaXN0VmFsaWRhdGVkQnVkZ2V0O1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHZhbGlkYXRlZCBmb3JtIGxpc3QgKi9cclxuXHRwcml2YXRlIGdldFZhbGlkYXRlZEZvcm1MaXN0KGxpc3RGb3JtLCBsaXN0RGF0YUZvcm0sIGFwcGxpY2F0aW9uSWQpOiBhbnlbXSB7XHJcblx0XHRsZXQgbGlzdFZhbGlkYXRlZEZvcm06IGFueVtdID0gW107XHJcblx0XHRpZiAobGlzdEZvcm0pIHtcclxuXHRcdFx0Ly8gaXRlcmF0ZSBvdmVyIGxpc3Rmb3JtXHJcblx0XHRcdGZvciAoY29uc3QgZm9ybSBvZiBsaXN0Rm9ybSkge1xyXG5cdFx0XHRcdC8vIGdldCBlcnJvcnMgYnkgZm9ybUlkIGFuZCBBcHBsaWNhdGlvbklkXHJcblx0XHRcdFx0Y29uc3QgZXJyb3JzID0gdGhpcy5nZXRFcnJvcnNCeUZvcm1JZEFuZEFwcGxpY2F0aW9uSWQoXHJcblx0XHRcdFx0XHRsaXN0RGF0YUZvcm0sXHJcblx0XHRcdFx0XHRmb3JtLmlkLFxyXG5cdFx0XHRcdFx0YXBwbGljYXRpb25JZFxyXG5cdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgY29tcG9uZW50cyA9IEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50cyhmb3JtLmNvbXBvbmVudHMpO1xyXG5cclxuXHRcdFx0XHRcdC8vIGdlbmVyYXRlIHRoZSBlcnJvciBjb21wb25lbnRzIGFjY29yZGluZyB0byBlcnJvcnNcclxuXHRcdFx0XHRcdGxldCBlcnJvckNvbXBvbmVudCA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBlcnJvciBvZiBlcnJvcnMpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGVycm9yICYmIGVycm9yLmNvbXBvbmVudCAmJiBlcnJvci5jb21wb25lbnQua2V5ICYmIGNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50LmtleSA9PSBlcnJvci5jb21wb25lbnQua2V5KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yQ29tcG9uZW50LnB1c2goY29tcG9uZW50KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0aWYgKGVycm9yQ29tcG9uZW50ICYmIGVycm9yQ29tcG9uZW50Lmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHQvLyBvcmdhbml6aW5nIGJ5IHBhbmVsc1xyXG5cdFx0XHRcdFx0XHRjb25zdCBwYW5lbHMgPSBGb3JtaW9VdGlsLmdldEZvcm1hdHRlZENvbXBvbmVudHNCeVBhbmVsKGVycm9yQ29tcG9uZW50KTtcclxuXHRcdFx0XHRcdFx0Ly8gYWRkIHRvIGxpc3RWYWxpZGF0ZWRGb3JtXHJcblx0XHRcdFx0XHRcdGxpc3RWYWxpZGF0ZWRGb3JtLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdGlkOiBmb3JtLmlkLFxyXG5cdFx0XHRcdFx0XHRcdG5hbWU6IGZvcm0udGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0cGFuZWxzOiBwYW5lbHMsXHJcblx0XHRcdFx0XHRcdFx0dG9nZ2xlOiBmYWxzZVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Ly8gdmVyaWZ5IGlmIGRhdGEgaXMgY29tcGxldGVkXHJcblx0XHRcdFx0XHQvLyBnZXQgZGF0YSBieSBmb3JtIGlkIGFuZCBhcHAgaWRcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGFCeUZvcm1JZEFuZEFwcGxpY2F0aW9uSWQoXHJcblx0XHRcdFx0XHRcdGxpc3REYXRhRm9ybSxcclxuXHRcdFx0XHRcdFx0Zm9ybS5pZCxcclxuXHRcdFx0XHRcdFx0YXBwbGljYXRpb25JZFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdC8vIGdldCBjb21wb25lbnRzIGFyZSByZXF1aXJlZCBhY2NvcmRpbmcgdG8gZGF0YVxyXG5cdFx0XHRcdFx0Y29uc3QgY29tcG9uZW50cyA9IEZvcm1pb1V0aWwuZ2V0UmVxdWlyZWRDb21wb25lbnRzQnlEYXRhKFxyXG5cdFx0XHRcdFx0XHRmb3JtLmNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdGRhdGFcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRpZiAoY29tcG9uZW50cyAmJiBjb21wb25lbnRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHQvLyBvcmdhbml6aW5nIGJ5IHBhbmVsc1xyXG5cdFx0XHRcdFx0XHRjb25zdCBwYW5lbHMgPSBGb3JtaW9VdGlsLmdldEZvcm1hdHRlZENvbXBvbmVudHNCeVBhbmVsKGNvbXBvbmVudHMpO1xyXG5cdFx0XHRcdFx0XHQvLyBhZGQgdG8gbGlzdFZhbGlkYXRlZEZvcm1cclxuXHRcdFx0XHRcdFx0bGlzdFZhbGlkYXRlZEZvcm0ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0aWQ6IGZvcm0uaWQsXHJcblx0XHRcdFx0XHRcdFx0bmFtZTogZm9ybS50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRwYW5lbHM6IHBhbmVscyxcclxuXHRcdFx0XHRcdFx0XHR0b2dnbGU6IGZhbHNlXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGxpc3RWYWxpZGF0ZWRGb3JtO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIGRhdGEgYnkgZm9ybUlkIGFuZCBBcHBsaWNhdGlvbklkICovXHJcblx0cHJpdmF0ZSBnZXRFcnJvcnNCeUZvcm1JZEFuZEFwcGxpY2F0aW9uSWQobGlzdERhdGFGb3JtLCBmb3JtSWQsIGFwcGxpY2F0aW9uSWQpOiBhbnkge1xyXG5cdFx0aWYgKGxpc3REYXRhRm9ybSAmJiBmb3JtSWQgJiYgYXBwbGljYXRpb25JZClcclxuXHRcdFx0Zm9yIChjb25zdCBkYXRhIG9mIGxpc3REYXRhRm9ybSlcclxuXHRcdFx0XHRpZiAoZGF0YS5mb3JtSWQgPT0gZm9ybUlkICYmIGRhdGEuYXBwbGljYXRpb25JZCA9PSBhcHBsaWNhdGlvbklkKVxyXG5cdFx0XHRcdFx0cmV0dXJuIGRhdGEuZXJyb3JzO1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgZGF0YSBieSBmb3JtSWQgYW5kIEFwcGxpY2F0aW9uSWQgKi9cclxuXHRwcml2YXRlIGdldERhdGFCeUZvcm1JZEFuZEFwcGxpY2F0aW9uSWQobGlzdERhdGFGb3JtLCBmb3JtSWQsIGFwcGxpY2F0aW9uSWQpOiBhbnkge1xyXG5cdFx0aWYgKGxpc3REYXRhRm9ybSAmJiBmb3JtSWQgJiYgYXBwbGljYXRpb25JZClcclxuXHRcdFx0Zm9yIChjb25zdCBkYXRhIG9mIGxpc3REYXRhRm9ybSlcclxuXHRcdFx0XHRpZiAoZGF0YS5mb3JtSWQgPT0gZm9ybUlkICYmIGRhdGEuYXBwbGljYXRpb25JZCA9PSBhcHBsaWNhdGlvbklkKSByZXR1cm4gZGF0YS5kYXRhO1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHRnZXRWYWxpZGF0ZWRCdWRnZXRTdW1tYXJpemVkKFxyXG5cdFx0bGlzdEJ1ZGdldFNldHRpbmcsXHJcblx0XHRsaXN0QnVkZ2V0LFxyXG5cdFx0YXBwbGljYXRpb25JZCxcclxuXHRcdGN1cnJlbnRTdGF0dXNcclxuXHQpOiBhbnlbXSB7XHJcblx0XHRsZXQgbGlzdFZhbGlkYXRlZEJ1ZGdldDogYW55W10gPSBbXTtcclxuXHRcdGlmIChsaXN0QnVkZ2V0U2V0dGluZykge1xyXG5cdFx0XHRsZXQgc2hvdWxkVmFsaWRhdGVUb3RhbEJ1ZGdldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdFx0XHRpZiAoY3VycmVudFN0YXR1cykge1xyXG5cdFx0XHRcdGxldCBsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb246IFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uW10gPVxyXG5cdFx0XHRcdFx0Y3VycmVudFN0YXR1cy5saXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb247XHJcblx0XHRcdFx0aWYgKGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbiAmJiBsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb24ubGVuZ3RoKVxyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbilcclxuXHRcdFx0XHRcdFx0aWYgKHNlY3Rpb24ucGxpQ25mUGFnZVNlY3Rpb24pXHJcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChzZWN0aW9uLnBsaUNuZlBhZ2VTZWN0aW9uLmtleUxhYmVsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIEVDbmZQYWdlU2VjdGlvbi5wcmVzdXB1ZXN0b1Jlc3VtaWRvOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHNob3VsZFZhbGlkYXRlVG90YWxCdWRnZXQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0c2hvdWxkVmFsaWRhdGVUb3RhbEJ1ZGdldCA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgYnVkZ2V0RGF0YVRvdGFsID0gdGhpcy52YWxpZGF0ZVN1bW1hcml6ZWRCdWRnZXQoXHJcblx0XHRcdFx0bGlzdEJ1ZGdldFNldHRpbmdbMF0sXHJcblx0XHRcdFx0RUJ1ZGdldEJ1aWxkVHlwZS50b3RhbCxcclxuXHRcdFx0XHRsaXN0QnVkZ2V0WzBdXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChidWRnZXREYXRhVG90YWwgJiYgc2hvdWxkVmFsaWRhdGVUb3RhbEJ1ZGdldClcclxuXHRcdFx0XHRsaXN0VmFsaWRhdGVkQnVkZ2V0LnB1c2goYnVkZ2V0RGF0YVRvdGFsKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBsaXN0VmFsaWRhdGVkQnVkZ2V0O1xyXG5cdH1cclxuXHJcblx0YXV0b21hdGljRG9jdW1lbnRzVmFsaWRhdGVkKFxyXG5cdFx0Y29uZmlnRG9jdW1lbnQ6IENvbmZpZ3VyYXRpb25Eb2N1bWVudCxcclxuXHRcdGxpc3REYXRhRm9ybTogYW55W10sXHJcblx0XHRkb2N1bWVudDogRG9jdW1lbnRcclxuXHQpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0Y29uZmlnRG9jdW1lbnQuZm9ybXVsYVZhbGlkYXRlTXVsdGlwbGUgJiZcclxuXHRcdFx0Y29uZmlnRG9jdW1lbnQuZm9ybXVsYVZhbGlkYXRlTXVsdGlwbGUubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBkYXRhID0geyBzdGF0dXNuYW1lOiAnJyB9O1xyXG5cdFx0XHRpZiAobGlzdERhdGFGb3JtKVxyXG5cdFx0XHRcdGZvciAoY29uc3QgZGF0YUZvcm0gb2YgbGlzdERhdGFGb3JtKVxyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBwcm9wZXJ0eSBpbiBkYXRhRm9ybS5kYXRhKVxyXG5cdFx0XHRcdFx0XHRkYXRhW3Byb3BlcnR5LnRvTG93ZXJDYXNlKCldID0gZGF0YUZvcm0uZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdGxldCBmb3JtdWxhID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KFxyXG5cdFx0XHRcdGNvbmZpZ0RvY3VtZW50Lm5hbWUsXHJcblx0XHRcdFx0Y29uZmlnRG9jdW1lbnQuZm9ybXVsYVZhbGlkYXRlTXVsdGlwbGUsXHJcblx0XHRcdFx0ZGF0YVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgcmVzdWx0ID0gZXZhbChmb3JtdWxhKTtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdGxldCByZXN1bHRBcnJheSA9IEpTT04ucGFyc2UocmVzdWx0KTtcclxuXHJcblx0XHRcdFx0aWYgKHJlc3VsdEFycmF5ICYmIHJlc3VsdEFycmF5Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdC8vVGhlbiBkb2N1bWVudCBtdXN0IGhhdmUgYXJjaGl2ZXNcclxuXHRcdFx0XHRcdGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQubGlzdEFyY2hpdmUubGVuZ3RoICE9PSByZXN1bHRBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
484
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1hcHBsaWNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9zZW5kLWFwcGxpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUluRCxPQUFPLEVBSU4sZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFFBQVEsRUFDUixjQUFjLEVBQ2QsS0FBSyxFQUNMLDBCQUEwQixFQUUxQixzQkFBc0IsRUFHdEIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBS2xELE1BQU0sT0FBTyxzQkFBc0I7SUFJbEMsWUFDZ0MsV0FBVyxFQUNsQyxZQUEwQixFQUMxQixZQUEwQixFQUMxQixpQ0FBb0U7UUFIN0MsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsc0NBQWlDLEdBQWpDLGlDQUFpQyxDQUFtQztRQVA3RSxtREFBbUQ7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFPeEQsQ0FBQztJQUVKLG1FQUFtRTtJQUM1RCxrQkFBa0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELDBDQUEwQztJQUNuQyxhQUFhLENBQUMsT0FBZSxFQUFFLEtBQWE7UUFDbEQsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFF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Q0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFckMsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0Msa0NBQWtDO29CQUNsQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDckUsT0FBTyxJQUFJLENBQUM7b0JBQ2IsQ0FBQztnQkFDRixDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7K0dBMW5CVyxzQkFBc0Isa0JBS3pCLGFBQWE7bUhBTFYsc0JBQXNCLGNBRnRCLE1BQU07OzRGQUVOLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQU1FLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW1haWxTZXJ2aWNlIH0gZnJvbSAnLi9lbWFpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW50ZXJhY3Rpb25BcHBsaWNhdGlvblVzZXJTZXJ2aWNlIH0gZnJvbSAnLi9pbnRlcmFjdGlvbi1hcHBsaWNhdGlvbi11c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG5cdEFwcGxpY2F0aW9uLFxyXG5cdEJ1ZGdldERhdGEsXHJcblx0Q29uZmlndXJhdGlvbkRvY3VtZW50LFxyXG5cdFNlbmRBcHBsaWNhdGlvbixcclxuXHRFVGlwb1ByZXN1cHVlc3RvLFxyXG5cdEVCdWRnZXRCdWlsZFR5cGUsXHJcblx0RUJ1ZGdldEVycm9yLFxyXG5cdERvY3VtZW50LFxyXG5cdEVEb2N1bWVudFN0YXRlLFxyXG5cdEVtYWlsLFxyXG5cdEludGVyYWN0aW9uQXBwbGljYXRpb25Vc2VyLFxyXG5cdFBsaUNuZlN0YXR1c0Zsb3dJbnRlcmFjdGlvbixcclxuXHRFVHlwZVN0YXRpY0ludGVyYWN0aW9uLFxyXG5cdFBsaUNuZlN0YXR1cyxcclxuXHRQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbixcclxuXHRBdXRoZW50aWNhdGlvblV0aWwsXHJcblx0RUNuZlBhZ2VTZWN0aW9uXHJcbn0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBGb3JtaW9VdGlsIH0gZnJvbSAnLi4vdXRpbHMvZm9ybWlvLXV0aWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VuZEFwcGxpY2F0aW9uU2VydmljZSB7XHJcblx0LyoqIFRoaXMgb2JzZXJ2YWJsZSBhbGxvd3MgdG8gZ2V0IHRoZSBwb3JjZW50YWdlICovXHJcblx0cHJpdmF0ZSBwZXJjZW50YWdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcblx0XHRwcml2YXRlIHRva2VuU2VydmljZTogVG9rZW5TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBlbWFpbFNlcnZpY2U6IEVtYWlsU2VydmljZSxcclxuXHRcdHByaXZhdGUgaW50ZXJhY3Rpb25BcHBsaWNhdGlvblVzZXJTZXJ2aWNlOiBJbnRlcmFjdGlvbkFwcGxpY2F0aW9uVXNlclNlcnZpY2VcclxuXHQpIHt9XHJcblxyXG5cdC8qKiAgSXQgaGFzIGFuIG9ic2VydmFibGUgdG8gbm90aWZ5IGlmIHRoZSBwZXJjZW50YWdlIGlzIGNoYW5nZWQgKi9cclxuXHRwdWJsaWMgb25DaGFuZ2VQZXJjZW50YWdlKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5wZXJjZW50YWdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdC8qKiBpdCBkZWZpbmVzIHRoZSB2YWx1ZSBmb3IgcGVyY2VudGFnZSAqL1xyXG5cdHB1YmxpYyBzZXRQZXJjZW50YWdlKGN1cnJlbnQ6IG51bWJlciwgdG90YWw6IG51bWJlcikge1xyXG5cdFx0aWYgKGN1cnJlbnQgJiYgdG90YWwpIHtcclxuXHRcdFx0Y29uc3QgcGVyY2VudGFnZSA9IChjdXJyZW50IC8gdG90YWwpICogMTAwO1xyXG5cdFx0XHR0aGlzLnBlcmNlbnRhZ2VTdWJqZWN0Lm5leHQocGVyY2VudGFnZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJlc2V0UGVyY2VudGFnZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqIGl0IHJlc2V0cyB0aGUgcGVyY2VudGFnZSAqL1xyXG5cdHB1YmxpYyByZXNldFBlcmNlbnRhZ2UoKSB7XHJcblx0XHR0aGlzLnBlcmNlbnRhZ2VTdWJqZWN0Lm5leHQoMCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCBzZW5kIGVtYWlsIG1hc2l2ZWx5XHJcblx0ICogQHBhcmFtIGFwcGxpY2F0aW9uXHJcblx0ICogQHBhcmFtIGkgY3VycmVudCBpZG5leFxyXG5cdCAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoXHJcblx0ICogQHBhcmFtIHNlbmRBcHBsaWNhdGlvblxyXG5cdCAqL1xyXG5cdHNlbmRFbWFpbE1hc3NpdmVseShhcHBsaWNhdGlvbjogQXBwbGljYXRpb24pIHtcclxuXHRcdGxldCBlbWFpbDogRW1haWwgPSBuZXcgRW1haWwoKTtcclxuXHRcdGVtYWlsLmFkZFRvKCdwcnVlYmFjb252b0BiZW4uY29sZnV0dXJvLm9yZycpO1xyXG5cdFx0Ly8gdW5jb21tZW50IHdoZW4gdGhlIGVudmlyb25tZW50XHJcblx0XHRlbWFpbC5zZXRTdWJqZWN0KCdFbnbDrW8gZGUgc29saWNpdHVkICcgKyBhcHBsaWNhdGlvbi5pZCk7XHJcblx0XHRlbWFpbC5zZXRCb2R5KCdDb3JkaWFsIHNhbHVkbywgPGJyLz5IZW1vcyBlbnZpYWRvIGxhIHNvbGljaXR1ZCAnICsgYXBwbGljYXRpb24uaWQpO1xyXG5cdFx0cmV0dXJuIHRoaXMuZW1haWxTZXJ2aWNlLnNlbmQoZW1haWwpO1xyXG5cdH1cclxuXHJcblx0LyoqIFNlbmQgZW1haWwgYXBwbGljYXRpb24gKi9cclxuXHRzZW5kRW1haWwoYXBwbGljYXRpb246IEFwcGxpY2F0aW9uKSB7XHJcblx0XHRsZXQgZW1haWw6IEVtYWlsID0gbmV3IEVtYWlsKCk7XHJcblx0XHRlbWFpbC5hZGRUbygncHJ1ZWJhY29udm9AYmVuLmNvbGZ1dHVyby5vcmcnKTtcclxuXHRcdC8vIHVuY29tbWVudCB3aGVuIHRoZSBlbnZpcm9ubWVudFxyXG5cdFx0ZW1haWwuc2V0U3ViamVjdCgnRW52w61vIGRlIHNvbGljaXR1ZCAnICsgYXBwbGljYXRpb24uaWQpO1xyXG5cdFx0ZW1haWwuc2V0Qm9keSgnQ29yZGlhbCBzYWx1ZG8sIDxici8+SGFzIGVudmlhZG8gbGEgc29saWNpdHVkICcgKyBhcHBsaWNhdGlvbi5pZCk7XHJcblx0XHRyZXR1cm4gdGhpcy5lbWFpbFNlcnZpY2Uuc2VuZChlbWFpbCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2F2ZXMgdGhlIGludGVyYWN0aW9uICovXHJcblx0c2F2ZUludGVyYWN0aW9uKFxyXG5cdFx0YXBwbGljYXRpb25JZDogc3RyaW5nLFxyXG5cdFx0cHJvbUNvZGlnbzogbnVtYmVyLFxyXG5cdFx0cGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uOiBQbGlDbmZTdGF0dXNGbG93SW50ZXJhY3Rpb24sXHJcblx0XHRvYnNlcnZhdGlvbj86IHN0cmluZ1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgaW50ZXJhY3Rpb25BcHBVc2VyOiBJbnRlcmFjdGlvbkFwcGxpY2F0aW9uVXNlciA9IG5ldyBJbnRlcmFjdGlvbkFwcGxpY2F0aW9uVXNlcigpO1xyXG5cdFx0aW50ZXJhY3Rpb25BcHBVc2VyLmFwcGxpY2F0aW9uSWQgPSBhcHBsaWNhdGlvbklkO1xyXG5cdFx0aW50ZXJhY3Rpb25BcHBVc2VyLnByb21Db2RpZ28gPSBwcm9tQ29kaWdvO1xyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0cGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uLnBsaUNuZkludGVyYWN0aW9uICYmXHJcblx0XHRcdHBsaUNuZlN0YXR1c0Zsb3dJbnRlcmFjdGlvbi5wbGlDbmZJbnRlcmFjdGlvbi5pZFxyXG5cdFx0KVxyXG5cdFx0XHRpbnRlcmFjdGlvbkFwcFVzZXIucGxpQ25mSW50ZXJhY3Rpb25JZCA9XHJcblx0XHRcdFx0cGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uLnBsaUNuZkludGVyYWN0aW9uLmlkO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRwbGlDbmZTdGF0dXNGbG93SW50ZXJhY3Rpb24ucGxpQ25mU3RhdHVzRmxvdyAmJlxyXG5cdFx0XHRwbGlDbmZTdGF0dXNGbG93SW50ZXJhY3Rpb24ucGxpQ25mU3RhdHVzRmxvdy5pZFxyXG5cdFx0KVxyXG5cdFx0XHRpbnRlcmFjdGlvbkFwcFVzZXIucGxpQ25mU3RhdHVzRmxvd0lkID0gcGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uLnBsaUNuZlN0YXR1c0Zsb3cuaWQ7XHJcblx0XHRpZiAocGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uLmlkKVxyXG5cdFx0XHRpbnRlcmFjdGlvbkFwcFVzZXIucGxpQ25mU3RhdHVzRmxvd0ludGVyYWN0aW9uSWQgPSBwbGlDbmZTdGF0dXNGbG93SW50ZXJhY3Rpb24uaWQ7XHJcblxyXG5cdFx0aW50ZXJhY3Rpb25BcHBVc2VyLmludGVyYWN0aW9uU3RhdGljSWQgPSBFVHlwZVN0YXRpY0ludGVyYWN0aW9uLlNFTkRfQVBQTElDQVRJT047XHJcblx0XHRpbnRlcmFjdGlvbkFwcFVzZXIucGxpVXNlcklkID0gQXV0aGVudGljYXRpb25VdGlsLmdldFBsaVVzdWFyaW8oKVxyXG5cdFx0XHQ/IEF1dGhlbnRpY2F0aW9uVXRpbC5nZXRQbGlVc3VhcmlvKCkudXN1Q29kaWdvXHJcblx0XHRcdDogbnVsbDtcclxuXHRcdGludGVyYWN0aW9uQXBwVXNlci5wb3NpdGl2ZSA9IHRydWU7XHJcblx0XHRpbnRlcmFjdGlvbkFwcFVzZXIub2JzZXJ2YXRpb24gPSBvYnNlcnZhdGlvbiA/IG9ic2VydmF0aW9uIDogJ0VudsOtbyBkZSBzb2xpY2l0dWQnO1xyXG5cdFx0cmV0dXJuIHRoaXMuaW50ZXJhY3Rpb25BcHBsaWNhdGlvblVzZXJTZXJ2aWNlLnNhdmUoaW50ZXJhY3Rpb25BcHBVc2VyKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHZhbGlkYXRlcyB0aGUgZGF0YVxyXG5cdCAqIEBwYXJhbSBsaXN0QXBwbGljYXRpb25cclxuXHQgKiBAcGFyYW0gbGlzdEZvcm1cclxuXHQgKiBAcGFyYW0gbGlzdERhdGFGb3JtXHJcblx0ICogQHBhcmFtIGxpc3RCdWRnZXRTZXR0aW5nXHJcblx0ICogQHBhcmFtIGxpc3RCdWRnZXRcclxuXHQgKiBAcGFyYW0gbGlzdENvbmZpZ3VyYXRpb25Eb2N1bWVudFxyXG5cdCAqIEBwYXJhbSBsaXN0RG9jdW1lbnRcclxuXHQgKiBAcGFyYW0gdmFsaWRhdGVKdXN0UmVxdWlyZWQgZWcuIHdoZW4gdGhlIHNjcmVlcm4gcmVxdWlyZSBnZXQganVzdCByZXF1aXJlIGRvY3VtZW50cyAoc2VuZCBhcHBsaWNhdGlvbilcclxuXHQgKi9cclxuXHRwdWJsaWMgdmFsaWRhdGUoXHJcblx0XHRsaXN0VG90YWxTdGF0dXM6IFBsaUNuZlN0YXR1c1tdLFxyXG5cdFx0bGlzdEFwcGxpY2F0aW9uOiBBcHBsaWNhdGlvbltdLFxyXG5cdFx0bGlzdEZvcm06IGFueVtdLFxyXG5cdFx0bGlzdERhdGFGb3JtOiBhbnlbXSxcclxuXHRcdGxpc3RCdWRnZXRTZXR0aW5nOiBhbnlbXSxcclxuXHRcdGxpc3RCdWRnZXQ6IEJ1ZGdldERhdGFbXSxcclxuXHRcdGxpc3RDb25maWd1cmF0aW9uRG9jdW1lbnQ6IENvbmZpZ3VyYXRpb25Eb2N1bWVudFtdLFxyXG5cdFx0bGlzdERvY3VtZW50OiBEb2N1bWVudFtdLFxyXG5cdFx0Y2FsbGJhY2s6IGFueSxcclxuXHRcdHZhbGlkYXRlSnVzdFJlcXVpcmVkOiBib29sZWFuLFxyXG5cdFx0dmFsaWRhdGVTdW1tYXJpemVkQnVkZ2V0PzogYm9vbGVhblxyXG5cdCk6IEFycmF5PFNlbmRBcHBsaWNhdGlvbj4ge1xyXG5cdFx0bGV0IGxpc3RTZW5kQXBwbGljYXRpb246IEFycmF5PFNlbmRBcHBsaWNhdGlvbj4gPSBbXTtcclxuXHRcdC8vIHJlc2V0IHBlcmNlbnRhZ2VcclxuXHRcdC8vIHRoaXMucmVzZXRQZXJjZW50YWdlKCk7XHJcblx0XHRpZiAobGlzdEFwcGxpY2F0aW9uICYmIGxpc3RBcHBsaWNhdGlvbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdC8vIGl0ZXJhdGUgb3ZlciBsaXN0QXBwbGljYXRpb25cclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0QXBwbGljYXRpb24ubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHQvLyBkZWZpbmUgYXBwbGljYXRpb25cclxuXHRcdFx0XHRjb25zdCBhcHBsaWNhdGlvbiA9IGxpc3RBcHBsaWNhdGlvbltpXTtcclxuXHRcdFx0XHQvLyBjcmVhdGUgc2VuZCBhcHBsaWNhdGlvbiBvYmplY3RcclxuXHRcdFx0XHRsZXQgc2VuZEFwcGxpY2F0aW9uOiBTZW5kQXBwbGljYXRpb24gPSBuZXcgU2VuZEFwcGxpY2F0aW9uKCk7XHJcblx0XHRcdFx0Ly8gZGVmaW5lIGFwcGxpY2F0aW9uSWRcclxuXHRcdFx0XHRzZW5kQXBwbGljYXRpb24uYXBwbGljYXRpb25JZCA9IGFwcGxpY2F0aW9uLmlkO1xyXG5cclxuXHRcdFx0XHRsZXQgY3VycmVudFN0YXR1czogYW55ID0gW107XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0bGlzdFRvdGFsU3RhdHVzICYmXHJcblx0XHRcdFx0XHRsaXN0VG90YWxTdGF0dXMubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRhcHBsaWNhdGlvbi5zdGF0ZUlkICYmXHJcblx0XHRcdFx0XHRsaXN0Rm9ybSAmJlxyXG5cdFx0XHRcdFx0bGlzdEZvcm0ubGVuZ3RoXHJcblx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0Ly8gZ2V0IHRoZSBsaXN0IHBhZ2Ugc2VjdGlvbiBhY2NvcmRpbmcgdG8gc3RhdHVzSWRcclxuXHRcdFx0XHRcdGZvciAoY29uc3Qgc3RhdHVzIG9mIGxpc3RUb3RhbFN0YXR1cylcclxuXHRcdFx0XHRcdFx0aWYgKHN0YXR1cy5pZCA9PSBhcHBsaWNhdGlvbi5zdGF0ZUlkKSB7XHJcblx0XHRcdFx0XHRcdFx0Y3VycmVudFN0YXR1cyA9IHN0YXR1cztcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBkZWZpbmUgdGhlIGxpc3RGb3JtIHRoYXQgY2FuIGJlIHZhbGRpYXRlZCBhY2NvcmRpbmcgdG8gc3RhdHVzXHJcblx0XHRcdFx0Y29uc3QgbGlzdEZvcm1BY3RpdmF0ZWQgPSB0aGlzLmdldExpc3RGb3Jtc0J5U3RhdHVzKGN1cnJlbnRTdGF0dXMsIGxpc3RGb3JtKTtcclxuXHRcdFx0XHQvLyBnZXQgdmFsaWRhdGVkIGxpc3QgZm9ybVxyXG5cdFx0XHRcdHNlbmRBcHBsaWNhdGlvbi5saXN0VmFsaWRhdGVkRm9ybSA9IHRoaXMuZ2V0VmFsaWRhdGVkRm9ybUxpc3QoXHJcblx0XHRcdFx0XHRsaXN0Rm9ybUFjdGl2YXRlZCxcclxuXHRcdFx0XHRcdGxpc3REYXRhRm9ybSxcclxuXHRcdFx0XHRcdHNlbmRBcHBsaWNhdGlvbi5hcHBsaWNhdGlvbklkXHJcblx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0Ly8gZ2V0IHZhbGlkYXRlZCBsaXN0IGJ1ZGdldFxyXG5cdFx0XHRcdGlmICghdmFsaWRhdGVTdW1tYXJpemVkQnVkZ2V0KSB7XHJcblx0XHRcdFx0XHRzZW5kQXBwbGljYXRpb24ubGlzdFZhbGlkYXRlZEJ1ZGdldCA9IHRoaXMuZ2V0VmFsaWRhdGVkQnVkZ2V0KFxyXG5cdFx0XHRcdFx0XHRsaXN0QnVkZ2V0U2V0dGluZyxcclxuXHRcdFx0XHRcdFx0bGlzdEJ1ZGdldCxcclxuXHRcdFx0XHRcdFx0c2VuZEFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uSWQsXHJcblx0XHRcdFx0XHRcdGN1cnJlbnRTdGF0dXNcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHNlbmRBcHBsaWNhdGlvbi5saXN0VmFsaWRhdGVkQnVkZ2V0ID0gdGhpcy5nZXRWYWxpZGF0ZWRCdWRnZXRTdW1tYXJpemVkKFxyXG5cdFx0XHRcdFx0XHRsaXN0QnVkZ2V0U2V0dGluZyxcclxuXHRcdFx0XHRcdFx0bGlzdEJ1ZGdldCxcclxuXHRcdFx0XHRcdFx0c2VuZEFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uSWQsXHJcblx0XHRcdFx0XHRcdGN1cnJlbnRTdGF0dXNcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBnZXQgdmFsaWRhdGVkIGxpc3QgZG9jdW1lbnRcclxuXHRcdFx0XHRzZW5kQXBwbGljYXRpb24ubGlzdFZhbGlkYXRlZERvY3VtZW50ID0gdGhpcy5nZXRWYWxpZGF0ZWREb2N1bWVudChcclxuXHRcdFx0XHRcdGN1cnJlbnRTdGF0dXMsXHJcblx0XHRcdFx0XHRsaXN0Q29uZmlndXJhdGlvbkRvY3VtZW50LFxyXG5cdFx0XHRcdFx0bGlzdERvY3VtZW50LFxyXG5cdFx0XHRcdFx0YXBwbGljYXRpb24sXHJcblx0XHRcdFx0XHRsaXN0RGF0YUZvcm0sXHJcblx0XHRcdFx0XHR2YWxpZGF0ZUp1c3RSZXF1aXJlZFxyXG5cdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdC8vIHJlc29sdmUgdmFsaWRhdGlvbiAtIG5vIGxpc3RWYWxpZGF0ZWREb2MgLSAgbGlzdFZhbGlkYXRlZEJ1ZGdldCAtIGxpc3RWYWxpZGF0ZWRGb3JtXHJcblx0XHRcdFx0c2VuZEFwcGxpY2F0aW9uLnZhbGlkYXRpb24gPVxyXG5cdFx0XHRcdFx0IXNlbmRBcHBsaWNhdGlvbi5saXN0VmFsaWRhdGVkRG9jdW1lbnQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHQhc2VuZEFwcGxpY2F0aW9uLmxpc3RWYWxpZGF0ZWRCdWRnZXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHQhc2VuZEFwcGxpY2F0aW9uLmxpc3RWYWxpZGF0ZWRGb3JtLmxlbmd0aDtcclxuXHRcdFx0XHQvLyBhZGQgdG8gYXJyYXlcclxuXHRcdFx0XHRsaXN0U2VuZEFwcGxpY2F0aW9uLnB1c2goc2VuZEFwcGxpY2F0aW9uKTtcclxuXHRcdFx0XHQvLyBjYWxsIGNhbGxiYWNrXHJcblx0XHRcdFx0aWYgKGNhbGxiYWNrKSBjYWxsYmFjayhzZW5kQXBwbGljYXRpb24sIGFwcGxpY2F0aW9uLCBpLCBsaXN0QXBwbGljYXRpb24ubGVuZ3RoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGxpc3RTZW5kQXBwbGljYXRpb247XHJcblx0fVxyXG5cclxuXHQvKiogaXQgcmV0dXJucyB0aGUgZm9ybXMgdGhhdCBhcmUgYWN0aXZhdGVkIGFjY29yZGluZyB0byBzdGF0dXMgKi9cclxuXHRnZXRMaXN0Rm9ybXNCeVN0YXR1cyhjdXJyZW50U3RhdHVzOiBQbGlDbmZTdGF0dXMsIGxpc3RGb3JtOiBhbnlbXSk6IGFueVtdIHtcclxuXHRcdGxldCBsaXN0QWN0aXZhdGVkRm9ybTogYW55W10gPSBbXTtcclxuXHRcdGxldCBsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb246IFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uW10gPVxyXG5cdFx0XHRjdXJyZW50U3RhdHVzLmxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbjtcclxuXHRcdGlmIChsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb24gJiYgbGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uLmxlbmd0aClcclxuXHRcdFx0Ly8gZmlsbCB0aGUgbGlzdCBhY3RpdmF0ZWQgZm9ybVxyXG5cdFx0XHRmb3IgKGNvbnN0IGZvcm0gb2YgbGlzdEZvcm0pXHJcblx0XHRcdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbilcclxuXHRcdFx0XHRcdGlmIChzZWN0aW9uLmlkRm9ybSA9PSBmb3JtLmlkKSB7XHJcblx0XHRcdFx0XHRcdGxpc3RBY3RpdmF0ZWRGb3JtLnB1c2goZm9ybSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0cmV0dXJuIGxpc3RBY3RpdmF0ZWRGb3JtO1xyXG5cdH1cclxuXHJcblx0LyoqIGl0IHJldHVybnMgdGhlIHZhbGlkYXRlZCBkb2N1bWVudCBsaXN0ICovXHJcblx0Z2V0VmFsaWRhdGVkRG9jdW1lbnQoXHJcblx0XHRjdXJyZW50U3RhdHVzOiBhbnksXHJcblx0XHRsaXN0Q29uZmlndXJhdGlvbkRvY3VtZW50LFxyXG5cdFx0bGlzdERvY3VtZW50LFxyXG5cdFx0YXBwbGljYXRpb246IEFwcGxpY2F0aW9uLFxyXG5cdFx0bGlzdERhdGFGb3JtLFxyXG5cdFx0dmFsaWRhdGVKdXN0UmVxdWlyZWQ6IGJvb2xlYW5cclxuXHQpOiBhbnlbXSB7XHJcblx0XHRsZXQgbGlzdFZhbGlkYXRlZERvY3VtZW50ID0gW107XHJcblx0XHRpZiAobGlzdENvbmZpZ3VyYXRpb25Eb2N1bWVudCkge1xyXG5cdFx0XHQvLyBpdCBjb250YWlucyB0aGUgZG9jdW1lbnRzIHRoYXQgYXJlIHZpc2libGVcclxuXHRcdFx0bGV0IGxpc3RDb25maWd1cmF0aW9uRG9jdW1lbnRWaXNpYmxlID0gW107XHJcblxyXG5cdFx0XHQvL2NoZWNrSWZTaG91bGRWYWxpZGF0ZVxyXG5cdFx0XHRsZXQgc2hvdWxkVmFsaWRhdGVEb2N1bWVudHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdFx0bGV0IGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbjogUGxpQ25mU3RhdHVzUGFnZVNlY3Rpb25bXSA9XHJcblx0XHRcdFx0Y3VycmVudFN0YXR1cy5saXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb247XHJcblx0XHRcdGlmIChsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb24gJiYgbGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uLmxlbmd0aClcclxuXHRcdFx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgbGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uKVxyXG5cdFx0XHRcdFx0aWYgKHNlY3Rpb24ucGxpQ25mUGFnZVNlY3Rpb24pXHJcblx0XHRcdFx0XHRcdHN3aXRjaCAoc2VjdGlvbi5wbGlDbmZQYWdlU2VjdGlvbi5rZXlMYWJlbCkge1xyXG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2RvY3VtZW50b3MnOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRzaG91bGRWYWxpZGF0ZURvY3VtZW50cyA9IHRydWU7XHJcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0aWYgKCFzaG91bGRWYWxpZGF0ZURvY3VtZW50cykgcmV0dXJuIGxpc3RWYWxpZGF0ZWREb2N1bWVudDtcclxuXHJcblx0XHRcdC8vIHJlc29sdmUgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2aXNpYmxlXHJcblx0XHRcdGlmIChsaXN0Q29uZmlndXJhdGlvbkRvY3VtZW50KSB7XHJcblx0XHRcdFx0Zm9yIChjb25zdCBjb25maWd1cmF0aW9uRG9jdW1lbnQgb2YgbGlzdENvbmZpZ3VyYXRpb25Eb2N1bWVudCkge1xyXG5cdFx0XHRcdFx0bGV0IHZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdFx0XHRcdFx0aWYgKGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5mb3JtdWxhICYmIGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5mb3JtdWxhLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRsZXQgZm9ybXVsYSA9ICcnO1xyXG5cdFx0XHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBkYXRhID0geyBzdGF0dXNuYW1lOiBhcHBsaWNhdGlvbi5zdGF0ZU5hbWUgfTtcclxuXHRcdFx0XHRcdFx0XHRpZiAobGlzdERhdGFGb3JtKVxyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBkYXRhRm9ybSBvZiBsaXN0RGF0YUZvcm0pXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gZGF0YUZvcm0uZGF0YSlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRhW3Byb3BlcnR5LnRvTG93ZXJDYXNlKCldID0gZGF0YUZvcm0uZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdFx0Zm9ybXVsYSA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29uZmlndXJhdGlvbkRvY3VtZW50LmZvcm11bGEsXHJcblx0XHRcdFx0XHRcdFx0XHRkYXRhXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgcmVzdWx0ID0gZXZhbChmb3JtdWxhKTtcclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0ICE9PSB0cnVlKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdFx0XHRcdHZpc2libGUgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHZpc2libGUpIHtcclxuXHRcdFx0XHRcdFx0bGlzdENvbmZpZ3VyYXRpb25Eb2N1bWVudFZpc2libGUucHVzaChjb25maWd1cmF0aW9uRG9jdW1lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gcmVzb2x2ZSB0aGUgbGlzdCBvZiBkb2N1bWVudHNcclxuXHRcdFx0aWYgKGxpc3RDb25maWd1cmF0aW9uRG9jdW1lbnRWaXNpYmxlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Q29uZmlndXJhdGlvbkRvY3VtZW50VmlzaWJsZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0bGV0IGNvbmZpZ3VyYXRpb25Eb2N1bWVudCA9IGxpc3RDb25maWd1cmF0aW9uRG9jdW1lbnRWaXNpYmxlW2ldO1xyXG5cdFx0XHRcdFx0bGV0IGRvY3VtZW50OiBEb2N1bWVudCA9IHRoaXMuZ2V0RG9jdW1lbnRCeUNvbmZpZ3VyYXRpb25JZChcclxuXHRcdFx0XHRcdFx0Y29uZmlndXJhdGlvbkRvY3VtZW50LmlkLFxyXG5cdFx0XHRcdFx0XHRsaXN0RG9jdW1lbnQsXHJcblx0XHRcdFx0XHRcdGFwcGxpY2F0aW9uLmlkXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0aWYgKHZhbGlkYXRlSnVzdFJlcXVpcmVkKSB7XHJcblx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHQoIWRvY3VtZW50IHx8XHJcblx0XHRcdFx0XHRcdFx0XHQoZG9jdW1lbnQgJiYgZG9jdW1lbnQubGlzdEFyY2hpdmUubGVuZ3RoID09IDApIHx8XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmF1dG9tYXRpY0RvY3VtZW50c1ZhbGlkYXRlZChcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlndXJhdGlvbkRvY3VtZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0RGF0YUZvcm0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdGRvY3VtZW50XHJcblx0XHRcdFx0XHRcdFx0XHQpKSAmJlxyXG5cdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5yZXF1aXJlZFxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmZpbGxMaXN0VmFsaWRhdGVEb2N1bWVudERlZmF1bHQoXHJcblx0XHRcdFx0XHRcdFx0XHRsaXN0VmFsaWRhdGVkRG9jdW1lbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRhcHBsaWNhdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYXRpb25Eb2N1bWVudFxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGlmIChkb2N1bWVudCkge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChkb2N1bWVudC5zdGF0ZSA9PSBFRG9jdW1lbnRTdGF0ZS5QRU5ESUVOVEUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGxpc3RWYWxpZGF0ZWREb2N1bWVudC5wdXNoKGRvY3VtZW50KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5maWxsTGlzdFZhbGlkYXRlRG9jdW1lbnREZWZhdWx0KFxyXG5cdFx0XHRcdFx0XHRcdFx0bGlzdFZhbGlkYXRlZERvY3VtZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0YXBwbGljYXRpb24sXHJcblx0XHRcdFx0XHRcdFx0XHRjb25maWd1cmF0aW9uRG9jdW1lbnRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbGlzdFZhbGlkYXRlZERvY3VtZW50O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBmaWxsTGlzdFZhbGlkYXRlRG9jdW1lbnREZWZhdWx0KFxyXG5cdFx0bGlzdFZhbGlkYXRlZERvY3VtZW50LFxyXG5cdFx0YXBwbGljYXRpb24sXHJcblx0XHRjb25maWd1cmF0aW9uRG9jdW1lbnRcclxuXHQpIHtcclxuXHRcdGxldCBkb2N1bWVudCA9IG5ldyBEb2N1bWVudCgpO1xyXG5cdFx0ZG9jdW1lbnQuYXBwbGljYXRpb25JZCA9IGFwcGxpY2F0aW9uLmlkO1xyXG5cdFx0ZG9jdW1lbnQucHJvbUNvZGlnbyA9IGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5wcm9tQ29kaWdvO1xyXG5cdFx0ZG9jdW1lbnQuc3RhdGUgPSBFRG9jdW1lbnRTdGF0ZS5QRU5ESUVOVEU7XHJcblx0XHRkb2N1bWVudC5jb25maWd1cmF0aW9uRG9jdW1lbnRJZCA9IGNvbmZpZ3VyYXRpb25Eb2N1bWVudC5pZDtcclxuXHRcdGRvY3VtZW50Lmxpc3RBcmNoaXZlID0gW107XHJcblx0XHRsaXN0VmFsaWRhdGVkRG9jdW1lbnQucHVzaChkb2N1bWVudCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZ2V0cyBkb2N1bWVudCBieSBjb25maWd1cmF0aW9uIElkICovXHJcblx0cHJpdmF0ZSBnZXREb2N1bWVudEJ5Q29uZmlndXJhdGlvbklkKFxyXG5cdFx0Y29uZmlndXJhdGlvbkRvY3VtZW50SWQ6IG51bWJlcixcclxuXHRcdGxpc3Q6IEFycmF5PERvY3VtZW50PixcclxuXHRcdGFwcGxpY2F0aW9uSWQ6IHN0cmluZ1xyXG5cdCk6IERvY3VtZW50IHtcclxuXHRcdGlmIChsaXN0KVxyXG5cdFx0XHRmb3IgKGNvbnN0IGRvY3VtZW50IG9mIGxpc3QpXHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZG9jdW1lbnQuY29uZmlndXJhdGlvbkRvY3VtZW50SWQgPT09IGNvbmZpZ3VyYXRpb25Eb2N1bWVudElkICYmXHJcblx0XHRcdFx0XHRkb2N1bWVudC5hcHBsaWNhdGlvbklkID09PSBhcHBsaWNhdGlvbklkXHJcblx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0cmV0dXJuIGRvY3VtZW50O1xyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0LyoqIGdldCB0aGUgYnVkZ2V0IGFwcGxpY2F0aW9uIGJ5IHR5cGUgYnVkZ2V0IGFuZCBidWRnZXQgc2V0dXAgaWQgKi9cclxuXHRwcml2YXRlIGdldFZhbGlkYXRlZEJ1ZGdldEFwcGxpY2F0aW9uKFxyXG5cdFx0YnVkZ2V0U2V0dGluZzogYW55LFxyXG5cdFx0dHlwZUJ1ZGdldDogYW55LFxyXG5cdFx0bGlzdEJ1ZGdldDogQnVkZ2V0RGF0YVtdLFxyXG5cdFx0YXBwbGljYXRpb25JZFxyXG5cdCk6IGFueSB7XHJcblx0XHRpZiAobGlzdEJ1ZGdldClcclxuXHRcdFx0Zm9yIChjb25zdCBidWRnZXQgb2YgbGlzdEJ1ZGdldClcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRidWRnZXQudGFnID09IHR5cGVCdWRnZXQgJiZcclxuXHRcdFx0XHRcdGJ1ZGdldFNldHRpbmcuY3ByZUNvZGlnbyA9PSBidWRnZXQuYnVkZ2V0U2V0dXBJZCAmJlxyXG5cdFx0XHRcdFx0YnVkZ2V0LmFwcGxpY2F0aW9uSWQgPT0gYXBwbGljYXRpb25JZFxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMudmFsaWRhdGVCdWRnZXQoYnVkZ2V0LCBidWRnZXRTZXR0aW5nLCB0eXBlQnVkZ2V0KTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMudmFsaWRhdGVCdWRnZXQobnVsbCwgYnVkZ2V0U2V0dGluZywgdHlwZUJ1ZGdldCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgdmFsaWRhdGVzIHRoZSBidWRnZXQgKi9cclxuXHRwcml2YXRlIHZhbGlkYXRlQnVkZ2V0KGJ1ZGdldDogYW55LCBidWRnZXRTZXR0aW5nOiBhbnksIHR5cGU6IGFueSkge1xyXG5cdFx0aWYgKCFidWRnZXQgfHwgIWJ1ZGdldC5zdW1tYXJ5IHx8ICFidWRnZXQuc3VtbWFyeS5idWRnZXRUb3RhbClcclxuXHRcdFx0Ly8gdmFsaWRhdGUgaWYgdGhlcmUgaXMgYSBidWRnZXQgb2JqZWN0XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0YnVkZ2V0OiBidWRnZXQsXHJcblx0XHRcdFx0dHlwZTogdHlwZSxcclxuXHRcdFx0XHRidWRnZXRTZXR0aW5nOiBidWRnZXRTZXR0aW5nLFxyXG5cdFx0XHRcdGVycm9yOiBFQnVkZ2V0RXJyb3IuTk9fT0JKRUNUXHJcblx0XHRcdH07XHJcblx0XHRlbHNlIGlmIChcclxuXHRcdFx0KHR5cGUgPT09IEVCdWRnZXRCdWlsZFR5cGUuZmluYW5jaW5nIHx8IHR5cGUgPT09IEVCdWRnZXRCdWlsZFR5cGUubWl4ZWQpICYmXHJcblx0XHRcdGJ1ZGdldC5zdW1tYXJ5LmJ1ZGdldFRvdGFsID4gYnVkZ2V0U2V0dGluZy5jcHJlTW9udG9Ub3RhbFxyXG5cdFx0KVxyXG5cdFx0XHQvLyB2YWxpZGF0ZSBpZiBhbW91bnQgdG90YWwgb3ZlcmNvbWVzIHRoZSBtYXhpbXVtXHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0YnVkZ2V0OiBidWRnZXQsXHJcblx0XHRcdFx0dHlwZTogdHlwZSxcclxuXHRcdFx0XHRidWRnZXRTZXR0aW5nOiBidWRnZXRTZXR0aW5nLFxyXG5cdFx0XHRcdGVycm9yOiBFQnVkZ2V0RXJyb3IuT1ZFUkNPTUVfTUFYSU1VTV9BTU9VTlRcclxuXHRcdFx0fTtcclxuXHRcdGVsc2UgaWYgKFxyXG5cdFx0XHR0eXBlID09PSBFQnVkZ2V0QnVpbGRUeXBlLmZpbmFuY2luZyAmJlxyXG5cdFx0XHQoIWJ1ZGdldC5maW5hbmNpbmdTdGFydCB8fCAhYnVkZ2V0LmZpbmFuY2luZ0VuZClcclxuXHRcdClcclxuXHRcdFx0Ly8gdmFsaWRhdGUgaWYgZmluYW5jaW5nIGRhdGVzIGFyZSBkZWZpbmVkXHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0YnVkZ2V0OiBidWRnZXQsXHJcblx0XHRcdFx0dHlwZTogdHlwZSxcclxuXHRcdFx0XHRidWRnZXRTZXR0aW5nOiBidWRnZXRTZXR0aW5nLFxyXG5cdFx0XHRcdGVycm9yOiBFQnVkZ2V0RXJyb3IuRklOQU5DSU5HX0RBVEVTXHJcblx0XHRcdH07XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdmFsaWRhdGVTdW1tYXJpemVkQnVkZ2V0KGJ1ZGdldFNldHRpbmc6IGFueSwgdHlwZTogYW55LCBidWRnZXQ6IGFueSkge1xyXG5cdFx0aWYgKCFidWRnZXQgfHwgIWJ1ZGdldC5zdW1tYXJ5IHx8ICFidWRnZXQuc3VtbWFyeS5idWRnZXRUb3RhbCkge1xyXG5cdFx0XHQvLyB2YWxpZGF0ZSBpZiB0aGVyZSBpcyBhIGJ1ZGdldCBvYmplY3RcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRidWRnZXQ6IGJ1ZGdldCxcclxuXHRcdFx0XHR0eXBlOiB0eXBlLFxyXG5cdFx0XHRcdGJ1ZGdldFNldHRpbmc6IGJ1ZGdldFNldHRpbmcsXHJcblx0XHRcdFx0ZXJyb3I6IEVCdWRnZXRFcnJvci5OT19PQkpFQ1RcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHZhbGlkYXRlQ29tcGxldGVCdWRnZXQobGlzdEJ1ZGdldFNldHRpbmcsIGxpc3RCdWRnZXQsIGFwcGxpY2F0aW9uSWQpOiBhbnlbXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXRWYWxpZGF0ZWRCdWRnZXQobGlzdEJ1ZGdldFNldHRpbmcsIGxpc3RCdWRnZXQsIGFwcGxpY2F0aW9uSWQpO1xyXG5cdH1cclxuXHJcblx0LyoqIGl0IHJldHVybnMgdGhlIHZhbGlkYXRlZCBidWRnZXQgbGlzdCAqL1xyXG5cdHByaXZhdGUgZ2V0VmFsaWRhdGVkQnVkZ2V0KFxyXG5cdFx0bGlzdEJ1ZGdldFNldHRpbmcsXHJcblx0XHRsaXN0QnVkZ2V0LFxyXG5cdFx0YXBwbGljYXRpb25JZCxcclxuXHRcdGN1cnJlbnRTdGF0dXM/XHJcblx0KTogYW55W10ge1xyXG5cdFx0bGV0IGxpc3RWYWxpZGF0ZWRCdWRnZXQ6IGFueVtdID0gW107XHJcblx0XHRpZiAobGlzdEJ1ZGdldFNldHRpbmcpIHtcclxuXHRcdFx0bGV0IHNob3VsZFZhbGlkYXRlVG90YWxCdWRnZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdFx0bGV0IHNob3VsZFZhbGlkYXRlRmluYW5jaW5nQnVkZ2V0OiBib29sZWFuID0gZmFsc2U7XHJcblx0XHRcdGlmIChjdXJyZW50U3RhdHVzKSB7XHJcblx0XHRcdFx0bGV0IGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbjogUGxpQ25mU3RhdHVzUGFnZVNlY3Rpb25bXSA9XHJcblx0XHRcdFx0XHRjdXJyZW50U3RhdHVzLmxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbjtcclxuXHRcdFx0XHRpZiAobGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uICYmIGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbi5sZW5ndGgpXHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2YgbGlzdFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uKVxyXG5cdFx0XHRcdFx0XHRpZiAoc2VjdGlvbi5wbGlDbmZQYWdlU2VjdGlvbilcclxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKHNlY3Rpb24ucGxpQ25mUGFnZVNlY3Rpb24ua2V5TGFiZWwpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJ3ByZXN1cHVlc3RvLnRvdGFsJzoge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG91bGRWYWxpZGF0ZVRvdGFsQnVkZ2V0ID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICdwcmVzdXB1ZXN0by5maW5hbmNpYWNpb24nOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHNob3VsZFZhbGlkYXRlRmluYW5jaW5nQnVkZ2V0ID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHNob3VsZFZhbGlkYXRlVG90YWxCdWRnZXQgPSB0cnVlO1xyXG5cdFx0XHRcdHNob3VsZFZhbGlkYXRlRmluYW5jaW5nQnVkZ2V0ID0gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gaXRlcmF0ZSBvdmVyIGxpc3RCdWRnZXRTZXR0aW5nXHJcblx0XHRcdGZvciAoY29uc3QgYnVkZ2V0U2V0dGluZyBvZiBsaXN0QnVkZ2V0U2V0dGluZykge1xyXG5cdFx0XHRcdC8vIHNraXAgZ2VuZXJhbCBidWRnZXRcclxuXHRcdFx0XHRpZiAoYnVkZ2V0U2V0dGluZy5wbGlUaXBvUHJlc3VwdWVzdG8udHByZXNDb2RpZ28gPT0gRVRpcG9QcmVzdXB1ZXN0by5HRU5FUkFMKVxyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0Ly8gYnVkZ2V0IHRvdGFsXHJcblx0XHRcdFx0Y29uc3QgYnVkZ2V0RGF0YVRvdGFsID0gdGhpcy5nZXRWYWxpZGF0ZWRCdWRnZXRBcHBsaWNhdGlvbihcclxuXHRcdFx0XHRcdGJ1ZGdldFNldHRpbmcsXHJcblx0XHRcdFx0XHRFQnVkZ2V0QnVpbGRUeXBlLnRvdGFsLFxyXG5cdFx0XHRcdFx0bGlzdEJ1ZGdldCxcclxuXHRcdFx0XHRcdGFwcGxpY2F0aW9uSWRcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGlmIChidWRnZXREYXRhVG90YWwgJiYgc2hvdWxkVmFsaWRhdGVUb3RhbEJ1ZGdldClcclxuXHRcdFx0XHRcdGxpc3RWYWxpZGF0ZWRCdWRnZXQucHVzaChidWRnZXREYXRhVG90YWwpO1xyXG5cdFx0XHRcdC8vIGlmIGl0IGhhcyBvd24gZnVuZHMsIHNvIGl0IHZhbGlkYXRlcyB0b3RhbCBhbmQgZmluYW5jaW5nXHJcblx0XHRcdFx0aWYgKGJ1ZGdldFNldHRpbmcuY3ByZUVzRm9uZG9zUHJvcGlvcykge1xyXG5cdFx0XHRcdFx0Y29uc3QgYnVkZ2V0RGF0YUZpbmFuY2luZyA9IHRoaXMuZ2V0VmFsaWRhdGVkQnVkZ2V0QXBwbGljYXRpb24oXHJcblx0XHRcdFx0XHRcdGJ1ZGdldFNldHRpbmcsXHJcblx0XHRcdFx0XHRcdEVCdWRnZXRCdWlsZFR5cGUuZmluYW5jaW5nLFxyXG5cdFx0XHRcdFx0XHRsaXN0QnVkZ2V0LFxyXG5cdFx0XHRcdFx0XHRhcHBsaWNhdGlvbklkXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0aWYgKGJ1ZGdldERhdGFGaW5hbmNpbmcgJiYgc2hvdWxkVmFsaWRhdGVGaW5hbmNpbmdCdWRnZXQpXHJcblx0XHRcdFx0XHRcdGxpc3RWYWxpZGF0ZWRCdWRnZXQucHVzaChidWRnZXREYXRhRmluYW5jaW5nKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBsaXN0VmFsaWRhdGVkQnVkZ2V0O1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHZhbGlkYXRlZCBmb3JtIGxpc3QgKi9cclxuXHRwcml2YXRlIGdldFZhbGlkYXRlZEZvcm1MaXN0KGxpc3RGb3JtLCBsaXN0RGF0YUZvcm0sIGFwcGxpY2F0aW9uSWQpOiBhbnlbXSB7XHJcblx0XHRsZXQgbGlzdFZhbGlkYXRlZEZvcm06IGFueVtdID0gW107XHJcblx0XHRpZiAobGlzdEZvcm0pIHtcclxuXHRcdFx0Ly8gaXRlcmF0ZSBvdmVyIGxpc3Rmb3JtXHJcblx0XHRcdGZvciAoY29uc3QgZm9ybSBvZiBsaXN0Rm9ybSkge1xyXG5cdFx0XHRcdC8vIGdldCBlcnJvcnMgYnkgZm9ybUlkIGFuZCBBcHBsaWNhdGlvbklkXHJcblx0XHRcdFx0Y29uc3QgZXJyb3JzID0gdGhpcy5nZXRFcnJvcnNCeUZvcm1JZEFuZEFwcGxpY2F0aW9uSWQoXHJcblx0XHRcdFx0XHRsaXN0RGF0YUZvcm0sXHJcblx0XHRcdFx0XHRmb3JtLmlkLFxyXG5cdFx0XHRcdFx0YXBwbGljYXRpb25JZFxyXG5cdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgY29tcG9uZW50cyA9IEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50cyhmb3JtLmNvbXBvbmVudHMpO1xyXG5cclxuXHRcdFx0XHRcdC8vIGdlbmVyYXRlIHRoZSBlcnJvciBjb21wb25lbnRzIGFjY29yZGluZyB0byBlcnJvcnNcclxuXHRcdFx0XHRcdGxldCBlcnJvckNvbXBvbmVudCA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBlcnJvciBvZiBlcnJvcnMpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGVycm9yICYmIGVycm9yLmNvbXBvbmVudCAmJiBlcnJvci5jb21wb25lbnQua2V5ICYmIGNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50LmtleSA9PSBlcnJvci5jb21wb25lbnQua2V5KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yQ29tcG9uZW50LnB1c2goY29tcG9uZW50KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0aWYgKGVycm9yQ29tcG9uZW50ICYmIGVycm9yQ29tcG9uZW50Lmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHQvLyBvcmdhbml6aW5nIGJ5IHBhbmVsc1xyXG5cdFx0XHRcdFx0XHRjb25zdCBwYW5lbHMgPSBGb3JtaW9VdGlsLmdldEZvcm1hdHRlZENvbXBvbmVudHNCeVBhbmVsKGVycm9yQ29tcG9uZW50KTtcclxuXHRcdFx0XHRcdFx0Ly8gYWRkIHRvIGxpc3RWYWxpZGF0ZWRGb3JtXHJcblx0XHRcdFx0XHRcdGxpc3RWYWxpZGF0ZWRGb3JtLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdGlkOiBmb3JtLmlkLFxyXG5cdFx0XHRcdFx0XHRcdG5hbWU6IGZvcm0udGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0cGFuZWxzOiBwYW5lbHMsXHJcblx0XHRcdFx0XHRcdFx0dG9nZ2xlOiBmYWxzZVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Ly8gdmVyaWZ5IGlmIGRhdGEgaXMgY29tcGxldGVkXHJcblx0XHRcdFx0XHQvLyBnZXQgZGF0YSBieSBmb3JtIGlkIGFuZCBhcHAgaWRcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGFCeUZvcm1JZEFuZEFwcGxpY2F0aW9uSWQoXHJcblx0XHRcdFx0XHRcdGxpc3REYXRhRm9ybSxcclxuXHRcdFx0XHRcdFx0Zm9ybS5pZCxcclxuXHRcdFx0XHRcdFx0YXBwbGljYXRpb25JZFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdC8vIGdldCBjb21wb25lbnRzIGFyZSByZXF1aXJlZCBhY2NvcmRpbmcgdG8gZGF0YVxyXG5cdFx0XHRcdFx0Y29uc3QgY29tcG9uZW50cyA9IEZvcm1pb1V0aWwuZ2V0UmVxdWlyZWRDb21wb25lbnRzQnlEYXRhKFxyXG5cdFx0XHRcdFx0XHRmb3JtLmNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdGRhdGFcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRpZiAoY29tcG9uZW50cyAmJiBjb21wb25lbnRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHQvLyBvcmdhbml6aW5nIGJ5IHBhbmVsc1xyXG5cdFx0XHRcdFx0XHRjb25zdCBwYW5lbHMgPSBGb3JtaW9VdGlsLmdldEZvcm1hdHRlZENvbXBvbmVudHNCeVBhbmVsKGNvbXBvbmVudHMpO1xyXG5cdFx0XHRcdFx0XHQvLyBhZGQgdG8gbGlzdFZhbGlkYXRlZEZvcm1cclxuXHRcdFx0XHRcdFx0bGlzdFZhbGlkYXRlZEZvcm0ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0aWQ6IGZvcm0uaWQsXHJcblx0XHRcdFx0XHRcdFx0bmFtZTogZm9ybS50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRwYW5lbHM6IHBhbmVscyxcclxuXHRcdFx0XHRcdFx0XHR0b2dnbGU6IGZhbHNlXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGxpc3RWYWxpZGF0ZWRGb3JtO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIGRhdGEgYnkgZm9ybUlkIGFuZCBBcHBsaWNhdGlvbklkICovXHJcblx0cHJpdmF0ZSBnZXRFcnJvcnNCeUZvcm1JZEFuZEFwcGxpY2F0aW9uSWQobGlzdERhdGFGb3JtLCBmb3JtSWQsIGFwcGxpY2F0aW9uSWQpOiBhbnkge1xyXG5cdFx0aWYgKGxpc3REYXRhRm9ybSAmJiBmb3JtSWQgJiYgYXBwbGljYXRpb25JZClcclxuXHRcdFx0Zm9yIChjb25zdCBkYXRhIG9mIGxpc3REYXRhRm9ybSlcclxuXHRcdFx0XHRpZiAoZGF0YS5mb3JtSWQgPT0gZm9ybUlkICYmIGRhdGEuYXBwbGljYXRpb25JZCA9PSBhcHBsaWNhdGlvbklkKVxyXG5cdFx0XHRcdFx0cmV0dXJuIGRhdGEuZXJyb3JzO1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgZGF0YSBieSBmb3JtSWQgYW5kIEFwcGxpY2F0aW9uSWQgKi9cclxuXHRwcml2YXRlIGdldERhdGFCeUZvcm1JZEFuZEFwcGxpY2F0aW9uSWQobGlzdERhdGFGb3JtLCBmb3JtSWQsIGFwcGxpY2F0aW9uSWQpOiBhbnkge1xyXG5cdFx0aWYgKGxpc3REYXRhRm9ybSAmJiBmb3JtSWQgJiYgYXBwbGljYXRpb25JZClcclxuXHRcdFx0Zm9yIChjb25zdCBkYXRhIG9mIGxpc3REYXRhRm9ybSlcclxuXHRcdFx0XHRpZiAoZGF0YS5mb3JtSWQgPT0gZm9ybUlkICYmIGRhdGEuYXBwbGljYXRpb25JZCA9PSBhcHBsaWNhdGlvbklkKSByZXR1cm4gZGF0YS5kYXRhO1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHRnZXRWYWxpZGF0ZWRCdWRnZXRTdW1tYXJpemVkKFxyXG5cdFx0bGlzdEJ1ZGdldFNldHRpbmcsXHJcblx0XHRsaXN0QnVkZ2V0LFxyXG5cdFx0YXBwbGljYXRpb25JZCxcclxuXHRcdGN1cnJlbnRTdGF0dXNcclxuXHQpOiBhbnlbXSB7XHJcblx0XHRsZXQgbGlzdFZhbGlkYXRlZEJ1ZGdldDogYW55W10gPSBbXTtcclxuXHRcdGlmIChsaXN0QnVkZ2V0U2V0dGluZykge1xyXG5cdFx0XHRsZXQgc2hvdWxkVmFsaWRhdGVUb3RhbEJ1ZGdldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdFx0XHRpZiAoY3VycmVudFN0YXR1cykge1xyXG5cdFx0XHRcdGxldCBsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb246IFBsaUNuZlN0YXR1c1BhZ2VTZWN0aW9uW10gPVxyXG5cdFx0XHRcdFx0Y3VycmVudFN0YXR1cy5saXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb247XHJcblx0XHRcdFx0aWYgKGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbiAmJiBsaXN0UGxpQ25mU3RhdHVzUGFnZVNlY3Rpb24ubGVuZ3RoKVxyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIGxpc3RQbGlDbmZTdGF0dXNQYWdlU2VjdGlvbilcclxuXHRcdFx0XHRcdFx0aWYgKHNlY3Rpb24ucGxpQ25mUGFnZVNlY3Rpb24pXHJcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChzZWN0aW9uLnBsaUNuZlBhZ2VTZWN0aW9uLmtleUxhYmVsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIEVDbmZQYWdlU2VjdGlvbi5wcmVzdXB1ZXN0b1Jlc3VtaWRvOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHNob3VsZFZhbGlkYXRlVG90YWxCdWRnZXQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0c2hvdWxkVmFsaWRhdGVUb3RhbEJ1ZGdldCA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgYnVkZ2V0RGF0YVRvdGFsID0gdGhpcy52YWxpZGF0ZVN1bW1hcml6ZWRCdWRnZXQoXHJcblx0XHRcdFx0bGlzdEJ1ZGdldFNldHRpbmdbMF0sXHJcblx0XHRcdFx0RUJ1ZGdldEJ1aWxkVHlwZS50b3RhbCxcclxuXHRcdFx0XHRsaXN0QnVkZ2V0WzBdXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChidWRnZXREYXRhVG90YWwgJiYgc2hvdWxkVmFsaWRhdGVUb3RhbEJ1ZGdldClcclxuXHRcdFx0XHRsaXN0VmFsaWRhdGVkQnVkZ2V0LnB1c2goYnVkZ2V0RGF0YVRvdGFsKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBsaXN0VmFsaWRhdGVkQnVkZ2V0O1xyXG5cdH1cclxuXHJcblx0YXV0b21hdGljRG9jdW1lbnRzVmFsaWRhdGVkKFxyXG5cdFx0Y29uZmlnRG9jdW1lbnQ6IENvbmZpZ3VyYXRpb25Eb2N1bWVudCxcclxuXHRcdGxpc3REYXRhRm9ybTogYW55W10sXHJcblx0XHRkb2N1bWVudDogRG9jdW1lbnRcclxuXHQpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0Y29uZmlnRG9jdW1lbnQuZm9ybXVsYVZhbGlkYXRlTXVsdGlwbGUgJiZcclxuXHRcdFx0Y29uZmlnRG9jdW1lbnQuZm9ybXVsYVZhbGlkYXRlTXVsdGlwbGUubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBkYXRhID0geyBzdGF0dXNuYW1lOiAnJyB9O1xyXG5cdFx0XHRpZiAobGlzdERhdGFGb3JtKVxyXG5cdFx0XHRcdGZvciAoY29uc3QgZGF0YUZvcm0gb2YgbGlzdERhdGFGb3JtKVxyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBwcm9wZXJ0eSBpbiBkYXRhRm9ybS5kYXRhKVxyXG5cdFx0XHRcdFx0XHRkYXRhW3Byb3BlcnR5LnRvTG93ZXJDYXNlKCldID0gZGF0YUZvcm0uZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdGxldCBmb3JtdWxhID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KFxyXG5cdFx0XHRcdGNvbmZpZ0RvY3VtZW50Lm5hbWUsXHJcblx0XHRcdFx0Y29uZmlnRG9jdW1lbnQuZm9ybXVsYVZhbGlkYXRlTXVsdGlwbGUsXHJcblx0XHRcdFx0ZGF0YVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgcmVzdWx0ID0gZXZhbChmb3JtdWxhKTtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdGxldCByZXN1bHRBcnJheSA9IEpTT04ucGFyc2UocmVzdWx0KTtcclxuXHJcblx0XHRcdFx0aWYgKHJlc3VsdEFycmF5ICYmIHJlc3VsdEFycmF5Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdC8vVGhlbiBkb2N1bWVudCBtdXN0IGhhdmUgYXJjaGl2ZXNcclxuXHRcdFx0XHRcdGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQubGlzdEFyY2hpdmUubGVuZ3RoICE9PSByZXN1bHRBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG59XHJcbiJdfQ==
|