@esfaenza/extensions 15.2.23 → 15.2.25
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/esm2020/lib/services/extensions.base.mjs +29 -0
- package/esm2020/lib/services/extensions.embedding.service.mjs +23 -0
- package/esm2020/lib/services/extensions.messages.service.mjs +22 -4
- package/esm2020/lib/services/extensions.utilities.service.mjs +19 -1
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/esfaenza-extensions.mjs +86 -4
- package/fesm2015/esfaenza-extensions.mjs.map +1 -1
- package/fesm2020/esfaenza-extensions.mjs +86 -4
- package/fesm2020/esfaenza-extensions.mjs.map +1 -1
- package/lib/services/extensions.base.d.ts +22 -0
- package/lib/services/extensions.embedding.service.d.ts +9 -0
- package/lib/services/extensions.messages.service.d.ts +4 -2
- package/lib/services/extensions.utilities.service.d.ts +6 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./extensions.embedding.service";
|
|
5
|
+
/**
|
|
6
|
+
* Service che fornisce un accesso base in lettura/scrittura sulla clipboard
|
|
7
|
+
*/
|
|
8
|
+
export class BaseExtensionsService {
|
|
9
|
+
constructor(emb) {
|
|
10
|
+
this.emb = emb;
|
|
11
|
+
this.RedirectMap = {};
|
|
12
|
+
this.RoutesMap = {};
|
|
13
|
+
for (let prop in this.RedirectMap) {
|
|
14
|
+
this.RoutesMap[prop] = { route: null };
|
|
15
|
+
this.RoutesMap[prop].route = (param) => {
|
|
16
|
+
let obj = {};
|
|
17
|
+
obj[this.RedirectMap[prop].params[0]] = param;
|
|
18
|
+
return [(this.emb.Embedded ? "pages_ext/" : "pages/") + this.RedirectMap[prop].url, obj];
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
BaseExtensionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseExtensionsService, deps: [{ token: i1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
BaseExtensionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseExtensionsService, providedIn: "root" });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseExtensionsService, decorators: [{
|
|
26
|
+
type: Injectable,
|
|
27
|
+
args: [{ providedIn: "root" }]
|
|
28
|
+
}], ctorParameters: function () { return [{ type: i1.AppEmbeddingExtensions }]; } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRzNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUs5QixZQUFvQixHQUEyQjtRQUEzQixRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUh4QyxnQkFBVyxHQUEyRCxFQUFFLENBQUM7UUFDekUsY0FBUyxHQUEyRCxFQUFFLENBQUM7UUFHMUUsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDOUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDN0YsQ0FBQyxDQUFBO1NBQ0o7SUFDTCxDQUFDOztrSEFkUSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQURSLE1BQU07MkZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBcHBFbWJlZGRpbmdFeHRlbnNpb25zIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2hlIGZvcm5pc2NlIHVuIGFjY2Vzc28gYmFzZSBpbiBsZXR0dXJhL3Njcml0dHVyYSBzdWxsYSBjbGlwYm9hcmRcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIEJhc2VFeHRlbnNpb25zU2VydmljZSB7XHJcblxyXG4gICAgcHVibGljIFJlZGlyZWN0TWFwOiB7IFtpbmRleDogc3RyaW5nXTogeyB1cmw6IHN0cmluZywgcGFyYW1zOiBzdHJpbmdbXSB9IH0gPSB7fTtcclxuICAgIHB1YmxpYyBSb3V0ZXNNYXA6IHsgW2luZGV4OiBzdHJpbmddOiB7IHJvdXRlOiAocGFyYW06IHN0cmluZykgPT4gYW55IH0gfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZW1iOiBBcHBFbWJlZGRpbmdFeHRlbnNpb25zKSB7XHJcbiAgICAgICAgZm9yIChsZXQgcHJvcCBpbiB0aGlzLlJlZGlyZWN0TWFwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUm91dGVzTWFwW3Byb3BdID0geyByb3V0ZTogbnVsbCB9O1xyXG4gICAgICAgICAgICB0aGlzLlJvdXRlc01hcFtwcm9wXS5yb3V0ZSA9IChwYXJhbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0ge307XHJcbiAgICAgICAgICAgICAgICBvYmpbdGhpcy5SZWRpcmVjdE1hcFtwcm9wXS5wYXJhbXNbMF1dID0gcGFyYW07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWyh0aGlzLmVtYi5FbWJlZGRlZCA/IFwicGFnZXNfZXh0L1wiIDogXCJwYWdlcy9cIikgKyB0aGlzLlJlZGlyZWN0TWFwW3Byb3BdLnVybCwgb2JqXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/* Classe che contiene tutte le informazioni sull'embedding in un unico contenitore per semplicità */
|
|
5
|
+
export class AppEmbeddingExtensions {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.Embedded = false;
|
|
8
|
+
this.EmbeddingLevel = 0;
|
|
9
|
+
this.MainWindow = window;
|
|
10
|
+
while (this.MainWindow.parent != this.MainWindow) {
|
|
11
|
+
this.MainWindow = this.MainWindow.parent;
|
|
12
|
+
this.EmbeddingLevel++;
|
|
13
|
+
this.Embedded = true;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
AppEmbeddingExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18
|
+
AppEmbeddingExtensions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, providedIn: "root" });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppEmbeddingExtensions, decorators: [{
|
|
20
|
+
type: Injectable,
|
|
21
|
+
args: [{ providedIn: "root" }]
|
|
22
|
+
}], ctorParameters: function () { return []; } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxxR0FBcUc7QUFFckcsTUFBTSxPQUFPLHNCQUFzQjtJQU0vQjtRQUpPLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFJOUIsSUFBSSxDQUFDLFVBQVUsR0FBMkMsTUFBTSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNMLENBQUM7O21IQWJRLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRFQsTUFBTTsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKiBDbGFzc2UgY2hlIGNvbnRpZW5lIHR1dHRlIGxlIGluZm9ybWF6aW9uaSBzdWxsJ2VtYmVkZGluZyBpbiB1biB1bmljbyBjb250ZW5pdG9yZSBwZXIgc2VtcGxpY2l0w6AgKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxyXG5leHBvcnQgY2xhc3MgQXBwRW1iZWRkaW5nRXh0ZW5zaW9ucyB7XHJcblxyXG4gICAgcHVibGljIEVtYmVkZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgRW1iZWRkaW5nTGV2ZWw6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgTWFpbldpbmRvdzogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IDx7IHBhcmVudDogYW55LCBwb3N0TWVzc2FnZTogRnVuY3Rpb24gfT53aW5kb3c7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuTWFpbldpbmRvdy5wYXJlbnQgIT0gdGhpcy5NYWluV2luZG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IHRoaXMuTWFpbldpbmRvdy5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkaW5nTGV2ZWwrKztcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
|
@@ -8,6 +8,7 @@ import { of } from "rxjs";
|
|
|
8
8
|
import { first, map } from "rxjs/operators";
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "@esfaenza/localizations";
|
|
11
|
+
import * as i2 from "./extensions.embedding.service";
|
|
11
12
|
/**
|
|
12
13
|
* Service che fornisce funzionalità di alert nei tipi fondamentali: success, info, warning e danger
|
|
13
14
|
*/
|
|
@@ -17,9 +18,10 @@ export class MessageService {
|
|
|
17
18
|
*
|
|
18
19
|
* @ignore
|
|
19
20
|
*/
|
|
20
|
-
constructor(injector, locProvider) {
|
|
21
|
+
constructor(injector, locProvider, emb) {
|
|
21
22
|
this.injector = injector;
|
|
22
23
|
this.locProvider = locProvider;
|
|
24
|
+
this.emb = emb;
|
|
23
25
|
/**
|
|
24
26
|
* Oggetto statico in supporto alla localizzazione
|
|
25
27
|
*/
|
|
@@ -138,6 +140,10 @@ export class MessageService {
|
|
|
138
140
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
139
141
|
*/
|
|
140
142
|
simpleSuccess(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
143
|
+
if (this.emb.Embedded) {
|
|
144
|
+
this.emb.MainWindow.postMessage({ type: "alert", level: 'success', msg: text }, "*");
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
141
147
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
142
148
|
if (tos == "swal")
|
|
143
149
|
this.successSwal.fire("", text);
|
|
@@ -154,6 +160,10 @@ export class MessageService {
|
|
|
154
160
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
155
161
|
*/
|
|
156
162
|
simpleInfo(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
163
|
+
if (this.emb.Embedded) {
|
|
164
|
+
this.emb.MainWindow.postMessage({ type: "alert", level: 'info', msg: text }, "*");
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
157
167
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
158
168
|
if (tos == "swal")
|
|
159
169
|
this.infoSwal.fire("", text);
|
|
@@ -170,6 +180,10 @@ export class MessageService {
|
|
|
170
180
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
171
181
|
*/
|
|
172
182
|
simpleError(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
183
|
+
if (this.emb.Embedded) {
|
|
184
|
+
this.emb.MainWindow.postMessage({ type: "alert", level: 'error', msg: text }, "*");
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
173
187
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
174
188
|
if (tos == "swal")
|
|
175
189
|
this.errorSwal.fire("", text);
|
|
@@ -186,6 +200,10 @@ export class MessageService {
|
|
|
186
200
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
187
201
|
*/
|
|
188
202
|
simpleWarning(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
203
|
+
if (this.emb.Embedded) {
|
|
204
|
+
this.emb.MainWindow.postMessage({ type: "alert", level: 'warning', msg: text }, "*");
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
189
207
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
190
208
|
if (tos == "swal")
|
|
191
209
|
this.warningSwal.fire("", text);
|
|
@@ -362,7 +380,7 @@ export class MessageService {
|
|
|
362
380
|
}
|
|
363
381
|
}
|
|
364
382
|
}
|
|
365
|
-
MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, deps: [{ token: Injector }, { token: i1.BaseLocalization, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
383
|
+
MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, deps: [{ token: Injector }, { token: i1.BaseLocalization, optional: true }, { token: i2.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
366
384
|
MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, providedIn: "root" });
|
|
367
385
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, decorators: [{
|
|
368
386
|
type: Injectable,
|
|
@@ -372,5 +390,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
372
390
|
args: [Injector]
|
|
373
391
|
}] }, { type: i1.BaseLocalization, decorators: [{
|
|
374
392
|
type: Optional
|
|
375
|
-
}] }]; } });
|
|
376
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt2RSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFFL0IsT0FBTztBQUNQLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSzVDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFzRHZCOzs7O09BSUc7SUFDSCxZQUE2QyxRQUFrQixFQUFzQixXQUE2QjtRQUFyRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQXNCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQXpEbEg7O1dBRUc7UUFDSyxRQUFHLEdBQUc7WUFDVixTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEdBQUc7WUFDdkQsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxHQUFHO1lBQ3BELE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsR0FBRztZQUNqRCxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEdBQUc7WUFDakQsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFB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IE9wdGlvbmFsLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBFc1xyXG5pbXBvcnQgeyBCYXNlTG9jYWxpemF0aW9uIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHN3YWwgZnJvbSBcInN3ZWV0YWxlcnQyXCI7XHJcblxyXG4vLyBSWEpTXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlyc3QsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBDYWxsUmVzdWx0IH0gZnJvbSBcIi4uL21vZGVscy9DYWxsUmVzdWx0XCI7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgZnVuemlvbmFsaXTDoCBkaSBhbGVydCBuZWkgdGlwaSBmb25kYW1lbnRhbGk6IHN1Y2Nlc3MsIGluZm8sIHdhcm5pbmcgZSBkYW5nZXJcclxuICovXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiBcInJvb3RcIn0pXHJcbmV4cG9ydCBjbGFzcyBNZXNzYWdlU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPZ2dldHRvIHN0YXRpY28gaW4gc3VwcG9ydG8gYWxsYSBsb2NhbGl6emF6aW9uZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYyA9IHtcclxuICAgICAgICAnQ29uZmlybSc6IHsgJ2VuLVVTJzogXCJDb25maXJtXCIsICdpdC1JVCc6IFwiQ29uZmVybWFcIiwgfSxcclxuICAgICAgICAnQ2FuY2VsJzogeyAnZW4tVVMnOiBcIkNhbmNlbFwiLCAnaXQtSVQnOiBcIkFubnVsbGFcIiwgfSxcclxuICAgICAgICAnQ2xvc2UnOiB7ICdlbi1VUyc6IFwiQ2xvc2VcIiwgJ2l0LUlUJzogXCJDaGl1ZGlcIiwgfSxcclxuICAgICAgICAnRXJyb3InOiB7ICdlbi1VUyc6IFwiRXJyb3JcIiwgJ2l0LUlUJzogXCJFcnJvcmVcIiwgfSxcclxuICAgICAgICAnSW5mbyc6IHsgJ2VuLVVTJzogXCJJbmZvXCIsICdpdC1JVCc6IFwiSW5mb3JtYXppb25lXCIsIH0sXHJcbiAgICAgICAgJ1N1Y2Nlc3MnOiB7ICdlbi1VUyc6IFwiU3VjY2Vzc1wiLCAnaXQtSVQnOiBcIlN1Y2Nlc3NvXCIsIH0sXHJcbiAgICAgICAgJ1dhcm5pbmcnOiB7ICdlbi1VUyc6IFwiV2FybmluZ1wiLCAnaXQtSVQnOiBcIkF0dGVuemlvbmVcIiwgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGRpIHVuIHdhcm5pbmcgY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHdhcm5pbmdTd2FsV2l0aENhbmNlbDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZGkgdW4gd2FybmluZyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3VjY2Vzc1N3YWxXaXRoQ2FuY2VsOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBkaSB1biBlcnJvcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBlcnJvclN3YWw6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGRpIHVuIG1lc3NhZ2dpbyBkaSBzdWNjZXNzb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN1Y2Nlc3NTd2FsOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBkaSB1biBhdnZpc29cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB3YXJuaW5nU3dhbDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZGkgdW4gbWVzc2FnZ2lvIGluZm9ybWF0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5mb1N3YWw6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGRpIHVuIHdhcm5pbmcgcGVyIGxhIHNlc3Npb25lIHNjYWR1dGFcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBleHBpcmVkU2Vzc2lvblN3YWw6IGFueTtcclxuXHJcbiAgICBwcml2YXRlIGdldCB0b2FzdHIoKTogVG9hc3RyU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KFRvYXN0clNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmUgXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBAT3B0aW9uYWwoKSBwcml2YXRlIGxvY1Byb3ZpZGVyOiBCYXNlTG9jYWxpemF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdCgpIHtcclxuICAgICAgICBsZXQgTE9DQUxFID0gdGhpcy5sb2NQcm92aWRlciA/IGF3YWl0IHRoaXMubG9jUHJvdmlkZXIuTG9jYWxlLnBpcGUoZmlyc3QoKSkudG9Qcm9taXNlKCkgOiAnaXQtSVQnO1xyXG5cclxuICAgICAgICB0aGlzLmV4cGlyZWRTZXNzaW9uU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdMb2dpbicsXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IGZhbHNlLFxyXG4gICAgICAgICAgICBhbGxvd091dHNpZGVDbGljazogZmFsc2UsXHJcbiAgICAgICAgICAgIGljb246IFwid2FybmluZ1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3VjY2Vzc1N3YWxXaXRoQ2FuY2VsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIlN1Y2Nlc3NcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b246IFwiYnRuIGJ0bi1zZWNvbmRhcnkgYXBwLW1hcmdpbi1yaWdodC0xMFwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNvbmZpcm1cIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDYW5jZWxcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy53YXJuaW5nU3dhbFdpdGhDYW5jZWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiV2FybmluZ1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvbjogXCJidG4gYnRuLXNlY29uZGFyeSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ29uZmlybVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNhbmNlbFwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLndhcm5pbmdTd2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIldhcm5pbmdcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNsb3NlXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwid2FybmluZ1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3VjY2Vzc1N3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiU3VjY2Vzc1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2xvc2VcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5lcnJvclN3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiRXJyb3JcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNsb3NlXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwiZXJyb3JcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmluZm9Td2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIkluZm9cIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNsb3NlXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwiaW5mb1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlc2VudGF6aW9uZSBkaSB1biBzZW1wbGljZSBtZXNzYWdnaW8gZGkgc3VjY2Vzc29cclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlU3VjY2Vzcyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLnN1Y2Nlc3NTd2FsLmZpcmUoXCJcIiwgdGV4dCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci5zdWNjZXNzKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBpbmZvcm1hemlvbmVcclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlSW5mbyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLmluZm9Td2FsLmZpcmUoXCJcIiwgdGV4dCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci5pbmZvKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBlcnJvcmVcclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlRXJyb3IodGV4dDogc3RyaW5nLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlOiBcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsID0gbnVsbCwgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dDogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy5lcnJvclN3YWwuZmlyZShcIlwiLCB0ZXh0KTtcclxuICAgICAgICBlbHNlIHRoaXMudG9hc3RyLmVycm9yKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBhdnZpc29cclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlV2FybmluZyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLndhcm5pbmdTd2FsLmZpcmUoXCJcIiwgdGV4dCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci53YXJuaW5nKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSaXB1bGlzY2UgdHV0dGkgaSBtZXNzYWdnaSBwcmVzZW50aSBpbiB1biBkYXRvIG1vbWVudG8gc3VsbG8gc2NoZXJtb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xlYXJNZXNzYWdlcygpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5jbGVhcigpO1xyXG4gICAgICAgIHN3YWwuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1biBtZXNzYWdnaW8gZGkgYXZ2aXNvIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRpdG9sbyBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBDb250ZW51dG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUmVzdGl0dWlzY2UgdW5hIFByb21pc2UgY29sIHJpc3VsdGF0byBzY2VsdG8gZGFsbCd1dGVudGUgKGNvbmZlcm1hIG8gbm8pXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwcm9taXNlV2FybmluZ1dpdGhDaG9pY2UodGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy53YXJuaW5nU3dhbFdpdGhDYW5jZWwuZmlyZSh0aXRsZSwgdGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbiBiYXNlIGFsbGEgY29uZmlndXJhemlvbmUgYXR0dWFsZSBlIGFsbCdldmVudHVhbGUgb3ZlcnJpZGUgcGVyIGxhIGNoaWFtYXRhIGRlbCBjYXNvIGluZGljYSBzZSBiaXNvZ25hIHV0aWxpenphcmUgdG9hc3RyIG8gc3dlZXRhbGVydFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge1widG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGx9IHByb3ZpZGVyT3ZlcnJpZGUgT3ZlcnJpZGUgYWxsYSBtb2RhbGl0w6AgY29uZmlndXJhdGFcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1widG9hc3RyXCIgfCBcInN3YWxcIn0gSW5kaWNhemlvbmUgc3UgY2hlIHByb3ZpZGVyIGRpIG1lc3NhZ2dpIGRpIGF2dmlzbyBkZWJiYSBlc3NlcmUgdXRpbGl6emF0b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvYXN0ck9yU3dhbChwcm92aWRlck92ZXJyaWRlOiBcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsKTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHtcclxuICAgICAgICBpZiAocHJvdmlkZXJPdmVycmlkZSAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJPdmVycmlkZTtcclxuICAgICAgICByZXR1cm4gXCJzd2FsXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIGF2dmlzbyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hIGUgZ2VzdGlzY2UgaWwgcmlzdWx0YXRvIGNoaWFtYXRvIGkgY2FsbGJhY2sgKipvbnN1Y2Nlc3MqKiBvICoqb25lcnJvcioqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9uc3VjY2VzcyBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGNvbmZlcm1hXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbmVycm9yIENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgZXJyb3JpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVXYXJuaW5nV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uc3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBvbmVycm9yOiBGdW5jdGlvbiA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAmJiBvbnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICBvbnN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAob25lcnJvcilcclxuICAgICAgICAgICAgICAgIG9uZXJyb3IoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1biBtZXNzYWdnaW8gZGkgc3VjY2VzcyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hIGUgZ2VzdGlzY2UgaWwgcmlzdWx0YXRvIGNoaWFtYXRvIGkgY2FsbGJhY2sgKipvbmNvbmZpcm0qKiBvICoqb25hYm9ydCoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9uY29uZmlybSBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGNvbmZlcm1hXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbmFib3J0IENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgYW5udWxsYW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZmlybXRleHQgVGVzdG8gZGVsIHB1bHNhbnRlIGRpIGF6aW9uZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGFib3J0dGV4dCBUZXN0byBkZWwgcHVsc2FudGUgZGkgYW5udWxsYW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVTdWNjZXNzV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uY29uZmlybTogRnVuY3Rpb24gPSBudWxsLCBvbmFib3J0OiBGdW5jdGlvbiA9IG51bGwsIGNvbmZpcm10ZXh0OiBzdHJpbmcgPSBcIlwiLCBhYm9ydHRleHQ6IHN0cmluZyA9ICcnKSB7XHJcbiAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgaHRtbDogdGV4dFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKGNvbmZpcm10ZXh0KVxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uW1wiY29uZmlybUJ1dHRvblRleHRcIl0gPSBjb25maXJtdGV4dDtcclxuICAgICAgICBpZiAoYWJvcnR0ZXh0KVxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uW1wiY2FuY2VsQnV0dG9uVGV4dFwiXSA9IGFib3J0dGV4dDtcclxuXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3dhbFdpdGhDYW5jZWwuZmlyZShjb25maWd1cmF0aW9uKS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAmJiBvbmNvbmZpcm0pXHJcbiAgICAgICAgICAgICAgICBvbmNvbmZpcm0oKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAob25hYm9ydClcclxuICAgICAgICAgICAgICAgIG9uYWJvcnQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1biBtZXNzYWdnaW8gZGkgYXZ2aXNvIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgZSBnZXN0aXNjZSBpbCByaXN1bHRhdG8gY2hpYW1hdG8gaSBjYWxsYmFjayAqKm9uc3VjY2VzcyoqIG8gKipvbmVycm9yKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRpdG9sbyBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBDb250ZW51dG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb2JzZXJ2YWJsZVNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiBvZih0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KSkucGlwZShtYXAodCA9PiAhIXQudmFsdWUpKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY2hlIGxhIHNlc3Npb25lIGNvcnJlbnRlIMOoIHNjYWR1dGEgZSBwcm9wb25lIGFsbCd1dGVudGUgZGkgbmF2aWdhcmUgYWwgbG9naW4uIFF1YWxvcmEgbCd1dGVudGUgZGVjaWRlc3NlIGRpIGZhcmxvIFxyXG4gICAgICogdmVycsOgIGNoaWFtYXRhIGxhIGZ1bnppb25lIGRpIGNhbGxiYWNrICoqb25uYXZpZ2F0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbm5hdmlnYXRlIENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgbmF2aWdhemlvbmUgaW4gY29yc29cclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4cGlyZWRTZXNzaW9uTWVzc2FnZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9ubmF2aWdhdGU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuZXhwaXJlZFNlc3Npb25Td2FsLmZpcmUodGl0bGUsIHRleHQpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICYmIG9ubmF2aWdhdGUpXHJcbiAgICAgICAgICAgICAgICBvbm5hdmlnYXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipDYWxsUmVzdWx0KipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtDYWxsUmVzdWx0fSByZXNwb25zZSBSaXNwb3N0YSByaWNldnV0YSBkYWwgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzc01zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvck1zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdFN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0RmFpbHVyZSBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFuYWdlQ2FsbFJlc3VsdFJlc3BvbnNlKHJlc3BvbnNlOiBDYWxsUmVzdWx0LCBzdWNjZXNzTXNnOiBzdHJpbmcsIGVycm9yTXNnOiBzdHJpbmcsIHBvc3RTdWNjZXNzOiBGdW5jdGlvbiA9IG51bGwsIHBvc3RGYWlsdXJlOiBGdW5jdGlvbiA9IG51bGwpIHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzd2FybmluZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlV2FybmluZyhyZXNwb25zZS53YXJuaW5nKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHN1Y2Nlc3NNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZVN1Y2Nlc3Moc3VjY2Vzc01zZyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocG9zdFN1Y2Nlc3MpIHBvc3RTdWNjZXNzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaW1wbGVFcnJvcigoZXJyb3JNc2cgPyBlcnJvck1zZyArIFwiOiBcIiA6IFwiXCIpICsgcmVzcG9uc2UuaGFzZXJyb3IgPyByZXNwb25zZS5lcnJvciA6ICdbTk8gRVJSLl0nKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipzdHJpbmcqKiwgY29uc2lkZXJhbmRvIGNoZTpcclxuICAgICAqIFxyXG4gICAgICogU3RyaW5nYSB2dW90YSAtLT4gVHV0dG8gYmVuZVxyXG4gICAgICogXHJcbiAgICAgKiBTdHJpbmdhIHBpZW5hIC0tPiBRdWVzdG8gw6ggaWwgbWVzc2FnZ2lvIGQnZXJyb3JlIHBlciBjdWkgbGEgY2hpYW1hdGEgw6ggZmFsbGl0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVzcG9uc2UgUmlzcG9zdGEgcmljZXZ1dGEgZGFsIHNlcnZlclxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3NNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RTdWNjZXNzIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdEZhaWx1cmUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIG1hbmFnZVN0cmluZ1Jlc3BvbnNlKHJlc3BvbnNlOiBzdHJpbmcsIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgaWYgKHN1Y2Nlc3NNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZVN1Y2Nlc3Moc3VjY2Vzc01zZyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocG9zdFN1Y2Nlc3MpIHBvc3RTdWNjZXNzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGVycm9yTXNnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVFcnJvcihlcnJvck1zZyArIFwiOiBcIiArIHJlc3BvbnNlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipib29sZWFuKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJlc3BvbnNlIFJpc3Bvc3RhIHJpY2V2dXRhIGRhbCBzZXJ2ZXJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0U3VjY2VzcyBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RGYWlsdXJlIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYW5hZ2VTdHJpbmdSZXNwb25zZUJvb2wocmVzcG9uc2U6IGJvb2xlYW4sIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKGVycm9yTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
|
393
|
+
}] }, { type: i2.AppEmbeddingExtensions }]; } });
|
|
394
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt2RSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFFL0IsT0FBTztBQUNQLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU01Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBc0R2Qjs7OztPQUlHO0lBQ0gsWUFBNkMsUUFBa0IsRUFBc0IsV0FBNkIsRUFBVSxHQUEyQjtRQUExRyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQXNCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQXdCO1FBekR2Sjs7V0FFRztRQUNLLFFBQUcsR0FBRztZQUNWLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsR0FBRztZQUN2RCxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEdBQUc7WUFDcEQsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxHQUFHO1lBQ2pELE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsR0FBRztZQUNqRCxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLEdBQUc7WUFDckQsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxHQUFHO1lBQ3ZELFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksR0FBRztTQUM1RCxDQUFDO1FBK0NFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBWEQsSUFBWSxNQUFNO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBV0QsS0FBSyxDQUFDLElBQUk7UUFDTixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFbEcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakMsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixpQkFBaUIsRUFBRSxPQUFPO1lBQzFCLFdBQVcsRUFBRTtnQkFDVCxhQUFhLEVBQUUsaUJBQWlCO2dCQUNoQyxTQUFTLEVBQUUsVUFBVTthQUN4QjtZQUNELGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGlCQUFpQixFQUFFLEtBQUs7WUFDeEIsSUFBSSxFQUFFLFNBQVM7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2xDLFdBQVcsRUFBRTtnQkFDVCxhQUFhLEVBQUUsaUJBQWlCO2dCQUNoQyxZQUFZLEVBQUUsdUNBQXVDO2dCQUNyRCxTQUFTLEVBQUUsVUFBVTthQUN4QjtZQUNELGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDOUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxFQUFFLFNBQVM7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2xDLFdBQVcsRUFBRTtnQkFDVCxhQUFhLEVBQUUsaUJBQWlCO2dCQUNoQyxZQUFZLEVBQUUsdUNBQXVDO2dCQUNyRCxTQUFTLEVBQUUsVUFBVTthQUN4QjtZQUNELGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDOUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxFQUFFLFNBQVM7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxXQUFXLEVBQUU7Z0JBQ1QsYUFBYSxFQUFFLGlCQUFpQjtnQkFDaEMsU0FBUyxFQUFFLFVBQVU7YUFDeEI7WUFDRCxjQUFjLEVBQUUsS0FBSztZQUNyQixjQUFjLEVBQUUsSUFBSTtZQUNwQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQzVDLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDbEMsV0FBVyxFQUFFO2dCQUNULGFBQWEsRUFBRSxpQkFBaUI7Z0JBQ2hDLFNBQVMsRUFBRSxVQUFVO2FBQ3hCO1lBQ0QsY0FBYyxFQUFFLEtBQUs7WUFDckIsY0FBYyxFQUFFLElBQUk7WUFDcEIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUM1QyxJQUFJLEVBQUUsU0FBUztTQUNsQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2hDLFdBQVcsRUFBRTtnQkFDVCxhQUFhLEVBQUUsaUJBQWlCO2dCQUNoQyxTQUFTLEVBQUUsVUFBVTthQUN4QjtZQUNELGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxFQUFFLE9BQU87U0FDaEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUMvQixXQUFXLEVBQUU7Z0JBQ1QsYUFBYSxFQUFFLGlCQUFpQjtnQkFDaEMsU0FBUyxFQUFFLFVBQVU7YUFDeEI7WUFDRCxjQUFjLEVBQUUsS0FBSztZQUNyQixjQUFjLEVBQUUsSUFBSTtZQUNwQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQzVDLElBQUksRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksYUFBYSxDQUFDLElBQVksRUFBRSw0QkFBc0QsSUFBSSxFQUFFLCtCQUF1QyxJQUFJO1FBQ3RJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyRixPQUFPO1NBQ1Y7UUFFRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFdkQsSUFBSSxHQUFHLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixJQUFJLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFPLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLFVBQVUsQ0FBQyxJQUFZLEVBQUUsNEJBQXNELElBQUksRUFBRSwrQkFBdUMsSUFBSTtRQUNuSSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbEYsT0FBTztTQUNWO1FBRUQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRXZELElBQUksR0FBRyxJQUFJLE1BQU07WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7O1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSw0QkFBNEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2TyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxXQUFXLENBQUMsSUFBWSxFQUFFLDRCQUFzRCxJQUFJLEVBQUUsK0JBQXVDLElBQUk7UUFDcEksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25GLE9BQU87U0FDVjtRQUVELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUV2RCxJQUFJLEdBQUcsSUFBSSxNQUFNO1lBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDOztZQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLElBQUksQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeE8sQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksYUFBYSxDQUFDLElBQVksRUFBRSw0QkFBc0QsSUFBSSxFQUFFLCtCQUF1QyxJQUFJO1FBQ3RJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyRixPQUFPO1NBQ1Y7UUFFRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFdkQsSUFBSSxHQUFHLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixJQUFJLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFPLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSx3QkFBd0IsQ0FBQyxLQUFhLEVBQUUsSUFBWTtRQUN2RCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxZQUFZLENBQUMsZ0JBQTBDO1FBQzNELElBQUksZ0JBQWdCLElBQUksSUFBSTtZQUN4QixPQUFPLGdCQUFnQixDQUFDO1FBQzVCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksdUJBQXVCLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxZQUFzQixJQUFJLEVBQUUsVUFBb0IsSUFBSTtRQUM1RyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksU0FBUztnQkFDekIsU0FBUyxFQUFFLENBQUM7aUJBQ1gsSUFBSSxPQUFPO2dCQUNaLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLHVCQUF1QixDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsWUFBc0IsSUFBSSxFQUFFLFVBQW9CLElBQUksRUFBRSxjQUFzQixFQUFFLEVBQUUsWUFBb0IsRUFBRTtRQUM5SixJQUFJLGFBQWEsR0FBRztZQUNoQixLQUFLLEVBQUUsS0FBSztZQUNaLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUNGLElBQUksV0FBVztZQUNYLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLFdBQVcsQ0FBQztRQUNyRCxJQUFJLFNBQVM7WUFDVCxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxTQUFTLENBQUM7UUFFbEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMzRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksU0FBUztnQkFDekIsU0FBUyxFQUFFLENBQUM7aUJBQ1gsSUFBSSxPQUFPO2dCQUNaLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksaUNBQWlDLENBQUMsS0FBYSxFQUFFLElBQVk7UUFDaEUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3JGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0kscUJBQXFCLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxhQUF1QixJQUFJO1FBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RELElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxVQUFVO2dCQUMxQixVQUFVLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLHdCQUF3QixDQUFDLFFBQW9CLEVBQUUsVUFBa0IsRUFBRSxRQUFnQixFQUFFLGNBQXdCLElBQUksRUFBRSxjQUF3QixJQUFJO1FBQ2xKLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUNsQixJQUFJLFFBQVEsQ0FBQyxVQUFVO2dCQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFFcEMsSUFBSSxVQUFVO2dCQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFbkMsSUFBSSxXQUFXO2dCQUFFLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV2RyxJQUFJLFdBQVc7Z0JBQUUsV0FBVyxFQUFFLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksb0JBQW9CLENBQUMsUUFBZ0IsRUFBRSxVQUFrQixFQUFFLFFBQWdCLEVBQUUsY0FBd0IsSUFBSSxFQUFFLGNBQXdCLElBQUk7UUFDMUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLElBQUksVUFBVTtnQkFDVixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRW5DLElBQUksV0FBVztnQkFBRSxXQUFXLEVBQUUsQ0FBQztTQUNsQzthQUFNO1lBQ0gsSUFBSSxRQUFRO2dCQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQztZQUVqRCxJQUFJLFdBQVc7Z0JBQUUsV0FBVyxFQUFFLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSx3QkFBd0IsQ0FBQyxRQUFpQixFQUFFLFVBQWtCLEVBQUUsUUFBZ0IsRUFBRSxjQUF3QixJQUFJLEVBQUUsY0FBd0IsSUFBSTtRQUMvSSxJQUFJLFFBQVEsRUFBRTtZQUNWLElBQUksVUFBVTtnQkFDVixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRW5DLElBQUksV0FBVztnQkFBRSxXQUFXLEVBQUUsQ0FBQztTQUNsQzthQUFNO1lBQ0gsSUFBSSxRQUFRO2dCQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFL0IsSUFBSSxXQUFXO2dCQUFFLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQzs7MkdBdmFRLGNBQWMsa0JBMkRJLFFBQVE7K0dBM0QxQixjQUFjLGNBREQsTUFBTTsyRkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQTREVixNQUFNOzJCQUFDLFFBQVE7OzBCQUErQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBFc1xyXG5pbXBvcnQgeyBCYXNlTG9jYWxpemF0aW9uIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHN3YWwgZnJvbSBcInN3ZWV0YWxlcnQyXCI7XHJcblxyXG4vLyBSWEpTXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlyc3QsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBDYWxsUmVzdWx0IH0gZnJvbSBcIi4uL21vZGVscy9DYWxsUmVzdWx0XCI7XHJcbmltcG9ydCB7IEFwcEVtYmVkZGluZ0V4dGVuc2lvbnMgfSBmcm9tIFwiLi9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgZnVuemlvbmFsaXTDoCBkaSBhbGVydCBuZWkgdGlwaSBmb25kYW1lbnRhbGk6IHN1Y2Nlc3MsIGluZm8sIHdhcm5pbmcgZSBkYW5nZXJcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9nZ2V0dG8gc3RhdGljbyBpbiBzdXBwb3J0byBhbGxhIGxvY2FsaXp6YXppb25lXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9jID0ge1xyXG4gICAgICAgICdDb25maXJtJzogeyAnZW4tVVMnOiBcIkNvbmZpcm1cIiwgJ2l0LUlUJzogXCJDb25mZXJtYVwiLCB9LFxyXG4gICAgICAgICdDYW5jZWwnOiB7ICdlbi1VUyc6IFwiQ2FuY2VsXCIsICdpdC1JVCc6IFwiQW5udWxsYVwiLCB9LFxyXG4gICAgICAgICdDbG9zZSc6IHsgJ2VuLVVTJzogXCJDbG9zZVwiLCAnaXQtSVQnOiBcIkNoaXVkaVwiLCB9LFxyXG4gICAgICAgICdFcnJvcic6IHsgJ2VuLVVTJzogXCJFcnJvclwiLCAnaXQtSVQnOiBcIkVycm9yZVwiLCB9LFxyXG4gICAgICAgICdJbmZvJzogeyAnZW4tVVMnOiBcIkluZm9cIiwgJ2l0LUlUJzogXCJJbmZvcm1hemlvbmVcIiwgfSxcclxuICAgICAgICAnU3VjY2Vzcyc6IHsgJ2VuLVVTJzogXCJTdWNjZXNzXCIsICdpdC1JVCc6IFwiU3VjY2Vzc29cIiwgfSxcclxuICAgICAgICAnV2FybmluZyc6IHsgJ2VuLVVTJzogXCJXYXJuaW5nXCIsICdpdC1JVCc6IFwiQXR0ZW56aW9uZVwiLCB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZGkgdW4gd2FybmluZyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgd2FybmluZ1N3YWxXaXRoQ2FuY2VsOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBkaSB1biB3YXJuaW5nIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWFcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdWNjZXNzU3dhbFdpdGhDYW5jZWw6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGRpIHVuIGVycm9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGVycm9yU3dhbDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZGkgdW4gbWVzc2FnZ2lvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3VjY2Vzc1N3YWw6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGRpIHVuIGF2dmlzb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHdhcm5pbmdTd2FsOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBkaSB1biBtZXNzYWdnaW8gaW5mb3JtYXRpdm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbmZvU3dhbDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZGkgdW4gd2FybmluZyBwZXIgbGEgc2Vzc2lvbmUgc2NhZHV0YVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGV4cGlyZWRTZXNzaW9uU3dhbDogYW55O1xyXG5cclxuICAgIHByaXZhdGUgZ2V0IHRvYXN0cigpOiBUb2FzdHJTZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoVG9hc3RyU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZSBcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoQEluamVjdChJbmplY3RvcikgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIEBPcHRpb25hbCgpIHByaXZhdGUgbG9jUHJvdmlkZXI6IEJhc2VMb2NhbGl6YXRpb24sIHByaXZhdGUgZW1iOiBBcHBFbWJlZGRpbmdFeHRlbnNpb25zKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdCgpIHtcclxuICAgICAgICBsZXQgTE9DQUxFID0gdGhpcy5sb2NQcm92aWRlciA/IGF3YWl0IHRoaXMubG9jUHJvdmlkZXIuTG9jYWxlLnBpcGUoZmlyc3QoKSkudG9Qcm9taXNlKCkgOiAnaXQtSVQnO1xyXG5cclxuICAgICAgICB0aGlzLmV4cGlyZWRTZXNzaW9uU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdMb2dpbicsXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IGZhbHNlLFxyXG4gICAgICAgICAgICBhbGxvd091dHNpZGVDbGljazogZmFsc2UsXHJcbiAgICAgICAgICAgIGljb246IFwid2FybmluZ1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3VjY2Vzc1N3YWxXaXRoQ2FuY2VsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIlN1Y2Nlc3NcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b246IFwiYnRuIGJ0bi1zZWNvbmRhcnkgYXBwLW1hcmdpbi1yaWdodC0xMFwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNvbmZpcm1cIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDYW5jZWxcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy53YXJuaW5nU3dhbFdpdGhDYW5jZWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiV2FybmluZ1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvbjogXCJidG4gYnRuLXNlY29uZGFyeSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ29uZmlybVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNhbmNlbFwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLndhcm5pbmdTd2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIldhcm5pbmdcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNsb3NlXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwid2FybmluZ1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3VjY2Vzc1N3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiU3VjY2Vzc1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2xvc2VcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJzdWNjZXNzXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5lcnJvclN3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiRXJyb3JcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNsb3NlXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwiZXJyb3JcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmluZm9Td2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIkluZm9cIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNsb3NlXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwiaW5mb1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlc2VudGF6aW9uZSBkaSB1biBzZW1wbGljZSBtZXNzYWdnaW8gZGkgc3VjY2Vzc29cclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlU3VjY2Vzcyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1iLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1iLk1haW5XaW5kb3cucG9zdE1lc3NhZ2UoeyB0eXBlOiBcImFsZXJ0XCIsIGxldmVsOiAnc3VjY2VzcycsIG1zZzogdGV4dCB9LCBcIipcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy5zdWNjZXNzU3dhbC5maXJlKFwiXCIsIHRleHQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy50b2FzdHIuc3VjY2Vzcyh0ZXh0LCBudWxsLCB7IHBvc2l0aW9uQ2xhc3M6IHRvcyA9PSBcInRvYXN0clwiID8gXCJ0b2FzdC10b3AtcmlnaHRcIiA6IFwidG9hc3QtdG9wLWNlbnRlclwiLCB0aW1lT3V0OiBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0IHx8ICh0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiA1MDAwKSwgZXh0ZW5kZWRUaW1lT3V0OiB0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiAxMDAwIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlc2VudGF6aW9uZSBkaSB1biBzZW1wbGljZSBtZXNzYWdnaW8gZGkgaW5mb3JtYXppb25lXHJcbiAgICAgKiBcclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBsZSBpbXBvc3RhemlvbmkgZGkgZGVmYXVsdCBlIHRvYXN0ciDDqCBhYmlsaXRhdG8sIHZpZW5lIG1vc3RyYXRvIGFsIGNlbnRyb1xyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIG92ZXJyaWRlIHN1IHRvYXN0ciB2dW9sIGRpcmUgY2hlIMOoIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhIGUgYXBwYXJlIGluIGFsdG8gYSBkZXN0cmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgbW9zdHJhcmVcclxuICAgICAqIEBwYXJhbSB7XCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbH0gc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSBRdWFsb3JhIHNpYSB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSwgbmUgaW5kaWNhIGlsIHRpcG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpbXBsZUluZm8odGV4dDogc3RyaW5nLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlOiBcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsID0gbnVsbCwgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dDogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVtYi5FbWJlZGRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmVtYi5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJhbGVydFwiLCBsZXZlbDogJ2luZm8nLCBtc2c6IHRleHQgfSwgXCIqXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9zID0gdGhpcy50b2FzdHJPclN3YWwoc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSk7XHJcblxyXG4gICAgICAgIGlmICh0b3MgPT0gXCJzd2FsXCIpIHRoaXMuaW5mb1N3YWwuZmlyZShcIlwiLCB0ZXh0KTtcclxuICAgICAgICBlbHNlIHRoaXMudG9hc3RyLmluZm8odGV4dCwgbnVsbCwgeyBwb3NpdGlvbkNsYXNzOiB0b3MgPT0gXCJ0b2FzdHJcIiA/IFwidG9hc3QtdG9wLXJpZ2h0XCIgOiBcInRvYXN0LXRvcC1jZW50ZXJcIiwgdGltZU91dDogc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dCB8fCAodG9zID09IFwidG9hc3RyXCIgPyAwIDogNTAwMCksIGV4dGVuZGVkVGltZU91dDogdG9zID09IFwidG9hc3RyXCIgPyAwIDogMTAwMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXNlbnRhemlvbmUgZGkgdW4gc2VtcGxpY2UgbWVzc2FnZ2lvIGRpIGVycm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gbGUgaW1wb3N0YXppb25pIGRpIGRlZmF1bHQgZSB0b2FzdHIgw6ggYWJpbGl0YXRvLCB2aWVuZSBtb3N0cmF0byBhbCBjZW50cm9cclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBvdmVycmlkZSBzdSB0b2FzdHIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSBlIGFwcGFyZSBpbiBhbHRvIGEgZGVzdHJhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIG1vc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge1widG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGx9IHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUgUXVhbG9yYSBzaWEgdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEsIG5lIGluZGljYSBpbCB0aXBvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVFcnJvcih0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1iLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1iLk1haW5XaW5kb3cucG9zdE1lc3NhZ2UoeyB0eXBlOiBcImFsZXJ0XCIsIGxldmVsOiAnZXJyb3InLCBtc2c6IHRleHQgfSwgXCIqXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9zID0gdGhpcy50b2FzdHJPclN3YWwoc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSk7XHJcblxyXG4gICAgICAgIGlmICh0b3MgPT0gXCJzd2FsXCIpIHRoaXMuZXJyb3JTd2FsLmZpcmUoXCJcIiwgdGV4dCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci5lcnJvcih0ZXh0LCBudWxsLCB7IHBvc2l0aW9uQ2xhc3M6IHRvcyA9PSBcInRvYXN0clwiID8gXCJ0b2FzdC10b3AtcmlnaHRcIiA6IFwidG9hc3QtdG9wLWNlbnRlclwiLCB0aW1lT3V0OiBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0IHx8ICh0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiA1MDAwKSwgZXh0ZW5kZWRUaW1lT3V0OiB0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiAxMDAwIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlc2VudGF6aW9uZSBkaSB1biBzZW1wbGljZSBtZXNzYWdnaW8gZGkgYXZ2aXNvXHJcbiAgICAgKiBcclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBsZSBpbXBvc3RhemlvbmkgZGkgZGVmYXVsdCBlIHRvYXN0ciDDqCBhYmlsaXRhdG8sIHZpZW5lIG1vc3RyYXRvIGFsIGNlbnRyb1xyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIG92ZXJyaWRlIHN1IHRvYXN0ciB2dW9sIGRpcmUgY2hlIMOoIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhIGUgYXBwYXJlIGluIGFsdG8gYSBkZXN0cmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgbW9zdHJhcmVcclxuICAgICAqIEBwYXJhbSB7XCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbH0gc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSBRdWFsb3JhIHNpYSB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSwgbmUgaW5kaWNhIGlsIHRpcG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpbXBsZVdhcm5pbmcodGV4dDogc3RyaW5nLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlOiBcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsID0gbnVsbCwgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dDogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVtYi5FbWJlZGRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmVtYi5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJhbGVydFwiLCBsZXZlbDogJ3dhcm5pbmcnLCBtc2c6IHRleHQgfSwgXCIqXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9zID0gdGhpcy50b2FzdHJPclN3YWwoc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSk7XHJcblxyXG4gICAgICAgIGlmICh0b3MgPT0gXCJzd2FsXCIpIHRoaXMud2FybmluZ1N3YWwuZmlyZShcIlwiLCB0ZXh0KTtcclxuICAgICAgICBlbHNlIHRoaXMudG9hc3RyLndhcm5pbmcodGV4dCwgbnVsbCwgeyBwb3NpdGlvbkNsYXNzOiB0b3MgPT0gXCJ0b2FzdHJcIiA/IFwidG9hc3QtdG9wLXJpZ2h0XCIgOiBcInRvYXN0LXRvcC1jZW50ZXJcIiwgdGltZU91dDogc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dCB8fCAodG9zID09IFwidG9hc3RyXCIgPyAwIDogNTAwMCksIGV4dGVuZGVkVGltZU91dDogdG9zID09IFwidG9hc3RyXCIgPyAwIDogMTAwMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSB0dXR0aSBpIG1lc3NhZ2dpIHByZXNlbnRpIGluIHVuIGRhdG8gbW9tZW50byBzdWxsbyBzY2hlcm1vXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhck1lc3NhZ2VzKCkge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmNsZWFyKCk7XHJcbiAgICAgICAgc3dhbC5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBSZXN0aXR1aXNjZSB1bmEgUHJvbWlzZSBjb2wgcmlzdWx0YXRvIHNjZWx0byBkYWxsJ3V0ZW50ZSAoY29uZmVybWEgbyBubylcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb21pc2VXYXJuaW5nV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluIGJhc2UgYWxsYSBjb25maWd1cmF6aW9uZSBhdHR1YWxlIGUgYWxsJ2V2ZW50dWFsZSBvdmVycmlkZSBwZXIgbGEgY2hpYW1hdGEgZGVsIGNhc28gaW5kaWNhIHNlIGJpc29nbmEgdXRpbGl6emFyZSB0b2FzdHIgbyBzd2VldGFsZXJ0XHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7XCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbH0gcHJvdmlkZXJPdmVycmlkZSBPdmVycmlkZSBhbGxhIG1vZGFsaXTDoCBjb25maWd1cmF0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7XCJ0b2FzdHJcIiB8IFwic3dhbFwifSBJbmRpY2F6aW9uZSBzdSBjaGUgcHJvdmlkZXIgZGkgbWVzc2FnZ2kgZGkgYXZ2aXNvIGRlYmJhIGVzc2VyZSB1dGlsaXp6YXRvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9hc3RyT3JTd2FsKHByb3ZpZGVyT3ZlcnJpZGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwpOiBcInRvYXN0clwiIHwgXCJzd2FsXCIge1xyXG4gICAgICAgIGlmIChwcm92aWRlck92ZXJyaWRlICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlck92ZXJyaWRlO1xyXG4gICAgICAgIHJldHVybiBcInN3YWxcIjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1biBtZXNzYWdnaW8gZGkgYXZ2aXNvIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgZSBnZXN0aXNjZSBpbCByaXN1bHRhdG8gY2hpYW1hdG8gaSBjYWxsYmFjayAqKm9uc3VjY2VzcyoqIG8gKipvbmVycm9yKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRpdG9sbyBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBDb250ZW51dG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25zdWNjZXNzIENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgY29uZmVybWFcclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9uZXJyb3IgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBlcnJvcmlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25zdWNjZXNzOiBGdW5jdGlvbiA9IG51bGwsIG9uZXJyb3I6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsLmZpcmUodGl0bGUsIHRleHQpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICYmIG9uc3VjY2VzcylcclxuICAgICAgICAgICAgICAgIG9uc3VjY2VzcygpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChvbmVycm9yKVxyXG4gICAgICAgICAgICAgICAgb25lcnJvcigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBzdWNjZXNzIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgZSBnZXN0aXNjZSBpbCByaXN1bHRhdG8gY2hpYW1hdG8gaSBjYWxsYmFjayAqKm9uY29uZmlybSoqIG8gKipvbmFib3J0KipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRpdG9sbyBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBDb250ZW51dG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25jb25maXJtIENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgY29uZmVybWFcclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9uYWJvcnQgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBhbm51bGxhbWVudG9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb25maXJtdGV4dCBUZXN0byBkZWwgcHVsc2FudGUgZGkgYXppb25lXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYWJvcnR0ZXh0IFRlc3RvIGRlbCBwdWxzYW50ZSBkaSBhbm51bGxhbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25jb25maXJtOiBGdW5jdGlvbiA9IG51bGwsIG9uYWJvcnQ6IEZ1bmN0aW9uID0gbnVsbCwgY29uZmlybXRleHQ6IHN0cmluZyA9IFwiXCIsIGFib3J0dGV4dDogc3RyaW5nID0gJycpIHtcclxuICAgICAgICB2YXIgY29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICBodG1sOiB0ZXh0XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoY29uZmlybXRleHQpXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bXCJjb25maXJtQnV0dG9uVGV4dFwiXSA9IGNvbmZpcm10ZXh0O1xyXG4gICAgICAgIGlmIChhYm9ydHRleHQpXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bXCJjYW5jZWxCdXR0b25UZXh0XCJdID0gYWJvcnR0ZXh0O1xyXG5cclxuICAgICAgICB0aGlzLnN1Y2Nlc3NTd2FsV2l0aENhbmNlbC5maXJlKGNvbmZpZ3VyYXRpb24pLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICYmIG9uY29uZmlybSlcclxuICAgICAgICAgICAgICAgIG9uY29uZmlybSgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChvbmFib3J0KVxyXG4gICAgICAgICAgICAgICAgb25hYm9ydCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25zdWNjZXNzKiogbyAqKm9uZXJyb3IqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvYnNlcnZhYmxlU2ltcGxlV2FybmluZ1dpdGhDaG9pY2UodGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsLmZpcmUodGl0bGUsIHRleHQpKS5waXBlKG1hcCh0ID0+ICEhdC52YWx1ZSkpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIGF2dmlzbyBjaGUgbGEgc2Vzc2lvbmUgY29ycmVudGUgw6ggc2NhZHV0YSBlIHByb3BvbmUgYWxsJ3V0ZW50ZSBkaSBuYXZpZ2FyZSBhbCBsb2dpbi4gUXVhbG9yYSBsJ3V0ZW50ZSBkZWNpZGVzc2UgZGkgZmFybG8gXHJcbiAgICAgKiB2ZXJyw6AgY2hpYW1hdGEgbGEgZnVuemlvbmUgZGkgY2FsbGJhY2sgKipvbm5hdmlnYXRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9ubmF2aWdhdGUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBuYXZpZ2F6aW9uZSBpbiBjb3Jzb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXhwaXJlZFNlc3Npb25NZXNzYWdlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25uYXZpZ2F0ZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5leHBpcmVkU2Vzc2lvblN3YWwuZmlyZSh0aXRsZSwgdGV4dCkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUgJiYgb25uYXZpZ2F0ZSlcclxuICAgICAgICAgICAgICAgIG9ubmF2aWdhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKkNhbGxSZXN1bHQqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0NhbGxSZXN1bHR9IHJlc3BvbnNlIFJpc3Bvc3RhIHJpY2V2dXRhIGRhbCBzZXJ2ZXJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0U3VjY2VzcyBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RGYWlsdXJlIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzcG9uc2U6IENhbGxSZXN1bHQsIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXN3YXJuaW5nKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVXYXJuaW5nKHJlc3BvbnNlLndhcm5pbmcpO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKChlcnJvck1zZyA/IGVycm9yTXNnICsgXCI6IFwiIDogXCJcIikgKyByZXNwb25zZS5oYXNlcnJvciA/IHJlc3BvbnNlLmVycm9yIDogJ1tOTyBFUlIuXScpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKnN0cmluZyoqLCBjb25zaWRlcmFuZG8gY2hlOlxyXG4gICAgICogXHJcbiAgICAgKiBTdHJpbmdhIHZ1b3RhIC0tPiBUdXR0byBiZW5lXHJcbiAgICAgKiBcclxuICAgICAqIFN0cmluZ2EgcGllbmEgLS0+IFF1ZXN0byDDqCBpbCBtZXNzYWdnaW8gZCdlcnJvcmUgcGVyIGN1aSBsYSBjaGlhbWF0YSDDqCBmYWxsaXRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZXNwb25zZSBSaXNwb3N0YSByaWNldnV0YSBkYWwgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzc01zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvck1zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdFN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0RmFpbHVyZSBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFuYWdlU3RyaW5nUmVzcG9uc2UocmVzcG9uc2U6IHN0cmluZywgc3VjY2Vzc01zZzogc3RyaW5nLCBlcnJvck1zZzogc3RyaW5nLCBwb3N0U3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBwb3N0RmFpbHVyZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKGVycm9yTXNnICsgXCI6IFwiICsgcmVzcG9uc2UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKmJvb2xlYW4qKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVzcG9uc2UgUmlzcG9zdGEgcmljZXZ1dGEgZGFsIHNlcnZlclxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3NNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RTdWNjZXNzIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdEZhaWx1cmUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIG1hbmFnZVN0cmluZ1Jlc3BvbnNlQm9vbChyZXNwb25zZTogYm9vbGVhbiwgc3VjY2Vzc01zZzogc3RyaW5nLCBlcnJvck1zZzogc3RyaW5nLCBwb3N0U3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBwb3N0RmFpbHVyZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGlmIChzdWNjZXNzTXNnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVTdWNjZXNzKHN1Y2Nlc3NNc2cpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RTdWNjZXNzKSBwb3N0U3VjY2VzcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvck1zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlRXJyb3IoZXJyb3JNc2cpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
@@ -7,6 +7,12 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
* Service che fornisce metodi di pubblica utilità
|
|
8
8
|
*/
|
|
9
9
|
export class UtilityService {
|
|
10
|
+
constructor() {
|
|
11
|
+
// Funzione di throttling per non spammare richieste in caso di animazioni attivate
|
|
12
|
+
//TODO: spostarla in un metodo di utilit� (esfaenza/extensions)
|
|
13
|
+
/** @ignore */
|
|
14
|
+
this.executionTimers = {};
|
|
15
|
+
}
|
|
10
16
|
/**
|
|
11
17
|
* Deseleziona il testo eventualmente selezionato
|
|
12
18
|
*/
|
|
@@ -224,6 +230,18 @@ export class UtilityService {
|
|
|
224
230
|
}
|
|
225
231
|
return destination;
|
|
226
232
|
}
|
|
233
|
+
cast(object, clss) {
|
|
234
|
+
let ret = Object.assign(Object.create(clss.prototype), object);
|
|
235
|
+
return ret;
|
|
236
|
+
}
|
|
237
|
+
/** @ignore */
|
|
238
|
+
throttla(id, func, throttleTime) {
|
|
239
|
+
//Se ho la funzione che vuole eseguire ripulisco quel timeout
|
|
240
|
+
if (this.executionTimers[id])
|
|
241
|
+
clearTimeout(this.executionTimers[id]);
|
|
242
|
+
//Ricreo il timeout per eseguire quella funzione dopo throttleTime millisecondi
|
|
243
|
+
this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
|
|
244
|
+
}
|
|
227
245
|
}
|
|
228
246
|
UtilityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UtilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
229
247
|
UtilityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UtilityService, providedIn: "root" });
|
|
@@ -231,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
231
249
|
type: Injectable,
|
|
232
250
|
args: [{ providedIn: "root" }]
|
|
233
251
|
}] });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy51dGlsaXRpZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLnV0aWxpdGllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFFdkI7O09BRUc7SUFDSSxrQkFBa0I7UUFDckIsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBSSxTQUFTO2dCQUN4QyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQzdCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRyxVQUFVO2dCQUN2RCxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7U0FFL0M7YUFBTSxJQUFVLFFBQVMsQ0FBQyxTQUFTLEVBQUcsTUFBTTtZQUNuQyxRQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxlQUFlLENBQUksVUFBZSxFQUFFLGlCQUF5QixFQUFFLGFBQXFCO1FBQ3ZGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQWE7Z0JBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ25CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxJQUFZLEVBQUUsYUFBcUIsSUFBSSxFQUFFLGFBQXFCLElBQUk7UUFDL0UsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLFVBQVUsR0FBRyxXQUFXLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUksVUFBVSxHQUFHLFdBQVcsRUFBRTtnQkFDMUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMvQjtpQkFDSTtnQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3pDO1NBQ0o7UUFFRCx3QkFBd0I7UUFDdkIsSUFBK0IsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFlBQVksQ0FBQyxHQUFXLEVBQUUsUUFBZ0I7UUFDN0MsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQ2hDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDdEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxRQUFnQjtRQUM1QixJQUFJLENBQUMsUUFBUTtZQUNULE9BQU8sRUFBRSxDQUFDO1FBRWQsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDN0QsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ3ZELE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQzlELEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXRFLElBQUksUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMxRCxJQUFJLFVBQVUsR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRTFELE9BQU8sUUFBUSxHQUFHLEdBQUcsR0FBRyxVQUFVLEdBQUcsR0FBRyxHQUFHLFVBQVUsR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQ2hELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssbUJBQW1CLENBQUMsVUFBa0I7UUFDMUMsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxJQUFJLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssYUFBYSxDQUFDLElBQWdCLEVBQUUsUUFBZ0I7UUFDcEQsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVCLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUFBLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSSxJQUFJLENBQUMsS0FBWSxFQUFFLENBQVMsRUFBRSxDQUFTO1FBQzFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHFCQUFxQixDQUFDLElBQWM7UUFDdkMsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLFFBQVEsQ0FBQyxPQUFPO2dCQUNqQixPQUFPLFNBQVMsQ0FBQztZQUVyQixLQUFLLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDdEIsS0FBSyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3JCLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNyQixLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3BCLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNwQixLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3BCLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNyQixLQUFLLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDckIsS0FBSyxRQUFRLENBQUMsTUFBTTtnQkFDaEIsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ25CLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ2hCLE9BQU8sUUFBUSxDQUFDO1lBQ3BCLEtBQUssUUFBUSxDQUFDLFFBQVE7Z0JBQ2xCLE9BQU8sTUFBTSxDQUFDO1lBQ2xCO2dCQUNJLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ3pELE9BQU8sUUFBUSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksU0FBUyxDQUFDLE1BQVc7UUFFeEIsa0JBQWtCO1FBQ2xCLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1lBQzVDLE9BQU8sTUFBTSxDQUFDO1FBRWxCLGdCQUFnQjtRQUNoQixRQUFRLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFFM0IsS0FBSyxrQkFBa0IsQ0FBQztZQUN4QixLQUFLLGlCQUFpQixDQUFDO1lBQ3ZCLEtBQUssaUJBQWlCLENBQUM7WUFDdkIsS0FBSyxlQUFlO2dCQUNoQixPQUFPLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNwRCxxRUFBcUU7WUFDckUsS0FBSyxlQUFlO2dCQUNoQixPQUFPLE1BQU0sQ0FBQztZQUNsQixPQUFPLENBQUMsQ0FBQyxNQUFNO1NBQ2xCO1FBRUQsb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUksQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWEsQ0FBQyxNQUFXLEVBQUUsV0FBZ0I7UUFDL0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sWUFBWSxLQUFLLEVBQUU7WUFDbEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQzNDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25EO2FBQU0sSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsY0FBYyxLQUFLLFVBQVUsRUFBRTtZQUM5RCxLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtnQkFDcEIsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztvQkFDMUIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEQ7U0FDSjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7OzJHQWhQUSxjQUFjOytHQUFkLGNBQWMsY0FERixNQUFNOzJGQUNsQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBUeXBlQ29kZSB9IGZyb20gJy4uL21vZGVscy9UeXBlQ29kZSc7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgbWV0b2RpIGRpIHB1YmJsaWNhIHV0aWxpdMOgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogXCJyb290XCJ9KVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0eVNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVzZWxlemlvbmEgaWwgdGVzdG8gZXZlbnR1YWxtZW50ZSBzZWxlemlvbmF0b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xlYXJUZXh0U2VsZWN0aW9uKCkge1xyXG4gICAgICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZW1wdHkpICAgLy8gQ2hyb21lXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZW1wdHkoKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAod2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcykgIC8vIEZpcmVmb3hcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIGlmICgoPGFueT5kb2N1bWVudCkuc2VsZWN0aW9uKSAgLy8gSUU/XHJcbiAgICAgICAgICAgICg8YW55PmRvY3VtZW50KS5zZWxlY3Rpb24uZW1wdHkoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnRlbmRvIGRhIHVuYSBsaXN0YSwgZGF0byBpbCBub21lIGRlbGxhIHByb3ByaWV0w6AgY2hpYXZlIGUgaWwgdmFsb3JlIGRlbGxhIGNoaWF2ZSBzZWxlemlvbmF0YSwgXHJcbiAgICAgKiB0cm92YSBlIHJlc3RpdHVpc2NlIGwnb2dnZXR0byBkZXNpZGVyYXRvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7VFtdfSBzb3VyY2VMaXN0IExpc3RhIGRpIG9nZ2V0dGkgZGVudHJvIGN1aSBjZXJjYXJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlSXRlbUlkRmllbGQgTm9tZSBkZWxsYSBwcm9wcmlldMOgIGNoZSByYXBwcmVzZW50YSBsYSBjaGlhdmUgZGkgdW4gb2dnZXR0byBkaSB0aXBvIFRcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RlZFZhbHVlIFZhbG9yZSBkaSBjaGlhdmUgc2VsZXppb25hdG9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1R9IE9nZ2V0dG8gbGEgY3VpIHByb3ByaWV0w6AgKipzb3VyY2VJdGVtSWRGaWVsZCoqIGFzc3VtZSBpbCB2YWxvcmUgKipzZWxlY3RlZFZhbHVlKipcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFNlbGVjdGVkSXRlbTxUPihzb3VyY2VMaXN0OiBUW10sIHNvdXJjZUl0ZW1JZEZpZWxkOiBzdHJpbmcsIHNlbGVjdGVkVmFsdWU6IHN0cmluZyk6IFQge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgaXRlbSA9IHNvdXJjZUxpc3RbaV07XHJcbiAgICAgICAgICAgIGlmIChpdGVtW3NvdXJjZUl0ZW1JZEZpZWxkXSA9PSBzZWxlY3RlZFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgaWwgcmVzZXQgZGkgdW4gRm9ybSBkaSBBbmd1bGFyXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7TmdGb3JtfSBmb3JtIEZvcm0gZGEgcmVzZXR0YXJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXhjZXB0aW9uMSBDYW1wbyBkYSBub24gcmVzZXR0YXJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXhjZXB0aW9uMiBDYW1wbyBkYSBub24gcmVzZXR0YXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhbkZvcm0oZm9ybTogTmdGb3JtLCBleGNlcHRpb24xOiBzdHJpbmcgPSBudWxsLCBleGNlcHRpb24yOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgbmFtZSBpbiBmb3JtLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgIGlmIChuYW1lICYmIG5hbWUgIT0gZXhjZXB0aW9uMSAmJiBuYW1lICE9IGV4Y2VwdGlvbjEgKyBcIl9pbnRlcm5hbFwiICYmIG5hbWUgIT0gZXhjZXB0aW9uMiAmJiBuYW1lICE9IGV4Y2VwdGlvbjIgKyBcIl9pbnRlcm5hbFwiKSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtLmNvbnRyb2xzW25hbWVdLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtLmNvbnRyb2xzW25hbWVdLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICBmb3JtLmNvbnRyb2xzW25hbWVdLm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL1JlaW1wb3N0byBpbCBzdWJtaXR0ZWRcclxuICAgICAgICAoZm9ybSBhcyB7IHN1Ym1pdHRlZDogYm9vbGVhbiB9KS5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjaGUgcGVybWV0dGUgZGkgc2NhcmljYXJlIHVuIGZpbGUgZGF0byB1biBVUkwgKEdlbmVyYXRvIGRhIHVuYSBjaGlhbWF0YSBhZCAqKndpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKiopXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgT2JqZWN0VVJMIGNoZSByYXBwcmVzZW50YSBpbCBmaWxlIGRhIHNjYXJpY2FyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVuYW1lIE5vbWUgZGVsIGZpbGUgc3VnZ2VyaXRvIGluIGZhc2UgZGkgc2FsdmF0YWdnaW9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbGVEb3dubG9hZCh1cmw6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgICAgICBhLmNsYXNzTmFtZSA9IFwidGEtZGlzcGxheS1ub25lXCI7XHJcbiAgICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgICBhLmNsaWNrKCk7XHJcbiAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIHBlciBsYSBmb3JtYXR0YXppb25lIGRpIHVuIG51bWVybyBkaSBtaWxsaXNlY29uZGkgaW4gdW5hIHN0cmluZ2EgcGnDuSBjb21wcmVuc2liaWxlIHBlciB1biB1bWFub1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZHVyYXRpb24gVGVtcG8gZXNwcmVzc28gaW4gbWlsbGlzZWNvbmRpXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IER1cmF0YSBmb3JtYXR0YXRhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtc1RvVGltZShkdXJhdGlvbjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIWR1cmF0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHBhcnNlSW50KCgoZHVyYXRpb24gJSAxMDAwKSAvIDEwMCkudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgIHNlY29uZHMgPSBwYXJzZUludCgoKGR1cmF0aW9uIC8gMTAwMCkgJSA2MCkudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCgoKGR1cmF0aW9uIC8gKDEwMDAgKiA2MCkpICUgNjApLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICBob3VycyA9IHBhcnNlSW50KCgoZHVyYXRpb24gLyAoMTAwMCAqIDYwICogNjApKSAlIDI0KS50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgdmFyIHN0X2hvdXJzID0gKGhvdXJzIDwgMTApID8gXCIwXCIgKyBob3VycyA6IGhvdXJzO1xyXG4gICAgICAgIHZhciBzdF9taW51dGVzID0gKG1pbnV0ZXMgPCAxMCkgPyBcIjBcIiArIG1pbnV0ZXMgOiBtaW51dGVzO1xyXG4gICAgICAgIHZhciBzdF9zZWNvbmRzID0gKHNlY29uZHMgPCAxMCkgPyBcIjBcIiArIHNlY29uZHMgOiBzZWNvbmRzO1xyXG5cclxuICAgICAgICByZXR1cm4gc3RfaG91cnMgKyBcIjpcIiArIHN0X21pbnV0ZXMgKyBcIjpcIiArIHN0X3NlY29uZHMgKyBcIi5cIiArIG1pbGxpc2Vjb25kcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjaGUgcGVybWV0dGUgZGkgc2NhcmljYXJlIHVuIGZpbGUgaW4gQmFzZTY0XHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjREYXRhIEJhc2U2NCBjaGUgcmFwcHJlc2VudGEgaWwgZmlsZSBkYSBzY2FyaWNhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlbmFtZSBOb21lIGRlbCBmaWxlIHN1Z2dlcml0byBpbiBmYXNlIGRpIHNhbHZhdGFnZ2lvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzYXZlRmlsZShiYXNlNjREYXRhOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgc2FtcGxlQXJyID0gdGhpcy5iYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NERhdGEpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUJ5dGVBcnJheShzYW1wbGVBcnIsIGZpbGVuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyYXNmb3JtYSB1biBCYXNlNjQgaW4gdW4gQXJyYXlCdWZmZXJcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NERhdGEgQmFzZTY0IGRhIHRyYXNmb3JtYXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBBcnJheSBVVEY4XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjREYXRhOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcclxuICAgICAgICB2YXIgYmluYXJ5U3RyaW5nID0gd2luZG93LmF0b2IoYmFzZTY0RGF0YSk7XHJcbiAgICAgICAgdmFyIGJpbmFyeUxlbiA9IGJpbmFyeVN0cmluZy5sZW5ndGg7XHJcbiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYmluYXJ5TGVuKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJpbmFyeUxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICBieXRlc1tpXSA9IGFzY2lpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnl0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgY2hlIHBlcm1ldHRlIGRpIHNjYXJpY2FyZSB1biBmaWxlIGRhdG8gdW4gYXJyYXkgZGkgQnl0ZSAoKipVaW50OEFycmF5KiopXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZSBSYXBwcmVzZW50YXppb25lIGRlbCBmaWxlIGRhIHNjYXJpY2FyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVuYW1lIE5vbWUgZGVsIGZpbGUgc3VnZ2VyaXRvIGluIGZhc2UgZGkgc2FsdmF0YWdnaW9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzYXZlQnl0ZUFycmF5KGJ5dGU6IFVpbnQ4QXJyYXksIGZpbGVuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtieXRlXSk7XHJcbiAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgIHZhciBmaWxlTmFtZSA9IGZpbGVuYW1lO1xyXG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVdGlsaXR5IHBlciBsbyBzd2FwIGRpIGR1ZSBlbGVtZW50aSBkaSB1biBhcnJheVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueVtdfSBhcnJheSBBcnJheSBkaSBjdWkgaW52ZXJ0aXJlIGR1ZSBlbGVtZW50aVxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggSW5kaWNlIGRlbCBwcmltbyBlbGVtZW50b1xyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgSW5kaWNlIGRlbCBzZWNvbmRvIGVsZW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzd2FwKGFycmF5OiBhbnlbXSwgeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcclxuICAgICAgICB2YXIgYiA9IGFycmF5W3hdO1xyXG4gICAgICAgIGFycmF5W3hdID0gYXJyYXlbeV07XHJcbiAgICAgICAgYXJyYXlbeV0gPSBiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGRpIHRyYXNjb2RpZmljYSBkYSB0aXBvIGMjIGEgdGlwbyBUeXBlc2NyaXB0XHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7VHlwZUNvZGV9IHR5cGUgVGlwbyBkYSB0cmFzY29kaWZpY2FyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7XCJib29sZWFuXCIgfCBcIm51bWJlclwiIHwgXCJzdHJpbmdcIiB8IFwiZGF0ZVwifSBUaXBvIFR5cGVzY3JpcHQgY29ycmlzcG9uZGVudGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEpzVHlwZUZyb21UeXBlQ29kZSh0eXBlOiBUeXBlQ29kZSk6IFwiYm9vbGVhblwiIHwgXCJudW1iZXJcIiB8IFwic3RyaW5nXCIgfCBcImRhdGVcIiAge1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkJvb2xlYW46XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJib29sZWFuXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkRlY2ltYWw6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuRG91YmxlOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlNpbmdsZTpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5JbnQxNjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5JbnQzMjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5JbnQ2NDpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5CeXRlOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlNCeXRlOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlVJbnQxNjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5VSW50MzI6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuVUludDY0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnVtYmVyXCI7XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuQ2hhcjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5TdHJpbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJzdHJpbmdcIjtcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5EYXRlVGltZTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImRhdGVcIjtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVW5yZWNvZ25pemVkIGlucHV0IHR5cGUuIFR5cGVjb2RlOlwiICsgdHlwZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJzdHJpbmdcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFZmZldHR1YSBsYSBjbG9uYXppb25lIHByb2ZvbmRhIGRpIHVuIG9nZ2V0dG8gaW4gbWFuaWVyYSBtb2x0byBwacO5IHBlcmZvcm1hbnRlIGNoZSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCkpLlxyXG4gICAgICogXHJcbiAgICAgKiBVc2FyZSBzb2xvIHBlciBvZ2dldHRpIHB1cmkgZSBxdWFudG9tZW5vIHNlbXBsaWNpIHBlciBldml0YXJlIGNvbXBsaWNhemlvbmkgZGVyaXZhbnRpIGRhbGxlIHNlbXBsaWZpY2F6aW9uaSBjaGUgcXVlc3RvIG1ldG9kbyBhc3N1bWVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IHNvdXJjZSBPZ2dldHRvIGRhIGNsb25hcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybiB7YW55fSBDbG9uZSBkZWxsJ29nZ2V0dG8gcGFzc2F0byBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlZXBDbG9uZShzb3VyY2U6IGFueSk6IGFueSB7XHJcblxyXG4gICAgICAgIC8vIFZhbG9yaSBzZW1wbGljaVxyXG4gICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0JylcclxuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTtcclxuXHJcbiAgICAgICAgLy8gUHNldWRvIFN0cnVjdFxyXG4gICAgICAgIHN3aXRjaCAodG9TdHJpbmcuY2FsbChzb3VyY2UpKSB7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdbb2JqZWN0IEJvb2xlYW5dJzpcclxuICAgICAgICAgICAgY2FzZSAnW29iamVjdCBOdW1iZXJdJzpcclxuICAgICAgICAgICAgY2FzZSAnW29iamVjdCBTdHJpbmddJzpcclxuICAgICAgICAgICAgY2FzZSAnW29iamVjdCBEYXRlXSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHNvdXJjZS5jb25zdHJ1Y3Rvcihzb3VyY2UudmFsdWVPZigpKTtcclxuICAgICAgICAgICAgLy8gQ2xvbmF6aW9uZSBkaSB1biBmaWxlIC0+IFJlc3RpdHVpc2NvIGlsIHJpZmVyaW1lbnRvIGFsIGZpbGUgc3Rlc3NvXHJcbiAgICAgICAgICAgIGNhc2UgXCJbb2JqZWN0IEZpbGVdXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE9nZ2V0dGkgQ29tcGxlc3NpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjdXJzaXZlU3RlcChzb3VyY2UsIEFycmF5LmlzQXJyYXkoc291cmNlKSB8fCBzb3VyY2UgaW5zdGFuY2VvZiBBcnJheSA/IFtdIDogT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogU3RlcCByaWNvcnNpdm8gcGVyIGxhIGNsb25hdHVyYSBkZWdsaSBvZ2dldHRpLiBWZWRlcmUgKipkZWVwQ2xvbmUqKlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlY3Vyc2l2ZVN0ZXAoc291cmNlOiBhbnksIGRlc3RpbmF0aW9uOiBhbnkpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpIHx8IHNvdXJjZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHNvdXJjZS5sZW5ndGg7IGkgPCBpaTsgaSsrKVxyXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaCh0aGlzLmRlZXBDbG9uZShzb3VyY2VbaV0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlLmhhc093blByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBzb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltrZXldID0gdGhpcy5kZWVwQ2xvbmUoc291cmNlW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVzdGluYXRpb247XHJcbiAgICB9XHJcbn0iXX0=
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy51dGlsaXRpZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLnV0aWxpdGllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBR2pELFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUF3UEksbUZBQW1GO1FBQ25GLCtEQUErRDtRQUMvRCxjQUFjO1FBQ04sb0JBQWUsR0FBNkIsRUFBRSxDQUFDO0tBVTFEO0lBbFFHOztPQUVHO0lBQ0ksa0JBQWtCO1FBQ3JCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUksU0FBUztnQkFDeEMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUM3QixJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUcsVUFBVTtnQkFDdkQsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBRS9DO2FBQU0sSUFBVSxRQUFTLENBQUMsU0FBUyxFQUFHLE1BQU07WUFDbkMsUUFBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksZUFBZSxDQUFJLFVBQWUsRUFBRSxpQkFBeUIsRUFBRSxhQUFxQjtRQUN2RixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxhQUFhO2dCQUN4QyxPQUFPLElBQUksQ0FBQztTQUNuQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxTQUFTLENBQUMsSUFBWSxFQUFFLGFBQXFCLElBQUksRUFBRSxhQUFxQixJQUFJO1FBQy9FLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM1QixJQUFJLElBQUksSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBSSxVQUFVLEdBQUcsV0FBVyxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLFVBQVUsR0FBRyxXQUFXLEVBQUU7Z0JBQzFILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDL0I7aUJBQ0k7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN6QztTQUNKO1FBRUQsd0JBQXdCO1FBQ3ZCLElBQStCLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxZQUFZLENBQUMsR0FBVyxFQUFFLFFBQWdCO1FBQzdDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUNoQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxRQUFRLENBQUMsUUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFFBQVE7WUFDVCxPQUFPLEVBQUUsQ0FBQztRQUVkLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQzdELE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUN2RCxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUM5RCxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUV0RSxJQUFJLFFBQVEsR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xELElBQUksVUFBVSxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDMUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FB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QUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUcsQ0FBQzs7MkdBblFRLGNBQWM7K0dBQWQsY0FBYyxjQURELE1BQU07MkZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IFR5cGVDb2RlIH0gZnJvbSAnLi4vbW9kZWxzL1R5cGVDb2RlJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBmb3JuaXNjZSBtZXRvZGkgZGkgcHViYmxpY2EgdXRpbGl0w6BcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIFV0aWxpdHlTZXJ2aWNlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlc2VsZXppb25hIGlsIHRlc3RvIGV2ZW50dWFsbWVudGUgc2VsZXppb25hdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFyVGV4dFNlbGVjdGlvbigpIHtcclxuICAgICAgICBpZiAod2luZG93LmdldFNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICBpZiAod2luZG93LmdldFNlbGVjdGlvbigpLmVtcHR5KSAgIC8vIENocm9tZVxyXG4gICAgICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmVtcHR5KCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMpICAvLyBGaXJlZm94XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSBpZiAoKDxhbnk+ZG9jdW1lbnQpLnNlbGVjdGlvbikgIC8vIElFP1xyXG4gICAgICAgICAgICAoPGFueT5kb2N1bWVudCkuc2VsZWN0aW9uLmVtcHR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJ0ZW5kbyBkYSB1bmEgbGlzdGEsIGRhdG8gaWwgbm9tZSBkZWxsYSBwcm9wcmlldMOgIGNoaWF2ZSBlIGlsIHZhbG9yZSBkZWxsYSBjaGlhdmUgc2VsZXppb25hdGEsIFxyXG4gICAgICogdHJvdmEgZSByZXN0aXR1aXNjZSBsJ29nZ2V0dG8gZGVzaWRlcmF0b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge1RbXX0gc291cmNlTGlzdCBMaXN0YSBkaSBvZ2dldHRpIGRlbnRybyBjdWkgY2VyY2FyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZUl0ZW1JZEZpZWxkIE5vbWUgZGVsbGEgcHJvcHJpZXTDoCBjaGUgcmFwcHJlc2VudGEgbGEgY2hpYXZlIGRpIHVuIG9nZ2V0dG8gZGkgdGlwbyBUXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0ZWRWYWx1ZSBWYWxvcmUgZGkgY2hpYXZlIHNlbGV6aW9uYXRvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtUfSBPZ2dldHRvIGxhIGN1aSBwcm9wcmlldMOgICoqc291cmNlSXRlbUlkRmllbGQqKiBhc3N1bWUgaWwgdmFsb3JlICoqc2VsZWN0ZWRWYWx1ZSoqXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTZWxlY3RlZEl0ZW08VD4oc291cmNlTGlzdDogVFtdLCBzb3VyY2VJdGVtSWRGaWVsZDogc3RyaW5nLCBzZWxlY3RlZFZhbHVlOiBzdHJpbmcpOiBUIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGl0ZW0gPSBzb3VyY2VMaXN0W2ldO1xyXG4gICAgICAgICAgICBpZiAoaXRlbVtzb3VyY2VJdGVtSWRGaWVsZF0gPT0gc2VsZWN0ZWRWYWx1ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVmZmV0dHVhIGlsIHJlc2V0IGRpIHVuIEZvcm0gZGkgQW5ndWxhclxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge05nRm9ybX0gZm9ybSBGb3JtIGRhIHJlc2V0dGFyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV4Y2VwdGlvbjEgQ2FtcG8gZGEgbm9uIHJlc2V0dGFyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV4Y2VwdGlvbjIgQ2FtcG8gZGEgbm9uIHJlc2V0dGFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xlYW5Gb3JtKGZvcm06IE5nRm9ybSwgZXhjZXB0aW9uMTogc3RyaW5nID0gbnVsbCwgZXhjZXB0aW9uMjogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgICAgIGZvciAobGV0IG5hbWUgaW4gZm9ybS5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lICE9IGV4Y2VwdGlvbjEgJiYgbmFtZSAhPSBleGNlcHRpb24xICsgXCJfaW50ZXJuYWxcIiAmJiBuYW1lICE9IGV4Y2VwdGlvbjIgJiYgbmFtZSAhPSBleGNlcHRpb24yICsgXCJfaW50ZXJuYWxcIikge1xyXG4gICAgICAgICAgICAgICAgZm9ybS5jb250cm9sc1tuYW1lXS5yZXNldCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZm9ybS5jb250cm9sc1tuYW1lXS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgZm9ybS5jb250cm9sc1tuYW1lXS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9SZWltcG9zdG8gaWwgc3VibWl0dGVkXHJcbiAgICAgICAgKGZvcm0gYXMgeyBzdWJtaXR0ZWQ6IGJvb2xlYW4gfSkuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgY2hlIHBlcm1ldHRlIGRpIHNjYXJpY2FyZSB1biBmaWxlIGRhdG8gdW4gVVJMIChHZW5lcmF0byBkYSB1bmEgY2hpYW1hdGEgYWQgKip3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCoqKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIE9iamVjdFVSTCBjaGUgcmFwcHJlc2VudGEgaWwgZmlsZSBkYSBzY2FyaWNhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlbmFtZSBOb21lIGRlbCBmaWxlIHN1Z2dlcml0byBpbiBmYXNlIGRpIHNhbHZhdGFnZ2lvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaWxlRG93bmxvYWQodXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcbiAgICAgICAgYS5jbGFzc05hbWUgPSBcInRhLWRpc3BsYXktbm9uZVwiO1xyXG4gICAgICAgIGEuaHJlZiA9IHVybDtcclxuICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBwZXIgbGEgZm9ybWF0dGF6aW9uZSBkaSB1biBudW1lcm8gZGkgbWlsbGlzZWNvbmRpIGluIHVuYSBzdHJpbmdhIHBpw7kgY29tcHJlbnNpYmlsZSBwZXIgdW4gdW1hbm9cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGR1cmF0aW9uIFRlbXBvIGVzcHJlc3NvIGluIG1pbGxpc2Vjb25kaVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBEdXJhdGEgZm9ybWF0dGF0YVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbXNUb1RpbWUoZHVyYXRpb246IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCFkdXJhdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSBwYXJzZUludCgoKGR1cmF0aW9uICUgMTAwMCkgLyAxMDApLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICBzZWNvbmRzID0gcGFyc2VJbnQoKChkdXJhdGlvbiAvIDEwMDApICUgNjApLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICBtaW51dGVzID0gcGFyc2VJbnQoKChkdXJhdGlvbiAvICgxMDAwICogNjApKSAlIDYwKS50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgaG91cnMgPSBwYXJzZUludCgoKGR1cmF0aW9uIC8gKDEwMDAgKiA2MCAqIDYwKSkgJSAyNCkudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgIHZhciBzdF9ob3VycyA9IChob3VycyA8IDEwKSA/IFwiMFwiICsgaG91cnMgOiBob3VycztcclxuICAgICAgICB2YXIgc3RfbWludXRlcyA9IChtaW51dGVzIDwgMTApID8gXCIwXCIgKyBtaW51dGVzIDogbWludXRlcztcclxuICAgICAgICB2YXIgc3Rfc2Vjb25kcyA9IChzZWNvbmRzIDwgMTApID8gXCIwXCIgKyBzZWNvbmRzIDogc2Vjb25kcztcclxuXHJcbiAgICAgICAgcmV0dXJuIHN0X2hvdXJzICsgXCI6XCIgKyBzdF9taW51dGVzICsgXCI6XCIgKyBzdF9zZWNvbmRzICsgXCIuXCIgKyBtaWxsaXNlY29uZHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgY2hlIHBlcm1ldHRlIGRpIHNjYXJpY2FyZSB1biBmaWxlIGluIEJhc2U2NFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0RGF0YSBCYXNlNjQgY2hlIHJhcHByZXNlbnRhIGlsIGZpbGUgZGEgc2NhcmljYXJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWUgTm9tZSBkZWwgZmlsZSBzdWdnZXJpdG8gaW4gZmFzZSBkaSBzYWx2YXRhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2F2ZUZpbGUoYmFzZTY0RGF0YTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIHNhbXBsZUFyciA9IHRoaXMuYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjREYXRhKTtcclxuICAgICAgICB0aGlzLnNhdmVCeXRlQXJyYXkoc2FtcGxlQXJyLCBmaWxlbmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWEgdW4gQmFzZTY0IGluIHVuIEFycmF5QnVmZmVyXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjREYXRhIEJhc2U2NCBkYSB0cmFzZm9ybWFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7VWludDhBcnJheX0gQXJyYXkgVVRGOFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0RGF0YTogc3RyaW5nKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgdmFyIGJpbmFyeVN0cmluZyA9IHdpbmRvdy5hdG9iKGJhc2U2NERhdGEpO1xyXG4gICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeUxlbik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlMZW47IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgYXNjaWkgPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgYnl0ZXNbaV0gPSBhc2NpaTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGJ5dGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSBwZXJtZXR0ZSBkaSBzY2FyaWNhcmUgdW4gZmlsZSBkYXRvIHVuIGFycmF5IGRpIEJ5dGUgKCoqVWludDhBcnJheSoqKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGUgUmFwcHJlc2VudGF6aW9uZSBkZWwgZmlsZSBkYSBzY2FyaWNhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlbmFtZSBOb21lIGRlbCBmaWxlIHN1Z2dlcml0byBpbiBmYXNlIGRpIHNhbHZhdGFnZ2lvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2F2ZUJ5dGVBcnJheShieXRlOiBVaW50OEFycmF5LCBmaWxlbmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbYnl0ZV0pO1xyXG4gICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICB2YXIgZmlsZU5hbWUgPSBmaWxlbmFtZTtcclxuICAgICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXRpbGl0eSBwZXIgbG8gc3dhcCBkaSBkdWUgZWxlbWVudGkgZGkgdW4gYXJyYXlcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnlbXX0gYXJyYXkgQXJyYXkgZGkgY3VpIGludmVydGlyZSBkdWUgZWxlbWVudGlcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IEluZGljZSBkZWwgcHJpbW8gZWxlbWVudG9cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IEluZGljZSBkZWwgc2Vjb25kbyBlbGVtZW50b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3dhcChhcnJheTogYW55W10sIHg6IG51bWJlciwgeTogbnVtYmVyKSB7XHJcbiAgICAgICAgdmFyIGIgPSBhcnJheVt4XTtcclxuICAgICAgICBhcnJheVt4XSA9IGFycmF5W3ldO1xyXG4gICAgICAgIGFycmF5W3ldID0gYjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBkaSB0cmFzY29kaWZpY2EgZGEgdGlwbyBjIyBhIHRpcG8gVHlwZXNjcmlwdFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge1R5cGVDb2RlfSB0eXBlIFRpcG8gZGEgdHJhc2NvZGlmaWNhcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1wiYm9vbGVhblwiIHwgXCJudW1iZXJcIiB8IFwic3RyaW5nXCIgfCBcImRhdGVcIn0gVGlwbyBUeXBlc2NyaXB0IGNvcnJpc3BvbmRlbnRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRKc1R5cGVGcm9tVHlwZUNvZGUodHlwZTogVHlwZUNvZGUpOiBcImJvb2xlYW5cIiB8IFwibnVtYmVyXCIgfCBcInN0cmluZ1wiIHwgXCJkYXRlXCIge1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkJvb2xlYW46XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJib29sZWFuXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkRlY2ltYWw6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuRG91YmxlOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlNpbmdsZTpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5JbnQxNjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5JbnQzMjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5JbnQ2NDpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5CeXRlOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlNCeXRlOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlVJbnQxNjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5VSW50MzI6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuVUludDY0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnVtYmVyXCI7XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuQ2hhcjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5TdHJpbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJzdHJpbmdcIjtcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5EYXRlVGltZTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImRhdGVcIjtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVW5yZWNvZ25pemVkIGlucHV0IHR5cGUuIFR5cGVjb2RlOlwiICsgdHlwZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJzdHJpbmdcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFZmZldHR1YSBsYSBjbG9uYXppb25lIHByb2ZvbmRhIGRpIHVuIG9nZ2V0dG8gaW4gbWFuaWVyYSBtb2x0byBwacO5IHBlcmZvcm1hbnRlIGNoZSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCkpLlxyXG4gICAgICogXHJcbiAgICAgKiBVc2FyZSBzb2xvIHBlciBvZ2dldHRpIHB1cmkgZSBxdWFudG9tZW5vIHNlbXBsaWNpIHBlciBldml0YXJlIGNvbXBsaWNhemlvbmkgZGVyaXZhbnRpIGRhbGxlIHNlbXBsaWZpY2F6aW9uaSBjaGUgcXVlc3RvIG1ldG9kbyBhc3N1bWVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IHNvdXJjZSBPZ2dldHRvIGRhIGNsb25hcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybiB7YW55fSBDbG9uZSBkZWxsJ29nZ2V0dG8gcGFzc2F0byBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlZXBDbG9uZShzb3VyY2U6IGFueSk6IGFueSB7XHJcblxyXG4gICAgICAgIC8vIFZhbG9yaSBzZW1wbGljaVxyXG4gICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0JylcclxuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTtcclxuXHJcbiAgICAgICAgLy8gUHNldWRvIFN0cnVjdFxyXG4gICAgICAgIHN3aXRjaCAodG9TdHJpbmcuY2FsbChzb3VyY2UpKSB7XHJcblxyXG4gICAgICAgICAgICBjYXNlICdbb2JqZWN0IEJvb2xlYW5dJzpcclxuICAgICAgICAgICAgY2FzZSAnW29iamVjdCBOdW1iZXJdJzpcclxuICAgICAgICAgICAgY2FzZSAnW29iamVjdCBTdHJpbmddJzpcclxuICAgICAgICAgICAgY2FzZSAnW29iamVjdCBEYXRlXSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHNvdXJjZS5jb25zdHJ1Y3Rvcihzb3VyY2UudmFsdWVPZigpKTtcclxuICAgICAgICAgICAgLy8gQ2xvbmF6aW9uZSBkaSB1biBmaWxlIC0+IFJlc3RpdHVpc2NvIGlsIHJpZmVyaW1lbnRvIGFsIGZpbGUgc3Rlc3NvXHJcbiAgICAgICAgICAgIGNhc2UgXCJbb2JqZWN0IEZpbGVdXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE9nZ2V0dGkgQ29tcGxlc3NpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjdXJzaXZlU3RlcChzb3VyY2UsIEFycmF5LmlzQXJyYXkoc291cmNlKSB8fCBzb3VyY2UgaW5zdGFuY2VvZiBBcnJheSA/IFtdIDogT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogU3RlcCByaWNvcnNpdm8gcGVyIGxhIGNsb25hdHVyYSBkZWdsaSBvZ2dldHRpLiBWZWRlcmUgKipkZWVwQ2xvbmUqKlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlY3Vyc2l2ZVN0ZXAoc291cmNlOiBhbnksIGRlc3RpbmF0aW9uOiBhbnkpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpIHx8IHNvdXJjZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHNvdXJjZS5sZW5ndGg7IGkgPCBpaTsgaSsrKVxyXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaCh0aGlzLmRlZXBDbG9uZShzb3VyY2VbaV0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlLmhhc093blByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBzb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltrZXldID0gdGhpcy5kZWVwQ2xvbmUoc291cmNlW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVzdGluYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgY2FzdChvYmplY3Q6IGFueSwgY2xzczogVHlwZTxhbnk+KSB7XHJcbiAgICAgICAgbGV0IHJldCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShjbHNzLnByb3RvdHlwZSksIG9iamVjdCk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBGdW56aW9uZSBkaSB0aHJvdHRsaW5nIHBlciBub24gc3BhbW1hcmUgcmljaGllc3RlIGluIGNhc28gZGkgYW5pbWF6aW9uaSBhdHRpdmF0ZVxyXG4gICAgLy9UT0RPOiBzcG9zdGFybGEgaW4gdW4gbWV0b2RvIGRpIHV0aWxpdO+/vSAoZXNmYWVuemEvZXh0ZW5zaW9ucylcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGV4ZWN1dGlvblRpbWVyczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIHRocm90dGxhKGlkOiBzdHJpbmcsIGZ1bmM6IEZ1bmN0aW9uLCB0aHJvdHRsZVRpbWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIC8vU2UgaG8gbGEgZnVuemlvbmUgY2hlIHZ1b2xlIGVzZWd1aXJlIHJpcHVsaXNjbyBxdWVsIHRpbWVvdXRcclxuICAgICAgICBpZiAodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKVxyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKTtcclxuXHJcbiAgICAgICAgLy9SaWNyZW8gaWwgdGltZW91dCBwZXIgZXNlZ3VpcmUgcXVlbGxhIGZ1bnppb25lIGRvcG8gdGhyb3R0bGVUaW1lIG1pbGxpc2Vjb25kaVxyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IHNldFRpbWVvdXQoKCkgPT4geyBmdW5jKCk7IHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IG51bGw7IH0sIHRocm90dGxlVGltZSk7XHJcbiAgICB9XHJcbn0iXX0=
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
* Public API Surface of extensions
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/modules/extensions.module';
|
|
5
|
+
export * from './lib/services/extensions.base';
|
|
5
6
|
export * from './lib/services/extensions.dates.service';
|
|
6
7
|
export * from './lib/services/extensions.exports.service';
|
|
7
8
|
export * from './lib/services/extensions.clipboard.service';
|
|
8
9
|
export * from './lib/services/extensions.hashing.service';
|
|
9
10
|
export * from './lib/services/extensions.messages.service';
|
|
10
11
|
export * from './lib/services/extensions.utilities.service';
|
|
12
|
+
export * from './lib/services/extensions.embedding.service';
|
|
11
13
|
export * from './lib/tokens';
|
|
12
14
|
export * from './lib/models/CallResult';
|
|
13
15
|
export * from './lib/models/CsvHeaders';
|
|
@@ -17,4 +19,4 @@ export * from './lib/pipes/loc_date.pipe';
|
|
|
17
19
|
export * from './lib/models/InboundMessageTypes';
|
|
18
20
|
export * from './lib/models/InterComMessage';
|
|
19
21
|
export * from './lib/services/extensions.intercom.service';
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLGVBQWU7QUFDZixjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw0Q0FBNEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBleHRlbnNpb25zXHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL2V4dGVuc2lvbnMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5iYXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5kYXRlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5leHBvcnRzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmNsaXBib2FyZC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5oYXNoaW5nLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLm1lc3NhZ2VzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLnV0aWxpdGllcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rva2Vucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9DYWxsUmVzdWx0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL0NzdkhlYWRlcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvR2VuZXJpY0l0ZW0nO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvbG9jX2RhdGUucGlwZSc7XHJcblxyXG4vKiogSW50ZXJjb20gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL0luYm91bmRNZXNzYWdlVHlwZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvSW50ZXJDb21NZXNzYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5pbnRlcmNvbS5zZXJ2aWNlJzsiXX0=
|