kwikid-forms 0.3.7 → 0.3.8
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/bundles/kwikid-forms.umd.js +1182 -379
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/lib/renderer/config-converter.helper.js +11 -32
- package/esm2015/lib/renderer/form-view/definitions/form-view.actions.definition.js +15 -2
- package/esm2015/lib/renderer/form-view/definitions/form-view.commons.definition.js +6 -1
- package/esm2015/lib/renderer/form-view/form-view.component.js +530 -136
- package/esm2015/lib/renderer/form-view/form-view.module.js +18 -4
- package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +5 -1
- package/esm2015/lib/renderer/form-view/helpers/form-view.tasks.helper.js +28 -0
- package/esm2015/lib/renderer/form-view/pipes/safe-url.pipe.js +25 -0
- package/esm2015/lib/renderer/forms-list/forms-list.component.js +7 -1
- package/esm2015/lib/renderer/renderer.component.js +176 -14
- package/esm2015/lib/renderer/renderer.module.js +15 -2
- package/fesm2015/kwikid-forms.js +815 -185
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/lib/renderer/form-view/definitions/form-view.actions.definition.d.ts +28 -2
- package/lib/renderer/form-view/definitions/form-view.commons.definition.d.ts +5 -0
- package/lib/renderer/form-view/form-view.component.d.ts +45 -7
- package/lib/renderer/form-view/form-view.module.d.ts +8 -6
- package/lib/renderer/form-view/helpers/form-view.tasks.helper.d.ts +7 -0
- package/lib/renderer/form-view/pipes/safe-url.pipe.d.ts +15 -0
- package/lib/renderer/renderer.component.d.ts +33 -4
- package/lib/renderer/renderer.module.d.ts +2 -1
- package/package.json +2 -2
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
import { CommonModule } from "@angular/common";
|
|
2
2
|
import { NgModule } from "@angular/core";
|
|
3
3
|
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
-
import {
|
|
4
|
+
import { TuiPreviewActionModule, TuiPreviewModule } from "@taiga-ui/addon-preview";
|
|
5
|
+
import { TuiButtonModule, TuiDialogModule, TuiLabelModule, TuiSvgModule } from "@taiga-ui/core";
|
|
5
6
|
import { TuiPushModule } from "@taiga-ui/kit";
|
|
6
7
|
import { KwikUIModule } from "kwikui";
|
|
7
8
|
import { KwikIDFormViewComponent } from "./form-view.component";
|
|
8
9
|
import { SafeHtmlPipe } from "./pipes/safe-html.pipe";
|
|
10
|
+
import { SafeUrlPipe } from "./pipes/safe-url.pipe";
|
|
9
11
|
import * as i0 from "@angular/core";
|
|
10
12
|
export class KwikIDFormViewModule {
|
|
11
13
|
}
|
|
12
14
|
/** @nocollapse */ KwikIDFormViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
-
/** @nocollapse */ KwikIDFormViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, declarations: [KwikIDFormViewComponent, SafeHtmlPipe], imports: [CommonModule,
|
|
15
|
+
/** @nocollapse */ KwikIDFormViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, declarations: [KwikIDFormViewComponent, SafeHtmlPipe, SafeUrlPipe], imports: [CommonModule,
|
|
14
16
|
FormsModule,
|
|
15
17
|
ReactiveFormsModule,
|
|
16
18
|
TuiLabelModule,
|
|
17
19
|
TuiPushModule,
|
|
18
20
|
TuiSvgModule,
|
|
21
|
+
TuiPreviewModule,
|
|
22
|
+
TuiButtonModule,
|
|
23
|
+
TuiPreviewActionModule,
|
|
24
|
+
TuiDialogModule,
|
|
19
25
|
KwikUIModule], exports: [KwikIDFormViewComponent] });
|
|
20
26
|
/** @nocollapse */ KwikIDFormViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, imports: [[
|
|
21
27
|
CommonModule,
|
|
@@ -24,12 +30,16 @@ export class KwikIDFormViewModule {
|
|
|
24
30
|
TuiLabelModule,
|
|
25
31
|
TuiPushModule,
|
|
26
32
|
TuiSvgModule,
|
|
33
|
+
TuiPreviewModule,
|
|
34
|
+
TuiButtonModule,
|
|
35
|
+
TuiPreviewActionModule,
|
|
36
|
+
TuiDialogModule,
|
|
27
37
|
KwikUIModule
|
|
28
38
|
]] });
|
|
29
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, decorators: [{
|
|
30
40
|
type: NgModule,
|
|
31
41
|
args: [{
|
|
32
|
-
declarations: [KwikIDFormViewComponent, SafeHtmlPipe],
|
|
42
|
+
declarations: [KwikIDFormViewComponent, SafeHtmlPipe, SafeUrlPipe],
|
|
33
43
|
imports: [
|
|
34
44
|
CommonModule,
|
|
35
45
|
FormsModule,
|
|
@@ -37,9 +47,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
37
47
|
TuiLabelModule,
|
|
38
48
|
TuiPushModule,
|
|
39
49
|
TuiSvgModule,
|
|
50
|
+
TuiPreviewModule,
|
|
51
|
+
TuiButtonModule,
|
|
52
|
+
TuiPreviewActionModule,
|
|
53
|
+
TuiDialogModule,
|
|
40
54
|
KwikUIModule
|
|
41
55
|
],
|
|
42
56
|
exports: [KwikIDFormViewComponent]
|
|
43
57
|
}]
|
|
44
58
|
}] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9mb3JtLXZpZXcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNqQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGNBQWMsRUFDZCxZQUFZLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFtQnBELE1BQU0sT0FBTyxvQkFBb0I7O3FJQUFwQixvQkFBb0I7c0lBQXBCLG9CQUFvQixpQkFoQmhCLHVCQUF1QixFQUFFLFlBQVksRUFBRSxXQUFXLGFBRS9ELFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxhQUFhO1FBQ2IsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2Ysc0JBQXNCO1FBQ3RCLGVBQWU7UUFDZixZQUFZLGFBRUosdUJBQXVCO3NJQUV0QixvQkFBb0IsWUFmdEI7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsYUFBYTtZQUNiLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLHNCQUFzQjtZQUN0QixlQUFlO1lBQ2YsWUFBWTtTQUNiOzRGQUdVLG9CQUFvQjtrQkFqQmhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQztvQkFDbEUsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtcbiAgVHVpUHJldmlld0FjdGlvbk1vZHVsZSxcbiAgVHVpUHJldmlld01vZHVsZVxufSBmcm9tIFwiQHRhaWdhLXVpL2FkZG9uLXByZXZpZXdcIjtcbmltcG9ydCB7XG4gIFR1aUJ1dHRvbk1vZHVsZSxcbiAgVHVpRGlhbG9nTW9kdWxlLFxuICBUdWlMYWJlbE1vZHVsZSxcbiAgVHVpU3ZnTW9kdWxlXG59IGZyb20gXCJAdGFpZ2EtdWkvY29yZVwiO1xuaW1wb3J0IHsgVHVpUHVzaE1vZHVsZSB9IGZyb20gXCJAdGFpZ2EtdWkva2l0XCI7XG5pbXBvcnQgeyBLd2lrVUlNb2R1bGUgfSBmcm9tIFwia3dpa3VpXCI7XG5pbXBvcnQgeyBLd2lrSURGb3JtVmlld0NvbXBvbmVudCB9IGZyb20gXCIuL2Zvcm0tdmlldy5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSB9IGZyb20gXCIuL3BpcGVzL3NhZmUtaHRtbC5waXBlXCI7XG5pbXBvcnQgeyBTYWZlVXJsUGlwZSB9IGZyb20gXCIuL3BpcGVzL3NhZmUtdXJsLnBpcGVcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbS3dpa0lERm9ybVZpZXdDb21wb25lbnQsIFNhZmVIdG1sUGlwZSwgU2FmZVVybFBpcGVdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVHVpTGFiZWxNb2R1bGUsXG4gICAgVHVpUHVzaE1vZHVsZSxcbiAgICBUdWlTdmdNb2R1bGUsXG4gICAgVHVpUHJldmlld01vZHVsZSxcbiAgICBUdWlCdXR0b25Nb2R1bGUsXG4gICAgVHVpUHJldmlld0FjdGlvbk1vZHVsZSxcbiAgICBUdWlEaWFsb2dNb2R1bGUsXG4gICAgS3dpa1VJTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtLd2lrSURGb3JtVmlld0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybVZpZXdNb2R1bGUge31cbiJdfQ==
|
|
@@ -91,10 +91,12 @@ export class Apis {
|
|
|
91
91
|
return this._object.API_CONFIG;
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
94
|
+
this._object = setValueToObjectPath(this._object, "API_CONFIG.request.validation.body.is_valid", true);
|
|
94
95
|
return this._object.API_CONFIG;
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
else {
|
|
99
|
+
this._object = setValueToObjectPath(this._object, "API_CONFIG.request.validation.body.is_valid", true);
|
|
98
100
|
return this._object.API_CONFIG;
|
|
99
101
|
}
|
|
100
102
|
});
|
|
@@ -162,10 +164,12 @@ export class Apis {
|
|
|
162
164
|
return this._object.API_CONFIG;
|
|
163
165
|
}
|
|
164
166
|
else {
|
|
167
|
+
this._object = setValueToObjectPath(this._object, "API_CONFIG.request.validation.headers.is_valid", true);
|
|
165
168
|
return this._object.API_CONFIG;
|
|
166
169
|
}
|
|
167
170
|
}
|
|
168
171
|
else {
|
|
172
|
+
this._object = setValueToObjectPath(this._object, "API_CONFIG.request.validation.headers.is_valid", true);
|
|
169
173
|
return this._object.API_CONFIG;
|
|
170
174
|
}
|
|
171
175
|
});
|
|
@@ -228,4 +232,4 @@ __decorate([
|
|
|
228
232
|
__decorate([
|
|
229
233
|
logMethod
|
|
230
234
|
], Apis.prototype, "callNextApi", null);
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFwaXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmFwaXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixvQkFBb0IsRUFDcEIsTUFBTSxFQUtQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGtCQUFrQixFQU9uQixNQUFNLDBDQUEwQyxDQUFDO0FBSWxELE1BQU0sT0FBTyxJQUFJO0lBY2YsWUFBWSxNQUFXLEVBQUUsVUFBZTtRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUU5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0lBbEJELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBZ0JZLE1BQU07O1lBQ2pCLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLFVBQVUsRUFDeEQ7Z0JBQ0EsTUFB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dCI6WyJpbXBvcnQge1xuICBBY3Rpb24sXG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBDb25kaXRpb24sXG4gIGxvZ01ldGhvZCxcbiAgUnVsZSxcbiAgc2V0VmFsdWVUb09iamVjdFBhdGgsXG4gIFNvdXJjZSxcbiAgVEFjdGlvbixcbiAgVFJ1bGUsXG4gIFRTb3VyY2UsXG4gIFRWYWxpZGF0aW9uXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgRUFwaVJlcXVlc3RVcmxUeXBlLFxuICBUQXBpUmVxdWVzdCxcbiAgVEFwaVJlcXVlc3RCb2R5LFxuICBUQXBpUmVxdWVzdEJvZHlQYXJhbSxcbiAgVEFwaVJlcXVlc3RIZWFkZXJzLFxuICBUQXBpUmVxdWVzdEhlYWRlcnNQYXJhbSxcbiAgVEFwaVJlc3BvbnNlXG59IGZyb20gXCIuLi9kZWZpbml0aW9ucy9mb3JtLXZpZXcuYXBpcy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBURmllbGRBcGlDYWxsIH0gZnJvbSBcIi4uL2RlZmluaXRpb25zL2Zvcm0tdmlldy5maWVsZHMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgVFRyaWdnZXIgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZm9ybS12aWV3LnRyaWdnZXJzLmRlZmluaXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEFwaXMge1xuICBwcml2YXRlIF9vYmplY3Q6IGFueTtcbiAgZ2V0IG9iamVjdCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9vYmplY3Q7XG4gIH1cbiAgc2V0IG9iamVjdCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF90YWtlQWN0aW9uOiBGdW5jdGlvbjtcblxuICBwcml2YXRlIF9yZXF1ZXN0OiBUQXBpUmVxdWVzdDtcbiAgcHJpdmF0ZSBfcmVzcG9uc2U6IFRBcGlSZXNwb25zZTtcblxuICBjb25zdHJ1Y3RvcihvYmplY3Q6IGFueSwgdGFrZUFjdGlvbjogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0O1xuICAgIHRoaXMuX3Rha2VBY3Rpb24gPSB0YWtlQWN0aW9uO1xuXG4gICAgdGhpcy5fcmVxdWVzdCA9IHRoaXMuX29iamVjdC5BUElfQ09ORklHLnJlcXVlc3Q7XG4gICAgdGhpcy5fcmVzcG9uc2UgPSB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRy5yZXNwb25zZTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHNldFVybCgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9yZXF1ZXN0LnVybC5oYXNPd25Qcm9wZXJ0eShcInR5cGVcIikgJiZcbiAgICAgIHRoaXMuX3JlcXVlc3QudXJsLnR5cGUgPT09IEVBcGlSZXF1ZXN0VXJsVHlwZS5DQUxDVUxBVEVEXG4gICAgKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBuZXcgU291cmNlKHRoaXMuX29iamVjdCk7XG4gICAgICBjb25zdCB1cmwgPSBhd2FpdCBzb3VyY2UuZ2V0VmFsdWVGcm9tU291cmNlKFxuICAgICAgICB0aGlzLl9yZXF1ZXN0LnVybC5wcm9wcy52YWx1ZS5zb3VyY2VcbiAgICAgICk7XG4gICAgICB0aGlzLl9yZXF1ZXN0LnVybCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKHRoaXMuX3JlcXVlc3QudXJsLCBcInZhbHVlXCIsIHVybCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVzdC51cmwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuX3JlcXVlc3QudXJsID0gc2V0VmFsdWVUb09iamVjdFBhdGgoe30sIFwidmFsdWVcIiwgdGhpcy5fcmVxdWVzdC51cmwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHNldFJlcXVlc3RCb2R5KCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LCBcImJvZHlcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwicGFyYW1zXCIpKSB7XG4gICAgICAgIGxldCBwYXJhbXM6IEFycmF5PFRBcGlSZXF1ZXN0Qm9keVBhcmFtPiA9IHRoaXMuX3JlcXVlc3QuYm9keS5wYXJhbXM7XG5cbiAgICAgICAgbGV0IHBhcmFtSW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCBwYXJhbSBvZiBwYXJhbXMpIHtcbiAgICAgICAgICBsZXQgc291cmNlczogQXJyYXk8VFNvdXJjZT4gPSBwYXJhbS5zb3VyY2VzO1xuXG4gICAgICAgICAgbGV0IHNvdXJjZUluZGV4ID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2UodGhpcy5fb2JqZWN0KTtcblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzb3VyY2VzLmdldFZhbHVlRnJvbVNvdXJjZShzb3VyY2UpO1xuICAgICAgICAgICAgLy8gU2V0IHRoZSBWYWx1ZSBvZiBjdXJyZW50IHNvdXJjZS5cbiAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHLFxuICAgICAgICAgICAgICBgcmVxdWVzdC5ib2R5LnBhcmFtc1ske3BhcmFtSW5kZXh9XS5zb3VyY2VzWyR7c291cmNlSW5kZXh9XS52YWx1ZWAsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uOiBUVmFsaWRhdGlvbiA9IChzb3VyY2UgYXMgYW55KS52YWxpZGF0aW9uO1xuXG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBydWxlczogQXJyYXk8VFJ1bGU+ID0gdmFsaWRhdGlvbj8ucnVsZXMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9ICh2YWxpZGF0aW9uIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uRXZhbHVhdGlvbiA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3QsXG4gICAgICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNvdXJjZUluZGV4Kys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGFyYW1JbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVSZXF1ZXN0Qm9keSgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdCwgXCJib2R5XCIpKSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5ib2R5LCBcInZhbGlkYXRpb25cIikpIHtcbiAgICAgICAgY29uc3QgYm9keTogVEFwaVJlcXVlc3RCb2R5ID0gdGhpcy5fcmVxdWVzdC5ib2R5O1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb246IFRWYWxpZGF0aW9uID0gYm9keS52YWxpZGF0aW9uO1xuXG4gICAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uPy50cmlnZ2VycyA/PyBbXTtcbiAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9ICh2YWxpZGF0aW9uIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHB1YmxpYyBhc3luYyBzZXRSZXF1ZXN0SGVhZGVycygpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdCwgXCJoZWFkZXJzXCIpKSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5oZWFkZXJzLCBcInBhcmFtc1wiKSkge1xuICAgICAgICBsZXQgcGFyYW1zOiBBcnJheTxUQXBpUmVxdWVzdEhlYWRlcnNQYXJhbT4gPVxuICAgICAgICAgIHRoaXMuX3JlcXVlc3QuaGVhZGVycy5wYXJhbXM7XG4gICAgICAgIGxldCBwYXJhbUluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgcGFyYW0gb2YgcGFyYW1zKSB7XG4gICAgICAgICAgbGV0IHNvdXJjZXM6IEFycmF5PFRTb3VyY2U+ID0gcGFyYW0uc291cmNlcztcblxuICAgICAgICAgIGxldCBzb3VyY2VJbmRleCA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgU291cmNlKHRoaXMuX29iamVjdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc291cmNlcy5nZXRWYWx1ZUZyb21Tb3VyY2Uoc291cmNlKTtcbiAgICAgICAgICAgIC8vIFNldCB0aGUgVmFsdWUgb2YgY3VycmVudCBzb3VyY2UuXG4gICAgICAgICAgICB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRyA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgICAgICB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRyxcbiAgICAgICAgICAgICAgYHJlcXVlc3QuaGVhZGVycy5wYXJhbXNbJHtwYXJhbUluZGV4fV0uc291cmNlc1ske3NvdXJjZUluZGV4fV0udmFsdWVgLFxuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGlvbjogVFZhbGlkYXRpb24gPSAoc291cmNlIGFzIGFueSkudmFsaWRhdGlvbjtcblxuICAgICAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uRXZhbHVhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzb3VyY2VJbmRleCsrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhcmFtSW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlUmVxdWVzdEhlYWRlcnMoKTogUHJvbWlzZTxURmllbGRBcGlDYWxsPiB7XG4gICAgY29uc3QgaGVhZGVyczogVEFwaVJlcXVlc3RIZWFkZXJzID0gdGhpcy5fcmVxdWVzdC5oZWFkZXJzO1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LCBcImhlYWRlcnNcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwidmFsaWRhdGlvblwiKSkge1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uOiBUVmFsaWRhdGlvbiA9IGhlYWRlcnMudmFsaWRhdGlvbjtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlUmVzcG9uc2UoKTogUHJvbWlzZTxURmllbGRBcGlDYWxsPiB7XG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3Jlc3BvbnNlLCBcInZhbGlkYXRpb25cIikpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb246IFRWYWxpZGF0aW9uID0gdGhpcy5fcmVzcG9uc2UudmFsaWRhdGlvbjtcblxuICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICBpZiAoY29uZGl0aW9uU3VjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIGNhbGxOZXh0QXBpKHZhbGlkYXRpb246IFRWYWxpZGF0aW9uKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICBjb25zdCBjb25kaXRpb25TdWNjZXNzID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgKTtcblxuICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFwaXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmFwaXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixvQkFBb0IsRUFDcEIsTUFBTSxFQUtQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGtCQUFrQixFQU9uQixNQUFNLDBDQUEwQyxDQUFDO0FBSWxELE1BQU0sT0FBTyxJQUFJO0lBY2YsWUFBWSxNQUFXLEVBQUUsVUFBZTtRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUU5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDO0lBbEJELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBZ0JZLE1BQU07O1lBQ2pCLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLFVBQVUsRUFDeEQ7Z0JBQ0EsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3JDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzNFO2lCQUFNLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMxRTtZQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDakMsQ0FBQztLQUFBO0lBR1ksY0FBYzs7O1lBQ3pCLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDL0MsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRTtvQkFDekQsSUFBSSxNQUFNLEdBQWdDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFFcEUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO29CQUNuQixLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTt3QkFDeEIsSUFBSSxPQUFPLEdBQW1CLEtBQUssQ0FBQyxPQUFPLENBQUM7d0JBRTVDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQzt3QkFDcEIsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7NEJBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFFekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUNqRCxtQ0FBbUM7NEJBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFDdkIsdUJBQXVCLFVBQVUsYUFBYSxXQUFXLFNBQVMsRUFDbEUsS0FBSyxDQUNOLENBQUM7NEJBRUYsTUFBTSxVQUFVLEdBQWlCLE1BQWMsQ0FBQyxVQUFVLENBQUM7NEJBRTNELE1BQU0sUUFBUSxHQUFvQixNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxRQUFRLG1DQUFJLEVBQUUsQ0FBQzs0QkFDN0QsTUFBTSxLQUFLLEdBQWlCLE1BQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLEtBQUssbUNBQUksRUFBRSxDQUFDOzRCQUNwRCxNQUFNLE9BQU8sR0FBbUIsTUFBQSxNQUFDLFVBQWtCLDBDQUFFLE9BQU8sbUNBQUksRUFBRSxDQUFDOzRCQUVuRSxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUU3RCxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtnQ0FDMUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLFNBQVMsQ0FDdkMsTUFBTSxDQUFDLFNBQVMsRUFDaEIsWUFBWSxDQUNiLENBQUMsUUFBUSxFQUFFLENBQUM7Z0NBRWIsSUFBSSxtQkFBbUIsRUFBRTtvQ0FDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQ3hCLE1BQU0sRUFDTixZQUFZLEVBQ1osSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO29DQUVGLE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lDQUN6Qjs2QkFDRjs0QkFFRCxXQUFXLEVBQUUsQ0FBQzt5QkFDZjt3QkFFRCxVQUFVLEVBQUUsQ0FBQztxQkFDZDtvQkFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2lCQUNoQztxQkFBTTtvQkFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2lCQUNoQzthQUNGO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7YUFDaEM7O0tBQ0Y7SUFHWSxtQkFBbUI7OztZQUM5QixJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQy9DLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUU7b0JBQzFELE1BQU0sSUFBSSxHQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFFakQsTUFBTSxVQUFVLEdBQWdCLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBRWhELE1BQU0sUUFBUSxHQUFvQixNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxRQUFRLG1DQUFJLEVBQUUsQ0FBQztvQkFDN0QsTUFBTSxLQUFLLEdBQWlCLE1BQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLEtBQUssbUNBQUksRUFBRSxDQUFDO29CQUNwRCxNQUFNLE9BQU8sR0FBbUIsTUFBQSxNQUFDLFVBQWtCLDBDQUFFLE9BQU8sbUNBQUksRUFBRSxDQUFDO29CQUVuRSxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUU3RCxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTt3QkFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FDcEMsTUFBTSxDQUFDLFNBQVMsRUFDaEIsWUFBWSxDQUNiLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBRWIsSUFBSSxnQkFBZ0IsRUFBRTs0QkFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQ3hCLE1BQU0sRUFDTixZQUFZLEVBQ1osSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDOzRCQUVGLE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO3lCQUN6QjtxQkFDRjtvQkFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2lCQUNoQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLG9CQUFvQixDQUNqQyxJQUFJLENBQUMsT0FBTyxFQUNaLDZDQUE2QyxFQUM3QyxJQUFJLENBQ0wsQ0FBQztvQkFFRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2lCQUNoQzthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsb0JBQW9CLENBQ2pDLElBQUksQ0FBQyxPQUFPLEVBQ1osNkNBQTZDLEVBQzdDLElBQUksQ0FDTCxDQUFDO2dCQUVGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7YUFDaEM7O0tBQ0Y7SUFHWSxpQkFBaUI7OztZQUM1QixJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUU7Z0JBQ2xELElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUU7b0JBQ3pELElBQUksTUFBTSxHQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDL0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO29CQUNuQixLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTt3QkFDeEIsSUFBSSxPQUFPLEdBQW1CLEtBQUssQ0FBQyxPQUFPLENBQUM7d0JBRTVDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQzt3QkFDcEIsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7NEJBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFFekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUNqRCxtQ0FBbUM7NEJBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFDdkIsMEJBQTBCLFVBQVUsYUFBYSxXQUFXLFNBQVMsRUFDckUsS0FBSyxDQUNOLENBQUM7NEJBRUYsTUFBTSxVQUFVLEdBQWlCLE1BQWMsQ0FBQyxVQUFVLENBQUM7NEJBRTNELE1BQU0sUUFBUSxHQUFvQixNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxRQUFRLG1DQUFJLEVBQUUsQ0FBQzs0QkFDN0QsTUFBTSxLQUFLLEdBQWlCLE1BQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLEtBQUssbUNBQUksRUFBRSxDQUFDOzRCQUNwRCxNQUFNLE9BQU8sR0FBbUIsTUFBQSxNQUFDLFVBQWtCLDBDQUFFLE9BQU8sbUNBQUksRUFBRSxDQUFDOzRCQUVuRSxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUU3RCxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtnQ0FDMUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLFNBQVMsQ0FDdkMsTUFBTSxDQUFDLFNBQVMsRUFDaEIsWUFBWSxDQUNiLENBQUMsUUFBUSxFQUFFLENBQUM7Z0NBRWIsSUFBSSxtQkFBbUIsRUFBRTtvQ0FDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQ3hCLE1BQU0sRUFDTixZQUFZLEVBQ1osSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO29DQUVGLE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lDQUN6Qjs2QkFDRjs0QkFFRCxXQUFXLEVBQUUsQ0FBQzt5QkFDZjt3QkFFRCxVQUFVLEVBQUUsQ0FBQztxQkFDZDtvQkFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2lCQUNoQztxQkFBTTtvQkFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2lCQUNoQzthQUNGO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7YUFDaEM7O0tBQ0Y7SUFHWSxzQkFBc0I7OztZQUNqQyxNQUFNLE9BQU8sR0FBdUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDMUQsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUNsRCxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxFQUFFO29CQUM3RCxNQUFNLFVBQVUsR0FBZ0IsT0FBTyxDQUFDLFVBQVUsQ0FBQztvQkFFbkQsTUFBTSxRQUFRLEdBQW9CLE1BQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLFFBQVEsbUNBQUksRUFBRSxDQUFDO29CQUM3RCxNQUFNLEtBQUssR0FBaUIsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsS0FBSyxtQ0FBSSxFQUFFLENBQUM7b0JBQ3BELE1BQU0sT0FBTyxHQUFtQixNQUFBLE1BQUMsVUFBa0IsMENBQUUsT0FBTyxtQ0FBSSxFQUFFLENBQUM7b0JBRW5FLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBRTdELEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO3dCQUMxQixNQUFNLGdCQUFnQixHQUFHLElBQUksU0FBUyxDQUNwQyxNQUFNLENBQUMsU0FBUyxFQUNoQixZQUFZLENBQ2IsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFFYixJQUFJLGdCQUFnQixFQUFFOzRCQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FDeEIsTUFBTSxFQUNOLFlBQVksRUFDWixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7NEJBRUYsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7eUJBQ3pCO3FCQUNGO29CQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7aUJBQ2hDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsb0JBQW9CLENBQ2pDLElBQUksQ0FBQyxPQUFPLEVBQ1osZ0RBQWdELEVBQ2hELElBQUksQ0FDTCxDQUFDO29CQUVGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7aUJBQ2hDO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsQ0FDakMsSUFBSSxDQUFDLE9BQU8sRUFDWixnREFBZ0QsRUFDaEQsSUFBSSxDQUNMLENBQUM7Z0JBRUYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQzthQUNoQzs7S0FDRjtJQUdZLGdCQUFnQjs7O1lBQzNCLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsRUFBRTtnQkFDdEQsTUFBTSxVQUFVLEdBQWdCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUUxRCxNQUFNLFFBQVEsR0FBb0IsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsUUFBUSxtQ0FBSSxFQUFFLENBQUM7Z0JBQzdELE1BQU0sS0FBSyxHQUFpQixNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxLQUFLLG1DQUFJLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxPQUFPLEdBQW1CLE1BQUEsTUFBQyxVQUFrQiwwQ0FBRSxPQUFPLG1DQUFJLEVBQUUsQ0FBQztnQkFFbkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFN0QsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7b0JBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxTQUFTLENBQ3BDLE1BQU0sQ0FBQyxTQUFTLEVBQ2hCLFlBQVksQ0FDYixDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUViLElBQUksZ0JBQWdCLEVBQUU7d0JBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUN4QixNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQzt3QkFFRixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztxQkFDekI7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7O0tBQ2hDO0lBR1ksV0FBVyxDQUFDLFVBQXVCOzs7WUFDOUMsTUFBTSxRQUFRLEdBQW9CLE1BQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLFFBQVEsbUNBQUksRUFBRSxDQUFDO1lBQzdELE1BQU0sS0FBSyxHQUFpQixNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxLQUFLLG1DQUFJLEVBQUUsQ0FBQztZQUNwRCxNQUFNLE9BQU8sR0FBbUIsTUFBQSxNQUFDLFVBQWtCLDBDQUFFLE9BQU8sbUNBQUksRUFBRSxDQUFDO1lBRW5FLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFN0QsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxTQUFTLENBQ3BDLE1BQU0sQ0FBQyxTQUFTLEVBQ2hCLFlBQVksQ0FDYixDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUViLElBQUksZ0JBQWdCLEVBQUU7b0JBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUN4QixNQUFNLEVBQ04sWUFBWSxFQUNaLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztvQkFFRixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDekI7YUFDRjs7S0FDRjtDQUNGO0FBalRDO0lBREMsU0FBUztrQ0FnQlQ7QUFHRDtJQURDLFNBQVM7MENBNkRUO0FBR0Q7SUFEQyxTQUFTOytDQW1EVDtBQUdEO0lBREMsU0FBUzs2Q0E2RFQ7QUFHRDtJQURDLFNBQVM7a0RBaURUO0FBR0Q7SUFEQyxTQUFTOzRDQThCVDtBQUdEO0lBREMsU0FBUzt1Q0F5QlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBY3Rpb24sXG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBDb25kaXRpb24sXG4gIGxvZ01ldGhvZCxcbiAgUnVsZSxcbiAgc2V0VmFsdWVUb09iamVjdFBhdGgsXG4gIFNvdXJjZSxcbiAgVEFjdGlvbixcbiAgVFJ1bGUsXG4gIFRTb3VyY2UsXG4gIFRWYWxpZGF0aW9uXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgRUFwaVJlcXVlc3RVcmxUeXBlLFxuICBUQXBpUmVxdWVzdCxcbiAgVEFwaVJlcXVlc3RCb2R5LFxuICBUQXBpUmVxdWVzdEJvZHlQYXJhbSxcbiAgVEFwaVJlcXVlc3RIZWFkZXJzLFxuICBUQXBpUmVxdWVzdEhlYWRlcnNQYXJhbSxcbiAgVEFwaVJlc3BvbnNlXG59IGZyb20gXCIuLi9kZWZpbml0aW9ucy9mb3JtLXZpZXcuYXBpcy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBURmllbGRBcGlDYWxsIH0gZnJvbSBcIi4uL2RlZmluaXRpb25zL2Zvcm0tdmlldy5maWVsZHMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgVFRyaWdnZXIgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZm9ybS12aWV3LnRyaWdnZXJzLmRlZmluaXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEFwaXMge1xuICBwcml2YXRlIF9vYmplY3Q6IGFueTtcbiAgZ2V0IG9iamVjdCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9vYmplY3Q7XG4gIH1cbiAgc2V0IG9iamVjdCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF90YWtlQWN0aW9uOiBGdW5jdGlvbjtcblxuICBwcml2YXRlIF9yZXF1ZXN0OiBUQXBpUmVxdWVzdDtcbiAgcHJpdmF0ZSBfcmVzcG9uc2U6IFRBcGlSZXNwb25zZTtcblxuICBjb25zdHJ1Y3RvcihvYmplY3Q6IGFueSwgdGFrZUFjdGlvbjogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0O1xuICAgIHRoaXMuX3Rha2VBY3Rpb24gPSB0YWtlQWN0aW9uO1xuXG4gICAgdGhpcy5fcmVxdWVzdCA9IHRoaXMuX29iamVjdC5BUElfQ09ORklHLnJlcXVlc3Q7XG4gICAgdGhpcy5fcmVzcG9uc2UgPSB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRy5yZXNwb25zZTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHNldFVybCgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9yZXF1ZXN0LnVybC5oYXNPd25Qcm9wZXJ0eShcInR5cGVcIikgJiZcbiAgICAgIHRoaXMuX3JlcXVlc3QudXJsLnR5cGUgPT09IEVBcGlSZXF1ZXN0VXJsVHlwZS5DQUxDVUxBVEVEXG4gICAgKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBuZXcgU291cmNlKHRoaXMuX29iamVjdCk7XG4gICAgICBjb25zdCB1cmwgPSBhd2FpdCBzb3VyY2UuZ2V0VmFsdWVGcm9tU291cmNlKFxuICAgICAgICB0aGlzLl9yZXF1ZXN0LnVybC5wcm9wcy52YWx1ZS5zb3VyY2VcbiAgICAgICk7XG4gICAgICB0aGlzLl9yZXF1ZXN0LnVybCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKHRoaXMuX3JlcXVlc3QudXJsLCBcInZhbHVlXCIsIHVybCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVzdC51cmwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuX3JlcXVlc3QudXJsID0gc2V0VmFsdWVUb09iamVjdFBhdGgoe30sIFwidmFsdWVcIiwgdGhpcy5fcmVxdWVzdC51cmwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHNldFJlcXVlc3RCb2R5KCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LCBcImJvZHlcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwicGFyYW1zXCIpKSB7XG4gICAgICAgIGxldCBwYXJhbXM6IEFycmF5PFRBcGlSZXF1ZXN0Qm9keVBhcmFtPiA9IHRoaXMuX3JlcXVlc3QuYm9keS5wYXJhbXM7XG5cbiAgICAgICAgbGV0IHBhcmFtSW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCBwYXJhbSBvZiBwYXJhbXMpIHtcbiAgICAgICAgICBsZXQgc291cmNlczogQXJyYXk8VFNvdXJjZT4gPSBwYXJhbS5zb3VyY2VzO1xuXG4gICAgICAgICAgbGV0IHNvdXJjZUluZGV4ID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2UodGhpcy5fb2JqZWN0KTtcblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzb3VyY2VzLmdldFZhbHVlRnJvbVNvdXJjZShzb3VyY2UpO1xuICAgICAgICAgICAgLy8gU2V0IHRoZSBWYWx1ZSBvZiBjdXJyZW50IHNvdXJjZS5cbiAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHLFxuICAgICAgICAgICAgICBgcmVxdWVzdC5ib2R5LnBhcmFtc1ske3BhcmFtSW5kZXh9XS5zb3VyY2VzWyR7c291cmNlSW5kZXh9XS52YWx1ZWAsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uOiBUVmFsaWRhdGlvbiA9IChzb3VyY2UgYXMgYW55KS52YWxpZGF0aW9uO1xuXG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBydWxlczogQXJyYXk8VFJ1bGU+ID0gdmFsaWRhdGlvbj8ucnVsZXMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9ICh2YWxpZGF0aW9uIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uRXZhbHVhdGlvbiA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgICAgICB0aGlzLl9vYmplY3QsXG4gICAgICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNvdXJjZUluZGV4Kys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGFyYW1JbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVSZXF1ZXN0Qm9keSgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdCwgXCJib2R5XCIpKSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5ib2R5LCBcInZhbGlkYXRpb25cIikpIHtcbiAgICAgICAgY29uc3QgYm9keTogVEFwaVJlcXVlc3RCb2R5ID0gdGhpcy5fcmVxdWVzdC5ib2R5O1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb246IFRWYWxpZGF0aW9uID0gYm9keS52YWxpZGF0aW9uO1xuXG4gICAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uPy50cmlnZ2VycyA/PyBbXTtcbiAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9ICh2YWxpZGF0aW9uIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vYmplY3QgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgICB0aGlzLl9vYmplY3QsXG4gICAgICAgICAgXCJBUElfQ09ORklHLnJlcXVlc3QudmFsaWRhdGlvbi5ib2R5LmlzX3ZhbGlkXCIsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb2JqZWN0ID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgXCJBUElfQ09ORklHLnJlcXVlc3QudmFsaWRhdGlvbi5ib2R5LmlzX3ZhbGlkXCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHB1YmxpYyBhc3luYyBzZXRSZXF1ZXN0SGVhZGVycygpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdCwgXCJoZWFkZXJzXCIpKSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5oZWFkZXJzLCBcInBhcmFtc1wiKSkge1xuICAgICAgICBsZXQgcGFyYW1zOiBBcnJheTxUQXBpUmVxdWVzdEhlYWRlcnNQYXJhbT4gPVxuICAgICAgICAgIHRoaXMuX3JlcXVlc3QuaGVhZGVycy5wYXJhbXM7XG4gICAgICAgIGxldCBwYXJhbUluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgcGFyYW0gb2YgcGFyYW1zKSB7XG4gICAgICAgICAgbGV0IHNvdXJjZXM6IEFycmF5PFRTb3VyY2U+ID0gcGFyYW0uc291cmNlcztcblxuICAgICAgICAgIGxldCBzb3VyY2VJbmRleCA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgU291cmNlKHRoaXMuX29iamVjdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc291cmNlcy5nZXRWYWx1ZUZyb21Tb3VyY2Uoc291cmNlKTtcbiAgICAgICAgICAgIC8vIFNldCB0aGUgVmFsdWUgb2YgY3VycmVudCBzb3VyY2UuXG4gICAgICAgICAgICB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRyA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgICAgICB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRyxcbiAgICAgICAgICAgICAgYHJlcXVlc3QuaGVhZGVycy5wYXJhbXNbJHtwYXJhbUluZGV4fV0uc291cmNlc1ske3NvdXJjZUluZGV4fV0udmFsdWVgLFxuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGlvbjogVFZhbGlkYXRpb24gPSAoc291cmNlIGFzIGFueSkudmFsaWRhdGlvbjtcblxuICAgICAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uRXZhbHVhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzb3VyY2VJbmRleCsrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhcmFtSW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlUmVxdWVzdEhlYWRlcnMoKTogUHJvbWlzZTxURmllbGRBcGlDYWxsPiB7XG4gICAgY29uc3QgaGVhZGVyczogVEFwaVJlcXVlc3RIZWFkZXJzID0gdGhpcy5fcmVxdWVzdC5oZWFkZXJzO1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LCBcImhlYWRlcnNcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwidmFsaWRhdGlvblwiKSkge1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uOiBUVmFsaWRhdGlvbiA9IGhlYWRlcnMudmFsaWRhdGlvbjtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29iamVjdCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICBcIkFQSV9DT05GSUcucmVxdWVzdC52YWxpZGF0aW9uLmhlYWRlcnMuaXNfdmFsaWRcIixcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vYmplY3QgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICBcIkFQSV9DT05GSUcucmVxdWVzdC52YWxpZGF0aW9uLmhlYWRlcnMuaXNfdmFsaWRcIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlUmVzcG9uc2UoKTogUHJvbWlzZTxURmllbGRBcGlDYWxsPiB7XG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3Jlc3BvbnNlLCBcInZhbGlkYXRpb25cIikpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb246IFRWYWxpZGF0aW9uID0gdGhpcy5fcmVzcG9uc2UudmFsaWRhdGlvbjtcblxuICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICBpZiAoY29uZGl0aW9uU3VjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHB1YmxpYyBhc3luYyBjYWxsTmV4dEFwaSh2YWxpZGF0aW9uOiBUVmFsaWRhdGlvbik6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24/LnRyaWdnZXJzID8/IFtdO1xuICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9ICh2YWxpZGF0aW9uIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICBpZiAoY29uZGl0aW9uU3VjY2Vzcykge1xuICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Action, Condition, logMethod, Rule } from "kwikid-toolkit";
|
|
3
|
+
export class Tasks {
|
|
4
|
+
constructor(task, object, takeAction) {
|
|
5
|
+
this._task = task;
|
|
6
|
+
this._object = object;
|
|
7
|
+
this._takeAction = takeAction;
|
|
8
|
+
}
|
|
9
|
+
execute() {
|
|
10
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
11
|
+
const triggers = this._task.triggers;
|
|
12
|
+
const rules = this._task.rules;
|
|
13
|
+
const actions = this._task.actions;
|
|
14
|
+
const rulesMapping = new Rule(rules, this._object).mapping();
|
|
15
|
+
for (let action of actions) {
|
|
16
|
+
const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
|
|
17
|
+
if (conditionEvaluation) {
|
|
18
|
+
const actions = new Action(action, rulesMapping, this._object, this._takeAction);
|
|
19
|
+
yield actions.execute();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
__decorate([
|
|
26
|
+
logMethod
|
|
27
|
+
], Tasks.prototype, "execute", null);
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LnRhc2tzLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy50YXNrcy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0wsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLE9BQU8sS0FBSztJQUtoQixZQUFZLElBQVMsRUFBRSxNQUFXLEVBQUUsVUFBb0I7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUdLLE9BQU87O1lBQ1gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFFbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUU3RCxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDMUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLFNBQVMsQ0FDdkMsTUFBTSxDQUFDLFNBQVMsRUFDaEIsWUFBWSxDQUNiLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRWIsSUFBSSxtQkFBbUIsRUFBRTtvQkFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQ3hCLE1BQU0sRUFDTixZQUFZLEVBQ1osSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO29CQUVGLE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUN6QjthQUNGO1FBQ0gsQ0FBQztLQUFBO0NBQ0Y7QUF6QkM7SUFEQyxTQUFTO29DQXlCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFjdGlvbixcbiAgQ29uZGl0aW9uLFxuICBsb2dNZXRob2QsXG4gIFJ1bGVcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5cbmV4cG9ydCBjbGFzcyBUYXNrcyB7XG4gIHByaXZhdGUgX29iamVjdDogYW55O1xuICBwcml2YXRlIF90YXNrOiBhbnk7XG4gIHByaXZhdGUgX3Rha2VBY3Rpb246IEZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHRhc2s6IGFueSwgb2JqZWN0OiBhbnksIHRha2VBY3Rpb246IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5fdGFzayA9IHRhc2s7XG4gICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0O1xuICAgIHRoaXMuX3Rha2VBY3Rpb24gPSB0YWtlQWN0aW9uO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBhc3luYyBleGVjdXRlKCkge1xuICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpcy5fdGFzay50cmlnZ2VycztcbiAgICBjb25zdCBydWxlcyA9IHRoaXMuX3Rhc2sucnVsZXM7XG4gICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuX3Rhc2suYWN0aW9ucztcblxuICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICBjb25zdCBjb25kaXRpb25FdmFsdWF0aW9uID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgKTtcblxuICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Pipe } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/platform-browser";
|
|
4
|
+
/**
|
|
5
|
+
* Generated class for the SafeUrlPipe pipe.
|
|
6
|
+
*
|
|
7
|
+
* See https://angular.io/api/core/Pipe for more info on Angular Pipes.
|
|
8
|
+
*/
|
|
9
|
+
export class SafeUrlPipe {
|
|
10
|
+
constructor(sanitizer) {
|
|
11
|
+
this.sanitizer = sanitizer;
|
|
12
|
+
}
|
|
13
|
+
transform(url) {
|
|
14
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** @nocollapse */ SafeUrlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
18
|
+
/** @nocollapse */ SafeUrlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeUrlPipe, name: "safeUrl" });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeUrlPipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: "safeUrl"
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS11cmwucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9waXBlcy9zYWZlLXVybC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFHcEQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBRyxDQUFDO0lBRS9DLFNBQVMsQ0FBQyxHQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs0SEFMVSxXQUFXOzBIQUFYLFdBQVc7NEZBQVgsV0FBVztrQkFIdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbi8qKlxuICogR2VuZXJhdGVkIGNsYXNzIGZvciB0aGUgU2FmZVVybFBpcGUgcGlwZS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb3JlL1BpcGUgZm9yIG1vcmUgaW5mbyBvbiBBbmd1bGFyIFBpcGVzLlxuICovXG5AUGlwZSh7XG4gIG5hbWU6IFwic2FmZVVybFwiXG59KVxuZXhwb3J0IGNsYXNzIFNhZmVVcmxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgdHJhbnNmb3JtKHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xuICB9XG59XG4iXX0=
|
|
@@ -139,6 +139,12 @@ export class KwikIDFormsListComponent {
|
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
handleOnSubmitForms(e) {
|
|
142
|
+
/**
|
|
143
|
+
* POST ACTIONS
|
|
144
|
+
* 1. API Calls.
|
|
145
|
+
* 2. Preview of all filled data.
|
|
146
|
+
* 3. URL Redirection or new opening of URL in external tab.
|
|
147
|
+
*/
|
|
142
148
|
this.onClickSubmitForms.emit(e);
|
|
143
149
|
}
|
|
144
150
|
}
|
|
@@ -193,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
193
199
|
}], onClickSubmitForms: [{
|
|
194
200
|
type: Output
|
|
195
201
|
}], ngOnChanges: [], formatStepConfig: [], filterHiddenForms: [], findFormsListLength: [], checkIsAllFormsCompleted: [], handleOnClickSetActiveForm: [], handleOnSubmitForms: [] } });
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3Jtcy1saXN0L2Zvcm1zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybXMtbGlzdC9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNULFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPeEIsTUFBTSxPQUFPLHdCQUF3QjtJQTBDbkM7UUF4Q0EsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFHekIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUdyQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBR3JCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUczQixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBR3RCLHVCQUFrQixHQUFVLEVBQUUsQ0FBQztRQUcvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUc5Qix5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRSx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBSzFCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRTVCLHdCQUFtQixHQUFZLElBQUksQ0FBQztRQUVwQyxZQUFPLEdBQVksS0FBSyxD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QTBHQTtBRHhCRTtJQURDLFNBQVM7MkRBNEJUO0FBR0Q7SUFEQyxTQUFTO2dFQXFDVDtBQUdEO0lBREMsU0FBUztpRUFTVDtBQUdEO0lBREMsU0FBUzttRUFtQlQ7QUFHRDtJQURDLFNBQVM7d0VBZ0JUO0FBR0Q7SUFEQyxTQUFTOzBFQVVUO0FBR0Q7SUFEQyxTQUFTO21FQUdUOzRGQWhNVSx3QkFBd0I7a0JBTHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDOzBFQUdDLGNBQWM7c0JBRGIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixNQUFNO2dCQStCUCxXQUFXLE1BOEJYLGdCQUFnQixNQXVDaEIsaUJBQWlCLE1BV2pCLG1CQUFtQixNQXFCbkIsd0JBQXdCLE1Ba0J4QiwwQkFBMEIsTUFZMUIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgbG9nTWV0aG9kLFxuICBtZXJnZU9iamVjdHMsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoLFxuICBpc051bGwsXG4gIGlzVW5kZWZpbmVkXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWZvcm1zLWxpc3RcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9mb3Jtcy1saXN0LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgc2hvd0Zvcm1GaWVsZHM6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIHVzZXJDb25maWc6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIHN0ZXBDb25maWc6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGFjdGl2ZUZvcm1Db25maWc6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1zTGlzdDogYW55W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IGFueVtdID0gW107XG5cbiAgQElucHV0KClcbiAgaXNNb2JpbGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tTZXRBY3RpdmVGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrSGlkZUZvcm1zTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1N1Ym1pdEZvcm1zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRGb3JtOiBzdHJpbmcgPSBcIlwiO1xuICBzZXRTZWxlY3RlZEZvcm0oc2VsZWN0ZWRfZm9ybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZvcm0gPSBzZWxlY3RlZF9mb3JtO1xuICB9XG5cbiAgZm9ybXNMaXN0TGVuZ3RoOiBudW1iZXIgPSAwO1xuXG4gIGlzQWxsRm9ybXNDb21wbGV0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuc2V0U2VsZWN0ZWRGb3JtKHRoaXMuYWN0aXZlRm9ybUNvbmZpZz8ua2V5ID8/IFwiXCIpO1xuXG4gICAgdGhpcy5zdGVwQ29uZmlnID0gdGhpcy5mb3JtYXRTdGVwQ29uZmlnKHRoaXMuc3RlcENvbmZpZyk7XG5cbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuZmlsdGVySGlkZGVuRm9ybXModGhpcy5mb3Jtc0xpc3QpO1xuICAgIHRoaXMuZm9ybXNMaXN0TGVuZ3RoID0gdGhpcy5maW5kRm9ybXNMaXN0TGVuZ3RoKHRoaXMuZm9ybXNMaXN0KTtcbiAgICB0aGlzLmlzQWxsRm9ybXNDb21wbGV0ZWQgPSB0aGlzLmNoZWNrSXNBbGxGb3Jtc0NvbXBsZXRlZCh0aGlzLmZvcm1zTGlzdCk7XG5cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGNoYW5nZXMsIGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJzaG93Rm9ybUZpZWxkc1wiKSkge1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGNoYW5nZXMuc2hvd0Zvcm1GaWVsZHMuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwic3RlcENvbmZpZ1wiKSkge1xuICAgICAgdGhpcy5zdGVwQ29uZmlnID0gY2hhbmdlcy5zdGVwQ29uZmlnLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImZvcm1zTGlzdFwiKSkge1xuICAgICAgdGhpcy5mb3Jtc0xpc3QgPSB0aGlzLmZpbHRlckhpZGRlbkZvcm1zKHRoaXMuZm9ybXNMaXN0KTtcbiAgICAgIHRoaXMuZm9ybXNMaXN0TGVuZ3RoID0gdGhpcy5maW5kRm9ybXNMaXN0TGVuZ3RoKHRoaXMuZm9ybXNMaXN0KTtcbiAgICAgIHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCA9IHRoaXMuY2hlY2tJc0FsbEZvcm1zQ29tcGxldGVkKHRoaXMuZm9ybXNMaXN0KTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImlzTW9iaWxlVmlld1wiKSkge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBjaGFuZ2VzLmlzTW9iaWxlVmlldy5jdXJyZW50VmFsdWU7XG5cbiAgICAgIGlmICghdGhpcy5pc01vYmlsZVZpZXcpIHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEZvcm0oXCJcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhY3RpdmVGb3JtQ29uZmlnXCIpKSB7XG4gICAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBjaGFuZ2VzLmFjdGl2ZUZvcm1Db25maWcuY3VycmVudFZhbHVlO1xuXG4gICAgICB0aGlzLnNldFNlbGVjdGVkRm9ybSh0aGlzLmFjdGl2ZUZvcm1Db25maWc/LmtleSA/PyBcIlwiKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZvcm1hdFN0ZXBDb25maWcoc3RlcENvbmZpZzogYW55KTogYW55IHtcbiAgICBsZXQgc3RlcENvbmZpZ1Byb3BlcnRpZXMgPSB7XG4gICAgICBmb3JtTGlzdFByb3BlcnRpZXM6IHtcbiAgICAgICAgZm9vdGVyOiB7XG4gICAgICAgICAgc3VibWl0Rm9ybUJ1dHRvbjoge1xuICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGxhYmVsOiBcIlN1Ym1pdFwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChpc051bGwoc3RlcENvbmZpZykgfHwgaXNVbmRlZmluZWQoc3RlcENvbmZpZykpIHtcbiAgICAgIHN0ZXBDb25maWcgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aCh7fSwgXCJwcm9wc1wiLCBzdGVwQ29uZmlnUHJvcGVydGllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhzdGVwQ29uZmlnLCBcInByb3BzXCIpKSB7XG4gICAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzLFxuICAgICAgICAgIHN0ZXBDb25maWcucHJvcHNcbiAgICAgICAgKTtcblxuICAgICAgICBzdGVwQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgc3RlcENvbmZpZyxcbiAgICAgICAgICBcInByb3BzXCIsXG4gICAgICAgICAgc3RlcENvbmZpZ1Byb3BlcnRpZXNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZXBDb25maWcgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgICBzdGVwQ29uZmlnLFxuICAgICAgICAgIFwicHJvcHNcIixcbiAgICAgICAgICBzdGVwQ29uZmlnUHJvcGVydGllc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGVwQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaWx0ZXJIaWRkZW5Gb3Jtcyhmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBmb3Jtc0xpc3QuZmlsdGVyKChmb3JtKSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikpIHtcbiAgICAgICAgaWYgKCFmb3JtLmhpZGRlbikge1xuICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbmRGb3Jtc0xpc3RMZW5ndGgoZm9ybXNMaXN0OiBhbnlbXSk6IG51bWJlciB7XG4gICAgY29uc3QgX2Zvcm1zTGlzdCA9IGZvcm1zTGlzdC5maWx0ZXIoKGZvcm0pID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcInR5cGVcIikpIHtcbiAgICAgICAgaWYgKGZvcm0udHlwZSA9PT0gXCJmb3JtXCIpIHtcbiAgICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikpIHtcbiAgICAgICAgICAgIGlmICghZm9ybS5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4pIHtcbiAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIF9mb3Jtc0xpc3QubGVuZ3RoO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjaGVja0lzQWxsRm9ybXNDb21wbGV0ZWQoZm9ybXNMaXN0OiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBpc0FsbEZvcm1zQ29tcGxldGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvciAobGV0IGZvcm0gb2YgZm9ybXNMaXN0KSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJ0eXBlXCIpKSB7XG4gICAgICAgIGlmIChmb3JtLnR5cGUgPT09IFwiZm9ybVwiKSB7XG4gICAgICAgICAgaWYgKGZvcm0uc3RhdHVzICE9PSBcImNvbXBsZXRlZFwiKSB7XG4gICAgICAgICAgICBpc0FsbEZvcm1zQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNBbGxGb3Jtc0NvbXBsZXRlZDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oc2VsZWN0ZWRGb3JtOiBzdHJpbmcpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyB8fFxuICAgICAgKCF0aGlzLmlzTW9iaWxlVmlldyAmJiB0aGlzLnNlbGVjdGVkRm9ybSAhPT0gc2VsZWN0ZWRGb3JtKSB8fFxuICAgICAgKHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCAmJiAhdGhpcy5zaG93Rm9ybUZpZWxkcylcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtID0gc2VsZWN0ZWRGb3JtO1xuICAgICAgdGhpcy5vbkNsaWNrU2V0QWN0aXZlRm9ybS5lbWl0KHNlbGVjdGVkRm9ybSk7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPblN1Ym1pdEZvcm1zKGU6IGFueSkge1xuICAgIHRoaXMub25DbGlja1N1Ym1pdEZvcm1zLmVtaXQoZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgaWQ9XCJzaWRlYmFyLWNvbnRhaW5lclwiXG4gICpuZ0lmPVwiIWxvYWRpbmdcIlxuPlxuICA8ZGl2IGlkPVwic2lkZWJhclwiPlxuICAgIDxkaXYgbmdDbGFzcz1cImt3aWtpZC1mb3JtLWhlYWRlclwiPlxuICAgICAgPGRpdiBpZD1cInVmLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGlkPVwidWYtaGVhZGVyLWxvZ28tY29udGFpbmVyXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgaWQ9XCJ1Zi1oZWFkZXItbG9nb1wiXG4gICAgICAgICAgICBzcmM9XCJ7eyB0aGlzLnVzZXJDb25maWcudGhlbWUuY2xpZW50TG9nbyB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCInbGFyZ2UtaWNvbidcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aHIgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwidWYtcHJvZ3Jlc3NcIj5cbiAgICAgIDxkaXYgaWQ9XCJ1Zi1wcm9ncmVzcy1zdGVwc1wiPlxuICAgICAgICB7eyB0aGlzLmZvcm1zTGlzdENvbXBsZXRlZC5sZW5ndGggfX0gLyB7eyB0aGlzLmZvcm1zTGlzdExlbmd0aCB9fSBTdGVwc1xuICAgICAgICBDb21wbGV0ZWRcbiAgICAgIDwvZGl2PlxuICAgICAgPGt3aWt1aS1wcm9ncmVzcy1zZWdtZW50ZWRcbiAgICAgICAgW21heF09XCJ0aGlzLmZvcm1zTGlzdExlbmd0aFwiXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgW3ZhbHVlXT1cInRoaXMuZm9ybXNMaXN0Q29tcGxldGVkLmxlbmd0aFwiXG4gICAgICA+PC9rd2lrdWktcHJvZ3Jlc3Mtc2VnbWVudGVkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJ1Zi1zZWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXNMaXN0OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZvcm0udHlwZVwiPlxuICAgICAgICAgIDwhLS0gSFRNTCBDb250ZW50IC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidodG1sJ1wiPlxuICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cImZvcm0ucHJvcHMuaHRtbENvbnRlbnQgfCBzYWZlSHRtbFwiPjwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb3JtJ1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3VmLXNlY3Rpb24taXRlbSdcIlxuICAgICAgICAgICAgICBbY2xhc3MuY29tcGxldGVkXT1cImZvcm0uc3RhdHVzID09PSAnY29tcGxldGVkJyAmJiAhZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5lZGl0XT1cImZvcm0uc3RhdHVzID09PSAnZWRpdGFibGUnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmxvY2tlZF09XCJmb3JtLnN0YXR1cyA9PT0gJ2xvY2tlZCcgJiYgZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgICAgICAgYWN0aXZlRm9ybUNvbmZpZyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgZm9ybS5rZXkgPT09IGFjdGl2ZUZvcm1Db25maWcua2V5XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBmb3JtLnN0YXR1cyA9PT0gJ2xvY2tlZCcgJiYgZm9ybS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIDogaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oZm9ybS5rZXkpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1Zi1mb3JtLXNlY3Rpb24tY2FyZC10aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm0ucHJvcHMudGl0bGUgfX0mbmJzcDs8c3BhbiAqbmdJZj1cImZvcm0/LnJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgID4qPC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5zdGF0dXMgPT09ICdjb21wbGV0ZWQnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBjb21wbGV0ZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25DaGVja0xhcmdlXCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5zdGF0dXMgIT09ICdjb21wbGV0ZWQnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBlZGl0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uRWRpdFwiPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm0uc3RhdHVzICE9PSAnY29tcGxldGVkJyAmJiBmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBsb2NrZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25Mb2NrXCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJzdWJtaXQtc2lkZWJhci1idG4tY29udGFpbmVyXCI+XG4gICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFzdGVwQ29uZmlnLnByb3BzLmZvcm1MaXN0UHJvcGVydGllcy5mb290ZXIuc3VibWl0Rm9ybUJ1dHRvbi5oaWRkZW5cbiAgICAgICAgXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgaWQ9XCJcIlxuICAgICAgICBsYWJlbD1cInt7XG4gICAgICAgICAgc3RlcENvbmZpZy5wcm9wcy5mb3JtTGlzdFByb3BlcnRpZXMuZm9vdGVyLnN1Ym1pdEZvcm1CdXR0b24ubGFiZWxcbiAgICAgICAgfX1cIlxuICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgIHN0eWxlcz1cIlwiXG4gICAgICAgIGNsYXNzPVwiXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCJcbiAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgIGljb25SaWdodD1cIlwiXG4gICAgICAgIFtzaGFwZV09XCJudWxsXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBzdHlsZXM9XCJ3aWR0aDogMTAwJVwiXG4gICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uU3VibWl0Rm9ybXMoJGV2ZW50KVwiXG4gICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3Jtcy1saXN0L2Zvcm1zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybXMtbGlzdC9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNULFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPeEIsTUFBTSxPQUFPLHdCQUF3QjtJQTBDbkM7UUF4Q0EsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFHekIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUdyQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBR3JCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUczQixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBR3RCLHVCQUFrQixHQUFVLEVBQUUsQ0FBQztRQUcvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUc5Qix5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRSx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBSzFCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRTVCLHdCQUFtQixHQUFZLElBQUksQ0FBQztRQUVwQyxZQUFPLEdBQVksS0FBSyxD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d0IseWNDdkJyQyxvcUhBMEdBO0FEeEJFO0lBREMsU0FBUzsyREE0QlQ7QUFHRDtJQURDLFNBQVM7Z0VBcUNUO0FBR0Q7SUFEQyxTQUFTO2lFQVNUO0FBR0Q7SUFEQyxTQUFTO21FQW1CVDtBQUdEO0lBREMsU0FBUzt3RUFnQlQ7QUFHRDtJQURDLFNBQVM7MEVBVVQ7QUFHRDtJQURDLFNBQVM7bUVBVVQ7NEZBdk1VLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDM0M7MEVBR0MsY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixNQUFNO2dCQUlQLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFJUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBK0JQLFdBQVcsTUE4QlgsZ0JBQWdCLE1BdUNoQixpQkFBaUIsTUFXakIsbUJBQW1CLE1BcUJuQix3QkFBd0IsTUFrQnhCLDBCQUEwQixNQVkxQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBsb2dNZXRob2QsXG4gIG1lcmdlT2JqZWN0cyxcbiAgc2V0VmFsdWVUb09iamVjdFBhdGgsXG4gIGlzTnVsbCxcbiAgaXNVbmRlZmluZWRcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtbGlzdFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2Zvcm1zLWxpc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2Zvcm1zLWxpc3QuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBzaG93Rm9ybUZpZWxkczogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgc3RlcENvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgZm9ybXNMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1zTGlzdENvbXBsZXRlZDogYW55W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBpc01vYmlsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1NldEFjdGl2ZUZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tIaWRlRm9ybXNMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrU3VibWl0Rm9ybXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzZWxlY3RlZEZvcm06IHN0cmluZyA9IFwiXCI7XG4gIHNldFNlbGVjdGVkRm9ybShzZWxlY3RlZF9mb3JtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRm9ybSA9IHNlbGVjdGVkX2Zvcm07XG4gIH1cblxuICBmb3Jtc0xpc3RMZW5ndGg6IG51bWJlciA9IDA7XG5cbiAgaXNBbGxGb3Jtc0NvbXBsZXRlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5zZXRTZWxlY3RlZEZvcm0odGhpcy5hY3RpdmVGb3JtQ29uZmlnPy5rZXkgPz8gXCJcIik7XG5cbiAgICB0aGlzLnN0ZXBDb25maWcgPSB0aGlzLmZvcm1hdFN0ZXBDb25maWcodGhpcy5zdGVwQ29uZmlnKTtcblxuICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy5maWx0ZXJIaWRkZW5Gb3Jtcyh0aGlzLmZvcm1zTGlzdCk7XG4gICAgdGhpcy5mb3Jtc0xpc3RMZW5ndGggPSB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpO1xuICAgIHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCA9IHRoaXMuY2hlY2tJc0FsbEZvcm1zQ29tcGxldGVkKHRoaXMuZm9ybXNMaXN0KTtcblxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgdmVyaWZ5Q2hhbmdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gY2hlY2tPYmplY3RLZXlFeGlzdHMoY2hhbmdlcywga2V5KSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlO1xuICAgIH07XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInNob3dGb3JtRmllbGRzXCIpKSB7XG4gICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gY2hhbmdlcy5zaG93Rm9ybUZpZWxkcy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJzdGVwQ29uZmlnXCIpKSB7XG4gICAgICB0aGlzLnN0ZXBDb25maWcgPSBjaGFuZ2VzLnN0ZXBDb25maWcuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZm9ybXNMaXN0XCIpKSB7XG4gICAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuZmlsdGVySGlkZGVuRm9ybXModGhpcy5mb3Jtc0xpc3QpO1xuICAgICAgdGhpcy5mb3Jtc0xpc3RMZW5ndGggPSB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpO1xuICAgICAgdGhpcy5pc0FsbEZvcm1zQ29tcGxldGVkID0gdGhpcy5jaGVja0lzQWxsRm9ybXNDb21wbGV0ZWQodGhpcy5mb3Jtc0xpc3QpO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiaXNNb2JpbGVWaWV3XCIpKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IGNoYW5nZXMuaXNNb2JpbGVWaWV3LmN1cnJlbnRWYWx1ZTtcblxuICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlVmlldykge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkRm9ybShcIlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImFjdGl2ZUZvcm1Db25maWdcIikpIHtcbiAgICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IGNoYW5nZXMuYWN0aXZlRm9ybUNvbmZpZy5jdXJyZW50VmFsdWU7XG5cbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRGb3JtKHRoaXMuYWN0aXZlRm9ybUNvbmZpZz8ua2V5ID8/IFwiXCIpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZm9ybWF0U3RlcENvbmZpZyhzdGVwQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGxldCBzdGVwQ29uZmlnUHJvcGVydGllcyA9IHtcbiAgICAgIGZvcm1MaXN0UHJvcGVydGllczoge1xuICAgICAgICBmb290ZXI6IHtcbiAgICAgICAgICBzdWJtaXRGb3JtQnV0dG9uOiB7XG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgbGFiZWw6IFwiU3VibWl0XCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGlzTnVsbChzdGVwQ29uZmlnKSB8fCBpc1VuZGVmaW5lZChzdGVwQ29uZmlnKSkge1xuICAgICAgc3RlcENvbmZpZyA9IHNldFZhbHVlVG9PYmplY3RQYXRoKHt9LCBcInByb3BzXCIsIHN0ZXBDb25maWdQcm9wZXJ0aWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHN0ZXBDb25maWcsIFwicHJvcHNcIikpIHtcbiAgICAgICAgc3RlcENvbmZpZ1Byb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgc3RlcENvbmZpZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgc3RlcENvbmZpZy5wcm9wc1xuICAgICAgICApO1xuXG4gICAgICAgIHN0ZXBDb25maWcgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgICBzdGVwQ29uZmlnLFxuICAgICAgICAgIFwicHJvcHNcIixcbiAgICAgICAgICBzdGVwQ29uZmlnUHJvcGVydGllc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RlcENvbmZpZyA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgIHN0ZXBDb25maWcsXG4gICAgICAgICAgXCJwcm9wc1wiLFxuICAgICAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ZXBDb25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbHRlckhpZGRlbkZvcm1zKGZvcm1zTGlzdDogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGZvcm1zTGlzdC5maWx0ZXIoKGZvcm0pID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICBpZiAoIWZvcm0uaGlkZGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZmluZEZvcm1zTGlzdExlbmd0aChmb3Jtc0xpc3Q6IGFueVtdKTogbnVtYmVyIHtcbiAgICBjb25zdCBfZm9ybXNMaXN0ID0gZm9ybXNMaXN0LmZpbHRlcigoZm9ybSkgPT4ge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwidHlwZVwiKSkge1xuICAgICAgICBpZiAoZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICAgICAgaWYgKCFmb3JtLmhpZGRlbikge1xuICAgICAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikpIHtcbiAgICAgICAgaWYgKCFmb3JtLmhpZGRlbikge1xuICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX2Zvcm1zTGlzdC5sZW5ndGg7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGNoZWNrSXNBbGxGb3Jtc0NvbXBsZXRlZChmb3Jtc0xpc3Q6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgbGV0IGlzQWxsRm9ybXNDb21wbGV0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcInR5cGVcIikpIHtcbiAgICAgICAgaWYgKGZvcm0udHlwZSA9PT0gXCJmb3JtXCIpIHtcbiAgICAgICAgICBpZiAoZm9ybS5zdGF0dXMgIT09IFwiY29tcGxldGVkXCIpIHtcbiAgICAgICAgICAgIGlzQWxsRm9ybXNDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0FsbEZvcm1zQ29tcGxldGVkO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShzZWxlY3RlZEZvcm06IHN0cmluZykge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3IHx8XG4gICAgICAoIXRoaXMuaXNNb2JpbGVWaWV3ICYmIHRoaXMuc2VsZWN0ZWRGb3JtICE9PSBzZWxlY3RlZEZvcm0pIHx8XG4gICAgICAodGhpcy5pc0FsbEZvcm1zQ29tcGxldGVkICYmICF0aGlzLnNob3dGb3JtRmllbGRzKVxuICAgICkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZvcm0gPSBzZWxlY3RlZEZvcm07XG4gICAgICB0aGlzLm9uQ2xpY2tTZXRBY3RpdmVGb3JtLmVtaXQoc2VsZWN0ZWRGb3JtKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uU3VibWl0Rm9ybXMoZTogYW55KSB7XG4gICAgLyoqXG4gICAgICogUE9TVCBBQ1RJT05TXG4gICAgICogMS4gQVBJIENhbGxzLlxuICAgICAqIDIuIFByZXZpZXcgb2YgYWxsIGZpbGxlZCBkYXRhLlxuICAgICAqIDMuIFVSTCBSZWRpcmVjdGlvbiBvciBuZXcgb3BlbmluZyBvZiBVUkwgaW4gZXh0ZXJuYWwgdGFiLlxuICAgICAqL1xuXG4gICAgdGhpcy5vbkNsaWNrU3VibWl0Rm9ybXMuZW1pdChlKTtcbiAgfVxufVxuIiwiPGRpdlxuICBpZD1cInNpZGViYXItY29udGFpbmVyXCJcbiAgKm5nSWY9XCIhbG9hZGluZ1wiXG4+XG4gIDxkaXYgaWQ9XCJzaWRlYmFyXCI+XG4gICAgPGRpdiBuZ0NsYXNzPVwia3dpa2lkLWZvcm0taGVhZGVyXCI+XG4gICAgICA8ZGl2IGlkPVwidWYtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJ1Zi1oZWFkZXItbG9nby1jb250YWluZXJcIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBpZD1cInVmLWhlYWRlci1sb2dvXCJcbiAgICAgICAgICAgIHNyYz1cInt7IHRoaXMudXNlckNvbmZpZy50aGVtZS5jbGllbnRMb2dvIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidsYXJnZS1pY29uJ1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxociAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJ1Zi1wcm9ncmVzc1wiPlxuICAgICAgPGRpdiBpZD1cInVmLXByb2dyZXNzLXN0ZXBzXCI+XG4gICAgICAgIHt7IHRoaXMuZm9ybXNMaXN0Q29tcGxldGVkLmxlbmd0aCB9fSAvIHt7IHRoaXMuZm9ybXNMaXN0TGVuZ3RoIH19IFN0ZXBzXG4gICAgICAgIENvbXBsZXRlZFxuICAgICAgPC9kaXY+XG4gICAgICA8a3dpa3VpLXByb2dyZXNzLXNlZ21lbnRlZFxuICAgICAgICBbbWF4XT1cInRoaXMuZm9ybXNMaXN0TGVuZ3RoXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBbdmFsdWVdPVwidGhpcy5mb3Jtc0xpc3RDb21wbGV0ZWQubGVuZ3RoXCJcbiAgICAgID48L2t3aWt1aS1wcm9ncmVzcy1zZWdtZW50ZWQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cInVmLXNlY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3Jtc0xpc3Q7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZm9ybS50eXBlXCI+XG4gICAgICAgICAgPCEtLSBIVE1MIENvbnRlbnQgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2h0bWwnXCI+XG4gICAgICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwiZm9ybS5wcm9wcy5odG1sQ29udGVudCB8IHNhZmVIdG1sXCI+PC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Zvcm0nXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIFtjbGFzc109XCIndWYtc2VjdGlvbi1pdGVtJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5jb21wbGV0ZWRdPVwiZm9ybS5zdGF0dXMgPT09ICdjb21wbGV0ZWQnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmVkaXRdPVwiZm9ybS5zdGF0dXMgPT09ICdlZGl0YWJsZScgJiYgIWZvcm0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MubG9ja2VkXT1cImZvcm0uc3RhdHVzID09PSAnbG9ja2VkJyAmJiBmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICBhY3RpdmVGb3JtQ29uZmlnICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBmb3JtLmtleSA9PT0gYWN0aXZlRm9ybUNvbmZpZy5rZXlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGZvcm0uc3RhdHVzID09PSAnbG9ja2VkJyAmJiBmb3JtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgOiBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShmb3JtLmtleSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybS5wcm9wcy50aXRsZSB9fSZuYnNwOzxzcGFuICpuZ0lmPVwiZm9ybT8ucmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgPio8L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcgJiYgIWZvcm0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1Zi1mb3JtLXNlY3Rpb24tY2FyZC1zdGF0dXMtaW1nIGNvbXBsZXRlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHR1aS1zdmcgc3JjPVwidHVpSWNvbkNoZWNrTGFyZ2VcIj48L3R1aS1zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgJiYgIWZvcm0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1Zi1mb3JtLXNlY3Rpb24tY2FyZC1zdGF0dXMtaW1nIGVkaXRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25FZGl0XCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5zdGF0dXMgIT09ICdjb21wbGV0ZWQnICYmIGZvcm0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1Zi1mb3JtLXNlY3Rpb24tY2FyZC1zdGF0dXMtaW1nIGxvY2tlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHR1aS1zdmcgc3JjPVwidHVpSWNvbkxvY2tcIj48L3R1aS1zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cInN1Ym1pdC1zaWRlYmFyLWJ0bi1jb250YWluZXJcIj5cbiAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIXN0ZXBDb25maWcucHJvcHMuZm9ybUxpc3RQcm9wZXJ0aWVzLmZvb3Rlci5zdWJtaXRGb3JtQnV0dG9uLmhpZGRlblxuICAgICAgICBcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICBpZD1cIlwiXG4gICAgICAgIGxhYmVsPVwie3tcbiAgICAgICAgICBzdGVwQ29uZmlnLnByb3BzLmZvcm1MaXN0UHJvcGVydGllcy5mb290ZXIuc3VibWl0Rm9ybUJ1dHRvbi5sYWJlbFxuICAgICAgICB9fVwiXG4gICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgc3R5bGVzPVwiXCJcbiAgICAgICAgY2xhc3M9XCJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgYXBwZWFyYW5jZT1cInByaW1hcnlcIlxuICAgICAgICBpY29uPVwiXCJcbiAgICAgICAgaWNvblJpZ2h0PVwiXCJcbiAgICAgICAgW3NoYXBlXT1cIm51bGxcIlxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIHN0eWxlcz1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25TdWJtaXRGb3JtcygkZXZlbnQpXCJcbiAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|