@alfresco/aca-content 4.5.0-9016880652 → 4.5.0-9028148702
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/assets/app.extensions.json +3 -3
- package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +39 -9
- package/esm2020/lib/components/search/search-results/search-results.component.mjs +2 -2
- package/fesm2015/alfresco-aca-content-folder-rules.mjs +64 -32
- package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +1 -1
- package/fesm2015/alfresco-aca-content.mjs +1 -1
- package/fesm2015/alfresco-aca-content.mjs.map +1 -1
- package/fesm2020/alfresco-aca-content-folder-rules.mjs +61 -31
- package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +1 -1
- package/fesm2020/alfresco-aca-content.mjs +1 -1
- package/fesm2020/alfresco-aca-content.mjs.map +1 -1
- package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +8 -4
- package/package.json +1 -1
|
@@ -1315,7 +1315,7 @@
|
|
|
1315
1315
|
"name": "APP.BROWSE.SEARCH.DEFAULT_SEARCH",
|
|
1316
1316
|
"default": true,
|
|
1317
1317
|
"filterWithContains": true,
|
|
1318
|
-
"
|
|
1318
|
+
"app:fields": ["cm:name", "cm:title", "cm:description", "TEXT", "TAG"],
|
|
1319
1319
|
"include": ["path", "allowableOperations", "properties"],
|
|
1320
1320
|
"sorting": {
|
|
1321
1321
|
"options": [
|
|
@@ -1560,7 +1560,7 @@
|
|
|
1560
1560
|
"name": "APP.BROWSE.SEARCH.DUBLIN_CORE",
|
|
1561
1561
|
"default": false,
|
|
1562
1562
|
"filterWithContains": true,
|
|
1563
|
-
"
|
|
1563
|
+
"app:fields": ["cm:name", "cm:title", "cm:description", "cm:identifier", "cm:contributor", "cm:coverage", "cm:dcsource", "cm:publisher", "cm:rights", "cm:subject", "cm:type", "TEXT", "TAG"],
|
|
1564
1564
|
"include": ["path", "allowableOperations", "properties"],
|
|
1565
1565
|
"sorting": {
|
|
1566
1566
|
"options": [
|
|
@@ -1736,7 +1736,7 @@
|
|
|
1736
1736
|
"name": "APP.BROWSE.SEARCH.EFFECTIVITY",
|
|
1737
1737
|
"default": false,
|
|
1738
1738
|
"filterWithContains": true,
|
|
1739
|
-
"
|
|
1739
|
+
"app:fields": ["cm:name", "cm:title", "cm:description", "cm:from", "cm:contributor", "cm:to", "TEXT", "TAG"],
|
|
1740
1740
|
"include": ["path", "allowableOperations", "properties"],
|
|
1741
1741
|
"sorting": {
|
|
1742
1742
|
"options": [
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
import { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';
|
|
25
25
|
import { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
26
26
|
import { CardViewBoolItemModel, CardViewModule, CardViewSelectItemModel, CardViewTextItemModel, CardViewUpdateService } from '@alfresco/adf-core';
|
|
27
|
-
import { of, Subject } from 'rxjs';
|
|
27
|
+
import { from, of, Subject } from 'rxjs';
|
|
28
28
|
import { map, takeUntil } from 'rxjs/operators';
|
|
29
|
-
import { CategoryService, ContentNodeSelectorComponent, NodeAction, TagService, CategorySelectorDialogComponent } from '@alfresco/adf-content-services';
|
|
29
|
+
import { CategoryService, ContentNodeSelectorComponent, NodeAction, TagService, CategorySelectorDialogComponent, SecurityControlsService } from '@alfresco/adf-content-services';
|
|
30
30
|
import { MatDialog } from '@angular/material/dialog';
|
|
31
31
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
32
32
|
import { CommonModule } from '@angular/common';
|
|
@@ -43,17 +43,19 @@ import * as i7 from "@angular/material/form-field";
|
|
|
43
43
|
import * as i8 from "@angular/material/select";
|
|
44
44
|
import * as i9 from "@angular/material/core";
|
|
45
45
|
export class RuleActionUiComponent {
|
|
46
|
-
constructor(cardViewUpdateService, dialog, translate, tagService, categoryService) {
|
|
46
|
+
constructor(cardViewUpdateService, dialog, translate, tagService, categoryService, securityControlsService) {
|
|
47
47
|
this.cardViewUpdateService = cardViewUpdateService;
|
|
48
48
|
this.dialog = dialog;
|
|
49
49
|
this.translate = translate;
|
|
50
50
|
this.tagService = tagService;
|
|
51
51
|
this.categoryService = categoryService;
|
|
52
|
+
this.securityControlsService = securityControlsService;
|
|
52
53
|
this.nodeId = '';
|
|
53
54
|
this.readOnly = false;
|
|
54
55
|
this._parameterConstraints = [];
|
|
55
56
|
this.tagsRelatedPropertiesAndAspects = ['cm:tagscope', 'cm:tagScopeCache', 'cm:taggable'];
|
|
56
57
|
this.categoriesRelatedPropertiesAndAspects = ['cm:categories', 'cm:generalclassifiable'];
|
|
58
|
+
this.paramsToFormatDisplayedValue = ['securityMarkId', 'securityGroupId'];
|
|
57
59
|
this.isFullWidth = false;
|
|
58
60
|
this.form = new FormGroup({
|
|
59
61
|
actionDefinitionId: new FormControl('', Validators.required)
|
|
@@ -88,6 +90,9 @@ export class RuleActionUiComponent {
|
|
|
88
90
|
...action.params
|
|
89
91
|
};
|
|
90
92
|
this.setCardViewProperties();
|
|
93
|
+
if (this.parameters?.securityGroupId) {
|
|
94
|
+
this.loadSecurityMarkOptions();
|
|
95
|
+
}
|
|
91
96
|
}
|
|
92
97
|
registerOnChange(fn) {
|
|
93
98
|
this.onChange = fn;
|
|
@@ -107,6 +112,10 @@ export class RuleActionUiComponent {
|
|
|
107
112
|
this.onTouch();
|
|
108
113
|
});
|
|
109
114
|
this.cardViewUpdateService.itemUpdated$.pipe(takeUntil(this.onDestroy$)).subscribe((updateNotification) => {
|
|
115
|
+
const isSecurityGroupUpdated = updateNotification.target.key === 'securityGroupId';
|
|
116
|
+
if (isSecurityGroupUpdated) {
|
|
117
|
+
this.parameters.securityMarkId = null;
|
|
118
|
+
}
|
|
110
119
|
this.parameters = this.clearEmptyParameters({
|
|
111
120
|
...this.parameters,
|
|
112
121
|
...updateNotification.changed
|
|
@@ -116,6 +125,10 @@ export class RuleActionUiComponent {
|
|
|
116
125
|
params: this.parameters
|
|
117
126
|
});
|
|
118
127
|
this.onTouch();
|
|
128
|
+
if (isSecurityGroupUpdated) {
|
|
129
|
+
this.setCardViewProperties();
|
|
130
|
+
this.loadSecurityMarkOptions();
|
|
131
|
+
}
|
|
119
132
|
});
|
|
120
133
|
}
|
|
121
134
|
ngOnChanges(changes) {
|
|
@@ -129,11 +142,13 @@ export class RuleActionUiComponent {
|
|
|
129
142
|
this.onDestroy$.next();
|
|
130
143
|
this.onDestroy$.complete();
|
|
131
144
|
}
|
|
132
|
-
setCardViewProperties() {
|
|
145
|
+
setCardViewProperties(securityMarkOptions) {
|
|
133
146
|
const disabledTags = !this.tagService.areTagsEnabled();
|
|
134
147
|
const disabledCategories = !this.categoryService.areCategoriesEnabled();
|
|
135
148
|
this.cardViewItems = (this.selectedActionDefinition?.parameterDefinitions ?? []).map((paramDef) => {
|
|
136
|
-
const constraintsForDropdownBox =
|
|
149
|
+
const constraintsForDropdownBox = paramDef.name === 'securityMarkId'
|
|
150
|
+
? { name: paramDef.name, constraints: securityMarkOptions || [] }
|
|
151
|
+
: this._parameterConstraints.find((obj) => obj.name === paramDef.name);
|
|
137
152
|
const cardViewPropertiesModel = {
|
|
138
153
|
label: paramDef.displayLabel + (paramDef.mandatory ? ' *' : ''),
|
|
139
154
|
key: paramDef.name,
|
|
@@ -190,7 +205,9 @@ export class RuleActionUiComponent {
|
|
|
190
205
|
}
|
|
191
206
|
return new CardViewTextItemModel({
|
|
192
207
|
...cardViewPropertiesModel,
|
|
193
|
-
value: this.
|
|
208
|
+
value: constraintsForDropdownBox && this.readOnly && this.paramsToFormatDisplayedValue.includes(paramDef.name)
|
|
209
|
+
? constraintsForDropdownBox.constraints.find((constraint) => constraint.key === this.parameters[paramDef.name])?.label ?? ''
|
|
210
|
+
: this.parameters[paramDef.name] ?? ''
|
|
194
211
|
});
|
|
195
212
|
}
|
|
196
213
|
});
|
|
@@ -292,8 +309,21 @@ export class RuleActionUiComponent {
|
|
|
292
309
|
Object.keys(params).forEach((key) => (params[key] === null || params[key] === undefined || params[key] === '') && delete params[key]);
|
|
293
310
|
return params;
|
|
294
311
|
}
|
|
312
|
+
loadSecurityMarkOptions() {
|
|
313
|
+
if (this.parameters?.securityGroupId) {
|
|
314
|
+
from(this.securityControlsService.getSecurityMark(this.parameters.securityGroupId))
|
|
315
|
+
.pipe(map((securityMarks) => securityMarks.entries.map((entry) => this.formatSecurityMarkConstraint(entry))))
|
|
316
|
+
.subscribe((res) => this.setCardViewProperties(this.parseConstraintsToSelectOptions(res)));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
formatSecurityMarkConstraint(securityMark) {
|
|
320
|
+
return {
|
|
321
|
+
value: securityMark.id,
|
|
322
|
+
label: securityMark.name
|
|
323
|
+
};
|
|
324
|
+
}
|
|
295
325
|
}
|
|
296
|
-
RuleActionUiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: RuleActionUiComponent, deps: [{ token: i1.CardViewUpdateService }, { token: i2.MatDialog }, { token: i3.TranslateService }, { token: i4.TagService }, { token: i4.CategoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
326
|
+
RuleActionUiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: RuleActionUiComponent, deps: [{ token: i1.CardViewUpdateService }, { token: i2.MatDialog }, { token: i3.TranslateService }, { token: i4.TagService }, { token: i4.CategoryService }, { token: i4.SecurityControlsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
297
327
|
RuleActionUiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: RuleActionUiComponent, isStandalone: true, selector: "aca-rule-action", inputs: { nodeId: "nodeId", actionDefinitions: "actionDefinitions", readOnly: "readOnly", parameterConstraints: "parameterConstraints" }, host: { classAttribute: "aca-rule-action" }, providers: [
|
|
298
328
|
{
|
|
299
329
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -312,7 +342,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
312
342
|
},
|
|
313
343
|
CardViewUpdateService
|
|
314
344
|
], template: "<form class=\"aca-rule-action__form\" [formGroup]=\"form\">\n\n <mat-form-field class=\"aca-rule-action-full-width\" appearance=\"standard\">\n <mat-select\n formControlName=\"actionDefinitionId\"\n data-automation-id=\"rule-action-select\"\n [placeholder]=\"'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_SELECT_PLACEHOLDER' | translate\">\n <mat-option\n *ngFor=\"let actionDefinition of actionDefinitions\"\n [value]=\"actionDefinition.id\">\n {{ actionDefinition.title }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <adf-card-view\n *ngIf=\"cardViewItems?.length > 0\"\n data-automation-id=\"rule-action-card-view\"\n [properties]=\"cardViewItems\"\n class=\"aca-rule-action-full-width\"\n [editable]=\"!readOnly\">\n </adf-card-view>\n\n</form>\n", styles: [".aca-rule-action__form{display:flex;flex-direction:row;gap:20px}.aca-rule-action__form adf-card-view .adf-property-list .adf-property adf-card-view-item-dispatcher adf-card-view-textitem{display:inline-block;width:300px}.aca-rule-action-full-width{flex:1}\n"] }]
|
|
315
|
-
}], ctorParameters: function () { return [{ type: i1.CardViewUpdateService }, { type: i2.MatDialog }, { type: i3.TranslateService }, { type: i4.TagService }, { type: i4.CategoryService }]; }, propDecorators: { nodeId: [{
|
|
345
|
+
}], ctorParameters: function () { return [{ type: i1.CardViewUpdateService }, { type: i2.MatDialog }, { type: i3.TranslateService }, { type: i4.TagService }, { type: i4.CategoryService }, { type: i4.SecurityControlsService }]; }, propDecorators: { nodeId: [{
|
|
316
346
|
type: Input
|
|
317
347
|
}], actionDefinitions: [{
|
|
318
348
|
type: Input
|
|
@@ -321,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
321
351
|
}], parameterConstraints: [{
|
|
322
352
|
type: Input
|
|
323
353
|
}] } });
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1hY3Rpb24udWktY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvZm9sZGVyLXJ1bGVzL3NyYy9ydWxlLWRldGFpbHMvYWN0aW9ucy9ydWxlLWFjdGlvbi51aS1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL3J1bGUtZGV0YWlscy9hY3Rpb25zL3J1bGUtYWN0aW9uLnVpLWNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUErQyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEksT0FBTyxFQUNMLHFCQUFxQixFQUVyQixjQUFjLEVBQ2QsdUJBQXVCLEVBRXZCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFdEIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFDTCxlQUFlLEVBQ2YsNEJBQTRCLEVBRTVCLFVBQVUsRUFDVixVQUFVLEVBQ1YsK0JBQStCLEVBRWhDLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FB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RFAsS0FBSztnQkFLRixvQkFBb0I7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCwgUnVsZUFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL3J1bGUtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7XG4gIENhcmRWaWV3Qm9vbEl0ZW1Nb2RlbCxcbiAgQ2FyZFZpZXdJdGVtLFxuICBDYXJkVmlld01vZHVsZSxcbiAgQ2FyZFZpZXdTZWxlY3RJdGVtTW9kZWwsXG4gIENhcmRWaWV3U2VsZWN0SXRlbU9wdGlvbixcbiAgQ2FyZFZpZXdUZXh0SXRlbU1vZGVsLFxuICBDYXJkVmlld1VwZGF0ZVNlcnZpY2UsXG4gIFVwZGF0ZU5vdGlmaWNhdGlvblxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQWN0aW9uUGFyYW1ldGVyRGVmaW5pdGlvbiwgQ2F0ZWdvcnksIE5vZGUgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQsIENvbnN0cmFpbnRWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVsL2FjdGlvbi1wYXJhbWV0ZXItY29uc3RyYWludC5tb2RlbCc7XG5pbXBvcnQge1xuICBDYXRlZ29yeVNlcnZpY2UsXG4gIENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsXG4gIENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhLFxuICBOb2RlQWN0aW9uLFxuICBUYWdTZXJ2aWNlLFxuICBDYXRlZ29yeVNlbGVjdG9yRGlhbG9nQ29tcG9uZW50LFxuICBDYXRlZ29yeVNlbGVjdG9yRGlhbG9nT3B0aW9uc1xufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsIENhcmRWaWV3TW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdhY2EtcnVsZS1hY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcnVsZS1hY3Rpb24udWktY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydWxlLWFjdGlvbi51aS1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXJ1bGUtYWN0aW9uJyB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUnVsZUFjdGlvblVpQ29tcG9uZW50KVxuICAgIH0sXG4gICAgQ2FyZFZpZXdVcGRhdGVTZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUnVsZUFjdGlvblVpQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBub2RlSWQgPSAnJztcblxuICBASW5wdXQoKVxuICBhY3Rpb25EZWZpbml0aW9uczogQWN0aW9uRGVmaW5pdGlvblRyYW5zZm9ybWVkW107XG5cbiAgQElucHV0KClcbiAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICBwcml2YXRlIF9wYXJhbWV0ZXJDb25zdHJhaW50cyA9IFtdO1xuICBASW5wdXQoKVxuICBnZXQgcGFyYW1ldGVyQ29uc3RyYWludHMoKTogQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludFtdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1ldGVyQ29uc3RyYWludHM7XG4gIH1cblxuICBzZXQgcGFyYW1ldGVyQ29uc3RyYWludHModmFsdWUpIHtcbiAgICB0aGlzLl9wYXJhbWV0ZXJDb25zdHJhaW50cyA9IHZhbHVlLm1hcCgob2JqKSA9PiAoe1xuICAgICAgLi4ub2JqLFxuICAgICAgY29uc3RyYWludHM6IHRoaXMucGFyc2VDb25zdHJhaW50c1RvU2VsZWN0T3B0aW9ucyhvYmouY29uc3RyYWludHMpXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0YWdzUmVsYXRlZFByb3BlcnRpZXNBbmRBc3BlY3RzID0gWydjbTp0YWdzY29wZScsICdjbTp0YWdTY29wZUNhY2hlJywgJ2NtOnRhZ2dhYmxlJ107XG4gIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcmllc1JlbGF0ZWRQcm9wZXJ0aWVzQW5kQXNwZWN0cyA9IFsnY206Y2F0ZWdvcmllcycsICdjbTpnZW5lcmFsY2xhc3NpZmlhYmxlJ107XG5cbiAgaXNGdWxsV2lkdGggPSBmYWxzZTtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgYWN0aW9uRGVmaW5pdGlvbklkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gIH0pO1xuXG4gIGNhcmRWaWV3SXRlbXM6IENhcmRWaWV3SXRlbVtdID0gW107XG4gIHBhcmFtZXRlcnM6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9ID0ge307XG4gIHByaXZhdGUgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgZ2V0IHNlbGVjdGVkQWN0aW9uRGVmaW5pdGlvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2FjdGlvbkRlZmluaXRpb25JZCcpLnZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkQWN0aW9uRGVmaW5pdGlvbigpOiBBY3Rpb25EZWZpbml0aW9uVHJhbnNmb3JtZWQge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbkRlZmluaXRpb25zLmZpbmQoKGFjdGlvbkRlZmluaXRpb246IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCkgPT4gYWN0aW9uRGVmaW5pdGlvbi5pZCA9PT0gdGhpcy5zZWxlY3RlZEFjdGlvbkRlZmluaXRpb25JZCk7XG4gIH1cblxuICBvbkNoYW5nZTogKGFjdGlvbjogUnVsZUFjdGlvbikgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgb25Ub3VjaDogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNhcmRWaWV3VXBkYXRlU2VydmljZTogQ2FyZFZpZXdVcGRhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWdTZXJ2aWNlOiBUYWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2VcbiAgKSB7fVxuXG4gIHdyaXRlVmFsdWUoYWN0aW9uOiBSdWxlQWN0aW9uKSB7XG4gICAgdGhpcy5mb3JtLnNldFZhbHVlKHtcbiAgICAgIGFjdGlvbkRlZmluaXRpb25JZDogYWN0aW9uLmFjdGlvbkRlZmluaXRpb25JZFxuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IHtcbiAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgIC4uLmFjdGlvbi5wYXJhbXNcbiAgICB9O1xuICAgIHRoaXMuc2V0Q2FyZFZpZXdQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoYWN0aW9uOiBSdWxlQWN0aW9uKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hY3Rpb25EZWZpbml0aW9ucyA9IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMuc29ydCgoZmlyc3RBY3Rpb25EZWZpbml0aW9uLCBzZWNvbmRBY3Rpb25EZWZpbml0aW9uKSA9PlxuICAgICAgZmlyc3RBY3Rpb25EZWZpbml0aW9uLnRpdGxlLmxvY2FsZUNvbXBhcmUoc2Vjb25kQWN0aW9uRGVmaW5pdGlvbi50aXRsZSlcbiAgICApO1xuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXREZWZhdWx0UGFyYW1ldGVycygpO1xuICAgICAgdGhpcy5zZXRDYXJkVmlld1Byb3BlcnRpZXMoKTtcbiAgICAgIHRoaXMub25DaGFuZ2Uoe1xuICAgICAgICBhY3Rpb25EZWZpbml0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uSWQsXG4gICAgICAgIHBhcmFtczogdGhpcy5wYXJhbWV0ZXJzXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jYXJkVmlld1VwZGF0ZVNlcnZpY2UuaXRlbVVwZGF0ZWQkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgodXBkYXRlTm90aWZpY2F0aW9uOiBVcGRhdGVOb3RpZmljYXRpb24pID0+IHtcbiAgICAgIHRoaXMucGFyYW1ldGVycyA9IHRoaXMuY2xlYXJFbXB0eVBhcmFtZXRlcnMoe1xuICAgICAgICAuLi50aGlzLnBhcmFtZXRlcnMsXG4gICAgICAgIC4uLnVwZGF0ZU5vdGlmaWNhdGlvbi5jaGFuZ2VkXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25DaGFuZ2Uoe1xuICAgICAgICBhY3Rpb25EZWZpbml0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uSWQsXG4gICAgICAgIHBhcmFtczogdGhpcy5wYXJhbWV0ZXJzXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHJlYWRPbmx5ID0gY2hhbmdlc1sncmVhZE9ubHknXT8uY3VycmVudFZhbHVlO1xuICAgIGlmIChyZWFkT25seSAhPT0gdW5kZWZpbmVkICYmIHJlYWRPbmx5ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUocmVhZE9ubHkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzZXRDYXJkVmlld1Byb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgZGlzYWJsZWRUYWdzID0gIXRoaXMudGFnU2VydmljZS5hcmVUYWdzRW5hYmxlZCgpO1xuICAgIGNvbnN0IGRpc2FibGVkQ2F0ZWdvcmllcyA9ICF0aGlzLmNhdGVnb3J5U2VydmljZS5hcmVDYXRlZ29yaWVzRW5hYmxlZCgpO1xuICAgIHRoaXMuY2FyZFZpZXdJdGVtcyA9ICh0aGlzLnNlbGVjdGVkQWN0aW9uRGVmaW5pdGlvbj8ucGFyYW1ldGVyRGVmaW5pdGlvbnMgPz8gW10pLm1hcCgocGFyYW1EZWYpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRzRm9yRHJvcGRvd25Cb3ggPSB0aGlzLl9wYXJhbWV0ZXJDb25zdHJhaW50cy5maW5kKChvYmopID0+IG9iai5uYW1lID09PSBwYXJhbURlZi5uYW1lKTtcbiAgICAgIGNvbnN0IGNhcmRWaWV3UHJvcGVydGllc01vZGVsID0ge1xuICAgICAgICBsYWJlbDogcGFyYW1EZWYuZGlzcGxheUxhYmVsICsgKHBhcmFtRGVmLm1hbmRhdG9yeSA/ICcgKicgOiAnJyksXG4gICAgICAgIGtleTogcGFyYW1EZWYubmFtZSxcbiAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgIC4uLihwYXJhbURlZi5tYW5kYXRvcnlcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5FUlJPUi5SRVFVSVJFRCcsXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiAodmFsdWU6IHVua25vd24pID0+ICEhdmFsdWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9KVxuICAgICAgfTtcbiAgICAgIHN3aXRjaCAocGFyYW1EZWYudHlwZSkge1xuICAgICAgICBjYXNlICdkOmJvb2xlYW4nOlxuICAgICAgICAgIHJldHVybiBuZXcgQ2FyZFZpZXdCb29sSXRlbU1vZGVsKHtcbiAgICAgICAgICAgIC4uLmNhcmRWaWV3UHJvcGVydGllc01vZGVsLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMucGFyYW1ldGVyc1twYXJhbURlZi5uYW1lXSA/PyBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdkOm5vZGVyZWYnOlxuICAgICAgICAgIGlmICghY29uc3RyYWludHNGb3JEcm9wZG93bkJveCAmJiAhdGhpcy5yZWFkT25seSAmJiBwYXJhbURlZi5uYW1lICE9PSAnY2F0ZWdvcnktdmFsdWUnKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgIC4uLmNhcmRWaWV3UHJvcGVydGllc01vZGVsLFxuICAgICAgICAgICAgICBpY29uOiAnZm9sZGVyJyxcbiAgICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgICAgICAgIGNsaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY2xpY2tDYWxsQmFjazogdGhpcy5vcGVuU2VsZWN0b3JEaWFsb2cuYmluZCh0aGlzLCBwYXJhbURlZi5uYW1lKSxcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMucGFyYW1ldGVyc1twYXJhbURlZi5uYW1lXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChwYXJhbURlZi5uYW1lID09PSAnY2F0ZWdvcnktdmFsdWUnICYmICF0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgIC4uLmNhcmRWaWV3UHJvcGVydGllc01vZGVsLFxuICAgICAgICAgICAgICBpY29uOiAnbGlicmFyeV9hZGQnLFxuICAgICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBjbGlja0NhbGxCYWNrOiB0aGlzLm9wZW5DYXREaWFsb2cuYmluZCh0aGlzLCBwYXJhbURlZi5uYW1lKSxcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMucGFyYW1ldGVyc1twYXJhbURlZi5uYW1lXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAvLyAgZmFsbHMgdGhyb3VnaFxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChjb25zdHJhaW50c0ZvckRyb3Bkb3duQm94ICYmICF0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENhcmRWaWV3U2VsZWN0SXRlbU1vZGVsKHtcbiAgICAgICAgICAgICAgLi4uY2FyZFZpZXdQcm9wZXJ0aWVzTW9kZWwsXG4gICAgICAgICAgICAgIHZhbHVlOiAodGhpcy5wYXJhbWV0ZXJzW3BhcmFtRGVmLm5hbWVdIGFzIHN0cmluZykgPz8gJycsXG4gICAgICAgICAgICAgIG9wdGlvbnMkOiBvZihjb25zdHJhaW50c0ZvckRyb3Bkb3duQm94LmNvbnN0cmFpbnRzKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAob3B0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGlzYWJsZWRUYWdzICYmIHRoaXMudGFnc1JlbGF0ZWRQcm9wZXJ0aWVzQW5kQXNwZWN0cy5pbmNsdWRlcyhvcHRpb24ua2V5KSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChkaXNhYmxlZENhdGVnb3JpZXMgJiYgdGhpcy5jYXRlZ29yaWVzUmVsYXRlZFByb3BlcnRpZXNBbmRBc3BlY3RzLmluY2x1ZGVzKG9wdGlvbi5rZXkpKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgQ2FyZFZpZXdUZXh0SXRlbU1vZGVsKHtcbiAgICAgICAgICAgIC4uLmNhcmRWaWV3UHJvcGVydGllc01vZGVsLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMucGFyYW1ldGVyc1twYXJhbURlZi5uYW1lXSA/PyAnJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuU2VsZWN0b3JEaWFsb2cocGFyYW1EZWZOYW1lKSB7XG4gICAgY29uc3QgZGF0YTogQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudERhdGEgPSB7XG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuUExBQ0VIT0xERVIuQ0hPT1NFX0ZPTERFUicpLFxuICAgICAgYWN0aW9uTmFtZTogTm9kZUFjdGlvbi5DSE9PU0UsXG4gICAgICBjdXJyZW50Rm9sZGVySWQ6IHRoaXMubm9kZUlkLFxuICAgICAgc2VsZWN0OiBuZXcgU3ViamVjdDxOb2RlW10+KClcbiAgICB9O1xuXG4gICAgdGhpcy5kaWFsb2cub3BlbihDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50LCB7XG4gICAgICBkYXRhLFxuICAgICAgcGFuZWxDbGFzczogJ2FkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItZGlhbG9nJyxcbiAgICAgIHdpZHRoOiAnNjMwcHgnXG4gICAgfSk7XG5cbiAgICBkYXRhLnNlbGVjdC5zdWJzY3JpYmUoXG4gICAgICAoc2VsZWN0aW9uczogTm9kZVtdKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3Rpb25zWzBdLmlkKSB7XG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHtcbiAgICAgICAgICAgIGFjdGlvbkRlZmluaXRpb25JZDogdGhpcy5zZWxlY3RlZEFjdGlvbkRlZmluaXRpb25JZCxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAuLi50aGlzLnBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgIFtwYXJhbURlZk5hbWVdOiBzZWxlY3Rpb25zWzBdLmlkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh7XG4gICAgICAgICAgICBhY3Rpb25EZWZpbml0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uSWQsXG4gICAgICAgICAgICBwYXJhbXM6IHRoaXMucGFyYW1ldGVyc1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2F0RGlhbG9nKHBhcmFtRGVmTmFtZSkge1xuICAgIGNvbnN0IGRhdGE6IENhdGVnb3J5U2VsZWN0b3JEaWFsb2dPcHRpb25zID0ge1xuICAgICAgc2VsZWN0OiBuZXcgU3ViamVjdDxDYXRlZ29yeVtdPigpLFxuICAgICAgbXVsdGlTZWxlY3Q6IGZhbHNlXG4gICAgfTtcblxuICAgIHRoaXMuZGlhbG9nLm9wZW4oQ2F0ZWdvcnlTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YSxcbiAgICAgIHdpZHRoOiAnNjMwcHgnXG4gICAgfSk7XG5cbiAgICBkYXRhLnNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHNlbGVjdGlvbnM6IENhdGVnb3J5W10pID0+IHtcbiAgICAgIGlmIChzZWxlY3Rpb25zWzBdLmlkKSB7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh7XG4gICAgICAgICAgYWN0aW9uRGVmaW5pdGlvbklkOiB0aGlzLnNlbGVjdGVkQWN0aW9uRGVmaW5pdGlvbklkLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgLi4udGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgICAgICAgW3BhcmFtRGVmTmFtZV06IHNlbGVjdGlvbnNbMF0uaWRcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHtcbiAgICAgICAgICBhY3Rpb25EZWZpbml0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uSWQsXG4gICAgICAgICAgcGFyYW1zOiB0aGlzLnBhcmFtZXRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0RGVmYXVsdFBhcmFtZXRlcnMoKSB7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0ge307XG4gICAgKHRoaXMuc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uPy5wYXJhbWV0ZXJEZWZpbml0aW9ucyA/PyBbXSkuZm9yRWFjaCgocGFyYW1EZWY6IEFjdGlvblBhcmFtZXRlckRlZmluaXRpb24pID0+IHtcbiAgICAgIGlmIChwYXJhbURlZi50eXBlID09PSAnZDpib29sZWFuJykge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNbcGFyYW1EZWYubmFtZV0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVhZE9ubHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlQ29uc3RyYWludHNUb1NlbGVjdE9wdGlvbnMoY29uc3RyYWludHM6IENvbnN0cmFpbnRWYWx1ZVtdKTogQ2FyZFZpZXdTZWxlY3RJdGVtT3B0aW9uPHVua25vd24+W10ge1xuICAgIHJldHVybiBjb25zdHJhaW50c1xuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKCFhLmxhYmVsICYmIGIubGFiZWwpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWIubGFiZWwgJiYgYS5sYWJlbCkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYS5sYWJlbD8ubG9jYWxlQ29tcGFyZShiLmxhYmVsKSA/PyAtMTtcbiAgICAgIH0pXG4gICAgICAubWFwKChjb25zdHJhaW50KSA9PiAoe1xuICAgICAgICBrZXk6IGNvbnN0cmFpbnQudmFsdWUsXG4gICAgICAgIGxhYmVsOiBjb25zdHJhaW50LmxhYmVsID8gYCR7Y29uc3RyYWludC5sYWJlbH0gWyR7Y29uc3RyYWludC52YWx1ZX1dYCA6IGNvbnN0cmFpbnQudmFsdWVcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJFbXB0eVBhcmFtZXRlcnMocGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSk6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IHtcbiAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4gKHBhcmFtc1trZXldID09PSBudWxsIHx8IHBhcmFtc1trZXldID09PSB1bmRlZmluZWQgfHwgcGFyYW1zW2tleV0gPT09ICcnKSAmJiBkZWxldGUgcGFyYW1zW2tleV0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cbiIsIjxmb3JtIGNsYXNzPVwiYWNhLXJ1bGUtYWN0aW9uX19mb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYWNhLXJ1bGUtYWN0aW9uLWZ1bGwtd2lkdGhcIiBhcHBlYXJhbmNlPVwic3RhbmRhcmRcIj5cbiAgICA8bWF0LXNlbGVjdFxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWN0aW9uRGVmaW5pdGlvbklkXCJcbiAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJ1bGUtYWN0aW9uLXNlbGVjdFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkFDVElPTl9TRUxFQ1RfUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8bWF0LW9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uRGVmaW5pdGlvbiBvZiBhY3Rpb25EZWZpbml0aW9uc1wiXG4gICAgICAgIFt2YWx1ZV09XCJhY3Rpb25EZWZpbml0aW9uLmlkXCI+XG4gICAgICAgIHt7IGFjdGlvbkRlZmluaXRpb24udGl0bGUgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPGFkZi1jYXJkLXZpZXdcbiAgICAqbmdJZj1cImNhcmRWaWV3SXRlbXM/Lmxlbmd0aCA+IDBcIlxuICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJ1bGUtYWN0aW9uLWNhcmQtdmlld1wiXG4gICAgW3Byb3BlcnRpZXNdPVwiY2FyZFZpZXdJdGVtc1wiXG4gICAgY2xhc3M9XCJhY2EtcnVsZS1hY3Rpb24tZnVsbC13aWR0aFwiXG4gICAgW2VkaXRhYmxlXT1cIiFyZWFkT25seVwiPlxuICA8L2FkZi1jYXJkLXZpZXc+XG5cbjwvZm9ybT5cbiJdfQ==
|
|
354
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1hY3Rpb24udWktY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvZm9sZGVyLXJ1bGVzL3NyYy9ydWxlLWRldGFpbHMvYWN0aW9ucy9ydWxlLWFjdGlvbi51aS1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL3J1bGUtZGV0YWlscy9hY3Rpb25zL3J1bGUtYWN0aW9uLnVpLWNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUErQyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEksT0FBTyxFQUNMLHFCQUFxQixFQUVyQixjQUFjLEVBQ2QsdUJBQXVCLEVBRXZCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFdEIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLDRCQUE0QixFQUU1QixVQUFVLEVBQ1YsVUFBVSxFQUNWLCtCQUErQixFQUUvQix1QkFBdUIsRUFDeEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBbUIzRCxNQUFNLE9BQU8scUJBQXFCO0lBZ0RoQyxZQUNVLHFCQUE0QyxFQUM1QyxNQUFpQixFQUNqQixTQUEyQixFQUMzQixVQUFzQixFQUN0QixlQUFnQyxFQUNoQyx1QkFBZ0Q7UUFMaEQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFwRDFELFdBQU0sR0FBRyxFQUFFLENBQUM7UUFNWixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVQsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBYWxCLG9DQUErQixHQUFHLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3JGLDBDQUFxQyxHQUFHLENBQUMsZUFBZSxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFDcEYsaUNBQTRCLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXRGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNuQixrQkFBa0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUM3RCxDQUFDLENBQUM7UUFFSCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsZUFBVSxHQUErQixFQUFFLENBQUM7UUFDcEMsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFVNUMsYUFBUSxHQUFpQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDekQsWUFBTyxHQUFlLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQVNuQyxDQUFDO0lBNUNKLElBQ0ksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLG9CQUFvQixDQUFDLEtBQUs7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0MsR0FBRyxHQUFHO1lBQ04sV0FBVyxFQUFFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1NBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQWdCRCxJQUFJLDBCQUEwQjtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLHdCQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBNkMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pKLENBQUM7SUFjRCxVQUFVLENBQUMsTUFBa0I7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtTQUM5QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLFVBQVU7WUFDbEIsR0FBRyxNQUFNLENBQUMsTUFBTTtTQUNqQixDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRTtZQUNwQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFnQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSxDQUNyRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUN4RSxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ1osa0JBQWtCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtnQkFDbkQsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQ3hCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxrQkFBc0MsRUFBRSxFQUFFO1lBQzVILE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxpQkFBaUIsQ0FBQztZQUNuRixJQUFJLHNCQUFzQixFQUFFO2dCQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7YUFDdkM7WUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztnQkFDMUMsR0FBRyxJQUFJLENBQUMsVUFBVTtnQkFDbEIsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPO2FBQzlCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ1osa0JBQWtCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtnQkFDbkQsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQ3hCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUVmLElBQUksc0JBQXNCLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsWUFBWSxDQUFDO1FBQ25ELElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxtQkFBd0Q7UUFDNUUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNoRyxNQUFNLHlCQUF5QixHQUM3QixRQUFRLENBQUMsSUFBSSxLQUFLLGdCQUFnQjtnQkFDaEMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixJQUFJLEVBQUUsRUFBRTtnQkFDakUsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNFLE1BQU0sdUJBQXVCLEdBQUc7Z0JBQzlCLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDbEIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTO29CQUNwQixDQUFDLENBQUM7d0JBQ0UsVUFBVSxFQUFFOzRCQUNWO2dDQUNFLE9BQU8sRUFBRSw4Q0FBOEM7Z0NBQ3ZELE9BQU8sRUFBRSxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUs7NkJBQ3JDO3lCQUNGO3FCQUNGO29CQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDUixDQUFDO1lBQ0YsUUFBUSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNyQixLQUFLLFdBQVc7b0JBQ2QsT0FBTyxJQUFJLHFCQUFxQixDQUFDO3dCQUMvQixHQUFHLHVCQUF1Qjt3QkFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUs7cUJBQy9DLENBQUMsQ0FBQztnQkFDTCxLQUFLLFdBQVc7b0JBQ2QsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFO3dCQUN0RixPQUFPLElBQUkscUJBQXFCLENBQUM7NEJBQy9CLEdBQUcsdUJBQXVCOzRCQUMxQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxPQUFPLEVBQUUsRUFBRTs0QkFDWCxTQUFTLEVBQUUsSUFBSTs0QkFDZixhQUFhLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQzs0QkFDaEUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt5QkFDdEMsQ0FBQyxDQUFDO3FCQUNKO3lCQUFNLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7d0JBQy9ELE9BQU8sSUFBSSxxQkFBcUIsQ0FBQzs0QkFDL0IsR0FBRyx1QkFBdUI7NEJBQzFCLElBQUksRUFBRSxhQUFhOzRCQUNuQixPQUFPLEVBQUUsRUFBRTs0QkFDWCxTQUFTLEVBQUUsSUFBSTs0QkFDZixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7eUJBQ3RDLENBQUMsQ0FBQztxQkFDSjtnQkFDSCxpQkFBaUI7Z0JBQ2pCO29CQUNFLElBQUkseUJBQXlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUMvQyxPQUFPLElBQUksdUJBQXVCLENBQUM7NEJBQ2pDLEdBQUcsdUJBQXVCOzRCQUMxQixLQUFLLEVBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFZLElBQUksRUFBRTs0QkFDdkQsUUFBUSxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dDQUNkLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FDbkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULENBQUMsQ0FDQyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsK0JBQStCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDM0UsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMscUNBQXFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUN4RixDQUNKLENBQUM7NEJBQ0osQ0FBQyxDQUFDLENBQ0g7eUJBQ0YsQ0FBQyxDQUFDO3FCQUNKO29CQUNELE9BQU8sSUFBSSxxQkFBcUIsQ0FBQzt3QkFDL0IsR0FBRyx1QkFBdUI7d0JBQzFCLEtBQUssRUFDSCx5QkFBeUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzs0QkFDckcsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRTs0QkFDNUgsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7cUJBQzNDLENBQUMsQ0FBQzthQUNOO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsWUFBWTtRQUNyQyxNQUFNLElBQUksR0FBcUM7WUFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHlEQUF5RCxDQUFDO1lBQ3hGLFVBQVUsRUFBRSxVQUFVLENBQUMsTUFBTTtZQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDNUIsTUFBTSxFQUFFLElBQUksT0FBTyxFQUFVO1NBQzlCLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRTtZQUM3QyxJQUFJO1lBQ0osVUFBVSxFQUFFLGtDQUFrQztZQUM5QyxLQUFLLEVBQUUsT0FBTztTQUNmLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUNuQixDQUFDLFVBQWtCLEVBQUUsRUFBRTtZQUNyQixJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBQ2Qsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtvQkFDbkQsTUFBTSxFQUFFO3dCQUNOLEdBQUcsSUFBSSxDQUFDLFVBQVU7d0JBQ2xCLENBQUMsWUFBWSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7cUJBQ2pDO2lCQUNGLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUNaLGtCQUFrQixFQUFFLElBQUksQ0FBQywwQkFBMEI7b0JBQ25ELE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtpQkFDeEIsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNoQjtRQUNILENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsWUFBWTtRQUNoQyxNQUFNLElBQUksR0FBa0M7WUFDMUMsTUFBTSxFQUFFLElBQUksT0FBTyxFQUFjO1lBQ2pDLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRTtZQUNoRCxJQUFJO1lBQ0osS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBc0IsRUFBRSxFQUFFO1lBQ2hGLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDZCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsMEJBQTBCO29CQUNuRCxNQUFNLEVBQUU7d0JBQ04sR0FBRyxJQUFJLENBQUMsVUFBVTt3QkFDbEIsQ0FBQyxZQUFZLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtxQkFDakM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ1osa0JBQWtCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtvQkFDbkQsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVO2lCQUN4QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQW1DLEVBQUUsRUFBRTtZQUMxRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDeEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDckI7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRU8sK0JBQStCLENBQUMsV0FBOEI7UUFDcEUsT0FBTyxXQUFXO2FBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDdkIsT0FBTyxDQUFDLENBQUM7YUFDVjtZQUNELElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDWDtZQUNELE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwQixHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUs7WUFDckIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLO1NBQ3pGLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQWtDO1FBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0SSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUU7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUF5QixDQUFDLENBQUM7aUJBQzFGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1RyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUF1QyxDQUFDLENBQUMsQ0FBQztTQUNwSTtJQUNILENBQUM7SUFFTyw0QkFBNEIsQ0FBQyxZQUEwQjtRQUM3RCxPQUFPO1lBQ0wsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFO1lBQ3RCLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSTtTQUN6QixDQUFDO0lBQ0osQ0FBQzs7a0hBNVVVLHFCQUFxQjtzR0FBckIscUJBQXFCLHFQQVRyQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7U0FDckQ7UUFDRCxxQkFBcUI7S0FDdEIsK0NDeEVILDJ6QkF3QkEsMFREbUNZLFlBQVksK1BBQUUsZUFBZSwyRkFBRSxtQkFBbUIsNHJCQUFFLGtCQUFrQixzTkFBRSxlQUFlLHlRQUFFLGNBQWM7MkZBZXRHLHFCQUFxQjtrQkFqQmpDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLFlBQ3hHLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLGFBQ3ZCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDO3lCQUNyRDt3QkFDRCxxQkFBcUI7cUJBQ3RCO2dRQUlELE1BQU07c0JBREwsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUtGLG9CQUFvQjtzQkFEdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aW9uRGVmaW5pdGlvblRyYW5zZm9ybWVkLCBSdWxlQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvcnVsZS1hY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHtcbiAgQ2FyZFZpZXdCb29sSXRlbU1vZGVsLFxuICBDYXJkVmlld0l0ZW0sXG4gIENhcmRWaWV3TW9kdWxlLFxuICBDYXJkVmlld1NlbGVjdEl0ZW1Nb2RlbCxcbiAgQ2FyZFZpZXdTZWxlY3RJdGVtT3B0aW9uLFxuICBDYXJkVmlld1RleHRJdGVtTW9kZWwsXG4gIENhcmRWaWV3VXBkYXRlU2VydmljZSxcbiAgVXBkYXRlTm90aWZpY2F0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25QYXJhbWV0ZXJEZWZpbml0aW9uLCBDYXRlZ29yeSwgTm9kZSwgU2VjdXJpdHlNYXJrIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBmcm9tLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50LCBDb25zdHJhaW50VmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbC9hY3Rpb24tcGFyYW1ldGVyLWNvbnN0cmFpbnQubW9kZWwnO1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcnlTZXJ2aWNlLFxuICBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50LFxuICBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50RGF0YSxcbiAgTm9kZUFjdGlvbixcbiAgVGFnU2VydmljZSxcbiAgQ2F0ZWdvcnlTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCxcbiAgQ2F0ZWdvcnlTZWxlY3RvckRpYWxvZ09wdGlvbnMsXG4gIFNlY3VyaXR5Q29udHJvbHNTZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgQ2FyZFZpZXdNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2FjYS1ydWxlLWFjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ydWxlLWFjdGlvbi51aS1jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3J1bGUtYWN0aW9uLnVpLWNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtcnVsZS1hY3Rpb24nIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSdWxlQWN0aW9uVWlDb21wb25lbnQpXG4gICAgfSxcbiAgICBDYXJkVmlld1VwZGF0ZVNlcnZpY2VcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSdWxlQWN0aW9uVWlDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIG5vZGVJZCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGFjdGlvbkRlZmluaXRpb25zOiBBY3Rpb25EZWZpbml0aW9uVHJhbnNmb3JtZWRbXTtcblxuICBASW5wdXQoKVxuICByZWFkT25seSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3BhcmFtZXRlckNvbnN0cmFpbnRzID0gW107XG4gIEBJbnB1dCgpXG4gIGdldCBwYXJhbWV0ZXJDb25zdHJhaW50cygpOiBBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50W10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJDb25zdHJhaW50cztcbiAgfVxuXG4gIHNldCBwYXJhbWV0ZXJDb25zdHJhaW50cyh2YWx1ZSkge1xuICAgIHRoaXMuX3BhcmFtZXRlckNvbnN0cmFpbnRzID0gdmFsdWUubWFwKChvYmopID0+ICh7XG4gICAgICAuLi5vYmosXG4gICAgICBjb25zdHJhaW50czogdGhpcy5wYXJzZUNvbnN0cmFpbnRzVG9TZWxlY3RPcHRpb25zKG9iai5jb25zdHJhaW50cylcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHRhZ3NSZWxhdGVkUHJvcGVydGllc0FuZEFzcGVjdHMgPSBbJ2NtOnRhZ3Njb3BlJywgJ2NtOnRhZ1Njb3BlQ2FjaGUnLCAnY206dGFnZ2FibGUnXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yaWVzUmVsYXRlZFByb3BlcnRpZXNBbmRBc3BlY3RzID0gWydjbTpjYXRlZ29yaWVzJywgJ2NtOmdlbmVyYWxjbGFzc2lmaWFibGUnXTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJhbXNUb0Zvcm1hdERpc3BsYXllZFZhbHVlID0gWydzZWN1cml0eU1hcmtJZCcsICdzZWN1cml0eUdyb3VwSWQnXTtcblxuICBpc0Z1bGxXaWR0aCA9IGZhbHNlO1xuXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBhY3Rpb25EZWZpbml0aW9uSWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgfSk7XG5cbiAgY2FyZFZpZXdJdGVtczogQ2FyZFZpZXdJdGVtW10gPSBbXTtcbiAgcGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gPSB7fTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBnZXQgc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnYWN0aW9uRGVmaW5pdGlvbklkJykudmFsdWU7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uKCk6IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMuZmluZCgoYWN0aW9uRGVmaW5pdGlvbjogQWN0aW9uRGVmaW5pdGlvblRyYW5zZm9ybWVkKSA9PiBhY3Rpb25EZWZpbml0aW9uLmlkID09PSB0aGlzLnNlbGVjdGVkQWN0aW9uRGVmaW5pdGlvbklkKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAoYWN0aW9uOiBSdWxlQWN0aW9uKSA9PiB2b2lkID0gKCkgPT4gdW5kZWZpbmVkO1xuICBvblRvdWNoOiAoKSA9PiB2b2lkID0gKCkgPT4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2FyZFZpZXdVcGRhdGVTZXJ2aWNlOiBDYXJkVmlld1VwZGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRhZ1NlcnZpY2U6IFRhZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXRlZ29yeVNlcnZpY2U6IENhdGVnb3J5U2VydmljZSxcbiAgICBwcml2YXRlIHNlY3VyaXR5Q29udHJvbHNTZXJ2aWNlOiBTZWN1cml0eUNvbnRyb2xzU2VydmljZVxuICApIHt9XG5cbiAgd3JpdGVWYWx1ZShhY3Rpb246IFJ1bGVBY3Rpb24pIHtcbiAgICB0aGlzLmZvcm0uc2V0VmFsdWUoe1xuICAgICAgYWN0aW9uRGVmaW5pdGlvbklkOiBhY3Rpb24uYWN0aW9uRGVmaW5pdGlvbklkXG4gICAgfSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0ge1xuICAgICAgLi4udGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgLi4uYWN0aW9uLnBhcmFtc1xuICAgIH07XG4gICAgdGhpcy5zZXRDYXJkVmlld1Byb3BlcnRpZXMoKTtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzPy5zZWN1cml0eUdyb3VwSWQpIHtcbiAgICAgIHRoaXMubG9hZFNlY3VyaXR5TWFya09wdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoYWN0aW9uOiBSdWxlQWN0aW9uKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hY3Rpb25EZWZpbml0aW9ucyA9IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMuc29ydCgoZmlyc3RBY3Rpb25EZWZpbml0aW9uLCBzZWNvbmRBY3Rpb25EZWZpbml0aW9uKSA9PlxuICAgICAgZmlyc3RBY3Rpb25EZWZpbml0aW9uLnRpdGxlLmxvY2FsZUNvbXBhcmUoc2Vjb25kQWN0aW9uRGVmaW5pdGlvbi50aXRsZSlcbiAgICApO1xuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXREZWZhdWx0UGFyYW1ldGVycygpO1xuICAgICAgdGhpcy5zZXRDYXJkVmlld1Byb3BlcnRpZXMoKTtcbiAgICAgIHRoaXMub25DaGFuZ2Uoe1xuICAgICAgICBhY3Rpb25EZWZpbml0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uSWQsXG4gICAgICAgIHBhcmFtczogdGhpcy5wYXJhbWV0ZXJzXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jYXJkVmlld1VwZGF0ZVNlcnZpY2UuaXRlbVVwZGF0ZWQkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgodXBkYXRlTm90aWZpY2F0aW9uOiBVcGRhdGVOb3RpZmljYXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGlzU2VjdXJpdHlHcm91cFVwZGF0ZWQgPSB1cGRhdGVOb3RpZmljYXRpb24udGFyZ2V0LmtleSA9PT0gJ3NlY3VyaXR5R3JvdXBJZCc7XG4gICAgICBpZiAoaXNTZWN1cml0eUdyb3VwVXBkYXRlZCkge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2VjdXJpdHlNYXJrSWQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSB0aGlzLmNsZWFyRW1wdHlQYXJhbWV0ZXJzKHtcbiAgICAgICAgLi4udGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgICAuLi51cGRhdGVOb3RpZmljYXRpb24uY2hhbmdlZFxuICAgICAgfSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHtcbiAgICAgICAgYWN0aW9uRGVmaW5pdGlvbklkOiB0aGlzLnNlbGVjdGVkQWN0aW9uRGVmaW5pdGlvbklkLFxuICAgICAgICBwYXJhbXM6IHRoaXMucGFyYW1ldGVyc1xuICAgICAgfSk7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcblxuICAgICAgaWYgKGlzU2VjdXJpdHlHcm91cFVwZGF0ZWQpIHtcbiAgICAgICAgdGhpcy5zZXRDYXJkVmlld1Byb3BlcnRpZXMoKTtcbiAgICAgICAgdGhpcy5sb2FkU2VjdXJpdHlNYXJrT3B0aW9ucygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHJlYWRPbmx5ID0gY2hhbmdlc1sncmVhZE9ubHknXT8uY3VycmVudFZhbHVlO1xuICAgIGlmIChyZWFkT25seSAhPT0gdW5kZWZpbmVkICYmIHJlYWRPbmx5ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUocmVhZE9ubHkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzZXRDYXJkVmlld1Byb3BlcnRpZXMoc2VjdXJpdHlNYXJrT3B0aW9ucz86IENhcmRWaWV3U2VsZWN0SXRlbU9wdGlvbjxzdHJpbmc+W10pIHtcbiAgICBjb25zdCBkaXNhYmxlZFRhZ3MgPSAhdGhpcy50YWdTZXJ2aWNlLmFyZVRhZ3NFbmFibGVkKCk7XG4gICAgY29uc3QgZGlzYWJsZWRDYXRlZ29yaWVzID0gIXRoaXMuY2F0ZWdvcnlTZXJ2aWNlLmFyZUNhdGVnb3JpZXNFbmFibGVkKCk7XG4gICAgdGhpcy5jYXJkVmlld0l0ZW1zID0gKHRoaXMuc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uPy5wYXJhbWV0ZXJEZWZpbml0aW9ucyA/PyBbXSkubWFwKChwYXJhbURlZikgPT4ge1xuICAgICAgY29uc3QgY29uc3RyYWludHNGb3JEcm9wZG93bkJveCA9XG4gICAgICAgIHBhcmFtRGVmLm5hbWUgPT09ICdzZWN1cml0eU1hcmtJZCdcbiAgICAgICAgICA/IHsgbmFtZTogcGFyYW1EZWYubmFtZSwgY29uc3RyYWludHM6IHNlY3VyaXR5TWFya09wdGlvbnMgfHwgW10gfVxuICAgICAgICAgIDogdGhpcy5fcGFyYW1ldGVyQ29uc3RyYWludHMuZmluZCgob2JqKSA9PiBvYmoubmFtZSA9PT0gcGFyYW1EZWYubmFtZSk7XG4gICAgICBjb25zdCBjYXJkVmlld1Byb3BlcnRpZXNNb2RlbCA9IHtcbiAgICAgICAgbGFiZWw6IHBhcmFtRGVmLmRpc3BsYXlMYWJlbCArIChwYXJhbURlZi5tYW5kYXRvcnkgPyAnIConIDogJycpLFxuICAgICAgICBrZXk6IHBhcmFtRGVmLm5hbWUsXG4gICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAuLi4ocGFyYW1EZWYubWFuZGF0b3J5XG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuRVJST1IuUkVRVUlSRUQnLFxuICAgICAgICAgICAgICAgICAgaXNWYWxpZDogKHZhbHVlOiB1bmtub3duKSA9PiAhIXZhbHVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSlcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHBhcmFtRGVmLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnZDpib29sZWFuJzpcbiAgICAgICAgICByZXR1cm4gbmV3IENhcmRWaWV3Qm9vbEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAuLi5jYXJkVmlld1Byb3BlcnRpZXNNb2RlbCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnBhcmFtZXRlcnNbcGFyYW1EZWYubmFtZV0gPz8gZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnZDpub2RlcmVmJzpcbiAgICAgICAgICBpZiAoIWNvbnN0cmFpbnRzRm9yRHJvcGRvd25Cb3ggJiYgIXRoaXMucmVhZE9ubHkgJiYgcGFyYW1EZWYubmFtZSAhPT0gJ2NhdGVnb3J5LXZhbHVlJykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDYXJkVmlld1RleHRJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAuLi5jYXJkVmlld1Byb3BlcnRpZXNNb2RlbCxcbiAgICAgICAgICAgICAgaWNvbjogJ2ZvbGRlcicsXG4gICAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXG4gICAgICAgICAgICAgIGNsaWNrQ2FsbEJhY2s6IHRoaXMub3BlblNlbGVjdG9yRGlhbG9nLmJpbmQodGhpcywgcGFyYW1EZWYubmFtZSksXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnBhcmFtZXRlcnNbcGFyYW1EZWYubmFtZV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1EZWYubmFtZSA9PT0gJ2NhdGVnb3J5LXZhbHVlJyAmJiAhdGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDYXJkVmlld1RleHRJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAuLi5jYXJkVmlld1Byb3BlcnRpZXNNb2RlbCxcbiAgICAgICAgICAgICAgaWNvbjogJ2xpYnJhcnlfYWRkJyxcbiAgICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgICAgICAgIGNsaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY2xpY2tDYWxsQmFjazogdGhpcy5vcGVuQ2F0RGlhbG9nLmJpbmQodGhpcywgcGFyYW1EZWYubmFtZSksXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnBhcmFtZXRlcnNbcGFyYW1EZWYubmFtZV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgLy8gIGZhbGxzIHRocm91Z2hcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoY29uc3RyYWludHNGb3JEcm9wZG93bkJveCAmJiAhdGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDYXJkVmlld1NlbGVjdEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgIC4uLmNhcmRWaWV3UHJvcGVydGllc01vZGVsLFxuICAgICAgICAgICAgICB2YWx1ZTogKHRoaXMucGFyYW1ldGVyc1twYXJhbURlZi5uYW1lXSBhcyBzdHJpbmcpID8/ICcnLFxuICAgICAgICAgICAgICBvcHRpb25zJDogb2YoY29uc3RyYWludHNGb3JEcm9wZG93bkJveC5jb25zdHJhaW50cykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKG9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGRpc2FibGVkVGFncyAmJiB0aGlzLnRhZ3NSZWxhdGVkUHJvcGVydGllc0FuZEFzcGVjdHMuaW5jbHVkZXMob3B0aW9uLmtleSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoZGlzYWJsZWRDYXRlZ29yaWVzICYmIHRoaXMuY2F0ZWdvcmllc1JlbGF0ZWRQcm9wZXJ0aWVzQW5kQXNwZWN0cy5pbmNsdWRlcyhvcHRpb24ua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAuLi5jYXJkVmlld1Byb3BlcnRpZXNNb2RlbCxcbiAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICBjb25zdHJhaW50c0ZvckRyb3Bkb3duQm94ICYmIHRoaXMucmVhZE9ubHkgJiYgdGhpcy5wYXJhbXNUb0Zvcm1hdERpc3BsYXllZFZhbHVlLmluY2x1ZGVzKHBhcmFtRGVmLm5hbWUpXG4gICAgICAgICAgICAgICAgPyBjb25zdHJhaW50c0ZvckRyb3Bkb3duQm94LmNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQua2V5ID09PSB0aGlzLnBhcmFtZXRlcnNbcGFyYW1EZWYubmFtZV0pPy5sYWJlbCA/PyAnJ1xuICAgICAgICAgICAgICAgIDogdGhpcy5wYXJhbWV0ZXJzW3BhcmFtRGVmLm5hbWVdID8/ICcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TZWxlY3RvckRpYWxvZyhwYXJhbURlZk5hbWUpIHtcbiAgICBjb25zdCBkYXRhOiBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5QTEFDRUhPTERFUi5DSE9PU0VfRk9MREVSJyksXG4gICAgICBhY3Rpb25OYW1lOiBOb2RlQWN0aW9uLkNIT09TRSxcbiAgICAgIGN1cnJlbnRGb2xkZXJJZDogdGhpcy5ub2RlSWQsXG4gICAgICBzZWxlY3Q6IG5ldyBTdWJqZWN0PE5vZGVbXT4oKVxuICAgIH07XG5cbiAgICB0aGlzLmRpYWxvZy5vcGVuKENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgIGRhdGEsXG4gICAgICBwYW5lbENsYXNzOiAnYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1kaWFsb2cnLFxuICAgICAgd2lkdGg6ICc2MzBweCdcbiAgICB9KTtcblxuICAgIGRhdGEuc2VsZWN0LnN1YnNjcmliZShcbiAgICAgIChzZWxlY3Rpb25zOiBOb2RlW10pID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGlvbnNbMF0uaWQpIHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoe1xuICAgICAgICAgICAgYWN0aW9uRGVmaW5pdGlvbklkOiB0aGlzLnNlbGVjdGVkQWN0aW9uRGVmaW5pdGlvbklkLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIC4uLnRoaXMucGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgW3BhcmFtRGVmTmFtZV06IHNlbGVjdGlvbnNbMF0uaWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHtcbiAgICAgICAgICAgIGFjdGlvbkRlZmluaXRpb25JZDogdGhpcy5zZWxlY3RlZEFjdGlvbkRlZmluaXRpb25JZCxcbiAgICAgICAgICAgIHBhcmFtczogdGhpcy5wYXJhbWV0ZXJzXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5DYXREaWFsb2cocGFyYW1EZWZOYW1lKSB7XG4gICAgY29uc3QgZGF0YTogQ2F0ZWdvcnlTZWxlY3RvckRpYWxvZ09wdGlvbnMgPSB7XG4gICAgICBzZWxlY3Q6IG5ldyBTdWJqZWN0PENhdGVnb3J5W10+KCksXG4gICAgICBtdWx0aVNlbGVjdDogZmFsc2VcbiAgICB9O1xuXG4gICAgdGhpcy5kaWFsb2cub3BlbihDYXRlZ29yeVNlbGVjdG9yRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhLFxuICAgICAgd2lkdGg6ICc2MzBweCdcbiAgICB9KTtcblxuICAgIGRhdGEuc2VsZWN0LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoc2VsZWN0aW9uczogQ2F0ZWdvcnlbXSkgPT4ge1xuICAgICAgaWYgKHNlbGVjdGlvbnNbMF0uaWQpIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHtcbiAgICAgICAgICBhY3Rpb25EZWZpbml0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRBY3Rpb25EZWZpbml0aW9uSWQsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAuLi50aGlzLnBhcmFtZXRlcnMsXG4gICAgICAgICAgICBbcGFyYW1EZWZOYW1lXTogc2VsZWN0aW9uc1swXS5pZFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2Uoe1xuICAgICAgICAgIGFjdGlvbkRlZmluaXRpb25JZDogdGhpcy5zZWxlY3RlZEFjdGlvbkRlZmluaXRpb25JZCxcbiAgICAgICAgICBwYXJhbXM6IHRoaXMucGFyYW1ldGVyc1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXREZWZhdWx0UGFyYW1ldGVycygpIHtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSB7fTtcbiAgICAodGhpcy5zZWxlY3RlZEFjdGlvbkRlZmluaXRpb24/LnBhcmFtZXRlckRlZmluaXRpb25zID8/IFtdKS5mb3JFYWNoKChwYXJhbURlZjogQWN0aW9uUGFyYW1ldGVyRGVmaW5pdGlvbikgPT4ge1xuICAgICAgaWYgKHBhcmFtRGVmLnR5cGUgPT09ICdkOmJvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVyc1twYXJhbURlZi5uYW1lXSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWFkT25seSA9IGZhbHNlO1xuICAgICAgdGhpcy5mb3JtLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VDb25zdHJhaW50c1RvU2VsZWN0T3B0aW9ucyhjb25zdHJhaW50czogQ29uc3RyYWludFZhbHVlW10pOiBDYXJkVmlld1NlbGVjdEl0ZW1PcHRpb248dW5rbm93bj5bXSB7XG4gICAgcmV0dXJuIGNvbnN0cmFpbnRzXG4gICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBpZiAoIWEubGFiZWwgJiYgYi5sYWJlbCkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYi5sYWJlbCAmJiBhLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhLmxhYmVsPy5sb2NhbGVDb21wYXJlKGIubGFiZWwpID8/IC0xO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKGNvbnN0cmFpbnQpID0+ICh7XG4gICAgICAgIGtleTogY29uc3RyYWludC52YWx1ZSxcbiAgICAgICAgbGFiZWw6IGNvbnN0cmFpbnQubGFiZWwgPyBgJHtjb25zdHJhaW50LmxhYmVsfSBbJHtjb25zdHJhaW50LnZhbHVlfV1gIDogY29uc3RyYWludC52YWx1ZVxuICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVtcHR5UGFyYW1ldGVycyhwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9KTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0ge1xuICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiAocGFyYW1zW2tleV0gPT09IG51bGwgfHwgcGFyYW1zW2tleV0gPT09IHVuZGVmaW5lZCB8fCBwYXJhbXNba2V5XSA9PT0gJycpICYmIGRlbGV0ZSBwYXJhbXNba2V5XSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGxvYWRTZWN1cml0eU1hcmtPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhcmFtZXRlcnM/LnNlY3VyaXR5R3JvdXBJZCkge1xuICAgICAgZnJvbSh0aGlzLnNlY3VyaXR5Q29udHJvbHNTZXJ2aWNlLmdldFNlY3VyaXR5TWFyayh0aGlzLnBhcmFtZXRlcnMuc2VjdXJpdHlHcm91cElkIGFzIHN0cmluZykpXG4gICAgICAgIC5waXBlKG1hcCgoc2VjdXJpdHlNYXJrcykgPT4gc2VjdXJpdHlNYXJrcy5lbnRyaWVzLm1hcCgoZW50cnkpID0+IHRoaXMuZm9ybWF0U2VjdXJpdHlNYXJrQ29uc3RyYWludChlbnRyeSkpKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB0aGlzLnNldENhcmRWaWV3UHJvcGVydGllcyh0aGlzLnBhcnNlQ29uc3RyYWludHNUb1NlbGVjdE9wdGlvbnMocmVzKSBhcyBDYXJkVmlld1NlbGVjdEl0ZW1PcHRpb248c3RyaW5nPltdKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRTZWN1cml0eU1hcmtDb25zdHJhaW50KHNlY3VyaXR5TWFyazogU2VjdXJpdHlNYXJrKTogQ29uc3RyYWludFZhbHVlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHNlY3VyaXR5TWFyay5pZCxcbiAgICAgIGxhYmVsOiBzZWN1cml0eU1hcmsubmFtZVxuICAgIH07XG4gIH1cbn1cbiIsIjxmb3JtIGNsYXNzPVwiYWNhLXJ1bGUtYWN0aW9uX19mb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYWNhLXJ1bGUtYWN0aW9uLWZ1bGwtd2lkdGhcIiBhcHBlYXJhbmNlPVwic3RhbmRhcmRcIj5cbiAgICA8bWF0LXNlbGVjdFxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWN0aW9uRGVmaW5pdGlvbklkXCJcbiAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJ1bGUtYWN0aW9uLXNlbGVjdFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkFDVElPTl9TRUxFQ1RfUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8bWF0LW9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uRGVmaW5pdGlvbiBvZiBhY3Rpb25EZWZpbml0aW9uc1wiXG4gICAgICAgIFt2YWx1ZV09XCJhY3Rpb25EZWZpbml0aW9uLmlkXCI+XG4gICAgICAgIHt7IGFjdGlvbkRlZmluaXRpb24udGl0bGUgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPGFkZi1jYXJkLXZpZXdcbiAgICAqbmdJZj1cImNhcmRWaWV3SXRlbXM/Lmxlbmd0aCA+IDBcIlxuICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJ1bGUtYWN0aW9uLWNhcmQtdmlld1wiXG4gICAgW3Byb3BlcnRpZXNdPVwiY2FyZFZpZXdJdGVtc1wiXG4gICAgY2xhc3M9XCJhY2EtcnVsZS1hY3Rpb24tZnVsbC13aWR0aFwiXG4gICAgW2VkaXRhYmxlXT1cIiFyZWFkT25seVwiPlxuICA8L2FkZi1jYXJkLXZpZXc+XG5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -76,7 +76,7 @@ export class SearchResultsComponent extends PageComponent {
|
|
|
76
76
|
.subscribe(([params, searchConfig]) => {
|
|
77
77
|
// eslint-disable-next-line no-prototype-builtins
|
|
78
78
|
this.searchedWord = params.hasOwnProperty(this.queryParamName) ? params[this.queryParamName] : null;
|
|
79
|
-
const query = this.formatSearchQuery(this.searchedWord, searchConfig['
|
|
79
|
+
const query = this.formatSearchQuery(this.searchedWord, searchConfig['app:fields']);
|
|
80
80
|
if (query) {
|
|
81
81
|
this.queryBuilder.userQuery = decodeURIComponent(query);
|
|
82
82
|
}
|
|
@@ -243,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
243
243
|
ExtensionsModule
|
|
244
244
|
], selector: 'aca-search-results', encapsulation: ViewEncapsulation.None, template: "<aca-page-layout>\n <div class=\"aca-page-layout-header\">\n <aca-search-input></aca-search-input>\n <div class=\"aca-search-toolbar-spacer\"></div>\n <aca-toolbar [items]=\"actions\"></aca-toolbar>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"aca-main-content\">\n <div class=\"adf-search-results\">\n <div class=\"adf-search-results__content\">\n <mat-progress-bar *ngIf=\"isLoading\" color=\"primary\" mode=\"indeterminate\" aria-live=\"polite\"> </mat-progress-bar>\n <div class=\"adf-search-results__content-header aca-content\">\n <div class=\"aca-content__filter-set\">\n <p>{{ 'APP.BROWSE.SEARCH.FILTER_SET' | translate }}</p>\n <adf-search-form></adf-search-form>\n </div>\n <mat-divider [vertical]=\"true\" class=\"aca-content__divider\"></mat-divider>\n <div class=\"aca-content__advanced-filters\">\n <div class=\"aca-content__advanced-filters--header\">\n <p>{{ 'APP.BROWSE.SEARCH.ADVANCED_FILTERS' | translate }}</p>\n <button\n mat-button\n adf-reset-search\n class=\"aca-content__reset-action\"\n title=\"{{ 'APP.BROWSE.SEARCH.RESET_ACTION' | translate }}\"\n [attr.aria-label]=\"'APP.BROWSE.SEARCH.RESET_ACTION' | translate \">\n {{ 'APP.BROWSE.SEARCH.RESET' | translate }}\n </button>\n </div>\n <adf-search-filter-chips></adf-search-filter-chips>\n </div>\n </div>\n\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [selectionMode]=\"'multiple'\"\n [sortingMode]=\"'server'\"\n [sorting]=\"sorting\"\n [imageResolver]=\"imageResolver\"\n [isResizingEnabled]=\"true\"\n [blurOnResize]=\"false\"\n [node]=\"$any(data)\"\n (node-dblclick)=\"handleNodeClick($event)\"\n >\n <data-columns>\n <data-column id=\"app.search.thumbnail\" key=\"$thumbnail\" type=\"image\" [sr-title]=\"'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL'\" [sortable]=\"false\">\n <ng-template let-context>\n <aca-custom-thumbnail-column [context]=\"context\"></aca-custom-thumbnail-column>\n </ng-template>\n\n <adf-data-column-header>\n <ng-template>\n <aca-search-action-menu (sortingSelected)=\"onSearchSortingUpdate($event)\"></aca-search-action-menu>\n </ng-template>\n </adf-data-column-header>\n </data-column>\n\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [id]=\"column.id\"\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n [isHidden]=\"column.isHidden\"\n [draggable]=\"column.draggable\"\n [resizable]=\"column.resizable\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [id]=\"column.id\"\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n [isHidden]=\"column.isHidden\"\n [draggable]=\"column.draggable\"\n [resizable]=\"column.resizable\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template>\n <ng-container *ngIf=\"data\">\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination *ngIf=\"totalResults > 0\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\">\n </adf-pagination>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"\n (infoDrawerPreview$ | async) === true ? 'adf-search-results--right_panel_section-extended' : 'adf-search-results--right_panel_section'\n \"\n *ngIf=\"infoDrawerOpened$ | async\"\n >\n <adf-alfresco-viewer\n class=\"adf-search-results--embedded_viewer\"\n [nodeId]=\"selection.last.entry.id\"\n *ngIf=\"infoDrawerPreview$ | async; else infoDrawerPanel\"\n >\n <adf-viewer-toolbar>\n <div class=\"adf-search-results--preview-toolbar\">\n <div>\n <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\" (click)=\"onDrawerClosed()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <button\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREVIEW' | translate }}\"\n color=\"accent\"\n class=\"adf-search-results--visibility_button\"\n >\n <mat-icon>visibility</mat-icon>\n </button>\n <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\" (click)=\"onPreviewClosed()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </div>\n </div>\n </adf-viewer-toolbar>\n </adf-alfresco-viewer>\n <ng-template #infoDrawerPanel>\n <div class=\"aca-sidebar\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </ng-template>\n </div>\n </div>\n</aca-page-layout>\n", styles: ["aca-search-results .aca-search-toolbar-spacer{width:100%}aca-search-results .adf-search-results{display:flex;flex-direction:row;flex:1;height:100%;overflow:hidden}aca-search-results .adf-search-results__facets{display:flex;flex-direction:row;margin-top:5px;margin-bottom:15px}aca-search-results .adf-search-results__content{display:flex;flex-direction:column;flex:1;height:100%;overflow:hidden;min-height:0;border-left:1px solid var(--theme-border-color)}aca-search-results .adf-search-results__content-header{display:flex;padding:0 25px;flex-direction:row;align-items:center;border-top:1px solid var(--theme-border-color);border-bottom:1px solid var(--theme-border-color)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed{background-color:var(--theme-dropdown-color);color:var(--theme-selected-text-color)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip:hover,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip:focus,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed:hover,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed:focus{background-color:var(--theme-dropdown-background-hover)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip[disabled],aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed[disabled]{background-color:var(--theme-disabled-chip-background-color);color:var(--theme-search-chip-icon-color)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip .adf-search-filter-chip-icon,aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-chip-tabbed .adf-search-filter-chip-icon{color:var(--theme-search-chip-icon-color)}aca-search-results .adf-search-results__content-header .aca-content__advanced-filters .adf-search-filter-placeholder{color:var(--theme-selected-text-color)}aca-search-results .adf-search-results--info-text{flex:1;font-size:16px;color:#0000008a}aca-search-results .adf-search-results--embedded_viewer{position:unset;display:flex;width:100%}aca-search-results .adf-search-results--right_panel_section{display:flex;justify-content:flex-start}aca-search-results .adf-search-results--right_panel_section-extended{display:flex;justify-content:flex-start;flex-basis:55%}aca-search-results .adf-search-results--preview-toolbar{display:flex;align-items:flex-end;justify-content:space-between;margin:5px;padding-right:24px}aca-search-results .adf-search-results--visibility_button{margin-right:8px}aca-search-results .adf-search-results .adf-search-filter{min-width:260px;max-width:320px;padding:5px;height:100%;overflow:scroll}aca-search-results .adf-search-results .adf-search-filter--hidden{display:none}aca-search-results .adf-search-results .aca-content{box-sizing:border-box;display:flex;place-content:flex-start space-between;align-items:flex-start;padding:16px 12px;background-color:var(--theme-card-background-color)}aca-search-results .adf-search-results .aca-content__filter-set p{padding:0 16px}aca-search-results .adf-search-results .aca-content__divider{height:100%}aca-search-results .adf-search-results .aca-content__advanced-filters{width:100%;padding:0 12px}aca-search-results .adf-search-results .aca-content__advanced-filters--header{display:flex;justify-content:space-between}aca-search-results .adf-search-results .aca-content__reset-action{line-height:33px;font-weight:lighter}aca-search-results .adf-search-results .aca-content__sort-picker{min-width:220px}aca-search-results .adf-search-results .adf-datatable aca-search-action-menu button{width:0}aca-search-results .adf-search-results .adf-datatable .aca-location-link a{font-size:12px;max-width:350px;text-align:left;direction:rtl}\n"] }]
|
|
245
245
|
}], ctorParameters: function () { return [{ type: i1.TagService }, { type: i1.SearchQueryBuilderService }, { type: i2.ActivatedRoute }, { type: i3.TranslationService }]; } });
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvSSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQiwrQkFBK0IsRUFDL0Isd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ3BCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNqQixNQUFNLHNCQUFzQixDQUFDO0FB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QW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3FCQUNqQixZQUNTLG9CQUFvQixpQkFFZixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZUVudHJ5LCBQYWdpbmF0aW9uLCBSZXN1bHRTZXRQYWdpbmcgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxmcmVzY29WaWV3ZXJNb2R1bGUsIERvY3VtZW50TGlzdE1vZHVsZSwgU2VhcmNoTW9kdWxlLCBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlLCBUYWdTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7XG4gIGluZm9EcmF3ZXJQcmV2aWV3LFxuICBOYXZpZ2F0ZVRvRm9sZGVyLFxuICBTZXRJbmZvRHJhd2VyUHJldmlld1N0YXRlQWN0aW9uLFxuICBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24sXG4gIHNob3dGYWNldEZpbHRlcixcbiAgU2hvd0luZm9EcmF3ZXJQcmV2aWV3QWN0aW9uLFxuICBTbmFja2JhckVycm9yQWN0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IERhdGFUYWJsZU1vZHVsZSwgUGFnaW5hdGlvbkNvbXBvbmVudCwgVHJhbnNsYXRpb25TZXJ2aWNlLCBWaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFBhZ2VDb21wb25lbnQsXG4gIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgU2VhcmNoU29ydGluZ0RlZmluaXRpb24gfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMvbGliL3NlYXJjaC9tb2RlbHMvc2VhcmNoLXNvcnRpbmctZGVmaW5pdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQvc2VhcmNoLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kb2N1bWVudC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUaHVtYm5haWxDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi9kbC1jdXN0b20tY29tcG9uZW50cy90aHVtYm5haWwtY29sdW1uL3RodW1ibmFpbC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEFjdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtYWN0aW9uLW1lbnUvc2VhcmNoLWFjdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWdzQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGwtY3VzdG9tLWNvbXBvbmVudHMvdGFncy1jb2x1bW4vdGFncy1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFNlYXJjaFJlc3VsdHNSb3dDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtcmVzdWx0cy1yb3cvc2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3RQcmVzZXRSZWYsIEV4dGVuc2lvbnNNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIERvY3VtZW50TGlzdE1vZHVsZSxcbiAgICBEb2N1bWVudExpc3REaXJlY3RpdmUsXG4gICAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gICAgRGF0YVRhYmxlTW9kdWxlLFxuICAgIFRodW1ibmFpbENvbHVtbkNvbXBvbmVudCxcbiAgICBTZWFyY2hBY3Rpb25NZW51Q29tcG9uZW50LFxuICAgIFRhZ3NDb2x1bW5Db21wb25lbnQsXG4gICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBBbGZyZXNjb1ZpZXdlck1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgU2VhcmNoUmVzdWx0c1Jvd0NvbXBvbmVudCxcbiAgICBQYWdpbmF0aW9uRGlyZWN0aXZlLFxuICAgIFZpZXdlck1vZHVsZSxcbiAgICBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgRXh0ZW5zaW9uc01vZHVsZVxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS1zZWFyY2gtcmVzdWx0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0c0NvbXBvbmVudCBleHRlbmRzIFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzaG93RmFjZXRGaWx0ZXIkID0gdGhpcy5zdG9yZS5zZWxlY3Qoc2hvd0ZhY2V0RmlsdGVyKTtcbiAgaW5mb0RyYXdlclByZXZpZXckID0gdGhpcy5zdG9yZS5zZWxlY3QoaW5mb0RyYXdlclByZXZpZXcpO1xuXG4gIHNlYXJjaGVkV29yZDogc3RyaW5nO1xuICBxdWVyeVBhcmFtTmFtZSA9ICdxJztcbiAgZGF0YTogUmVzdWx0U2V0UGFnaW5nO1xuICBzb3J0aW5nID0gWyduYW1lJywgJ2FzYyddO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgdG90YWxSZXN1bHRzOiBudW1iZXI7XG4gIGlzVGFnc0VuYWJsZWQgPSBmYWxzZTtcbiAgY29sdW1uczogRG9jdW1lbnRMaXN0UHJlc2V0UmVmW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWdzU2VydmljZTogVGFnU2VydmljZSxcbiAgICBwcml2YXRlIHF1ZXJ5QnVpbGRlcjogU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFnc0VuYWJsZWQgPSB0YWdzU2VydmljZS5hcmVUYWdzRW5hYmxlZCgpO1xuXG4gICAgcXVlcnlCdWlsZGVyLnBhZ2luZyA9IHtcbiAgICAgIHNraXBDb3VudDogMCxcbiAgICAgIG1heEl0ZW1zOiAyNVxuICAgIH07XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJvdXRlLnBhcmFtcywgdGhpcy5xdWVyeUJ1aWxkZXIuY29uZmlnVXBkYXRlZF0pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtwYXJhbXMsIHNlYXJjaENvbmZpZ10pID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICB0aGlzLnNlYXJjaGVkV29yZCA9IHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSh0aGlzLnF1ZXJ5UGFyYW1OYW1lKSA/IHBhcmFtc1t0aGlzLnF1ZXJ5UGFyYW1OYW1lXSA6IG51bGw7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5mb3JtYXRTZWFyY2hRdWVyeSh0aGlzLnNlYXJjaGVkV29yZCwgc2VhcmNoQ29uZmlnWydhY2E6ZmllbGRzJ10pO1xuICAgICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51c2VyUXVlcnkgPSBkZWNvZGVVUklDb21wb25lbnQocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZXNldFRvRGVmYXVsdHMoKTtcbiAgICB0aGlzLnNvcnRpbmcgPSB0aGlzLmdldFNvcnRpbmcoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlZC5zdWJzY3JpYmUoKHF1ZXJ5KSA9PiB7XG4gICAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICAgIHRoaXMuc29ydGluZyA9IHRoaXMuZ2V0U29ydGluZygpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG5cbiAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmV4ZWN1dGVkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5wYWdpbmcuc2tpcENvdW50ID0gMDtcblxuICAgICAgICB0aGlzLm9uU2VhcmNoUmVzdWx0TG9hZGVkKGRhdGEpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmVycm9yLnN1YnNjcmliZSgoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vblNlYXJjaEVycm9yKGVycik7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmV4dGVuc2lvbnMuZG9jdW1lbnRMaXN0UHJlc2V0cy5zZWFyY2hSZXN1bHRzIHx8IFtdO1xuXG4gICAgaWYgKHRoaXMucm91dGUpIHtcbiAgICAgIHRoaXMucm91dGUucGFyYW1zLmZvckVhY2goKHBhcmFtczogUGFyYW1zKSA9PiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBwYXJhbXMuaGFzT3duUHJvcGVydHkodGhpcy5xdWVyeVBhcmFtTmFtZSkgPyBwYXJhbXNbdGhpcy5xdWVyeVBhcmFtTmFtZV0gOiBudWxsO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hlZFdvcmQpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51c2VyUXVlcnkgPSBudWxsO1xuICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmV4ZWN1dGVkLm5leHQoe1xuICAgICAgICAgICAgbGlzdDogeyBwYWdpbmF0aW9uOiB7IHRvdGFsSXRlbXM6IDAgfSwgZW50cmllczogW10gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaEVycm9yKGVycm9yOiB7IG1lc3NhZ2U6IGFueSB9KSB7XG4gICAgY29uc3QgeyBzdGF0dXNDb2RlIH0gPSBKU09OLnBhcnNlKGVycm9yLm1lc3NhZ2UpLmVycm9yO1xuXG4gICAgY29uc3QgbWVzc2FnZUtleSA9IGBBUFAuQlJPV1NFLlNFQVJDSC5FUlJPUlMuJHtzdGF0dXNDb2RlfWA7XG4gICAgbGV0IHRyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KG1lc3NhZ2VLZXkpO1xuXG4gICAgaWYgKHRyYW5zbGF0ZWQgPT09IG1lc3NhZ2VLZXkpIHtcbiAgICAgIHRyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KGBBUFAuQlJPV1NFLlNFQVJDSC5FUlJPUlMuR0VORVJJQ2ApO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNuYWNrYmFyRXJyb3JBY3Rpb24odHJhbnNsYXRlZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09wZXJhdG9yKGlucHV0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgIGNvbnN0IG9wZXJhdG9ycyA9IFsnQU5EJywgJ09SJ107XG4gICAgICByZXR1cm4gb3BlcmF0b3JzLmluY2x1ZGVzKGlucHV0KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRGaWVsZHMoZmllbGRzOiBzdHJpbmdbXSwgdGVybTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcHJlZml4ID0gJyc7XG4gICAgbGV0IHN1ZmZpeCA9ICcqJztcblxuICAgIGlmICh0ZXJtLnN0YXJ0c1dpdGgoJz0nKSkge1xuICAgICAgcHJlZml4ID0gJz0nO1xuICAgICAgc3VmZml4ID0gJyc7XG4gICAgICB0ZXJtID0gdGVybS5zdWJzdHJpbmcoMSk7XG4gICAgfVxuXG4gICAgaWYgKHRlcm0gPT09ICcqJykge1xuICAgICAgcHJlZml4ID0gJyc7XG4gICAgICBzdWZmaXggPSAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gJygnICsgZmllbGRzLm1hcCgoZmllbGQpID0+IGAke3ByZWZpeH0ke2ZpZWxkfTpcIiR7dGVybX0ke3N1ZmZpeH1cImApLmpvaW4oJyBPUiAnKSArICcpJztcbiAgfVxuXG4gIGZvcm1hdFNlYXJjaFF1ZXJ5KHVzZXJJbnB1dDogc3RyaW5nLCBmaWVsZHMgPSBbJ2NtOm5hbWUnXSkge1xuICAgIGlmICghdXNlcklucHV0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoL15odHRwW3NdPzpcXC9cXC8vLnRlc3QodXNlcklucHV0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RmllbGRzKGZpZWxkcywgdXNlcklucHV0KTtcbiAgICB9XG5cbiAgICB1c2VySW5wdXQgPSB1c2VySW5wdXQudHJpbSgpO1xuXG4gICAgaWYgKHVzZXJJbnB1dC5pbmNsdWRlcygnOicpIHx8IHVzZXJJbnB1dC5pbmNsdWRlcygnXCInKSkge1xuICAgICAgcmV0dXJuIHVzZXJJbnB1dDtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JkcyA9IHVzZXJJbnB1dC5zcGxpdCgnICcpO1xuXG4gICAgaWYgKHdvcmRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHdvcmRzLnNvbWUodGhpcy5pc09wZXJhdG9yKSA/ICcgJyA6ICcgQU5EICc7XG4gICAgICByZXR1cm4gd29yZHMubWFwKCh0ZXJtKSA9PiAodGhpcy5pc09wZXJhdG9yKHRlcm0pID8gdGVybSA6IHRoaXMuZm9ybWF0RmllbGRzKGZpZWxkcywgdGVybSkpKS5qb2luKHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RmllbGRzKGZpZWxkcywgdXNlcklucHV0KTtcbiAgfVxuXG4gIG9uU2VhcmNoUmVzdWx0TG9hZGVkKG5vZGVQYWdpbmc6IFJlc3VsdFNldFBhZ2luZykge1xuICAgIHRoaXMuZGF0YSA9IG5vZGVQYWdpbmc7XG4gICAgdGhpcy50b3RhbFJlc3VsdHMgPSB0aGlzLmdldE51bWJlck9mUmVzdWx0cygpO1xuICB9XG5cbiAgZ2V0TnVtYmVyT2ZSZXN1bHRzKCkge1xuICAgIGlmICh0aGlzLmRhdGE/Lmxpc3Q/LnBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEubGlzdC5wYWdpbmF0aW9uLnRvdGFsSXRlbXM7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgb25QYWdpbmF0aW9uQ2hhbmdlZChwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKSB7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIucGFnaW5nID0ge1xuICAgICAgbWF4SXRlbXM6IHBhZ2luYXRpb24ubWF4SXRlbXMsXG4gICAgICBza2lwQ291bnQ6IHBhZ2luYXRpb24uc2tpcENvdW50XG4gICAgfTtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydGluZygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcHJpbWFyeSA9IHRoaXMucXVlcnlCdWlsZGVyLmdldFByaW1hcnlTb3J0aW5nKCk7XG5cbiAgICBpZiAocHJpbWFyeSkge1xuICAgICAgcmV0dXJuIFtwcmltYXJ5LmtleSwgcHJpbWFyeS5hc2NlbmRpbmcgPyAnYXNjJyA6ICdkZXNjJ107XG4gICAgfVxuXG4gICAgcmV0dXJuIFsnbmFtZScsICdhc2MnXTtcbiAgfVxuXG4gIG9uTm9kZURvdWJsZUNsaWNrKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGlmIChub2RlPy5lbnRyeSkge1xuICAgICAgaWYgKG5vZGUuZW50cnkuaXNGb2xkZXIpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGVUb0ZvbGRlcihub2RlKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zaG93UHJldmlldyhub2RlLCB7IGxvY2F0aW9uOiB0aGlzLnJvdXRlci51cmwgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTm9kZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMub25Ob2RlRG91YmxlQ2xpY2soKGV2ZW50IGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw/Lm5vZGUpO1xuICB9XG5cbiAgb25QcmV2aWV3Q2xvc2VkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNob3dJbmZvRHJhd2VyUHJldmlld0FjdGlvbigpKTtcbiAgfVxuXG4gIG9uRHJhd2VyQ2xvc2VkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEluZm9EcmF3ZXJQcmV2aWV3U3RhdGVBY3Rpb24oZmFsc2UpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24oZmFsc2UpKTtcbiAgfVxuXG4gIG9uU2VhcmNoU29ydGluZ1VwZGF0ZShvcHRpb246IFNlYXJjaFNvcnRpbmdEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIuc29ydGluZyA9IFt7IC4uLm9wdGlvbiwgYXNjZW5kaW5nOiBvcHRpb24uYXNjZW5kaW5nIH1dO1xuICAgIHRoaXMucXVlcnlCdWlsZGVyLnVwZGF0ZSgpO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWhlYWRlclwiPlxuICAgIDxhY2Etc2VhcmNoLWlucHV0PjwvYWNhLXNlYXJjaC1pbnB1dD5cbiAgICA8ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC10b29sYmFyLXNwYWNlclwiPjwvZGl2PlxuICAgIDxhY2EtdG9vbGJhciBbaXRlbXNdPVwiYWN0aW9uc1wiPjwvYWNhLXRvb2xiYXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFpbi1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHNfX2NvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+IDwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzX19jb250ZW50LWhlYWRlciBhY2EtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1jb250ZW50X19maWx0ZXItc2V0XCI+XG4gICAgICAgICAgICAgIDxwPnt7ICdBUFAuQlJPV1NFLlNFQVJDSC5GSUxURVJfU0VUJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgPGFkZi1zZWFyY2gtZm9ybT48L2FkZi1zZWFyY2gtZm9ybT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIFt2ZXJ0aWNhbF09XCJ0cnVlXCIgY2xhc3M9XCJhY2EtY29udGVudF9fZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLWNvbnRlbnRfX2FkdmFuY2VkLWZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1jb250ZW50X19hZHZhbmNlZC1maWx0ZXJzLS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8cD57eyAnQVBQLkJST1dTRS5TRUFSQ0guQURWQU5DRURfRklMVEVSUycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgYWRmLXJlc2V0LXNlYXJjaFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2EtY29udGVudF9fcmVzZXQtYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FQUC5CUk9XU0UuU0VBUkNILlJFU0VUX0FDVElPTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVBQLkJST1dTRS5TRUFSQ0guUkVTRVRfQUNUSU9OJyB8IHRyYW5zbGF0ZSBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5SRVNFVCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxhZGYtc2VhcmNoLWZpbHRlci1jaGlwcz48L2FkZi1zZWFyY2gtZmlsdGVyLWNoaXBzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YWRmLWRvY3VtZW50LWxpc3RcbiAgICAgICAgICAgICNkb2N1bWVudExpc3RcbiAgICAgICAgICAgIGFjYURvY3VtZW50TGlzdFxuICAgICAgICAgICAgYWNhQ29udGV4dEFjdGlvbnNcbiAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidtdWx0aXBsZSdcIlxuICAgICAgICAgICAgW3NvcnRpbmdNb2RlXT1cIidzZXJ2ZXInXCJcbiAgICAgICAgICAgIFtzb3J0aW5nXT1cInNvcnRpbmdcIlxuICAgICAgICAgICAgW2ltYWdlUmVzb2x2ZXJdPVwiaW1hZ2VSZXNvbHZlclwiXG4gICAgICAgICAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYmx1ck9uUmVzaXplXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtub2RlXT1cIiRhbnkoZGF0YSlcIlxuICAgICAgICAgICAgKG5vZGUtZGJsY2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkYXRhLWNvbHVtbnM+XG4gICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBpZD1cImFwcC5zZWFyY2gudGh1bWJuYWlsXCIga2V5PVwiJHRodW1ibmFpbFwiIHR5cGU9XCJpbWFnZVwiIFtzci10aXRsZV09XCInQURGLURPQ1VNRU5ULUxJU1QuTEFZT1VULlRIVU1CTkFJTCdcIiBbc29ydGFibGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWNvbnRleHQ+XG4gICAgICAgICAgICAgICAgICA8YWNhLWN1c3RvbS10aHVtYm5haWwtY29sdW1uIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2FjYS1jdXN0b20tdGh1bWJuYWlsLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPGFkZi1kYXRhLWNvbHVtbi1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxhY2Etc2VhcmNoLWFjdGlvbi1tZW51IChzb3J0aW5nU2VsZWN0ZWQpPVwib25TZWFyY2hTb3J0aW5nVXBkYXRlKCRldmVudClcIj48L2FjYS1zZWFyY2gtYWN0aW9uLW1lbnU+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYWRmLWRhdGEtY29sdW1uLWhlYWRlcj5cbiAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUNvbHVtbklkXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50ZW1wbGF0ZSAmJiAhKGNvbHVtbi5kZXNrdG9wT25seSAmJiBpc1NtYWxsU2NyZWVuKVwiPlxuICAgICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJjb2x1bW4uaWRcIlxuICAgICAgICAgICAgICAgICAgICBba2V5XT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sdW1uLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImNvbHVtbi5mb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzb3J0aW5nS2V5XT1cImNvbHVtbi5zb3J0aW5nS2V5IHx8IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIaWRkZW5dPVwiY29sdW1uLmlzSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJjb2x1bW4uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2x1bW4ucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxhZGYtZHluYW1pYy1jb2x1bW4gW2lkXT1cImNvbHVtbi50ZW1wbGF0ZVwiIFtjb250ZXh0XT1cImNvbnRleHRcIj4gPC9hZGYtZHluYW1pYy1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4udGVtcGxhdGUgJiYgIShjb2x1bW4uZGVza3RvcE9ubHkgJiYgaXNTbWFsbFNjcmVlbilcIj5cbiAgICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29sdW1uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2tleV09XCJjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJjb2x1bW4uZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbc29ydGluZ0tleV09XCJjb2x1bW4uc29ydGluZ0tleSB8fCBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2lzSGlkZGVuXT1cImNvbHVtbi5pc0hpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiY29sdW1uLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXNpemFibGVdPVwiY29sdW1uLnJlc2l6YWJsZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGF0YS1jb2x1bW5zPlxuXG4gICAgICAgICAgICA8YWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX2Jsb2NrXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5LXNlYXJjaF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQVBQLkJST1dTRS5TRUFSQ0guTk9fUkVTVUxUUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2FkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2FkZi1kb2N1bWVudC1saXN0PlxuXG4gICAgICAgICAgPGFkZi1wYWdpbmF0aW9uICpuZ0lmPVwidG90YWxSZXN1bHRzID4gMFwiIGFjYVBhZ2luYXRpb24gW3RhcmdldF09XCJkb2N1bWVudExpc3RcIiAoY2hhbmdlKT1cIm9uUGFnaW5hdGlvbkNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvYWRmLXBhZ2luYXRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIChpbmZvRHJhd2VyUHJldmlldyQgfCBhc3luYykgPT09IHRydWUgPyAnYWRmLXNlYXJjaC1yZXN1bHRzLS1yaWdodF9wYW5lbF9zZWN0aW9uLWV4dGVuZGVkJyA6ICdhZGYtc2VhcmNoLXJlc3VsdHMtLXJpZ2h0X3BhbmVsX3NlY3Rpb24nXG4gICAgICBcIlxuICAgICAgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8YWRmLWFsZnJlc2NvLXZpZXdlclxuICAgICAgICBjbGFzcz1cImFkZi1zZWFyY2gtcmVzdWx0cy0tZW1iZWRkZWRfdmlld2VyXCJcbiAgICAgICAgW25vZGVJZF09XCJzZWxlY3Rpb24ubGFzdC5lbnRyeS5pZFwiXG4gICAgICAgICpuZ0lmPVwiaW5mb0RyYXdlclByZXZpZXckIHwgYXN5bmM7IGVsc2UgaW5mb0RyYXdlclBhbmVsXCJcbiAgICAgID5cbiAgICAgICAgPGFkZi12aWV3ZXItdG9vbGJhcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzLS1wcmV2aWV3LXRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwib25EcmF3ZXJDbG9zZWQoKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLlBSRVZJRVcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHMtLXZpc2liaWxpdHlfYnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwib25QcmV2aWV3Q2xvc2VkKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hZGYtdmlld2VyLXRvb2xiYXI+XG4gICAgICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2luZm9EcmF3ZXJQYW5lbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1zaWRlYmFyXCI+XG4gICAgICAgICAgPGFjYS1pbmZvLWRyYXdlciBbbm9kZV09XCJzZWxlY3Rpb24ubGFzdFwiPjwvYWNhLWluZm8tZHJhd2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hY2EtcGFnZS1sYXlvdXQ+XG4iXX0=
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvSSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQiwrQkFBK0IsRUFDL0Isd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ3BCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNqQixNQUFNLHNCQUFzQixDQUFDO0FB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QW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3FCQUNqQixZQUNTLG9CQUFvQixpQkFFZixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZUVudHJ5LCBQYWdpbmF0aW9uLCBSZXN1bHRTZXRQYWdpbmcgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxmcmVzY29WaWV3ZXJNb2R1bGUsIERvY3VtZW50TGlzdE1vZHVsZSwgU2VhcmNoTW9kdWxlLCBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlLCBUYWdTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7XG4gIGluZm9EcmF3ZXJQcmV2aWV3LFxuICBOYXZpZ2F0ZVRvRm9sZGVyLFxuICBTZXRJbmZvRHJhd2VyUHJldmlld1N0YXRlQWN0aW9uLFxuICBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24sXG4gIHNob3dGYWNldEZpbHRlcixcbiAgU2hvd0luZm9EcmF3ZXJQcmV2aWV3QWN0aW9uLFxuICBTbmFja2JhckVycm9yQWN0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IERhdGFUYWJsZU1vZHVsZSwgUGFnaW5hdGlvbkNvbXBvbmVudCwgVHJhbnNsYXRpb25TZXJ2aWNlLCBWaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFBhZ2VDb21wb25lbnQsXG4gIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgU2VhcmNoU29ydGluZ0RlZmluaXRpb24gfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMvbGliL3NlYXJjaC9tb2RlbHMvc2VhcmNoLXNvcnRpbmctZGVmaW5pdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQvc2VhcmNoLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kb2N1bWVudC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUaHVtYm5haWxDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi9kbC1jdXN0b20tY29tcG9uZW50cy90aHVtYm5haWwtY29sdW1uL3RodW1ibmFpbC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEFjdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtYWN0aW9uLW1lbnUvc2VhcmNoLWFjdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWdzQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGwtY3VzdG9tLWNvbXBvbmVudHMvdGFncy1jb2x1bW4vdGFncy1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFNlYXJjaFJlc3VsdHNSb3dDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtcmVzdWx0cy1yb3cvc2VhcmNoLXJlc3VsdHMtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3RQcmVzZXRSZWYsIEV4dGVuc2lvbnNNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIERvY3VtZW50TGlzdE1vZHVsZSxcbiAgICBEb2N1bWVudExpc3REaXJlY3RpdmUsXG4gICAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gICAgRGF0YVRhYmxlTW9kdWxlLFxuICAgIFRodW1ibmFpbENvbHVtbkNvbXBvbmVudCxcbiAgICBTZWFyY2hBY3Rpb25NZW51Q29tcG9uZW50LFxuICAgIFRhZ3NDb2x1bW5Db21wb25lbnQsXG4gICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBBbGZyZXNjb1ZpZXdlck1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgU2VhcmNoUmVzdWx0c1Jvd0NvbXBvbmVudCxcbiAgICBQYWdpbmF0aW9uRGlyZWN0aXZlLFxuICAgIFZpZXdlck1vZHVsZSxcbiAgICBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgRXh0ZW5zaW9uc01vZHVsZVxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS1zZWFyY2gtcmVzdWx0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0c0NvbXBvbmVudCBleHRlbmRzIFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzaG93RmFjZXRGaWx0ZXIkID0gdGhpcy5zdG9yZS5zZWxlY3Qoc2hvd0ZhY2V0RmlsdGVyKTtcbiAgaW5mb0RyYXdlclByZXZpZXckID0gdGhpcy5zdG9yZS5zZWxlY3QoaW5mb0RyYXdlclByZXZpZXcpO1xuXG4gIHNlYXJjaGVkV29yZDogc3RyaW5nO1xuICBxdWVyeVBhcmFtTmFtZSA9ICdxJztcbiAgZGF0YTogUmVzdWx0U2V0UGFnaW5nO1xuICBzb3J0aW5nID0gWyduYW1lJywgJ2FzYyddO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgdG90YWxSZXN1bHRzOiBudW1iZXI7XG4gIGlzVGFnc0VuYWJsZWQgPSBmYWxzZTtcbiAgY29sdW1uczogRG9jdW1lbnRMaXN0UHJlc2V0UmVmW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWdzU2VydmljZTogVGFnU2VydmljZSxcbiAgICBwcml2YXRlIHF1ZXJ5QnVpbGRlcjogU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFnc0VuYWJsZWQgPSB0YWdzU2VydmljZS5hcmVUYWdzRW5hYmxlZCgpO1xuXG4gICAgcXVlcnlCdWlsZGVyLnBhZ2luZyA9IHtcbiAgICAgIHNraXBDb3VudDogMCxcbiAgICAgIG1heEl0ZW1zOiAyNVxuICAgIH07XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJvdXRlLnBhcmFtcywgdGhpcy5xdWVyeUJ1aWxkZXIuY29uZmlnVXBkYXRlZF0pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtwYXJhbXMsIHNlYXJjaENvbmZpZ10pID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICB0aGlzLnNlYXJjaGVkV29yZCA9IHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSh0aGlzLnF1ZXJ5UGFyYW1OYW1lKSA/IHBhcmFtc1t0aGlzLnF1ZXJ5UGFyYW1OYW1lXSA6IG51bGw7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5mb3JtYXRTZWFyY2hRdWVyeSh0aGlzLnNlYXJjaGVkV29yZCwgc2VhcmNoQ29uZmlnWydhcHA6ZmllbGRzJ10pO1xuICAgICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51c2VyUXVlcnkgPSBkZWNvZGVVUklDb21wb25lbnQocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZXNldFRvRGVmYXVsdHMoKTtcbiAgICB0aGlzLnNvcnRpbmcgPSB0aGlzLmdldFNvcnRpbmcoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlZC5zdWJzY3JpYmUoKHF1ZXJ5KSA9PiB7XG4gICAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICAgIHRoaXMuc29ydGluZyA9IHRoaXMuZ2V0U29ydGluZygpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG5cbiAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmV4ZWN1dGVkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5wYWdpbmcuc2tpcENvdW50ID0gMDtcblxuICAgICAgICB0aGlzLm9uU2VhcmNoUmVzdWx0TG9hZGVkKGRhdGEpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmVycm9yLnN1YnNjcmliZSgoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vblNlYXJjaEVycm9yKGVycik7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmV4dGVuc2lvbnMuZG9jdW1lbnRMaXN0UHJlc2V0cy5zZWFyY2hSZXN1bHRzIHx8IFtdO1xuXG4gICAgaWYgKHRoaXMucm91dGUpIHtcbiAgICAgIHRoaXMucm91dGUucGFyYW1zLmZvckVhY2goKHBhcmFtczogUGFyYW1zKSA9PiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBwYXJhbXMuaGFzT3duUHJvcGVydHkodGhpcy5xdWVyeVBhcmFtTmFtZSkgPyBwYXJhbXNbdGhpcy5xdWVyeVBhcmFtTmFtZV0gOiBudWxsO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hlZFdvcmQpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci51c2VyUXVlcnkgPSBudWxsO1xuICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmV4ZWN1dGVkLm5leHQoe1xuICAgICAgICAgICAgbGlzdDogeyBwYWdpbmF0aW9uOiB7IHRvdGFsSXRlbXM6IDAgfSwgZW50cmllczogW10gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaEVycm9yKGVycm9yOiB7IG1lc3NhZ2U6IGFueSB9KSB7XG4gICAgY29uc3QgeyBzdGF0dXNDb2RlIH0gPSBKU09OLnBhcnNlKGVycm9yLm1lc3NhZ2UpLmVycm9yO1xuXG4gICAgY29uc3QgbWVzc2FnZUtleSA9IGBBUFAuQlJPV1NFLlNFQVJDSC5FUlJPUlMuJHtzdGF0dXNDb2RlfWA7XG4gICAgbGV0IHRyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KG1lc3NhZ2VLZXkpO1xuXG4gICAgaWYgKHRyYW5zbGF0ZWQgPT09IG1lc3NhZ2VLZXkpIHtcbiAgICAgIHRyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KGBBUFAuQlJPV1NFLlNFQVJDSC5FUlJPUlMuR0VORVJJQ2ApO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNuYWNrYmFyRXJyb3JBY3Rpb24odHJhbnNsYXRlZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09wZXJhdG9yKGlucHV0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgIGNvbnN0IG9wZXJhdG9ycyA9IFsnQU5EJywgJ09SJ107XG4gICAgICByZXR1cm4gb3BlcmF0b3JzLmluY2x1ZGVzKGlucHV0KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRGaWVsZHMoZmllbGRzOiBzdHJpbmdbXSwgdGVybTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcHJlZml4ID0gJyc7XG4gICAgbGV0IHN1ZmZpeCA9ICcqJztcblxuICAgIGlmICh0ZXJtLnN0YXJ0c1dpdGgoJz0nKSkge1xuICAgICAgcHJlZml4ID0gJz0nO1xuICAgICAgc3VmZml4ID0gJyc7XG4gICAgICB0ZXJtID0gdGVybS5zdWJzdHJpbmcoMSk7XG4gICAgfVxuXG4gICAgaWYgKHRlcm0gPT09ICcqJykge1xuICAgICAgcHJlZml4ID0gJyc7XG4gICAgICBzdWZmaXggPSAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gJygnICsgZmllbGRzLm1hcCgoZmllbGQpID0+IGAke3ByZWZpeH0ke2ZpZWxkfTpcIiR7dGVybX0ke3N1ZmZpeH1cImApLmpvaW4oJyBPUiAnKSArICcpJztcbiAgfVxuXG4gIGZvcm1hdFNlYXJjaFF1ZXJ5KHVzZXJJbnB1dDogc3RyaW5nLCBmaWVsZHMgPSBbJ2NtOm5hbWUnXSkge1xuICAgIGlmICghdXNlcklucHV0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoL15odHRwW3NdPzpcXC9cXC8vLnRlc3QodXNlcklucHV0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RmllbGRzKGZpZWxkcywgdXNlcklucHV0KTtcbiAgICB9XG5cbiAgICB1c2VySW5wdXQgPSB1c2VySW5wdXQudHJpbSgpO1xuXG4gICAgaWYgKHVzZXJJbnB1dC5pbmNsdWRlcygnOicpIHx8IHVzZXJJbnB1dC5pbmNsdWRlcygnXCInKSkge1xuICAgICAgcmV0dXJuIHVzZXJJbnB1dDtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JkcyA9IHVzZXJJbnB1dC5zcGxpdCgnICcpO1xuXG4gICAgaWYgKHdvcmRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHdvcmRzLnNvbWUodGhpcy5pc09wZXJhdG9yKSA/ICcgJyA6ICcgQU5EICc7XG4gICAgICByZXR1cm4gd29yZHMubWFwKCh0ZXJtKSA9PiAodGhpcy5pc09wZXJhdG9yKHRlcm0pID8gdGVybSA6IHRoaXMuZm9ybWF0RmllbGRzKGZpZWxkcywgdGVybSkpKS5qb2luKHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RmllbGRzKGZpZWxkcywgdXNlcklucHV0KTtcbiAgfVxuXG4gIG9uU2VhcmNoUmVzdWx0TG9hZGVkKG5vZGVQYWdpbmc6IFJlc3VsdFNldFBhZ2luZykge1xuICAgIHRoaXMuZGF0YSA9IG5vZGVQYWdpbmc7XG4gICAgdGhpcy50b3RhbFJlc3VsdHMgPSB0aGlzLmdldE51bWJlck9mUmVzdWx0cygpO1xuICB9XG5cbiAgZ2V0TnVtYmVyT2ZSZXN1bHRzKCkge1xuICAgIGlmICh0aGlzLmRhdGE/Lmxpc3Q/LnBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEubGlzdC5wYWdpbmF0aW9uLnRvdGFsSXRlbXM7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgb25QYWdpbmF0aW9uQ2hhbmdlZChwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKSB7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIucGFnaW5nID0ge1xuICAgICAgbWF4SXRlbXM6IHBhZ2luYXRpb24ubWF4SXRlbXMsXG4gICAgICBza2lwQ291bnQ6IHBhZ2luYXRpb24uc2tpcENvdW50XG4gICAgfTtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydGluZygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcHJpbWFyeSA9IHRoaXMucXVlcnlCdWlsZGVyLmdldFByaW1hcnlTb3J0aW5nKCk7XG5cbiAgICBpZiAocHJpbWFyeSkge1xuICAgICAgcmV0dXJuIFtwcmltYXJ5LmtleSwgcHJpbWFyeS5hc2NlbmRpbmcgPyAnYXNjJyA6ICdkZXNjJ107XG4gICAgfVxuXG4gICAgcmV0dXJuIFsnbmFtZScsICdhc2MnXTtcbiAgfVxuXG4gIG9uTm9kZURvdWJsZUNsaWNrKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGlmIChub2RlPy5lbnRyeSkge1xuICAgICAgaWYgKG5vZGUuZW50cnkuaXNGb2xkZXIpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGVUb0ZvbGRlcihub2RlKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zaG93UHJldmlldyhub2RlLCB7IGxvY2F0aW9uOiB0aGlzLnJvdXRlci51cmwgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTm9kZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMub25Ob2RlRG91YmxlQ2xpY2soKGV2ZW50IGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw/Lm5vZGUpO1xuICB9XG5cbiAgb25QcmV2aWV3Q2xvc2VkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNob3dJbmZvRHJhd2VyUHJldmlld0FjdGlvbigpKTtcbiAgfVxuXG4gIG9uRHJhd2VyQ2xvc2VkKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEluZm9EcmF3ZXJQcmV2aWV3U3RhdGVBY3Rpb24oZmFsc2UpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24oZmFsc2UpKTtcbiAgfVxuXG4gIG9uU2VhcmNoU29ydGluZ1VwZGF0ZShvcHRpb246IFNlYXJjaFNvcnRpbmdEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIuc29ydGluZyA9IFt7IC4uLm9wdGlvbiwgYXNjZW5kaW5nOiBvcHRpb24uYXNjZW5kaW5nIH1dO1xuICAgIHRoaXMucXVlcnlCdWlsZGVyLnVwZGF0ZSgpO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWhlYWRlclwiPlxuICAgIDxhY2Etc2VhcmNoLWlucHV0PjwvYWNhLXNlYXJjaC1pbnB1dD5cbiAgICA8ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC10b29sYmFyLXNwYWNlclwiPjwvZGl2PlxuICAgIDxhY2EtdG9vbGJhciBbaXRlbXNdPVwiYWN0aW9uc1wiPjwvYWNhLXRvb2xiYXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFpbi1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHNfX2NvbnRlbnRcIj5cbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+IDwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzX19jb250ZW50LWhlYWRlciBhY2EtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1jb250ZW50X19maWx0ZXItc2V0XCI+XG4gICAgICAgICAgICAgIDxwPnt7ICdBUFAuQlJPV1NFLlNFQVJDSC5GSUxURVJfU0VUJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgPGFkZi1zZWFyY2gtZm9ybT48L2FkZi1zZWFyY2gtZm9ybT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIFt2ZXJ0aWNhbF09XCJ0cnVlXCIgY2xhc3M9XCJhY2EtY29udGVudF9fZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLWNvbnRlbnRfX2FkdmFuY2VkLWZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1jb250ZW50X19hZHZhbmNlZC1maWx0ZXJzLS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8cD57eyAnQVBQLkJST1dTRS5TRUFSQ0guQURWQU5DRURfRklMVEVSUycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgYWRmLXJlc2V0LXNlYXJjaFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2EtY29udGVudF9fcmVzZXQtYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FQUC5CUk9XU0UuU0VBUkNILlJFU0VUX0FDVElPTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVBQLkJST1dTRS5TRUFSQ0guUkVTRVRfQUNUSU9OJyB8IHRyYW5zbGF0ZSBcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5SRVNFVCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxhZGYtc2VhcmNoLWZpbHRlci1jaGlwcz48L2FkZi1zZWFyY2gtZmlsdGVyLWNoaXBzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YWRmLWRvY3VtZW50LWxpc3RcbiAgICAgICAgICAgICNkb2N1bWVudExpc3RcbiAgICAgICAgICAgIGFjYURvY3VtZW50TGlzdFxuICAgICAgICAgICAgYWNhQ29udGV4dEFjdGlvbnNcbiAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidtdWx0aXBsZSdcIlxuICAgICAgICAgICAgW3NvcnRpbmdNb2RlXT1cIidzZXJ2ZXInXCJcbiAgICAgICAgICAgIFtzb3J0aW5nXT1cInNvcnRpbmdcIlxuICAgICAgICAgICAgW2ltYWdlUmVzb2x2ZXJdPVwiaW1hZ2VSZXNvbHZlclwiXG4gICAgICAgICAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYmx1ck9uUmVzaXplXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtub2RlXT1cIiRhbnkoZGF0YSlcIlxuICAgICAgICAgICAgKG5vZGUtZGJsY2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkYXRhLWNvbHVtbnM+XG4gICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBpZD1cImFwcC5zZWFyY2gudGh1bWJuYWlsXCIga2V5PVwiJHRodW1ibmFpbFwiIHR5cGU9XCJpbWFnZVwiIFtzci10aXRsZV09XCInQURGLURPQ1VNRU5ULUxJU1QuTEFZT1VULlRIVU1CTkFJTCdcIiBbc29ydGFibGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWNvbnRleHQ+XG4gICAgICAgICAgICAgICAgICA8YWNhLWN1c3RvbS10aHVtYm5haWwtY29sdW1uIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2FjYS1jdXN0b20tdGh1bWJuYWlsLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPGFkZi1kYXRhLWNvbHVtbi1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxhY2Etc2VhcmNoLWFjdGlvbi1tZW51IChzb3J0aW5nU2VsZWN0ZWQpPVwib25TZWFyY2hTb3J0aW5nVXBkYXRlKCRldmVudClcIj48L2FjYS1zZWFyY2gtYWN0aW9uLW1lbnU+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYWRmLWRhdGEtY29sdW1uLWhlYWRlcj5cbiAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUNvbHVtbklkXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50ZW1wbGF0ZSAmJiAhKGNvbHVtbi5kZXNrdG9wT25seSAmJiBpc1NtYWxsU2NyZWVuKVwiPlxuICAgICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJjb2x1bW4uaWRcIlxuICAgICAgICAgICAgICAgICAgICBba2V5XT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sdW1uLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImNvbHVtbi5mb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzb3J0aW5nS2V5XT1cImNvbHVtbi5zb3J0aW5nS2V5IHx8IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIaWRkZW5dPVwiY29sdW1uLmlzSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJjb2x1bW4uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2x1bW4ucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxhZGYtZHluYW1pYy1jb2x1bW4gW2lkXT1cImNvbHVtbi50ZW1wbGF0ZVwiIFtjb250ZXh0XT1cImNvbnRleHRcIj4gPC9hZGYtZHluYW1pYy1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4udGVtcGxhdGUgJiYgIShjb2x1bW4uZGVza3RvcE9ubHkgJiYgaXNTbWFsbFNjcmVlbilcIj5cbiAgICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29sdW1uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2tleV09XCJjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJjb2x1bW4uZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbc29ydGluZ0tleV09XCJjb2x1bW4uc29ydGluZ0tleSB8fCBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2lzSGlkZGVuXT1cImNvbHVtbi5pc0hpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiY29sdW1uLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXNpemFibGVdPVwiY29sdW1uLnJlc2l6YWJsZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGF0YS1jb2x1bW5zPlxuXG4gICAgICAgICAgICA8YWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX2Jsb2NrXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5LXNlYXJjaF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQVBQLkJST1dTRS5TRUFSQ0guTk9fUkVTVUxUUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2FkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2FkZi1kb2N1bWVudC1saXN0PlxuXG4gICAgICAgICAgPGFkZi1wYWdpbmF0aW9uICpuZ0lmPVwidG90YWxSZXN1bHRzID4gMFwiIGFjYVBhZ2luYXRpb24gW3RhcmdldF09XCJkb2N1bWVudExpc3RcIiAoY2hhbmdlKT1cIm9uUGFnaW5hdGlvbkNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvYWRmLXBhZ2luYXRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIChpbmZvRHJhd2VyUHJldmlldyQgfCBhc3luYykgPT09IHRydWUgPyAnYWRmLXNlYXJjaC1yZXN1bHRzLS1yaWdodF9wYW5lbF9zZWN0aW9uLWV4dGVuZGVkJyA6ICdhZGYtc2VhcmNoLXJlc3VsdHMtLXJpZ2h0X3BhbmVsX3NlY3Rpb24nXG4gICAgICBcIlxuICAgICAgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8YWRmLWFsZnJlc2NvLXZpZXdlclxuICAgICAgICBjbGFzcz1cImFkZi1zZWFyY2gtcmVzdWx0cy0tZW1iZWRkZWRfdmlld2VyXCJcbiAgICAgICAgW25vZGVJZF09XCJzZWxlY3Rpb24ubGFzdC5lbnRyeS5pZFwiXG4gICAgICAgICpuZ0lmPVwiaW5mb0RyYXdlclByZXZpZXckIHwgYXN5bmM7IGVsc2UgaW5mb0RyYXdlclBhbmVsXCJcbiAgICAgID5cbiAgICAgICAgPGFkZi12aWV3ZXItdG9vbGJhcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzLS1wcmV2aWV3LXRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwib25EcmF3ZXJDbG9zZWQoKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLlBSRVZJRVcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHMtLXZpc2liaWxpdHlfYnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwib25QcmV2aWV3Q2xvc2VkKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hZGYtdmlld2VyLXRvb2xiYXI+XG4gICAgICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2luZm9EcmF3ZXJQYW5lbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1zaWRlYmFyXCI+XG4gICAgICAgICAgPGFjYS1pbmZvLWRyYXdlciBbbm9kZV09XCJzZWxlY3Rpb24ubGFzdFwiPjwvYWNhLWluZm8tZHJhd2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hY2EtcGFnZS1sYXlvdXQ+XG4iXX0=
|