@qbs-origin/origin-form 0.7.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/action-step-handler.mjs +17 -1
- package/esm2022/lib/formly/formly-field-stepper/formly-field-stepper.component.mjs +11 -7
- package/esm2022/lib/models/forms.model.mjs +88 -3
- package/esm2022/lib/origin-form.component.mjs +115 -27
- package/esm2022/lib/services/applicationData.service.mjs +2 -1
- package/fesm2022/qbs-origin-origin-form.mjs +228 -34
- package/fesm2022/qbs-origin-origin-form.mjs.map +1 -1
- package/lib/action-step-handler.d.ts +5 -0
- package/lib/models/forms.model.d.ts +27 -2
- package/lib/origin-form.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { Partner } from './partner.model';
|
|
2
2
|
import { FluxHelper } from '../others/flux-helper';
|
|
3
3
|
import { PresentationControl } from './flux.model';
|
|
4
|
+
export class NotificationConfig {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.enabled = false;
|
|
7
|
+
this.titleTemplate = 'Status update: {statusName}';
|
|
8
|
+
this.messageTemplate = 'Your application status has been updated to: {statusName}';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class InheritedField {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.id = '';
|
|
14
|
+
this.fieldName = '';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class ParentChildConfig {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.parentApplicationUuid = null;
|
|
20
|
+
this.inheritedFields = [];
|
|
21
|
+
this.notificationConfig = new NotificationConfig();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
4
24
|
export class FormModel {
|
|
5
25
|
}
|
|
6
26
|
export class AppDataControl {
|
|
@@ -26,7 +46,7 @@ export class AppDataStep {
|
|
|
26
46
|
}
|
|
27
47
|
}
|
|
28
48
|
export class AppDataFill {
|
|
29
|
-
constructor(appDataId = '', configurationId = '', currentStepId = '', statusId = '', language = '', flux = [], offerId = '', isSubmitted = false) {
|
|
49
|
+
constructor(appDataId = '', configurationId = '', currentStepId = '', statusId = '', language = '', flux = [], offerId = '', isSubmitted = false, parentAppDataUuid = '') {
|
|
30
50
|
this.metadata = {
|
|
31
51
|
appDataId: appDataId || '',
|
|
32
52
|
configurationId: configurationId || '',
|
|
@@ -35,6 +55,7 @@ export class AppDataFill {
|
|
|
35
55
|
language: language || '',
|
|
36
56
|
offerId: offerId || '',
|
|
37
57
|
isSubmitted: isSubmitted || false,
|
|
58
|
+
parentAppDataUuid: parentAppDataUuid || '',
|
|
38
59
|
};
|
|
39
60
|
this.flux = flux || [];
|
|
40
61
|
}
|
|
@@ -44,8 +65,10 @@ export class AppData {
|
|
|
44
65
|
(this.id = data.id ?? undefined), (this.appDataId = data.appDataId || '');
|
|
45
66
|
this.appConfigurationId = data.appConfigurationId || 0;
|
|
46
67
|
this.fillData = data.fillData;
|
|
68
|
+
this.initFlowValues = data.initFlowValues;
|
|
47
69
|
this.withNextStep = data.withNextStep;
|
|
48
70
|
this.blockPreviousStep = data.blockPreviousStep;
|
|
71
|
+
this.parentAppDataUuid = data.parentAppDataUuid;
|
|
49
72
|
if (!data.env) {
|
|
50
73
|
this.env = 'Config';
|
|
51
74
|
}
|
|
@@ -58,6 +81,63 @@ export class FormModelExtenxions {
|
|
|
58
81
|
constructor(model) {
|
|
59
82
|
this.formModel = model;
|
|
60
83
|
}
|
|
84
|
+
addInitFlowValuesItems(items) {
|
|
85
|
+
const initFlowValuesRaw = this.formModel?.generalData?.initFlowValues;
|
|
86
|
+
if (initFlowValuesRaw === null || initFlowValuesRaw === undefined) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
let parsed = undefined;
|
|
90
|
+
if (typeof initFlowValuesRaw === 'string') {
|
|
91
|
+
const trimmed = initFlowValuesRaw.trim();
|
|
92
|
+
if (!trimmed) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
parsed = JSON.parse(trimmed);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// If config contains invalid JSON, do not expose any initFlowValues fields.
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
parsed = initFlowValuesRaw;
|
|
105
|
+
}
|
|
106
|
+
const existingIds = new Set(items.map((i) => i.id));
|
|
107
|
+
const out = [];
|
|
108
|
+
const walk = (node, pathParts) => {
|
|
109
|
+
if (node === null || node === undefined) {
|
|
110
|
+
if (pathParts.length > 0)
|
|
111
|
+
out.push(this.buildInitFlowField(pathParts));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (Array.isArray(node)) {
|
|
115
|
+
node.forEach((child, idx) => walk(child, [...pathParts, String(idx)]));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (typeof node === 'object') {
|
|
119
|
+
Object.keys(node).forEach((key) => walk(node[key], [...pathParts, key]));
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (pathParts.length > 0)
|
|
123
|
+
out.push(this.buildInitFlowField(pathParts));
|
|
124
|
+
};
|
|
125
|
+
walk(parsed, []);
|
|
126
|
+
for (const f of out) {
|
|
127
|
+
if (!existingIds.has(f.id)) {
|
|
128
|
+
items.push(f);
|
|
129
|
+
existingIds.add(f.id);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
buildInitFlowField(pathParts) {
|
|
134
|
+
const underscorePath = pathParts.join('_');
|
|
135
|
+
return {
|
|
136
|
+
fieldName: `initFlowValues_${underscorePath}`,
|
|
137
|
+
fieldType: StepControlType.Metadata,
|
|
138
|
+
id: `initFlowValues_${underscorePath}`,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
61
141
|
fluxItems(untilStepIdentifier = undefined) {
|
|
62
142
|
let items = [];
|
|
63
143
|
if (this.formModel.metadataFields) {
|
|
@@ -69,6 +149,7 @@ export class FormModelExtenxions {
|
|
|
69
149
|
});
|
|
70
150
|
});
|
|
71
151
|
}
|
|
152
|
+
this.addInitFlowValuesItems(items);
|
|
72
153
|
if (!this.formModel?.flux) {
|
|
73
154
|
return items;
|
|
74
155
|
}
|
|
@@ -354,6 +435,7 @@ export const initialFormulareState = {
|
|
|
354
435
|
showNameStep: false,
|
|
355
436
|
showAllSteps: false,
|
|
356
437
|
showProgressBar: false,
|
|
438
|
+
initFlowValues: '',
|
|
357
439
|
},
|
|
358
440
|
design: {
|
|
359
441
|
fonts: [],
|
|
@@ -386,6 +468,7 @@ export const initialFormulareState = {
|
|
|
386
468
|
applicationTypeId: 0,
|
|
387
469
|
columnMappings: [],
|
|
388
470
|
},
|
|
471
|
+
parentChildConfig: undefined,
|
|
389
472
|
},
|
|
390
473
|
selectedTab: 'Date generale',
|
|
391
474
|
canGetFromProd: false,
|
|
@@ -507,14 +590,16 @@ export var ApiMethodType;
|
|
|
507
590
|
ApiMethodType[ApiMethodType["Validation"] = 2] = "Validation";
|
|
508
591
|
})(ApiMethodType || (ApiMethodType = {}));
|
|
509
592
|
export class StatusModel {
|
|
510
|
-
constructor(id, denumire, ordine, final, isActive, actions) {
|
|
593
|
+
constructor(id, denumire, ordine, final, isActive, actions, childApplicationUuids = []) {
|
|
511
594
|
this.actions = [];
|
|
595
|
+
this.childApplicationUuids = [];
|
|
512
596
|
this.id = id;
|
|
513
597
|
this.name = denumire;
|
|
514
598
|
this.order = ordine;
|
|
515
599
|
this.final = final;
|
|
516
600
|
this.isActive = isActive;
|
|
517
601
|
this.actions = actions;
|
|
602
|
+
this.childApplicationUuids = childApplicationUuids || [];
|
|
518
603
|
}
|
|
519
604
|
}
|
|
520
605
|
export class StatusAction {
|
|
@@ -571,4 +656,4 @@ export var AppDataStatus;
|
|
|
571
656
|
AppDataStatus[AppDataStatus["new"] = 0] = "new";
|
|
572
657
|
AppDataStatus[AppDataStatus["finished"] = 1] = "finished";
|
|
573
658
|
})(AppDataStatus || (AppDataStatus = {}));
|
|
574
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFHMUUsTUFBTSxPQUFPLFNBQVM7Q0FlckI7QUFFRCxNQUFNLE9BQU8sY0FBYztJQU96QixZQUNFLFlBQW9CLEVBQUUsRUFDdEIsWUFBb0IsRUFBRSxFQUN0QixjQUFzQixFQUFFLEVBQ3hCLFVBQXFCLEVBQ3JCLFlBQXVCO1FBRXZCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksWUFBb0IsRUFBRSxFQUFFLFdBQTZCLEVBQUU7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUNFLFNBQWlCLEVBQUUsRUFDbkIsSUFBWSxFQUNaLFdBQTZCLEVBQUU7UUFFL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQVl0QixZQUNFLFlBQW9CLEVBQUUsRUFDdEIsa0JBQTBCLEVBQUUsRUFDNUIsZ0JBQXdCLEVBQUUsRUFDMUIsV0FBbUIsRUFBRSxFQUNyQixXQUFtQixFQUFFLEVBQ3JCLE9BQXNCLEVBQUUsRUFDeEIsVUFBa0IsRUFBRSxFQUNwQixjQUF1QixLQUFLO1FBRTVCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxTQUFTLEVBQUUsU0FBUyxJQUFJLEVBQUU7WUFDMUIsZUFBZSxFQUFFLGVBQWUsSUFBSSxFQUFFO1lBQ3RDLGFBQWEsRUFBRSxhQUFhLElBQUksRUFBRTtZQUNsQyxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDeEIsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRTtZQUN0QixXQUFXLEVBQUUsV0FBVyxJQUFJLEtBQUs7U0FDbEMsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sT0FBTztJQVVsQixZQUFZLElBUVg7UUFDQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQVksS0FBZ0I7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVNLFNBQVMsQ0FDZCxzQkFBMEMsU0FBUztRQUVuRCxJQUFJLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBRTlCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDVCxTQUFTLEVBQUUsVUFBVTtvQkFDckIsU0FBUyxFQUFFLGVBQWUsQ0FBQyxRQUFRO29CQUNuQyxFQUFFLEVBQUUsWUFBWSxVQUFVLEVBQUU7aUJBQzdCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNsQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FDeEUsQ0FBQztRQUVGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNPLHdCQUF3QixDQUM5QixLQUFpQixFQUNqQixzQkFBMEMsU0FBUztRQUVuRCxJQUFJLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBRTlCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksbUJBQW1CLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxtQkFBbUIsRUFBRSxDQUFDO29CQUNuRSxNQUFNO2dCQUNSLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7NEJBQ25DLElBQ0U7Z0NBQ0UsZUFBZSxDQUFDLE9BQU87Z0NBQ3ZCLGVBQWUsQ0FBQyxNQUFNO2dDQUN0QixlQUFlLENBQUMsUUFBUTtnQ0FDeEIsZUFBZSxDQUFDLFNBQVM7NkJBQzFCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQ2pDLENBQUM7Z0NBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQztvQ0FDVCxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRTtvQ0FDakUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJO29DQUN2QixxQkFBcUIsRUFBRSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsSUFBSTtvQ0FDeEQsRUFBRSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2lDQUN2QixDQUFDLENBQUM7NEJBQ0wsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxRQUFvQjtRQUNwRCxJQUFJLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBRTlCLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQzdCLENBQUMsUUFBOEMsRUFBRSxFQUFFO29CQUNqRCxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNULFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLE9BQ3JCLFVBQVUsQ0FBQyxtQkFBbUIsQ0FDNUIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FDZixJQUFJLFFBQVEsQ0FBQyxJQUNoQixFQUFFO3dCQUNGLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDcEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVOzRCQUN0QixDQUFDLENBQUMsVUFBVSxRQUFRLENBQUMsVUFBVSxFQUFFOzRCQUNqQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7cUJBQ2hDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FDdEMsQ0FBQyxRQUFzQyxFQUFFLEVBQUU7b0JBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1QsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksT0FDckIsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzs0QkFDNUQsUUFBUSxDQUFDLElBQ1gsRUFBRTt3QkFDRixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ3BCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTs0QkFDZCxDQUFDLENBQUMsWUFBWSxRQUFRLENBQUMsRUFBRSxFQUFFOzRCQUMzQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7cUJBQ2hDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQzVCLENBQUMsUUFBc0MsRUFBRSxFQUFFO3dCQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNULFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLE9BQ3JCLFVBQVUsQ0FBQyxtQkFBbUIsQ0FDNUIsUUFBUSxFQUFFLEVBQUUsRUFDWixJQUFJLENBQUMsU0FBUyxDQUNmLElBQUksUUFBUSxDQUFDLElBQ2hCLEVBQUU7NEJBQ0YsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNwQixFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0NBQ2QsQ0FBQyxDQUFDLFFBQVEsUUFBUSxDQUFDLEVBQUUsRUFBRTtnQ0FDdkIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO3lCQUNoQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUNGLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FDbEMsQ0FBQyxRQUFzQyxFQUFFLEVBQUU7d0JBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ1QsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksT0FDckIsVUFBVSxDQUFDLG1CQUFtQixDQUM1QixRQUFRLEVBQUUsRUFBRSxFQUNaLElBQUksQ0FBQyxTQUFTLENBQ2YsSUFBSSxRQUFRLENBQUMsSUFDaEIsRUFBRTs0QkFDRixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7NEJBQ3BCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQ0FDZCxDQUFDLENBQUMsVUFBVSxRQUFRLENBQUMsRUFBRSxFQUFFO2dDQUN6QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7eUJBQ2hDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQ0YsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sMEJBQTBCLENBQy9CLG1CQUEyQixFQUFFO1FBRTdCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1QsU0FBUyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFO3dCQUNsRCxTQUFTLEVBQUUsZUFBZSxDQUFDLGNBQWM7d0JBQ3pDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtxQkFDVCxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxLQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUU5QixJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFaEQsTUFBTSxXQUFXLEdBQUc7WUFDbEIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1lBQzlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZTtZQUNyQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVM7U0FDaEMsQ0FBQztRQUVGLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNuQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDVCxTQUFTLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUU7d0JBQ2xELFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUzt3QkFDN0IsRUFBRSxFQUFFLE9BQU8sU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFO3FCQUNyQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxPQUFPO0NBSW5CO0FBRUQsTUFBTSxPQUFPLE9BQU87Q0FLbkI7QUFFRCxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUNELE1BQU0sT0FBTyxXQUFXO0lBZ0J0QixZQUFZLElBQVU7UUFmdEIsVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDekIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFDN0IscUJBQWdCLEdBQW1CLEVBQUUsQ0FBQztRQUN0QyxlQUFVLEdBQXNCLEVBQUUsQ0FBQztRQUNuQyxXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQVl6QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQzdCLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FDMUMsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDbkMsQ0FBQyxTQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUNuRCxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDekQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBU3JCLFlBQVksSUFBVTtRQUNwQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQW9CdkIsWUFBWSxJQUFVO1FBQ3BCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUl0QixZQUFZLEtBQVc7UUFDckIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBaUJ2QixZQUFZLElBQVU7UUFDcEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBWXZCLFlBQVksSUFBVTtRQUNwQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQWMxQixZQUFZLElBQVU7UUFDcEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxZQUFZO0NBRXhCO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtDQVU1QjtBQWFELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFlO0lBQy9DLElBQUksRUFBRTtRQUNKLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxFQUFFO1lBQ1IsZUFBZSxFQUFFLENBQUM7WUFDbEIsU0FBUyxFQUFFLEVBQUU7WUFDYixlQUFlLEVBQUUsRUFBRTtZQUNuQixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFlBQVksRUFBRSxLQUFLO1lBQ25CLFlBQVksRUFBRSxLQUFLO1lBQ25CLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCO1FBQ0QsTUFBTSxFQUFFO1lBQ04sS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVBQUUsRUFBRTtZQUNYLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsRUFBRTtZQUNWLGVBQWUsRUFBRSxFQUFFO1lBQ25CLFFBQVEsRUFBRSxFQUFFO1lBQ1oseUJBQXlCLEVBQUUsRUFBRTtZQUM3Qix1QkFBdUIsRUFBRSxFQUFFO1lBQzNCLFFBQVEsRUFBRSxFQUFFO1lBQ1osVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEVBQUU7U0FDakI7UUFDRCxJQUFJLEVBQUUsRUFBRTtRQUNSLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1FBQ3pELFFBQVEsRUFBRSxFQUFFO1FBQ1osU0FBUyxFQUFFLEVBQUU7UUFDYixRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBRTtZQUNQLFFBQVEsRUFBRSxFQUFFO1NBQ2I7UUFDRCxZQUFZLEVBQUUsRUFBRTtRQUNoQixjQUFjLEVBQUUsRUFBRTtRQUNsQixNQUFNLEVBQUUsRUFBRTtRQUNWLG1CQUFtQixFQUFFO1lBQ25CLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsY0FBYyxFQUFFLEVBQUU7U0FDbkI7S0FDRjtJQUNELFdBQVcsRUFBRSxlQUFlO0lBQzVCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixlQUFlLEVBQUUsRUFBRTtJQUNuQixPQUFPLEVBQUUsRUFBRTtDQUNaLENBQUM7QUFFRixNQUFNLE9BQU8sd0JBQXdCO0NBSXBDO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFBNUI7UUFDRSxzQkFBaUIsR0FBdUIsRUFBRSxDQUFDO0lBQzdDLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7Q0FXNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLDBDQUFxQixDQUFBO0lBQ3JCLGtEQUE2QixDQUFBO0FBQy9CLENBQUMsRUFIVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBRzVCO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtDQUloQztBQUVELE1BQU0sT0FBTyxtQkFBbUI7Q0FJL0I7QUFDRCxNQUFNLE9BQU8sb0JBQW9CO0NBR2hDO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtDQU01QjtBQUVELE1BQU0sT0FBTyxxQkFBcUI7Q0FJakM7QUFFRCxNQUFNLE9BQU8sWUFBWTtDQUt4QjtBQUVELE1BQU0sT0FBTyxpQkFBaUI7Q0FJN0I7QUFFRCxNQUFNLE9BQU8sYUFBYTtDQUt6QjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBSUUsMEJBQXFCLEdBQXdDLFNBQVMsQ0FBQztJQUN6RSxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sY0FBYztDQUsxQjtBQUVELE1BQU0sT0FBTyxzQkFBc0I7Q0FlbEM7QUFFRCxNQUFNLE9BQU8sb0JBQW9CO0NBSWhDO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtDQVFqQztBQUVELE1BQU0sQ0FBTixJQUFZLFFBbUJYO0FBbkJELFdBQVksUUFBUTtJQUNsQixxQ0FBTyxDQUFBO0lBQ1AseUNBQVMsQ0FBQTtJQUNULHlDQUFTLENBQUE7SUFDVCx1Q0FBUSxDQUFBO0lBQ1IsMkNBQVUsQ0FBQTtJQUNWLDJDQUFVLENBQUE7SUFDVix5Q0FBUyxDQUFBO0lBQ1QsMkNBQVUsQ0FBQTtJQUNWLCtEQUFvQixDQUFBO0lBQ3BCLDJDQUFVLENBQUE7SUFDViw0REFBbUIsQ0FBQTtJQUNuQixnRUFBcUIsQ0FBQTtJQUNyQixrREFBYyxDQUFBO0lBQ2QsMENBQVUsQ0FBQTtJQUNWLHdEQUFpQixDQUFBO0lBQ2pCLDhDQUFZLENBQUE7SUFDWixrREFBYyxDQUFBO0lBQ2Qsc0RBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQW5CVyxRQUFRLEtBQVIsUUFBUSxRQW1CbkI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLDZEQUFZLENBQUE7SUFDWixtREFBTyxDQUFBO0lBQ1AsbURBQU8sQ0FBQTtBQUNULENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBYVg7QUFiRCxXQUFZLGVBQWU7SUFDekIsbUVBQWUsQ0FBQTtJQUNmLCtEQUFhLENBQUE7SUFDYiw2REFBWSxDQUFBO0lBQ1osaUVBQWMsQ0FBQTtJQUNkLDJEQUFXLENBQUE7SUFDWCw2REFBWSxDQUFBO0lBQ1oseURBQVUsQ0FBQTtJQUNWLDZEQUFZLENBQUE7SUFDWix5RUFBa0IsQ0FBQTtJQUNsQiwrRUFBcUIsQ0FBQTtJQUNyQix3RUFBa0IsQ0FBQTtJQUNsQiw0RUFBb0IsQ0FBQTtBQUN0QixDQUFDLEVBYlcsZUFBZSxLQUFmLGVBQWUsUUFhMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLDZEQUFVLENBQUE7SUFDVixxREFBTSxDQUFBO0FBQ1IsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksc0JBT1g7QUFQRCxXQUFZLHNCQUFzQjtJQUNoQyxtRUFBSSxDQUFBO0lBQ0oseUVBQU8sQ0FBQTtJQUNQLDJFQUFRLENBQUE7SUFDUixxRUFBSyxDQUFBO0lBQ0wscUVBQUssQ0FBQTtJQUNMLDJFQUFRLENBQUE7QUFDVixDQUFDLEVBUFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQU9qQztBQUVELE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDdkIsNkRBQVUsQ0FBQTtJQUNWLCtEQUFXLENBQUE7SUFDWCwyREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2Qix1REFBTyxDQUFBO0lBQ1AseURBQVEsQ0FBQTtJQUNSLDZEQUFVLENBQUE7QUFDWixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRCxNQUFNLE9BQU8sV0FBVztJQVF0QixZQUNFLEVBQVUsRUFDVixRQUFnQixFQUNoQixNQUFjLEVBQ2QsS0FBYyxFQUNkLFFBQWlCLEVBQ2pCLE9BQXVCO1FBUnpCLFlBQU8sR0FBbUIsRUFBRSxDQUFDO1FBVTNCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFJRSxlQUFVLEdBQWEsRUFBRSxDQUFDO0lBQzVCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBbUI7Q0FFcEU7QUFHRCxNQUFNLE9BQU8sVUFBVyxTQUFRLE9BQU87SUFBdkM7O1FBQ0UsY0FBUyxHQUEyQixFQUFFLENBQUM7SUFLekMsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUF0QztRQUVFLFdBQU0sR0FBcUMsRUFBRSxDQUFDO1FBQzlDLG1CQUFjLEdBQTZDLEVBQUUsQ0FBQztJQUloRSxDQUFDO0NBQUE7QUFDRCxNQUFNLE9BQU8sdUJBQXVCO0NBR25DO0FBQ0QsTUFBTSxPQUFPLDhCQUE4QjtJQUEzQztRQU9FLG9CQUFlLEdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxzQ0FBc0M7Q0FHbEQ7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0NBTS9CO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFBeEI7UUFPRSxhQUFRLEdBQXlCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQUE7QUFDRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFdBQVc7Q0FFOUM7QUFNRCxNQUFNLE9BQU8sa0JBQWtCO0NBWTlCO0FBRUQsTUFBTSxPQUFPLGVBQWU7Q0FHM0I7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0NBRzdCO0FBRUQsTUFBTSxPQUFPLGNBQWM7Q0FJMUI7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsY0FBYztDQU94RDtBQUVELE1BQU0sT0FBTyxhQUFhO0NBS3pCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2QiwrQ0FBTyxDQUFBO0lBQ1AseURBQVksQ0FBQTtBQUNkLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhYmVsSW5mbyB9IGZyb20gJy4vbGFiZWwtaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJ0bmVyIH0gZnJvbSAnLi9wYXJ0bmVyLm1vZGVsJztcbmltcG9ydCB7IERpY3Rpb25hcnlMYWJlbEluZm8gfSBmcm9tICcuLi9vdGhlcnMvZGljdGlvbmFyeS1sYWJlbC1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRmx1eEhlbHBlciB9IGZyb20gJy4uL290aGVycy9mbHV4LWhlbHBlcic7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250cm9sLCBTZWN0aW9uRGF0YSwgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWwge1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xuICBnZW5lcmFsRGF0YTogR2VuZXJhbERhdGFNb2RlbDtcbiAgZGVzaWduOiBEZXNpZ25Nb2RlbDtcbiAgZmx1eDogU3RlcERhdGFbXTtcbiAgYXBpOiBBcGlEYXRhO1xuICBwYXJ0bmVyczogQXBwUGFydG5lcltdO1xuICBkb2N1bWVudHM6IEFwcERvY3VtZW50W107XG4gIHN0YXR1c2VzOiBTdGF0dXNNb2RlbFtdO1xuICBkaXNwbGF5OiBEaXNwbGF5TW9kZWw7XG4gIGdlbmVyYXRlZENzczogQ3NzUnVsZXM7XG4gIG1ldGFkYXRhRmllbGRzOiBbXTtcbiAgZXJyb3JzOiB7IFt0YWJOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBhcHBsaWNhdGlvbk1hcHBpbmdzOiBBcHBsaWNhdGlvbk1hcHBpbmdzO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUNvbnRyb2wge1xuICBjb250cm9sSWQ6IHN0cmluZztcbiAgZmlsbFZhbHVlOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZUlkOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZXM/OiBzdHJpbmdbXTtcbiAgZmlsbFZhbHVlSWRzPzogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udHJvbElkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWU6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZUlkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWVzPzogc3RyaW5nW10sXG4gICAgZmlsbFZhbHVlSWRzPzogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5jb250cm9sSWQgPSBjb250cm9sSWQgfHwgJyc7XG4gICAgdGhpcy5maWxsVmFsdWUgPSBmaWxsVmFsdWUgfHwgJyc7XG4gICAgdGhpcy5maWxsVmFsdWVJZCA9IGZpbGxWYWx1ZUlkIHx8ICcnO1xuICAgIHRoaXMuZmlsbFZhbHVlcyA9IGZpbGxWYWx1ZXM7XG4gICAgdGhpcy5maWxsVmFsdWVJZHMgPSBmaWxsVmFsdWVJZHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTZWN0aW9uIHtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25JZDogc3RyaW5nID0gJycsIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdID0gW10pIHtcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHNlY3Rpb25JZCB8fCAnJztcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICB0eXBlOiBudW1iZXIsXG4gICAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW10gPSBbXVxuICApIHtcbiAgICB0aGlzLnN0ZXBJZCA9IHN0ZXBJZCB8fCAnJztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2VjdGlvbnMgPSBzZWN0aW9ucyB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUZpbGwge1xuICBtZXRhZGF0YToge1xuICAgIGFwcERhdGFJZDogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZztcbiAgICBzdGF0dXNJZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmc7XG4gICAgb2ZmZXJJZDogc3RyaW5nO1xuICAgIGlzU3VibWl0dGVkOiBib29sZWFuO1xuICB9O1xuICBmbHV4OiBBcHBEYXRhU3RlcFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcERhdGFJZDogc3RyaW5nID0gJycsXG4gICAgY29uZmlndXJhdGlvbklkOiBzdHJpbmcgPSAnJyxcbiAgICBjdXJyZW50U3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICBzdGF0dXNJZDogc3RyaW5nID0gJycsXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyA9ICcnLFxuICAgIGZsdXg6IEFwcERhdGFTdGVwW10gPSBbXSxcbiAgICBvZmZlcklkOiBzdHJpbmcgPSAnJyxcbiAgICBpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICBhcHBEYXRhSWQ6IGFwcERhdGFJZCB8fCAnJyxcbiAgICAgIGNvbmZpZ3VyYXRpb25JZDogY29uZmlndXJhdGlvbklkIHx8ICcnLFxuICAgICAgY3VycmVudFN0ZXBJZDogY3VycmVudFN0ZXBJZCB8fCAnJyxcbiAgICAgIHN0YXR1c0lkOiBzdGF0dXNJZCB8fCAnJyxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSB8fCAnJyxcbiAgICAgIG9mZmVySWQ6IG9mZmVySWQgfHwgJycsXG4gICAgICBpc1N1Ym1pdHRlZDogaXNTdWJtaXR0ZWQgfHwgZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLmZsdXggPSBmbHV4IHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgd2l0aE5leHRTdGVwOiBib29sZWFuO1xuICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgZW52OiBzdHJpbmc7XG4gIHN0YXR1czogQXBwRGF0YVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihkYXRhOiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gICAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gICAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gICAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gICAgZW52OiBzdHJpbmc7XG4gIH0pIHtcbiAgICAodGhpcy5pZCA9IGRhdGEuaWQgPz8gdW5kZWZpbmVkKSwgKHRoaXMuYXBwRGF0YUlkID0gZGF0YS5hcHBEYXRhSWQgfHwgJycpO1xuICAgIHRoaXMuYXBwQ29uZmlndXJhdGlvbklkID0gZGF0YS5hcHBDb25maWd1cmF0aW9uSWQgfHwgMDtcbiAgICB0aGlzLmZpbGxEYXRhID0gZGF0YS5maWxsRGF0YTtcbiAgICB0aGlzLndpdGhOZXh0U3RlcCA9IGRhdGEud2l0aE5leHRTdGVwO1xuICAgIHRoaXMuYmxvY2tQcmV2aW91c1N0ZXAgPSBkYXRhLmJsb2NrUHJldmlvdXNTdGVwO1xuICAgIGlmICghZGF0YS5lbnYpIHtcbiAgICAgIHRoaXMuZW52ID0gJ0NvbmZpZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW52ID0gZGF0YS5lbnY7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWxFeHRlbnhpb25zIHtcbiAgZm9ybU1vZGVsOiBGb3JtTW9kZWw7XG5cbiAgY29uc3RydWN0b3IobW9kZWw6IEZvcm1Nb2RlbCkge1xuICAgIHRoaXMuZm9ybU1vZGVsID0gbW9kZWw7XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zKFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZm9ybU1vZGVsPy5mbHV4KSB7XG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybU1vZGVsLmRvY3VtZW50cz8ubGVuZ3RoID4gMCkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQodGhpcy5leHRyYWN0RG9jdW1lbnRzRmx1eEl0ZW1zKHRoaXMuZm9ybU1vZGVsLmZsdXgpKTtcbiAgICB9XG4gICAgaXRlbXMgPSBpdGVtcy5jb25jYXQoXG4gICAgICB0aGlzLmV4dHJhY3RTZWN0aW9uc0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4LCB1bnRpbFN0ZXBJZGVudGlmaWVyKVxuICAgICk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbiAgcHJpdmF0ZSBleHRyYWN0U2VjdGlvbnNGbHV4SXRlbXMoXG4gICAgc3RlcHM6IFN0ZXBEYXRhW10sXG4gICAgdW50aWxTdGVwSWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgc3RlcCBvZiBzdGVwcykge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgaWYgKHVudGlsU3RlcElkZW50aWZpZXIgJiYgc3RlcC5pZGVudGlmaWVyID09PSB1bnRpbFN0ZXBJZGVudGlmaWVyKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcC5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIHNlY3Rpb24uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICBTdGVwQ29udHJvbFR5cGUuTmV3Um93LFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkZsdXhJbmZvLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLlBhcmFncmFwaCxcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wudHlwZSkgPT0gZmFsc2VcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtzZWN0aW9uLnRpdGxlfSAtPiAke2NvbnRyb2wudGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogY29udHJvbC50eXBlLFxuICAgICAgICAgICAgICAgICAgbWFudWxJbnB1dENvbnRyb2xUeXBlOiBjb250cm9sLnNwZWNpZmljQ29udHJvbERhdGE/LnR5cGUsXG4gICAgICAgICAgICAgICAgICBpZDogY29udHJvbC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyhzdGVwRGF0YTogU3RlcERhdGFbXSk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgc3RlcERhdGE/LmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlVwbG9hZERvY3VtZW50KSB7XG4gICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHM/LmZvckVhY2goXG4gICAgICAgICAgKGRvY3VtZW50OiB7IGRvY3VtZW50SWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudD8uZG9jdW1lbnRJZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5kb2N1bWVudElkXG4gICAgICAgICAgICAgICAgPyBgdXBsb2FkLiR7ZG9jdW1lbnQuZG9jdW1lbnRJZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuR2VuZXJhdGVEb2N1bWVudCkge1xuICAgICAgICBzdGVwLmNvbmZpZz8uZ2VuZXJhdGVkRG9jdW1lbnRzPy5mb3JFYWNoKFxuICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChkb2N1bWVudD8uaWQsIHRoaXMuZm9ybU1vZGVsKSB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmlkXG4gICAgICAgICAgICAgICAgPyBgZ2VuZXJhdGUuJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuU2lnbikge1xuICAgICAgICBpZiAoc3RlcC5jb25maWc/LmRvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgICAgPyBgc2lnbi4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXAuY29uZmlnPy5zeXN0ZW1Eb2N1bWVudHMpIHtcbiAgICAgICAgICBzdGVwLmNvbmZpZz8uc3lzdGVtRG9jdW1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHN5c3RlbS4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIGZsdXhJdGVtc1dpdGhHZXRBcGlNZXRob2RzKFxuICAgIGV4Y2x1ZGVkTWV0aG9kSWQ6IHN0cmluZyA9ICcnXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuZmx1eEl0ZW1zKCk7XG4gICAgdGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLmZvckVhY2goKGFwaU1ldGhvZCkgPT4ge1xuICAgICAgaWYgKGFwaU1ldGhvZC5pZCAhPT0gZXhjbHVkZWRNZXRob2RJZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlLkFwaU1ldGhvZEZpZWxkLFxuICAgICAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIG9mZmVyTWV0aG9kc0l0ZW1zKCk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgbGV0IG9mZmVyTWV0aG9kc0lkczogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmZvcm1Nb2RlbC5wYXJ0bmVycz8uZm9yRWFjaCgocCkgPT4ge1xuICAgICAgcC5nZW5lcmFsU2V0dGluZ3Mub2ZmZXJzPy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgIG9mZmVyTWV0aG9kc0lkcy5wdXNoKG8uYXBpTWV0aG9kSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvZmZlck1ldGhvZHNJZHMgPSBbLi4ubmV3IFNldChvZmZlck1ldGhvZHNJZHMpXTtcblxuICAgIGNvbnN0IGFsbEFwaUl0ZW1zID0gW1xuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLFxuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLnZhbGlkYXRpb25JdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5zZW5kSXRlbXMsXG4gICAgXTtcblxuICAgIG9mZmVyTWV0aG9kc0lkcy5mb3JFYWNoKChtZXRob2RJZCkgPT4ge1xuICAgICAgY29uc3QgYXBpTWV0aG9kID0gYWxsQXBpSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbWV0aG9kSWQpO1xuICAgICAgaWYgKGFwaU1ldGhvZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogRmx1eFR5cGUuVmlld09mZmVyLFxuICAgICAgICAgICAgaWQ6IGBhcGlfJHthcGlNZXRob2QuaWR9IC0+ICR7Zi5pZH1gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBpRGF0YSB7XG4gIGdldEl0ZW1zOiBHZXRBcGlJdGVtW107XG4gIHZhbGlkYXRpb25JdGVtczogQXBpSXRlbVtdO1xuICBzZW5kSXRlbXM6IEFwaUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2V0QXBpSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBmaWVsZHM6IEdldE1ldGhvZEZpZWxkW107XG4gIHR5cGU6IEFwaU1ldGhvZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgRGVzaWduTW9kZWwge1xuICBmb250czogRm9udENvbmZpZ1tdID0gW107XG4gIGJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIG90cEFjdGlvbkJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIGNvbXBvbmVudHM6IENvbXBvbmVudENvbmZpZ1tdID0gW107XG4gIHRhYmxlczogVGFibGVDb25maWdbXSA9IFtdO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbjogc3RyaW5nO1xuICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogc3RyaW5nO1xuICBtYXhXaWR0aDogc3RyaW5nO1xuICBtYXJnaW5MZWZ0OiBzdHJpbmc7XG4gIG1hcmdpblJpZ2h0OiBzdHJpbmc7XG4gIG1hcmdpblRvcDogc3RyaW5nO1xuICBtYXJnaW5Cb3R0b206IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLmZvbnRzKSB7XG4gICAgICAgIHRoaXMuZm9udHMgPSBkYXRhLmZvbnRzLm1hcCgoZm9udDogYW55KSA9PiBuZXcgRm9udENvbmZpZyhmb250KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmJ1dHRvbnMpIHtcbiAgICAgICAgdGhpcy5idXR0b25zID0gZGF0YS5idXR0b25zLm1hcChcbiAgICAgICAgICAoYnV0dG9uOiBhbnkpID0+IG5ldyBCdXR0b25Db25maWcoYnV0dG9uKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRzKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cyA9IGRhdGEuY29tcG9uZW50cy5tYXAoXG4gICAgICAgICAgKGNvbXBvbmVudDogYW55KSA9PiBuZXcgQ29tcG9uZW50Q29uZmlnKGNvbXBvbmVudClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEudGFibGVzKSB7XG4gICAgICAgIHRoaXMudGFibGVzID0gZGF0YS50YWJsZXMubWFwKCh0YWJsZTogYW55KSA9PiBuZXcgVGFibGVDb25maWcodGFibGUpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5idXR0b25zSG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgICB0aGlzLmJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID0gZGF0YS52ZXJ0aWNhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5tYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb250Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmZvbnRXZWlnaHQgPSBkYXRhLmZvbnRXZWlnaHQ7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBob3Jpem9udGFsUGFkZGluZzogc3RyaW5nO1xuICB2ZXJ0aWNhbFBhZGRpbmc6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIGhlaWdodDogc3RyaW5nO1xuICBtaW5XaWR0aDogc3RyaW5nO1xuICBtaW5IZWlnaHQ6IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWF4SGVpZ2h0OiBzdHJpbmc7XG4gIGhvcml6b250YWxQb3NpdGlvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlckNvbG9yID0gZGF0YS5ib3JkZXJDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyUmFkaXVzID0gZGF0YS5ib3JkZXJSYWRpdXM7XG4gICAgICB0aGlzLmhvcml6b250YWxQYWRkaW5nID0gZGF0YS5ob3Jpem9udGFsUGFkZGluZztcbiAgICAgIHRoaXMudmVydGljYWxQYWRkaW5nID0gZGF0YS52ZXJ0aWNhbFBhZGRpbmc7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMud2lkdGggPSBkYXRhLndpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICAgIHRoaXMubWluV2lkdGggPSBkYXRhLm1pbldpZHRoO1xuICAgICAgdGhpcy5taW5IZWlnaHQgPSBkYXRhLm1pbkhlaWdodDtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSBkYXRhLm1heEhlaWdodDtcbiAgICAgIHRoaXMuaG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbmZpZyB7XG4gIGhlYWRlckNvbmZpZzogSGVhZGVyQ29uZmlnO1xuICBkZXRhaWxDb25maWc6IERldGFpbENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcih0YWJsZT86IGFueSkge1xuICAgIGlmICh0YWJsZSkge1xuICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB0YWJsZS5oZWFkZXJDb25maWc7XG4gICAgICB0aGlzLmRldGFpbENvbmZpZyA9IHRhYmxlLmRldGFpbENvbmZpZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICBwYWRkaW5nOiBzdHJpbmc7XG4gIGJvcmRlckNvbGxhcHNlOiBzdHJpbmc7XG4gIGJvcmRlclNwYWNpbmc6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5ib3JkZXJDb2xsYXBzZSA9IGRhdGEuYm9yZGVyQ29sbGFwc2U7XG4gICAgICB0aGlzLmJvcmRlclNwYWNpbmcgPSBkYXRhLmJvcmRlclNwYWNpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICByb3dCb3JkZXI6IHN0cmluZztcbiAgcm93Qm9yZGVyQ29sb3I6IHN0cmluZztcbiAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMudGV4dENvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLnBhZGRpbmcgPSBkYXRhLnBhZGRpbmc7XG4gICAgICB0aGlzLnJvd0JvcmRlciA9IGRhdGEucm93Qm9yZGVyO1xuICAgICAgdGhpcy5ob3ZlckJhY2tncm91bmRDb2xvciA9IGRhdGEuaG92ZXJCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyUmFkaXVzOiBzdHJpbmc7XG4gIGxhYmVsU3R5bGU6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBib3JkZXJDb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgd2VpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGFydENvbG9yPzogc3RyaW5nO1xuICBlbmRDb2xvcj86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5sYWJlbFN0eWxlID0gZGF0YS5sYWJlbFN0eWxlO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy53ZWlnaHQgPSBkYXRhLndlaWdodDtcbiAgICAgIHRoaXMuc3RhcnRDb2xvciA9IGRhdGEuc3RhcnRDb2xvcjtcbiAgICAgIHRoaXMuZW5kQ29sb3IgPSBkYXRhLmVuZENvbG9yO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICB9XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBEaXNwbGF5TW9kZWwge1xuICBzZWN0aW9uczogU2VjdGlvbkRhdGFbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdlbmVyYWxEYXRhTW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uVHlwZTogbnVtYmVyO1xuICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xuICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgY29udGludWVXaXRoT2ZmZXI6IGJvb2xlYW47XG4gIHNob3dDb3VudGVyU3RlcDogYm9vbGVhbjtcbiAgc2hvd05hbWVTdGVwOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3Jtc1N0YXRlIHtcbiAgZGF0YTogRm9ybU1vZGVsO1xuICBzZWxlY3RlZFRhYjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGNhbkdldEZyb21Qcm9kOiBib29sZWFuO1xuICBjYW5HZXRGcm9tVGVzdDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluUHJvZDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluVGVzdDogYm9vbGVhbjtcbiAgYXBwbGljYXRpb25VdWlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsRm9ybXVsYXJlU3RhdGU6IEZvcm1zU3RhdGUgPSB7XG4gIGRhdGE6IHtcbiAgICBhcHBsaWNhdGlvbklkOiAwLFxuICAgIGFwcGxpY2F0aW9uVXVpZDogJycsXG4gICAgZ2VuZXJhbERhdGE6IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXBwbGljYXRpb25UeXBlOiAwLFxuICAgICAgbGFuZ3VhZ2VzOiBbXSxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZTogJycsXG4gICAgICBjb250aW51ZVdpdGhPZmZlcjogZmFsc2UsXG4gICAgICBzaG93Q291bnRlclN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd05hbWVTdGVwOiBmYWxzZSxcbiAgICAgIHNob3dBbGxTdGVwczogZmFsc2UsXG4gICAgICBzaG93UHJvZ3Jlc3NCYXI6IGZhbHNlLFxuICAgIH0sXG4gICAgZGVzaWduOiB7XG4gICAgICBmb250czogW10sXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIG90cEFjdGlvbkJ1dHRvbnM6IFtdLFxuICAgICAgY29tcG9uZW50czogW10sXG4gICAgICB0YWJsZXM6IFtdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnJyxcbiAgICAgIGZvbnRTaXplOiAnJyxcbiAgICAgIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246ICcnLFxuICAgICAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246ICcnLFxuICAgICAgbWF4V2lkdGg6ICcnLFxuICAgICAgbWFyZ2luTGVmdDogJycsXG4gICAgICBtYXJnaW5SaWdodDogJycsXG4gICAgICBtYXJnaW5Ub3A6ICcnLFxuICAgICAgbWFyZ2luQm90dG9tOiAnJyxcbiAgICB9LFxuICAgIGZsdXg6IFtdLFxuICAgIGFwaTogeyBnZXRJdGVtczogW10sIHZhbGlkYXRpb25JdGVtczogW10sIHNlbmRJdGVtczogW10gfSxcbiAgICBwYXJ0bmVyczogW10sXG4gICAgZG9jdW1lbnRzOiBbXSxcbiAgICBzdGF0dXNlczogW10sXG4gICAgZGlzcGxheToge1xuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgIH0sXG4gICAgZ2VuZXJhdGVkQ3NzOiB7fSxcbiAgICBtZXRhZGF0YUZpZWxkczogW10sXG4gICAgZXJyb3JzOiB7fSxcbiAgICBhcHBsaWNhdGlvbk1hcHBpbmdzOiB7XG4gICAgICBhcHBsaWNhdGlvblR5cGVJZDogMCxcbiAgICAgIGNvbHVtbk1hcHBpbmdzOiBbXSxcbiAgICB9LFxuICB9LFxuICBzZWxlY3RlZFRhYjogJ0RhdGUgZ2VuZXJhbGUnLFxuICBjYW5HZXRGcm9tUHJvZDogZmFsc2UsXG4gIGNhbkdldEZyb21UZXN0OiBmYWxzZSxcbiAgY2FuUHVibGlzaEluUHJvZDogZmFsc2UsXG4gIGNhblB1Ymxpc2hJblRlc3Q6IGZhbHNlLFxuICBhcHBsaWNhdGlvblV1aWQ6ICcnLFxuICB2ZXJzaW9uOiAnJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmcge1xuICBkaWN0aW9uYXJ5SWQ6IHN0cmluZztcbiAgZGljdGlvbmFyeU5hbWU6IHN0cmluZztcbiAgbWFwcGluZ3M6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJTZXR0aW5ncyB7XG4gIHBhcnRuZXJNZXRob2RzQXBpOiBQYXJ0bmVyTWV0aG9kQXBpW10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RBcGkge1xuICBtZXRob2RJZDogc3RyaW5nO1xuICBtZXRob2RUeXBlOiBzdHJpbmc7XG4gIGNhbGxUeXBlOiBzdHJpbmc7XG4gIGJvZHlDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kQm9keTtcbiAgcmVzcG9uc2VDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kUmVzcG9uc2U7XG4gIHVybENvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RVcmw7XG4gIGF1dGhWYWx1ZTogUGFydG5lck1ldGhvZEFwaUF1dGg7XG4gIGhlYWRlcnM6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbiAgLy8gSU5CT1VORC1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIGluYm91bmRNZXRob2RUeXBlPzogSW5ib3VuZE1ldGhvZFR5cGU7IC8vIFR5cGUgb2YgSU5CT1VORCBtZXRob2Rcbn1cblxuZXhwb3J0IGVudW0gSW5ib3VuZE1ldGhvZFR5cGUge1xuICBTdGFuZGFyZCA9ICdTdGFuZGFyZCcsXG4gIFN0YXR1c01ldGhvZCA9ICdTdGF0dXNNZXRob2QnLFxufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEFwaUF1dGgge1xuICBoZWFkZXJOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBhcGlLZXk6IHN0cmluZyB8IG51bGw7XG4gIGF1dGhUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyS2V5VmFsdWVJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIGtleU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUGFydG5lclN0YXR1c01hcHBpbmcge1xuICBwYXJ0bmVyU3RhdHVzOiBzdHJpbmc7XG4gIGFwcFN0YXR1czogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZFVybCB7XG4gIHVybFZhbHVlOiBzdHJpbmc7XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgdGVzdFVybDogc3RyaW5nO1xuICBwcm9kVXJsOiBzdHJpbmc7XG4gIHBhcmFtZXRlck1hcHBpbmdzOiBVcmxNYXBGaWVsZHNbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RSZXNwb25zZSB7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGpzb25WYWx1ZTogc3RyaW5nO1xuICByZXNwb25zZU1hcEZpZWxkczogRmllbGRzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXJsTWFwRmllbGRzIHtcbiAgdXJsUGFyYW1ldGVyOiBzdHJpbmc7XG4gIGZsdXhGaWVsZDogc3RyaW5nO1xuICBmbHV4RmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RCb2R5IHtcbiAgY29udGVudFR5cGU6IHN0cmluZztcbiAganNvblZhbHVlOiBzdHJpbmc7XG4gIGJvZHlNYXBGaWVsZHM6IEZpZWxkc01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkc01hcHBpbmcge1xuICBwYXJ0bmVyRmllbGQ6IHN0cmluZztcbiAgZmx1eEZpZWxkSWQ6IHN0cmluZztcbiAgbWV0aG9kRmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1ldGhvZEZpZWxkIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlIHwgRmx1eFR5cGUgfCBzdHJpbmc7XG4gIG1hbnVsSW5wdXRDb250cm9sVHlwZT86IE1hbnVhbElucHV0Q29udHJvbFR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNZXRob2RGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZSB8IEZsdXhUeXBlIHwgc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhIHtcbiAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZTtcbiAgaXNTaW1wbGVWYWxpZGF0aW9uOiBib29sZWFuO1xuICBpc0FwaVZhbGlkYXRpb246IGJvb2xlYW47XG4gIGFwaVZhbGlkYXRpb25NZXRob2Q/OiBzdHJpbmcgfCBudWxsO1xuICBhcGlWYWxpZGF0aW9uUGFydG5lcj86IHN0cmluZyB8IG51bGw7XG4gIGFsbG93ZWRDaGFyYWN0ZXJzPzogc3RyaW5nO1xuICBtYXhDaGFyYWN0ZXJzPzogbnVtYmVyO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG4gIGFsbG93T25seVBhc3Q/OiBib29sZWFuO1xuICBhbGxvd09ubHlGdXR1cmU/OiBib29sZWFuO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNQcmVjb21wbGV0YWJsZT86IGJvb2xlYW47XG4gIHByZWNvbXBsZXRpb25GaWVsZElkPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmFncmFwaENvbnRyb2xEYXRhIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnlUcmFuc2xhdGlvbnM/OiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlDb250cm9sRGF0YSB7XG4gIGRpY3Rpb25hcnlVVUlEOiBzdHJpbmc7XG4gIHNob3dBc1JhZGlvQnV0dG9uc0xpc3Q6IGJvb2xlYW47XG4gIHJlbGF0ZWREaWN0aW9uYXJpZXNUcmFuc2xhdGlvbnM6IERpY3Rpb25hcnlMYWJlbEluZm9bXTtcbiAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkPzogbnVtYmVyIHwgbnVsbDtcbiAgc2VsZWN0ZWRSZWxhdGVkRGljdGlvbmFyaWVzOiBzdHJpbmdbXTtcbiAgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gIGlzTWFuZGF0b3J5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gRmx1eFR5cGUge1xuICBLeWMgPSAwLFxuICBFbWFpbCA9IDEsXG4gIFBob25lID0gMixcbiAgU2lnbiA9IDMsXG4gIFN0YXR1cyA9IDQsXG4gIEN1c3RvbSA9IDUsXG4gIFBhdXNlID0gNixcbiAgSWRTY2FuID0gNyxcbiAgR2VuZXJhdGVEb2N1bWVudCA9IDgsXG4gIEFjdGlvbiA9IDksXG4gIFVwbG9hZERvY3VtZW50ID0gMTAsXG4gIERvd25sb2FkRG9jdW1lbnQgPSAxMSxcbiAgVmlld09mZmVyID0gMTIsXG4gIEZpbmFsID0gMTMsXG4gIFZpZXdEb2N1bWVudCA9IDE0LFxuICBORVRPUElBID0gMTUsXG4gIEVVUExBVEVTQyA9IDE2LFxuICBPcGVuQmFua2luZyA9IDE3LFxufVxuXG5leHBvcnQgZW51bSBTZWN0aW9uVHlwZSB7XG4gIFByZXNlbnRhdGlvbixcbiAgQ29sbGVjdCxcbiAgRGlzcGxheSxcbn1cblxuZXhwb3J0IGVudW0gU3RlcENvbnRyb2xUeXBlIHtcbiAgTWFudWFsSW5wdXQgPSAwLFxuICBQYXJhZ3JhcGggPSAxLFxuICBDaGVja0JveCA9IDIsXG4gIERpY3Rpb25hcnkgPSAzLFxuICBCdXR0b25zID0gNCxcbiAgRmx1eEluZm8gPSA1LFxuICBOZXdSb3cgPSA2LFxuICBNZXRhZGF0YSA9IDcsXG4gIEFwaU1ldGhvZEZpZWxkID0gOCxcbiAgRG93bmxvYWREb2N1bWVudHMgPSA5LFxuICBWaWV3RG9jdW1lbnRzID0gMTAsXG4gIFVwbG9hZERvY3VtZW50cyA9IDExLFxufVxuXG5leHBvcnQgZW51bSBEaW1lbnNpb25UeXBlIHtcbiAgUGVyY2VudGFnZSxcbiAgUGl4ZWxzLFxufVxuXG5leHBvcnQgZW51bSBNYW51YWxJbnB1dENvbnRyb2xUeXBlIHtcbiAgVGV4dCxcbiAgTnVtZXJpYyxcbiAgRGF0ZVRpbWUsXG4gIEVtYWlsLFxuICBQaG9uZSxcbiAgVGV4dEFyZWEsXG59XG5cbmV4cG9ydCBlbnVtIFNpZ25hdHVyZVR5cGUge1xuICBFbGVjdHJvbmljLFxuICBIYW5kd3JpdHRlbixcbiAgUXVhbGlmaWVkLFxufVxuXG5leHBvcnQgZW51bSBBcGlNZXRob2RUeXBlIHtcbiAgR2V0RGF0YSxcbiAgU2VuZERhdGEsXG4gIFZhbGlkYXRpb24sXG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0dXNNb2RlbCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgZmluYWw6IGJvb2xlYW47XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXVxuICApIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5uYW1lID0gZGVudW1pcmU7XG4gICAgdGhpcy5vcmRlciA9IG9yZGluZTtcbiAgICB0aGlzLmZpbmFsID0gZmluYWw7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YXR1c0FjdGlvbiB7XG4gIGlkPzogc3RyaW5nO1xuICBhY3Rpb25UaXRsZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBwYXJ0bmVySWRzOiBudW1iZXJbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uUGFyYWdyYXBoQ29udHJvbCBleHRlbmRzIFByZXNlbnRhdGlvbkNvbnRyb2wge1xuICBkZXNjcmlwdGlvblRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXIgZXh0ZW5kcyBQYXJ0bmVyIHtcbiAgZG9jdW1lbnRzPzogQXBwUGFydG5lckRvY3VtZW50c1tdID0gW107XG4gIGdlbmVyYWxTZXR0aW5nczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncztcbiAgcGFydG5lclNldHRpbmdzOiBQYXJ0bmVyU2V0dGluZ3M7XG4gIHBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZzogUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nW107XG4gIHBhcnRuZXJTdGF0dXNNYXBwaW5nOiBQYXJ0bmVyU3RhdHVzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncyB7XG4gIGFjY2VwdE11bHRpcGxlT2ZmZXJzOiBib29sZWFuO1xuICBvZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlcltdID0gW107XG4gIHJlY2VpdmVkT2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzUmVjZWl2ZWRPZmZlcltdID0gW107XG4gIHZhbGFiaWxpdHk6IG51bWJlcjtcbiAgaGFzQ3VzdG9tVmFsYWJpbGl0eTogYm9vbGVhbjtcbiAgc3RhdHVzV29ya2VyU2V0dGluZ3M6IEFwcFN0YXR1c1dvcmtlclNldHRpbmdzO1xufVxuZXhwb3J0IGNsYXNzIEFwcFN0YXR1c1dvcmtlclNldHRpbmdzIHtcbiAgbWF4UmV0cmllczogbnVtYmVyO1xuICBsb29wSW50ZXJ2YWw6IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY3VzdG9tVmFsYWJpbGl0eT86IG51bWJlcjtcbiAgYXBpTWV0aG9kRmllbGRzPzogYW55W10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NSZWNlaXZlZE9mZmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgb2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXJbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJEb2N1bWVudHMge1xuICBpZDogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRG9jdW1lbnQge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG4gIGdlbmVyYXRlZEJ5QXBwOiBib29sZWFuO1xuICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHZlcnNpb25zOiBBcHBEb2N1bWVudFZlcnNpb25bXSA9IFtdO1xufVxuZXhwb3J0IGNsYXNzIFNpZ25lZERvY3VtZW50IGV4dGVuZHMgQXBwRG9jdW1lbnQge1xuICBzb3VyY2VEb2N1bWVudHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcERvY3VtZW50RXh0ZW5kZWQgZXh0ZW5kcyBBcHBEb2N1bWVudCB7XG4gIGlzQXBpRG9jdW1lbnQ/OiBib29sZWFuOyBcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERvY3VtZW50VmVyc2lvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uSWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgdmFsaWRGcm9tOiBEYXRlO1xuICB2YWxpZFRvOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xuICBkYXRhOiBzdHJpbmcgfCBudWxsO1xuICBmbHV4Qm9va21hcmtzOiBCb29rbWFya01hcHBpbmdbXTtcbiAgaXNUZW1wb3Jhcnk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rbWFya01hcHBpbmcge1xuICBib29rbWFyazogc3RyaW5nO1xuICBjb250cm9sSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yVHJhbnNsYXRpb25zIHtcbiAgY29kZTogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnQge1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVEYXRhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWREb2N1bWVudERldGFpbHMgZXh0ZW5kcyBVcGxvYWREb2N1bWVudCB7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBkb2N1bWVudEV4dGVuc2lvbnM6IHN0cmluZztcbiAgZG9jdW1lbnRNYXhTaXplOiBudW1iZXI7XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc1VwbG9hZGluZzogYm9vbGVhbjtcbiAgaXNVcGxvYWRTdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgU3RlcHNTZXR0aW5ncyB7XG4gIHNob3dDb3VudGVyOiBib29sZWFuO1xuICBzaG93TGFiZWxzOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gQXBwRGF0YVN0YXR1cyB7XG4gIG5ldyA9IDAsXG4gIGZpbmlzaGVkID0gMSxcbn1cbiJdfQ==
|
|
659
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFHMUUsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNFLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsa0JBQWEsR0FBVyw2QkFBNkIsQ0FBQztRQUN0RCxvQkFBZSxHQUFXLDJEQUEyRCxDQUFDO0lBQ3hGLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxjQUFjO0lBQTNCO1FBQ0UsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDRSwwQkFBcUIsR0FBa0IsSUFBSSxDQUFDO1FBQzVDLG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BFLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxTQUFTO0NBZ0JyQjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQ0UsWUFBb0IsRUFBRSxFQUN0QixZQUFvQixFQUFFLEVBQ3RCLGNBQXNCLEVBQUUsRUFDeEIsVUFBcUIsRUFDckIsWUFBdUI7UUFFdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFJekIsWUFBWSxZQUFvQixFQUFFLEVBQUUsV0FBNkIsRUFBRTtRQUNqRSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQ0UsU0FBaUIsRUFBRSxFQUNuQixJQUFZLEVBQ1osV0FBNkIsRUFBRTtRQUUvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBY3RCLFlBQ0UsWUFBb0IsRUFBRSxFQUN0QixrQkFBMEIsRUFBRSxFQUM1QixnQkFBd0IsRUFBRSxFQUMxQixXQUFtQixFQUFFLEVBQ3JCLFdBQW1CLEVBQUUsRUFDckIsT0FBc0IsRUFBRSxFQUN4QixVQUFrQixFQUFFLEVBQ3BCLGNBQXVCLEtBQUssRUFDNUIsb0JBQTRCLEVBQUU7UUFFOUIsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNkLFNBQVMsRUFBRSxTQUFTLElBQUksRUFBRTtZQUMxQixlQUFlLEVBQUUsZUFBZSxJQUFJLEVBQUU7WUFDdEMsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1lBQ2xDLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRTtZQUN4QixRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDeEIsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFO1lBQ3RCLFdBQVcsRUFBRSxXQUFXLElBQUksS0FBSztZQUNqQyxpQkFBaUIsRUFBRSxpQkFBaUIsSUFBSSxFQUFFO1NBQzNDLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLE9BQU87SUFZbEIsWUFBWSxJQVVYO1FBQ0MsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUFZLEtBQWdCO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFvQjtRQUNqRCxNQUFNLGlCQUFpQixHQUFJLElBQUksQ0FBQyxTQUFpQixFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUM7UUFDL0UsSUFBSSxpQkFBaUIsS0FBSyxJQUFJLElBQUksaUJBQWlCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEUsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLE1BQU0sR0FBUSxTQUFTLENBQUM7UUFDNUIsSUFBSSxPQUFPLGlCQUFpQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDYixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQztnQkFDSCxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLDRFQUE0RTtnQkFDNUUsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxHQUFHLEdBQWtCLEVBQUUsQ0FBQztRQUU5QixNQUFNLElBQUksR0FBRyxDQUFDLElBQVMsRUFBRSxTQUFtQixFQUFFLEVBQUU7WUFDOUMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsU0FBbUI7UUFDNUMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLGtCQUFrQixjQUFjLEVBQUU7WUFDN0MsU0FBUyxFQUFFLGVBQWUsQ0FBQyxRQUFRO1lBQ25DLEVBQUUsRUFBRSxrQkFBa0IsY0FBYyxFQUFFO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRU0sU0FBUyxDQUNkLHNCQUEwQyxTQUFTO1FBRW5ELElBQUksS0FBSyxHQUFrQixFQUFFLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNuRCxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNULFNBQVMsRUFBRSxVQUFVO29CQUNyQixTQUFTLEVBQUUsZUFBZSxDQUFDLFFBQVE7b0JBQ25DLEVBQUUsRUFBRSxZQUFZLFVBQVUsRUFBRTtpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNsQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FDeEUsQ0FBQztRQUVGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNPLHdCQUF3QixDQUM5QixLQUFpQixFQUNqQixzQkFBMEMsU0FBUztRQUVuRCxJQUFJLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBRTlCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksbUJBQW1CLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxtQkFBbUIsRUFBRSxDQUFDO29CQUNuRSxNQUFNO2dCQUNSLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7NEJBQ25DLElBQ0U7Z0NBQ0UsZUFBZSxDQUFDLE9BQU87Z0NBQ3ZCLGVBQWUsQ0FBQyxNQUFNO2dDQUN0QixlQUFlLENBQUMsUUFBUTtnQ0FDeEIsZUFBZSxDQUFDLFNBQVM7NkJBQzFCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQ2pDLENBQUM7Z0NBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQztvQ0FDVCxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRTtvQ0FDakUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJO29DQUN2QixxQkFBcUIsRUFBRSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsSUFBSTtvQ0FDeEQsRUFBRSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2lDQUN2QixDQUFDLENBQUM7NEJBQ0wsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxRQUFvQjtRQUNwRCxJQUFJLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBRTlCLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQzdCLENBQUMsUUFBOEMsRUFBRSxFQUFFO29CQUNqRCxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNULFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLE9BQ3JCLFVBQVUsQ0FBQyxtQkFBbUIsQ0FDNUIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FDZixJQUFJLFFBQVEsQ0FBQyxJQUNoQixFQUFFO3dCQUNGLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDcEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVOzRCQUN0QixDQUFDLENBQUMsVUFBVSxRQUFRLENBQUMsVUFBVSxFQUFFOzRCQUNqQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7cUJBQ2hDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FDdEMsQ0FBQyxRQUFzQyxFQUFFLEVBQUU7b0JBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1QsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksT0FDckIsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzs0QkFDNUQsUUFBUSxDQUFDLElBQ1gsRUFBRTt3QkFDRixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ3BCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTs0QkFDZCxDQUFDLENBQUMsWUFBWSxRQUFRLENBQUMsRUFBRSxFQUFFOzRCQUMzQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7cUJBQ2hDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQzVCLENBQUMsUUFBc0MsRUFBRSxFQUFFO3dCQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNULFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLE9BQ3JCLFVBQVUsQ0FBQyxtQkFBbUIsQ0FDNUIsUUFBUSxFQUFFLEVBQUUsRUFDWixJQUFJLENBQUMsU0FBUyxDQUNmLElBQUksUUFBUSxDQUFDLElBQ2hCLEVBQUU7NEJBQ0YsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNwQixFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0NBQ2QsQ0FBQyxDQUFDLFFBQVEsUUFBUSxDQUFDLEVBQUUsRUFBRTtnQ0FDdkIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO3lCQUNoQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUNGLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FDbEMsQ0FBQyxRQUFzQyxFQUFFLEVBQUU7d0JBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ1QsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksT0FDckIsVUFBVSxDQUFDLG1CQUFtQixDQUM1QixRQUFRLEVBQUUsRUFBRSxFQUNaLElBQUksQ0FBQyxTQUFTLENBQ2YsSUFBSSxRQUFRLENBQUMsSUFDaEIsRUFBRTs0QkFDRixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7NEJBQ3BCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQ0FDZCxDQUFDLENBQUMsVUFBVSxRQUFRLENBQUMsRUFBRSxFQUFFO2dDQUN6QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7eUJBQ2hDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQ0YsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sMEJBQTBCLENBQy9CLG1CQUEyQixFQUFFO1FBRTdCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1QsU0FBUyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFO3dCQUNsRCxTQUFTLEVBQUUsZUFBZSxDQUFDLGNBQWM7d0JBQ3pDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtxQkFDVCxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxLQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUU5QixJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFaEQsTUFBTSxXQUFXLEdBQUc7WUFDbEIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1lBQzlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZTtZQUNyQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVM7U0FDaEMsQ0FBQztRQUVGLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNuQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDVCxTQUFTLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUU7d0JBQ2xELFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUzt3QkFDN0IsRUFBRSxFQUFFLE9BQU8sU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFO3FCQUNyQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxPQUFPO0NBSW5CO0FBRUQsTUFBTSxPQUFPLE9BQU87Q0FLbkI7QUFFRCxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUNELE1BQU0sT0FBTyxXQUFXO0lBZ0J0QixZQUFZLElBQVU7UUFmdEIsVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDekIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFDN0IscUJBQWdCLEdBQW1CLEVBQUUsQ0FBQztRQUN0QyxlQUFVLEdBQXNCLEVBQUUsQ0FBQztRQUNuQyxXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQVl6QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQzdCLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FDMUMsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDbkMsQ0FBQyxTQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUNuRCxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDekQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBU3JCLFlBQVksSUFBVTtRQUNwQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQW9CdkIsWUFBWSxJQUFVO1FBQ3BCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUl0QixZQUFZLEtBQVc7UUFDckIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBaUJ2QixZQUFZLElBQVU7UUFDcEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBWXZCLFlBQVksSUFBVTtRQUNwQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQWMxQixZQUFZLElBQVU7UUFDcEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxZQUFZO0NBRXhCO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtDQVc1QjtBQWFELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFlO0lBQy9DLElBQUksRUFBRTtRQUNKLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxFQUFFO1lBQ1IsZUFBZSxFQUFFLENBQUM7WUFDbEIsU0FBUyxFQUFFLEVBQUU7WUFDYixlQUFlLEVBQUUsRUFBRTtZQUNuQixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFlBQVksRUFBRSxLQUFLO1lBQ25CLFlBQVksRUFBRSxLQUFLO1lBQ25CLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLGNBQWMsRUFBRSxFQUFFO1NBQ25CO1FBQ0QsTUFBTSxFQUFFO1lBQ04sS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVBQUUsRUFBRTtZQUNYLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsRUFBRTtZQUNWLGVBQWUsRUFBRSxFQUFFO1lBQ25CLFFBQVEsRUFBRSxFQUFFO1lBQ1oseUJBQXlCLEVBQUUsRUFBRTtZQUM3Qix1QkFBdUIsRUFBRSxFQUFFO1lBQzNCLFFBQVEsRUFBRSxFQUFFO1lBQ1osVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEVBQUU7U0FDakI7UUFDRCxJQUFJLEVBQUUsRUFBRTtRQUNSLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1FBQ3pELFFBQVEsRUFBRSxFQUFFO1FBQ1osU0FBUyxFQUFFLEVBQUU7UUFDYixRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBRTtZQUNQLFFBQVEsRUFBRSxFQUFFO1NBQ2I7UUFDRCxZQUFZLEVBQUUsRUFBRTtRQUNoQixjQUFjLEVBQUUsRUFBRTtRQUNsQixNQUFNLEVBQUUsRUFBRTtRQUNWLG1CQUFtQixFQUFFO1lBQ25CLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsY0FBYyxFQUFFLEVBQUU7U0FDbkI7UUFDRCxpQkFBaUIsRUFBRSxTQUFTO0tBQzdCO0lBQ0QsV0FBVyxFQUFFLGVBQWU7SUFDNUIsY0FBYyxFQUFFLEtBQUs7SUFDckIsY0FBYyxFQUFFLEtBQUs7SUFDckIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLE9BQU8sRUFBRSxFQUFFO0NBQ1osQ0FBQztBQUVGLE1BQU0sT0FBTyx3QkFBd0I7Q0FJcEM7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNFLHNCQUFpQixHQUF1QixFQUFFLENBQUM7SUFDN0MsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtDQVc1QjtBQUVELE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0IsMENBQXFCLENBQUE7SUFDckIsa0RBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUI7QUFFRCxNQUFNLE9BQU8sb0JBQW9CO0NBSWhDO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtDQUkvQjtBQUNELE1BQU0sT0FBTyxvQkFBb0I7Q0FHaEM7QUFFRCxNQUFNLE9BQU8sZ0JBQWdCO0NBTTVCO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtDQUlqQztBQUVELE1BQU0sT0FBTyxZQUFZO0NBS3hCO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtDQUk3QjtBQUVELE1BQU0sT0FBTyxhQUFhO0NBS3pCO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFBeEI7UUFJRSwwQkFBcUIsR0FBd0MsU0FBUyxDQUFDO0lBQ3pFLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxjQUFjO0NBSzFCO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtDQWVsQztBQUVELE1BQU0sT0FBTyxvQkFBb0I7Q0FJaEM7QUFFRCxNQUFNLE9BQU8scUJBQXFCO0NBUWpDO0FBRUQsTUFBTSxDQUFOLElBQVksUUFtQlg7QUFuQkQsV0FBWSxRQUFRO0lBQ2xCLHFDQUFPLENBQUE7SUFDUCx5Q0FBUyxDQUFBO0lBQ1QseUNBQVMsQ0FBQTtJQUNULHVDQUFRLENBQUE7SUFDUiwyQ0FBVSxDQUFBO0lBQ1YsMkNBQVUsQ0FBQTtJQUNWLHlDQUFTLENBQUE7SUFDVCwyQ0FBVSxDQUFBO0lBQ1YsK0RBQW9CLENBQUE7SUFDcEIsMkNBQVUsQ0FBQTtJQUNWLDREQUFtQixDQUFBO0lBQ25CLGdFQUFxQixDQUFBO0lBQ3JCLGtEQUFjLENBQUE7SUFDZCwwQ0FBVSxDQUFBO0lBQ1Ysd0RBQWlCLENBQUE7SUFDakIsOENBQVksQ0FBQTtJQUNaLGtEQUFjLENBQUE7SUFDZCxzREFBZ0IsQ0FBQTtBQUNsQixDQUFDLEVBbkJXLFFBQVEsS0FBUixRQUFRLFFBbUJuQjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBSVg7QUFKRCxXQUFZLFdBQVc7SUFDckIsNkRBQVksQ0FBQTtJQUNaLG1EQUFPLENBQUE7SUFDUCxtREFBTyxDQUFBO0FBQ1QsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFhWDtBQWJELFdBQVksZUFBZTtJQUN6QixtRUFBZSxDQUFBO0lBQ2YsK0RBQWEsQ0FBQTtJQUNiLDZEQUFZLENBQUE7SUFDWixpRUFBYyxDQUFBO0lBQ2QsMkRBQVcsQ0FBQTtJQUNYLDZEQUFZLENBQUE7SUFDWix5REFBVSxDQUFBO0lBQ1YsNkRBQVksQ0FBQTtJQUNaLHlFQUFrQixDQUFBO0lBQ2xCLCtFQUFxQixDQUFBO0lBQ3JCLHdFQUFrQixDQUFBO0lBQ2xCLDRFQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFiVyxlQUFlLEtBQWYsZUFBZSxRQWExQjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIsNkRBQVUsQ0FBQTtJQUNWLHFEQUFNLENBQUE7QUFDUixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxzQkFPWDtBQVBELFdBQVksc0JBQXNCO0lBQ2hDLG1FQUFJLENBQUE7SUFDSix5RUFBTyxDQUFBO0lBQ1AsMkVBQVEsQ0FBQTtJQUNSLHFFQUFLLENBQUE7SUFDTCxxRUFBSyxDQUFBO0lBQ0wsMkVBQVEsQ0FBQTtBQUNWLENBQUMsRUFQVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBT2pDO0FBRUQsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2Qiw2REFBVSxDQUFBO0lBQ1YsK0RBQVcsQ0FBQTtJQUNYLDJEQUFTLENBQUE7QUFDWCxDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLHVEQUFPLENBQUE7SUFDUCx5REFBUSxDQUFBO0lBQ1IsNkRBQVUsQ0FBQTtBQUNaLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBU3RCLFlBQ0UsRUFBVSxFQUNWLFFBQWdCLEVBQ2hCLE1BQWMsRUFDZCxLQUFjLEVBQ2QsUUFBaUIsRUFDakIsT0FBdUIsRUFDdkIsd0JBQWtDLEVBQUU7UUFWdEMsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFDN0IsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBV25DLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixJQUFJLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUlFLGVBQVUsR0FBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLDRCQUE2QixTQUFRLG1CQUFtQjtDQUVwRTtBQUdELE1BQU0sT0FBTyxVQUFXLFNBQVEsT0FBTztJQUF2Qzs7UUFDRSxjQUFTLEdBQTJCLEVBQUUsQ0FBQztJQUt6QyxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8seUJBQXlCO0lBQXRDO1FBRUUsV0FBTSxHQUFxQyxFQUFFLENBQUM7UUFDOUMsbUJBQWMsR0FBNkMsRUFBRSxDQUFDO0lBSWhFLENBQUM7Q0FBQTtBQUNELE1BQU0sT0FBTyx1QkFBdUI7Q0FHbkM7QUFDRCxNQUFNLE9BQU8sOEJBQThCO0lBQTNDO1FBT0Usb0JBQWUsR0FBVyxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLHNDQUFzQztDQUdsRDtBQUVELE1BQU0sT0FBTyxtQkFBbUI7Q0FNL0I7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQU9FLGFBQVEsR0FBeUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FBQTtBQUNELE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBVztDQUU5QztBQU1ELE1BQU0sT0FBTyxrQkFBa0I7Q0FZOUI7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUczQjtBQUVELE1BQU0sT0FBTyxpQkFBaUI7Q0FHN0I7QUFFRCxNQUFNLE9BQU8sY0FBYztDQUkxQjtBQUVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxjQUFjO0NBT3hEO0FBRUQsTUFBTSxPQUFPLGFBQWE7Q0FLekI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLCtDQUFPLENBQUE7SUFDUCx5REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFiZWxJbmZvIH0gZnJvbSAnLi9sYWJlbC1pbmZvLm1vZGVsJztcbmltcG9ydCB7IFBhcnRuZXIgfSBmcm9tICcuL3BhcnRuZXIubW9kZWwnO1xuaW1wb3J0IHsgRGljdGlvbmFyeUxhYmVsSW5mbyB9IGZyb20gJy4uL290aGVycy9kaWN0aW9uYXJ5LWxhYmVsLWluZm8nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25NYXBwaW5ncyB9IGZyb20gJy4vYXBwbGljYXRpb24tdHlwZS5tb2RlbCc7XG5pbXBvcnQgeyBDc3NSdWxlcyB9IGZyb20gJy4uL290aGVycy91dGlscyc7XG5pbXBvcnQgeyBGbHV4SGVscGVyIH0gZnJvbSAnLi4vb3RoZXJzL2ZsdXgtaGVscGVyJztcbmltcG9ydCB7IFByZXNlbnRhdGlvbkNvbnRyb2wsIFNlY3Rpb25EYXRhLCBTdGVwRGF0YSB9IGZyb20gJy4vZmx1eC5tb2RlbCc7XG5cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkNvbmZpZyB7XG4gIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGl0bGVUZW1wbGF0ZTogc3RyaW5nID0gJ1N0YXR1cyB1cGRhdGU6IHtzdGF0dXNOYW1lfSc7XG4gIG1lc3NhZ2VUZW1wbGF0ZTogc3RyaW5nID0gJ1lvdXIgYXBwbGljYXRpb24gc3RhdHVzIGhhcyBiZWVuIHVwZGF0ZWQgdG86IHtzdGF0dXNOYW1lfSc7XG59XG5cbmV4cG9ydCBjbGFzcyBJbmhlcml0ZWRGaWVsZCB7XG4gIGlkOiBzdHJpbmcgPSAnJztcbiAgZmllbGROYW1lOiBzdHJpbmcgPSAnJztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmVudENoaWxkQ29uZmlnIHtcbiAgcGFyZW50QXBwbGljYXRpb25VdWlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgaW5oZXJpdGVkRmllbGRzOiBJbmhlcml0ZWRGaWVsZFtdID0gW107XG4gIG5vdGlmaWNhdGlvbkNvbmZpZzogTm90aWZpY2F0aW9uQ29uZmlnID0gbmV3IE5vdGlmaWNhdGlvbkNvbmZpZygpO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybU1vZGVsIHtcbiAgYXBwbGljYXRpb25JZDogbnVtYmVyO1xuICBhcHBsaWNhdGlvblV1aWQ6IHN0cmluZztcbiAgZ2VuZXJhbERhdGE6IEdlbmVyYWxEYXRhTW9kZWw7XG4gIGRlc2lnbjogRGVzaWduTW9kZWw7XG4gIGZsdXg6IFN0ZXBEYXRhW107XG4gIGFwaTogQXBpRGF0YTtcbiAgcGFydG5lcnM6IEFwcFBhcnRuZXJbXTtcbiAgZG9jdW1lbnRzOiBBcHBEb2N1bWVudFtdO1xuICBzdGF0dXNlczogU3RhdHVzTW9kZWxbXTtcbiAgZGlzcGxheTogRGlzcGxheU1vZGVsO1xuICBnZW5lcmF0ZWRDc3M6IENzc1J1bGVzO1xuICBtZXRhZGF0YUZpZWxkczogW107XG4gIGVycm9yczogeyBbdGFiTmFtZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgYXBwbGljYXRpb25NYXBwaW5nczogQXBwbGljYXRpb25NYXBwaW5ncztcbiAgcGFyZW50Q2hpbGRDb25maWc/OiBQYXJlbnRDaGlsZENvbmZpZztcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFDb250cm9sIHtcbiAgY29udHJvbElkOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZTogc3RyaW5nO1xuICBmaWxsVmFsdWVJZDogc3RyaW5nO1xuICBmaWxsVmFsdWVzPzogc3RyaW5nW107XG4gIGZpbGxWYWx1ZUlkcz86IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbnRyb2xJZDogc3RyaW5nID0gJycsXG4gICAgZmlsbFZhbHVlOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWVJZDogc3RyaW5nID0gJycsXG4gICAgZmlsbFZhbHVlcz86IHN0cmluZ1tdLFxuICAgIGZpbGxWYWx1ZUlkcz86IHN0cmluZ1tdXG4gICkge1xuICAgIHRoaXMuY29udHJvbElkID0gY29udHJvbElkIHx8ICcnO1xuICAgIHRoaXMuZmlsbFZhbHVlID0gZmlsbFZhbHVlIHx8ICcnO1xuICAgIHRoaXMuZmlsbFZhbHVlSWQgPSBmaWxsVmFsdWVJZCB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZXMgPSBmaWxsVmFsdWVzO1xuICAgIHRoaXMuZmlsbFZhbHVlSWRzID0gZmlsbFZhbHVlSWRzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhU2VjdGlvbiB7XG4gIHNlY3Rpb25JZDogc3RyaW5nO1xuICBjb250cm9sczogQXBwRGF0YUNvbnRyb2xbXTtcblxuICBjb25zdHJ1Y3RvcihzZWN0aW9uSWQ6IHN0cmluZyA9ICcnLCBjb250cm9sczogQXBwRGF0YUNvbnRyb2xbXSA9IFtdKSB7XG4gICAgdGhpcy5zZWN0aW9uSWQgPSBzZWN0aW9uSWQgfHwgJyc7XG4gICAgdGhpcy5jb250cm9scyA9IGNvbnRyb2xzIHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhU3RlcCB7XG4gIHN0ZXBJZDogc3RyaW5nO1xuICB0eXBlOiBudW1iZXI7XG4gIHNlY3Rpb25zOiBBcHBEYXRhU2VjdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0ZXBJZDogc3RyaW5nID0gJycsXG4gICAgdHlwZTogbnVtYmVyLFxuICAgIHNlY3Rpb25zOiBBcHBEYXRhU2VjdGlvbltdID0gW11cbiAgKSB7XG4gICAgdGhpcy5zdGVwSWQgPSBzdGVwSWQgfHwgJyc7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnNlY3Rpb25zID0gc2VjdGlvbnMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFGaWxsIHtcbiAgbWV0YWRhdGE6IHtcbiAgICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgICBjb25maWd1cmF0aW9uSWQ6IHN0cmluZztcbiAgICBjdXJyZW50U3RlcElkOiBzdHJpbmc7XG4gICAgc3RhdHVzSWQ6IHN0cmluZztcbiAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgIG9mZmVySWQ6IHN0cmluZztcbiAgICBpc1N1Ym1pdHRlZDogYm9vbGVhbjtcbiAgICBwYXJlbnRBcHBEYXRhVXVpZD86IHN0cmluZztcbiAgfTtcbiAgZmx1eDogQXBwRGF0YVN0ZXBbXTtcbiAgaW5pdEZsb3dWYWx1ZXM/OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYXBwRGF0YUlkOiBzdHJpbmcgPSAnJyxcbiAgICBjb25maWd1cmF0aW9uSWQ6IHN0cmluZyA9ICcnLFxuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZyA9ICcnLFxuICAgIHN0YXR1c0lkOiBzdHJpbmcgPSAnJyxcbiAgICBsYW5ndWFnZTogc3RyaW5nID0gJycsXG4gICAgZmx1eDogQXBwRGF0YVN0ZXBbXSA9IFtdLFxuICAgIG9mZmVySWQ6IHN0cmluZyA9ICcnLFxuICAgIGlzU3VibWl0dGVkOiBib29sZWFuID0gZmFsc2UsXG4gICAgcGFyZW50QXBwRGF0YVV1aWQ6IHN0cmluZyA9ICcnXG4gICkge1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICBhcHBEYXRhSWQ6IGFwcERhdGFJZCB8fCAnJyxcbiAgICAgIGNvbmZpZ3VyYXRpb25JZDogY29uZmlndXJhdGlvbklkIHx8ICcnLFxuICAgICAgY3VycmVudFN0ZXBJZDogY3VycmVudFN0ZXBJZCB8fCAnJyxcbiAgICAgIHN0YXR1c0lkOiBzdGF0dXNJZCB8fCAnJyxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSB8fCAnJyxcbiAgICAgIG9mZmVySWQ6IG9mZmVySWQgfHwgJycsXG4gICAgICBpc1N1Ym1pdHRlZDogaXNTdWJtaXR0ZWQgfHwgZmFsc2UsXG4gICAgICBwYXJlbnRBcHBEYXRhVXVpZDogcGFyZW50QXBwRGF0YVV1aWQgfHwgJycsXG4gICAgfTtcbiAgICB0aGlzLmZsdXggPSBmbHV4IHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgaW5pdEZsb3dWYWx1ZXM/OiBzdHJpbmc7XG4gIHdpdGhOZXh0U3RlcDogYm9vbGVhbjtcbiAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gIGVudjogc3RyaW5nO1xuICBzdGF0dXM6IEFwcERhdGFTdGF0dXM7XG4gIHBhcmVudEFwcERhdGFVdWlkPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE6IHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgICBmaWxsRGF0YT86IEFwcERhdGFGaWxsO1xuICAgIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xuICAgIHdpdGhOZXh0U3RlcDogYm9vbGVhbjtcbiAgICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgICBlbnY6IHN0cmluZztcbiAgICBwYXJlbnRBcHBEYXRhVXVpZD86IHN0cmluZztcbiAgfSkge1xuICAgICh0aGlzLmlkID0gZGF0YS5pZCA/PyB1bmRlZmluZWQpLCAodGhpcy5hcHBEYXRhSWQgPSBkYXRhLmFwcERhdGFJZCB8fCAnJyk7XG4gICAgdGhpcy5hcHBDb25maWd1cmF0aW9uSWQgPSBkYXRhLmFwcENvbmZpZ3VyYXRpb25JZCB8fCAwO1xuICAgIHRoaXMuZmlsbERhdGEgPSBkYXRhLmZpbGxEYXRhO1xuICAgIHRoaXMuaW5pdEZsb3dWYWx1ZXMgPSBkYXRhLmluaXRGbG93VmFsdWVzO1xuICAgIHRoaXMud2l0aE5leHRTdGVwID0gZGF0YS53aXRoTmV4dFN0ZXA7XG4gICAgdGhpcy5ibG9ja1ByZXZpb3VzU3RlcCA9IGRhdGEuYmxvY2tQcmV2aW91c1N0ZXA7XG4gICAgdGhpcy5wYXJlbnRBcHBEYXRhVXVpZCA9IGRhdGEucGFyZW50QXBwRGF0YVV1aWQ7XG4gICAgaWYgKCFkYXRhLmVudikge1xuICAgICAgdGhpcy5lbnYgPSAnQ29uZmlnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYgPSBkYXRhLmVudjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1Nb2RlbEV4dGVueGlvbnMge1xuICBmb3JtTW9kZWw6IEZvcm1Nb2RlbDtcblxuICBjb25zdHJ1Y3Rvcihtb2RlbDogRm9ybU1vZGVsKSB7XG4gICAgdGhpcy5mb3JtTW9kZWwgPSBtb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW5pdEZsb3dWYWx1ZXNJdGVtcyhpdGVtczogTWV0aG9kRmllbGRbXSk6IHZvaWQge1xuICAgIGNvbnN0IGluaXRGbG93VmFsdWVzUmF3ID0gKHRoaXMuZm9ybU1vZGVsIGFzIGFueSk/LmdlbmVyYWxEYXRhPy5pbml0Rmxvd1ZhbHVlcztcbiAgICBpZiAoaW5pdEZsb3dWYWx1ZXNSYXcgPT09IG51bGwgfHwgaW5pdEZsb3dWYWx1ZXNSYXcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwYXJzZWQ6IGFueSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIGluaXRGbG93VmFsdWVzUmF3ID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IGluaXRGbG93VmFsdWVzUmF3LnRyaW0oKTtcbiAgICAgIGlmICghdHJpbW1lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHRyaW1tZWQpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIElmIGNvbmZpZyBjb250YWlucyBpbnZhbGlkIEpTT04sIGRvIG5vdCBleHBvc2UgYW55IGluaXRGbG93VmFsdWVzIGZpZWxkcy5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWQgPSBpbml0Rmxvd1ZhbHVlc1JhdztcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmlkKSk7XG4gICAgY29uc3Qgb3V0OiBNZXRob2RGaWVsZFtdID0gW107XG5cbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IGFueSwgcGF0aFBhcnRzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXRoUGFydHMubGVuZ3RoID4gMCkgb3V0LnB1c2godGhpcy5idWlsZEluaXRGbG93RmllbGQocGF0aFBhcnRzKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICAgICAgbm9kZS5mb3JFYWNoKChjaGlsZCwgaWR4KSA9PiB3YWxrKGNoaWxkLCBbLi4ucGF0aFBhcnRzLCBTdHJpbmcoaWR4KV0pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG5vZGUpLmZvckVhY2goKGtleSkgPT4gd2Fsayhub2RlW2tleV0sIFsuLi5wYXRoUGFydHMsIGtleV0pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocGF0aFBhcnRzLmxlbmd0aCA+IDApIG91dC5wdXNoKHRoaXMuYnVpbGRJbml0Rmxvd0ZpZWxkKHBhdGhQYXJ0cykpO1xuICAgIH07XG5cbiAgICB3YWxrKHBhcnNlZCwgW10pO1xuXG4gICAgZm9yIChjb25zdCBmIG9mIG91dCkge1xuICAgICAgaWYgKCFleGlzdGluZ0lkcy5oYXMoZi5pZCkpIHtcbiAgICAgICAgaXRlbXMucHVzaChmKTtcbiAgICAgICAgZXhpc3RpbmdJZHMuYWRkKGYuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbml0Rmxvd0ZpZWxkKHBhdGhQYXJ0czogc3RyaW5nW10pOiBNZXRob2RGaWVsZCB7XG4gICAgY29uc3QgdW5kZXJzY29yZVBhdGggPSBwYXRoUGFydHMuam9pbignXycpO1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZE5hbWU6IGBpbml0Rmxvd1ZhbHVlc18ke3VuZGVyc2NvcmVQYXRofWAsXG4gICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5NZXRhZGF0YSxcbiAgICAgIGlkOiBgaW5pdEZsb3dWYWx1ZXNfJHt1bmRlcnNjb3JlUGF0aH1gLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zKFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZEluaXRGbG93VmFsdWVzSXRlbXMoaXRlbXMpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm1Nb2RlbD8uZmx1eCkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5kb2N1bWVudHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KHRoaXMuZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4KSk7XG4gICAgfVxuICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KFxuICAgICAgdGhpcy5leHRyYWN0U2VjdGlvbnNGbHV4SXRlbXModGhpcy5mb3JtTW9kZWwuZmx1eCwgdW50aWxTdGVwSWRlbnRpZmllcilcbiAgICApO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG4gIHByaXZhdGUgZXh0cmFjdFNlY3Rpb25zRmx1eEl0ZW1zKFxuICAgIHN0ZXBzOiBTdGVwRGF0YVtdLFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGZvciAobGV0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGlmICh1bnRpbFN0ZXBJZGVudGlmaWVyICYmIHN0ZXAuaWRlbnRpZmllciA9PT0gdW50aWxTdGVwSWRlbnRpZmllcikge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBzZWN0aW9uLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5CdXR0b25zLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLk5ld1JvdyxcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5GbHV4SW5mbyxcbiAgICAgICAgICAgICAgICAgIFN0ZXBDb250cm9sVHlwZS5QYXJhZ3JhcGgsXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhjb250cm9sLnR5cGUpID09IGZhbHNlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7c2VjdGlvbi50aXRsZX0gLT4gJHtjb250cm9sLnRpdGxlfWAsXG4gICAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IGNvbnRyb2wudHlwZSxcbiAgICAgICAgICAgICAgICAgIG1hbnVsSW5wdXRDb250cm9sVHlwZTogY29udHJvbC5zcGVjaWZpY0NvbnRyb2xEYXRhPy50eXBlLFxuICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRyb2wuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3REb2N1bWVudHNGbHV4SXRlbXMoc3RlcERhdGE6IFN0ZXBEYXRhW10pOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIHN0ZXBEYXRhPy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICBpZiAoc3RlcC50eXBlID09PSBGbHV4VHlwZS5VcGxvYWREb2N1bWVudCkge1xuICAgICAgICBzdGVwLmNvbmZpZz8uZG9jdW1lbnRzPy5mb3JFYWNoKFxuICAgICAgICAgIChkb2N1bWVudDogeyBkb2N1bWVudElkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgRmx1eEhlbHBlci5nZXREb2N1bWVudE5hbWVCeUlkKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmRvY3VtZW50SWQsXG4gICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uZG9jdW1lbnRJZFxuICAgICAgICAgICAgICAgID8gYHVwbG9hZC4ke2RvY3VtZW50LmRvY3VtZW50SWR9YFxuICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLkdlbmVyYXRlRG9jdW1lbnQpIHtcbiAgICAgICAgc3RlcC5jb25maWc/LmdlbmVyYXRlZERvY3VtZW50cz8uZm9yRWFjaChcbiAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoZG9jdW1lbnQ/LmlkLCB0aGlzLmZvcm1Nb2RlbCkgfHxcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgID8gYGdlbmVyYXRlLiR7ZG9jdW1lbnQuaWR9YFxuICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlNpZ24pIHtcbiAgICAgICAgaWYgKHN0ZXAuY29uZmlnPy5kb2N1bWVudHMpIHtcbiAgICAgICAgICBzdGVwLmNvbmZpZz8uZG9jdW1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHNpZ24uJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGVwLmNvbmZpZz8uc3lzdGVtRG9jdW1lbnRzKSB7XG4gICAgICAgICAgc3RlcC5jb25maWc/LnN5c3RlbURvY3VtZW50cy5mb3JFYWNoKFxuICAgICAgICAgICAgKGRvY3VtZW50OiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgICAgRmx1eEhlbHBlci5nZXREb2N1bWVudE5hbWVCeUlkKFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgICApIHx8IGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmlkXG4gICAgICAgICAgICAgICAgICA/IGBzeXN0ZW0uJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgICA6IGAke3N0ZXAudHlwZX0uJHtzdGVwLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBmbHV4SXRlbXNXaXRoR2V0QXBpTWV0aG9kcyhcbiAgICBleGNsdWRlZE1ldGhvZElkOiBzdHJpbmcgPSAnJ1xuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXMgPSB0aGlzLmZsdXhJdGVtcygpO1xuICAgIHRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcy5mb3JFYWNoKChhcGlNZXRob2QpID0+IHtcbiAgICAgIGlmIChhcGlNZXRob2QuaWQgIT09IGV4Y2x1ZGVkTWV0aG9kSWQpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZS5BcGlNZXRob2RGaWVsZCxcbiAgICAgICAgICAgIGlkOiBmLmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBvZmZlck1ldGhvZHNJdGVtcygpOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGxldCBvZmZlck1ldGhvZHNJZHM6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5mb3JtTW9kZWwucGFydG5lcnM/LmZvckVhY2goKHApID0+IHtcbiAgICAgIHAuZ2VuZXJhbFNldHRpbmdzLm9mZmVycz8uZm9yRWFjaCgobykgPT4ge1xuICAgICAgICBvZmZlck1ldGhvZHNJZHMucHVzaChvLmFwaU1ldGhvZElkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgb2ZmZXJNZXRob2RzSWRzID0gWy4uLm5ldyBTZXQob2ZmZXJNZXRob2RzSWRzKV07XG5cbiAgICBjb25zdCBhbGxBcGlJdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5nZXRJdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS52YWxpZGF0aW9uSXRlbXMsXG4gICAgICAuLi50aGlzLmZvcm1Nb2RlbC5hcGkuc2VuZEl0ZW1zLFxuICAgIF07XG5cbiAgICBvZmZlck1ldGhvZHNJZHMuZm9yRWFjaCgobWV0aG9kSWQpID0+IHtcbiAgICAgIGNvbnN0IGFwaU1ldGhvZCA9IGFsbEFwaUl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG1ldGhvZElkKTtcbiAgICAgIGlmIChhcGlNZXRob2QpIHtcbiAgICAgICAgYXBpTWV0aG9kLmZpZWxkcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgZmllbGROYW1lOiBgJHthcGlNZXRob2QubWV0aG9kfSAtPiAke2YuZmllbGROYW1lfWAsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IEZsdXhUeXBlLlZpZXdPZmZlcixcbiAgICAgICAgICAgIGlkOiBgYXBpXyR7YXBpTWV0aG9kLmlkfSAtPiAke2YuaWR9YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaURhdGEge1xuICBnZXRJdGVtczogR2V0QXBpSXRlbVtdO1xuICB2YWxpZGF0aW9uSXRlbXM6IEFwaUl0ZW1bXTtcbiAgc2VuZEl0ZW1zOiBBcGlJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIGZpZWxkczogTWV0aG9kRmllbGRbXTtcbiAgdHlwZTogQXBpTWV0aG9kVHlwZTtcbn1cblxuZXhwb3J0IGNsYXNzIEdldEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBHZXRNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuZXhwb3J0IGNsYXNzIERlc2lnbk1vZGVsIHtcbiAgZm9udHM6IEZvbnRDb25maWdbXSA9IFtdO1xuICBidXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBvdHBBY3Rpb25CdXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xuICBjb21wb25lbnRzOiBDb21wb25lbnRDb25maWdbXSA9IFtdO1xuICB0YWJsZXM6IFRhYmxlQ29uZmlnW10gPSBbXTtcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246IHN0cmluZztcbiAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWFyZ2luTGVmdDogc3RyaW5nO1xuICBtYXJnaW5SaWdodDogc3RyaW5nO1xuICBtYXJnaW5Ub3A6IHN0cmluZztcbiAgbWFyZ2luQm90dG9tOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5mb250cykge1xuICAgICAgICB0aGlzLmZvbnRzID0gZGF0YS5mb250cy5tYXAoKGZvbnQ6IGFueSkgPT4gbmV3IEZvbnRDb25maWcoZm9udCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5idXR0b25zKSB7XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IGRhdGEuYnV0dG9ucy5tYXAoXG4gICAgICAgICAgKGJ1dHRvbjogYW55KSA9PiBuZXcgQnV0dG9uQ29uZmlnKGJ1dHRvbilcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY29tcG9uZW50cykge1xuICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSBkYXRhLmNvbXBvbmVudHMubWFwKFxuICAgICAgICAgIChjb21wb25lbnQ6IGFueSkgPT4gbmV3IENvbXBvbmVudENvbmZpZyhjb21wb25lbnQpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnRhYmxlcykge1xuICAgICAgICB0aGlzLnRhYmxlcyA9IGRhdGEudGFibGVzLm1hcCgodGFibGU6IGFueSkgPT4gbmV3IFRhYmxlQ29uZmlnKHRhYmxlKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMuYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbiA9IGRhdGEuaG9yaXpvbnRhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5idXR0b25zVmVydGljYWxQb3NpdGlvbiA9IGRhdGEudmVydGljYWxQb3NpdGlvbjtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRm9udENvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBmb250V2VpZ2h0OiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy5mb250V2VpZ2h0ID0gZGF0YS5mb250V2VpZ2h0O1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlcjogc3RyaW5nO1xuICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICBib3JkZXJSYWRpdXM6IHN0cmluZztcbiAgaG9yaXpvbnRhbFBhZGRpbmc6IHN0cmluZztcbiAgdmVydGljYWxQYWRkaW5nOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgbWluV2lkdGg6IHN0cmluZztcbiAgbWluSGVpZ2h0OiBzdHJpbmc7XG4gIG1heFdpZHRoOiBzdHJpbmc7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBob3Jpem9udGFsUG9zaXRpb24/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy5ib3JkZXJDb2xvciA9IGRhdGEuYm9yZGVyQ29sb3I7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5ob3Jpem9udGFsUGFkZGluZyA9IGRhdGEuaG9yaXpvbnRhbFBhZGRpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsUGFkZGluZyA9IGRhdGEudmVydGljYWxQYWRkaW5nO1xuICAgICAgdGhpcy5mb250RmFtaWx5ID0gZGF0YS5mb250RmFtaWx5O1xuICAgICAgdGhpcy5mb250U2l6ZSA9IGRhdGEuZm9udFNpemU7XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgICB0aGlzLm1pbldpZHRoID0gZGF0YS5taW5XaWR0aDtcbiAgICAgIHRoaXMubWluSGVpZ2h0ID0gZGF0YS5taW5IZWlnaHQ7XG4gICAgICB0aGlzLm1heFdpZHRoID0gZGF0YS5tYXhXaWR0aDtcbiAgICAgIHRoaXMubWF4SGVpZ2h0ID0gZGF0YS5tYXhIZWlnaHQ7XG4gICAgICB0aGlzLmhvcml6b250YWxQb3NpdGlvbiA9IGRhdGEuaG9yaXpvbnRhbFBvc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVDb25maWcge1xuICBoZWFkZXJDb25maWc6IEhlYWRlckNvbmZpZztcbiAgZGV0YWlsQ29uZmlnOiBEZXRhaWxDb25maWc7XG5cbiAgY29uc3RydWN0b3IodGFibGU/OiBhbnkpIHtcbiAgICBpZiAodGFibGUpIHtcbiAgICAgIHRoaXMuaGVhZGVyQ29uZmlnID0gdGFibGUuaGVhZGVyQ29uZmlnO1xuICAgICAgdGhpcy5kZXRhaWxDb25maWcgPSB0YWJsZS5kZXRhaWxDb25maWc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIZWFkZXJDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICBib3JkZXJDb2xsYXBzZTogc3RyaW5nO1xuICBib3JkZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHZlcnRpY2FsQWxpZ246IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbiAgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGRhdGEuYmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy50ZXh0Q29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy5ib3JkZXIgPSBkYXRhLmJvcmRlcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMucGFkZGluZyA9IGRhdGEucGFkZGluZztcbiAgICAgIHRoaXMuYm9yZGVyQ29sbGFwc2UgPSBkYXRhLmJvcmRlckNvbGxhcHNlO1xuICAgICAgdGhpcy5ib3JkZXJTcGFjaW5nID0gZGF0YS5ib3JkZXJTcGFjaW5nO1xuICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduID0gZGF0YS52ZXJ0aWNhbEFsaWduO1xuICAgICAgdGhpcy53aWR0aCA9IGRhdGEud2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGRhdGEuaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGV0YWlsQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdGV4dENvbG9yOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHBhZGRpbmc6IHN0cmluZztcbiAgcm93Qm9yZGVyOiBzdHJpbmc7XG4gIHJvd0JvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGhvdmVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHZlcnRpY2FsQWxpZ246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5yb3dCb3JkZXIgPSBkYXRhLnJvd0JvcmRlcjtcbiAgICAgIHRoaXMuaG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmhvdmVyQmFja2dyb3VuZENvbG9yO1xuICAgICAgdGhpcy52ZXJ0aWNhbEFsaWduID0gZGF0YS52ZXJ0aWNhbEFsaWduO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBsYWJlbFN0eWxlOiBzdHJpbmc7XG4gIHRleHRBbGlnbjogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYm9yZGVyQ29sb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHdlaWdodD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3RhcnRDb2xvcj86IHN0cmluZztcbiAgZW5kQ29sb3I/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy5ib3JkZXJSYWRpdXMgPSBkYXRhLmJvcmRlclJhZGl1cztcbiAgICAgIHRoaXMubGFiZWxTdHlsZSA9IGRhdGEubGFiZWxTdHlsZTtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMud2VpZ2h0ID0gZGF0YS53ZWlnaHQ7XG4gICAgICB0aGlzLnN0YXJ0Q29sb3IgPSBkYXRhLnN0YXJ0Q29sb3I7XG4gICAgICB0aGlzLmVuZENvbG9yID0gZGF0YS5lbmRDb2xvcjtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5leHBvcnQgY2xhc3MgRGlzcGxheU1vZGVsIHtcbiAgc2VjdGlvbnM6IFNlY3Rpb25EYXRhW107XG59XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmFsRGF0YU1vZGVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcHBsaWNhdGlvblR5cGU6IG51bWJlcjtcbiAgbGFuZ3VhZ2VzOiBzdHJpbmdbXTtcbiAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XG4gIGNvbnRpbnVlV2l0aE9mZmVyOiBib29sZWFuO1xuICBzaG93Q291bnRlclN0ZXA6IGJvb2xlYW47XG4gIHNob3dOYW1lU3RlcDogYm9vbGVhbjtcbiAgc2hvd0FsbFN0ZXBzOiBib29sZWFuO1xuICBzaG93UHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG4gIGluaXRGbG93VmFsdWVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1zU3RhdGUge1xuICBkYXRhOiBGb3JtTW9kZWw7XG4gIHNlbGVjdGVkVGFiOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY2FuR2V0RnJvbVByb2Q6IGJvb2xlYW47XG4gIGNhbkdldEZyb21UZXN0OiBib29sZWFuO1xuICBjYW5QdWJsaXNoSW5Qcm9kOiBib29sZWFuO1xuICBjYW5QdWJsaXNoSW5UZXN0OiBib29sZWFuO1xuICBhcHBsaWNhdGlvblV1aWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxGb3JtdWxhcmVTdGF0ZTogRm9ybXNTdGF0ZSA9IHtcbiAgZGF0YToge1xuICAgIGFwcGxpY2F0aW9uSWQ6IDAsXG4gICAgYXBwbGljYXRpb25VdWlkOiAnJyxcbiAgICBnZW5lcmFsRGF0YToge1xuICAgICAgbmFtZTogJycsXG4gICAgICBhcHBsaWNhdGlvblR5cGU6IDAsXG4gICAgICBsYW5ndWFnZXM6IFtdLFxuICAgICAgZGVmYXVsdExhbmd1YWdlOiAnJyxcbiAgICAgIGNvbnRpbnVlV2l0aE9mZmVyOiBmYWxzZSxcbiAgICAgIHNob3dDb3VudGVyU3RlcDogZmFsc2UsXG4gICAgICBzaG93TmFtZVN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd0FsbFN0ZXBzOiBmYWxzZSxcbiAgICAgIHNob3dQcm9ncmVzc0JhcjogZmFsc2UsXG4gICAgICBpbml0Rmxvd1ZhbHVlczogJycsXG4gICAgfSxcbiAgICBkZXNpZ246IHtcbiAgICAgIGZvbnRzOiBbXSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgb3RwQWN0aW9uQnV0dG9uczogW10sXG4gICAgICBjb21wb25lbnRzOiBbXSxcbiAgICAgIHRhYmxlczogW10sXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcnLFxuICAgICAgZm9udFNpemU6ICcnLFxuICAgICAgYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbjogJycsXG4gICAgICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogJycsXG4gICAgICBtYXhXaWR0aDogJycsXG4gICAgICBtYXJnaW5MZWZ0OiAnJyxcbiAgICAgIG1hcmdpblJpZ2h0OiAnJyxcbiAgICAgIG1hcmdpblRvcDogJycsXG4gICAgICBtYXJnaW5Cb3R0b206ICcnLFxuICAgIH0sXG4gICAgZmx1eDogW10sXG4gICAgYXBpOiB7IGdldEl0ZW1zOiBbXSwgdmFsaWRhdGlvbkl0ZW1zOiBbXSwgc2VuZEl0ZW1zOiBbXSB9LFxuICAgIHBhcnRuZXJzOiBbXSxcbiAgICBkb2N1bWVudHM6IFtdLFxuICAgIHN0YXR1c2VzOiBbXSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICBzZWN0aW9uczogW10sXG4gICAgfSxcbiAgICBnZW5lcmF0ZWRDc3M6IHt9LFxuICAgIG1ldGFkYXRhRmllbGRzOiBbXSxcbiAgICBlcnJvcnM6IHt9LFxuICAgIGFwcGxpY2F0aW9uTWFwcGluZ3M6IHtcbiAgICAgIGFwcGxpY2F0aW9uVHlwZUlkOiAwLFxuICAgICAgY29sdW1uTWFwcGluZ3M6IFtdLFxuICAgIH0sXG4gICAgcGFyZW50Q2hpbGRDb25maWc6IHVuZGVmaW5lZCxcbiAgfSxcbiAgc2VsZWN0ZWRUYWI6ICdEYXRlIGdlbmVyYWxlJyxcbiAgY2FuR2V0RnJvbVByb2Q6IGZhbHNlLFxuICBjYW5HZXRGcm9tVGVzdDogZmFsc2UsXG4gIGNhblB1Ymxpc2hJblByb2Q6IGZhbHNlLFxuICBjYW5QdWJsaXNoSW5UZXN0OiBmYWxzZSxcbiAgYXBwbGljYXRpb25VdWlkOiAnJyxcbiAgdmVyc2lvbjogJycsXG59O1xuXG5leHBvcnQgY2xhc3MgUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nIHtcbiAgZGljdGlvbmFyeUlkOiBzdHJpbmc7XG4gIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmc7XG4gIG1hcHBpbmdzOiBQYXJ0bmVyS2V5VmFsdWVJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyU2V0dGluZ3Mge1xuICBwYXJ0bmVyTWV0aG9kc0FwaTogUGFydG5lck1ldGhvZEFwaVtdID0gW107XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kQXBpIHtcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgbWV0aG9kVHlwZTogc3RyaW5nO1xuICBjYWxsVHlwZTogc3RyaW5nO1xuICBib2R5Q29uZmlndXJhdGlvbjogUGFydG5lck1ldGhvZEJvZHk7XG4gIHJlc3BvbnNlQ29uZmlndXJhdGlvbjogUGFydG5lck1ldGhvZFJlc3BvbnNlO1xuICB1cmxDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kVXJsO1xuICBhdXRoVmFsdWU6IFBhcnRuZXJNZXRob2RBcGlBdXRoO1xuICBoZWFkZXJzOiBQYXJ0bmVyS2V5VmFsdWVJdGVtW107XG4gIC8vIElOQk9VTkQtc3BlY2lmaWMgcHJvcGVydGllc1xuICBpbmJvdW5kTWV0aG9kVHlwZT86IEluYm91bmRNZXRob2RUeXBlOyAvLyBUeXBlIG9mIElOQk9VTkQgbWV0aG9kXG59XG5cbmV4cG9ydCBlbnVtIEluYm91bmRNZXRob2RUeXBlIHtcbiAgU3RhbmRhcmQgPSAnU3RhbmRhcmQnLFxuICBTdGF0dXNNZXRob2QgPSAnU3RhdHVzTWV0aG9kJyxcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RBcGlBdXRoIHtcbiAgaGVhZGVyTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgYXBpS2V5OiBzdHJpbmcgfCBudWxsO1xuICBhdXRoVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lcktleVZhbHVlSXRlbSB7XG4gIGtleTogc3RyaW5nO1xuICBrZXlOYW1lOiBzdHJpbmcgfCBudWxsO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIFBhcnRuZXJTdGF0dXNNYXBwaW5nIHtcbiAgcGFydG5lclN0YXR1czogc3RyaW5nO1xuICBhcHBTdGF0dXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RVcmwge1xuICB1cmxWYWx1ZTogc3RyaW5nO1xuICB0aW1lb3V0OiBudW1iZXI7XG4gIHRlc3RVcmw6IHN0cmluZztcbiAgcHJvZFVybDogc3RyaW5nO1xuICBwYXJhbWV0ZXJNYXBwaW5nczogVXJsTWFwRmllbGRzW107XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kUmVzcG9uc2Uge1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICBqc29uVmFsdWU6IHN0cmluZztcbiAgcmVzcG9uc2VNYXBGaWVsZHM6IEZpZWxkc01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFVybE1hcEZpZWxkcyB7XG4gIHVybFBhcmFtZXRlcjogc3RyaW5nO1xuICBmbHV4RmllbGQ6IHN0cmluZztcbiAgZmx1eEZpZWxkSWQ6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyTWV0aG9kQm9keSB7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGpzb25WYWx1ZTogc3RyaW5nO1xuICBib2R5TWFwRmllbGRzOiBGaWVsZHNNYXBwaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZHNNYXBwaW5nIHtcbiAgcGFydG5lckZpZWxkOiBzdHJpbmc7XG4gIGZsdXhGaWVsZElkOiBzdHJpbmc7XG4gIG1ldGhvZEZpZWxkSWQ6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRob2RGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZSB8IEZsdXhUeXBlIHwgc3RyaW5nO1xuICBtYW51bElucHV0Q29udHJvbFR5cGU/OiBNYW51YWxJbnB1dENvbnRyb2xUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgR2V0TWV0aG9kRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBmaWVsZE5hbWU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUgfCBGbHV4VHlwZSB8IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWFudWFsSW5wdXRDb250cm9sRGF0YSB7XG4gIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGU7XG4gIGlzU2ltcGxlVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgaXNBcGlWYWxpZGF0aW9uOiBib29sZWFuO1xuICBhcGlWYWxpZGF0aW9uTWV0aG9kPzogc3RyaW5nIHwgbnVsbDtcbiAgYXBpVmFsaWRhdGlvblBhcnRuZXI/OiBzdHJpbmcgfCBudWxsO1xuICBhbGxvd2VkQ2hhcmFjdGVycz86IHN0cmluZztcbiAgbWF4Q2hhcmFjdGVycz86IG51bWJlcjtcbiAgbWluVmFsdWU/OiBudW1iZXI7XG4gIG1heFZhbHVlPzogbnVtYmVyO1xuICBhbGxvd09ubHlQYXN0PzogYm9vbGVhbjtcbiAgYWxsb3dPbmx5RnV0dXJlPzogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnk6IGJvb2xlYW47XG4gIGlzUHJlY29tcGxldGFibGU/OiBib29sZWFuO1xuICBwcmVjb21wbGV0aW9uRmllbGRJZD86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJhZ3JhcGhDb250cm9sRGF0YSB7XG4gIGRlc2NyaXB0aW9uVHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbiAgaXNNYW5kYXRvcnk6IGJvb2xlYW47XG4gIGlzTWFuZGF0b3J5VHJhbnNsYXRpb25zPzogTGFiZWxJbmZvW107XG59XG5cbmV4cG9ydCBjbGFzcyBEaWN0aW9uYXJ5Q29udHJvbERhdGEge1xuICBkaWN0aW9uYXJ5VVVJRDogc3RyaW5nO1xuICBzaG93QXNSYWRpb0J1dHRvbnNMaXN0OiBib29sZWFuO1xuICByZWxhdGVkRGljdGlvbmFyaWVzVHJhbnNsYXRpb25zOiBEaWN0aW9uYXJ5TGFiZWxJbmZvW107XG4gIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZD86IG51bWJlciB8IG51bGw7XG4gIHNlbGVjdGVkUmVsYXRlZERpY3Rpb25hcmllczogc3RyaW5nW107XG4gIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24/OiBib29sZWFuO1xuICBpc01hbmRhdG9yeT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEZsdXhUeXBlIHtcbiAgS3ljID0gMCxcbiAgRW1haWwgPSAxLFxuICBQaG9uZSA9IDIsXG4gIFNpZ24gPSAzLFxuICBTdGF0dXMgPSA0LFxuICBDdXN0b20gPSA1LFxuICBQYXVzZSA9IDYsXG4gIElkU2NhbiA9IDcsXG4gIEdlbmVyYXRlRG9jdW1lbnQgPSA4LFxuICBBY3Rpb24gPSA5LFxuICBVcGxvYWREb2N1bWVudCA9IDEwLFxuICBEb3dubG9hZERvY3VtZW50ID0gMTEsXG4gIFZpZXdPZmZlciA9IDEyLFxuICBGaW5hbCA9IDEzLFxuICBWaWV3RG9jdW1lbnQgPSAxNCxcbiAgTkVUT1BJQSA9IDE1LFxuICBFVVBMQVRFU0MgPSAxNixcbiAgT3BlbkJhbmtpbmcgPSAxNyxcbn1cblxuZXhwb3J0IGVudW0gU2VjdGlvblR5cGUge1xuICBQcmVzZW50YXRpb24sXG4gIENvbGxlY3QsXG4gIERpc3BsYXksXG59XG5cbmV4cG9ydCBlbnVtIFN0ZXBDb250cm9sVHlwZSB7XG4gIE1hbnVhbElucHV0ID0gMCxcbiAgUGFyYWdyYXBoID0gMSxcbiAgQ2hlY2tCb3ggPSAyLFxuICBEaWN0aW9uYXJ5ID0gMyxcbiAgQnV0dG9ucyA9IDQsXG4gIEZsdXhJbmZvID0gNSxcbiAgTmV3Um93ID0gNixcbiAgTWV0YWRhdGEgPSA3LFxuICBBcGlNZXRob2RGaWVsZCA9IDgsXG4gIERvd25sb2FkRG9jdW1lbnRzID0gOSxcbiAgVmlld0RvY3VtZW50cyA9IDEwLFxuICBVcGxvYWREb2N1bWVudHMgPSAxMSxcbn1cblxuZXhwb3J0IGVudW0gRGltZW5zaW9uVHlwZSB7XG4gIFBlcmNlbnRhZ2UsXG4gIFBpeGVscyxcbn1cblxuZXhwb3J0IGVudW0gTWFudWFsSW5wdXRDb250cm9sVHlwZSB7XG4gIFRleHQsXG4gIE51bWVyaWMsXG4gIERhdGVUaW1lLFxuICBFbWFpbCxcbiAgUGhvbmUsXG4gIFRleHRBcmVhLFxufVxuXG5leHBvcnQgZW51bSBTaWduYXR1cmVUeXBlIHtcbiAgRWxlY3Ryb25pYyxcbiAgSGFuZHdyaXR0ZW4sXG4gIFF1YWxpZmllZCxcbn1cblxuZXhwb3J0IGVudW0gQXBpTWV0aG9kVHlwZSB7XG4gIEdldERhdGEsXG4gIFNlbmREYXRhLFxuICBWYWxpZGF0aW9uLFxufVxuXG5leHBvcnQgY2xhc3MgU3RhdHVzTW9kZWwge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGZpbmFsOiBib29sZWFuO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgYWN0aW9uczogU3RhdHVzQWN0aW9uW10gPSBbXTtcbiAgY2hpbGRBcHBsaWNhdGlvblV1aWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSxcbiAgICBjaGlsZEFwcGxpY2F0aW9uVXVpZHM6IHN0cmluZ1tdID0gW11cbiAgKSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubmFtZSA9IGRlbnVtaXJlO1xuICAgIHRoaXMub3JkZXIgPSBvcmRpbmU7XG4gICAgdGhpcy5maW5hbCA9IGZpbmFsO1xuICAgIHRoaXMuaXNBY3RpdmUgPSBpc0FjdGl2ZTtcbiAgICB0aGlzLmFjdGlvbnMgPSBhY3Rpb25zO1xuICAgIHRoaXMuY2hpbGRBcHBsaWNhdGlvblV1aWRzID0gY2hpbGRBcHBsaWNhdGlvblV1aWRzIHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0dXNBY3Rpb24ge1xuICBpZD86IHN0cmluZztcbiAgYWN0aW9uVGl0bGU6IHN0cmluZztcbiAgYXBpTWV0aG9kSWQ6IHN0cmluZztcbiAgcGFydG5lcklkczogbnVtYmVyW10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFByZXNlbnRhdGlvblBhcmFncmFwaENvbnRyb2wgZXh0ZW5kcyBQcmVzZW50YXRpb25Db250cm9sIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyIGV4dGVuZHMgUGFydG5lciB7XG4gIGRvY3VtZW50cz86IEFwcFBhcnRuZXJEb2N1bWVudHNbXSA9IFtdO1xuICBnZW5lcmFsU2V0dGluZ3M6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3M7XG4gIHBhcnRuZXJTZXR0aW5nczogUGFydG5lclNldHRpbmdzO1xuICBwYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmc6IFBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZ1tdO1xuICBwYXJ0bmVyU3RhdHVzTWFwcGluZzogUGFydG5lclN0YXR1c01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3Mge1xuICBhY2NlcHRNdWx0aXBsZU9mZmVyczogYm9vbGVhbjtcbiAgb2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXJbXSA9IFtdO1xuICByZWNlaXZlZE9mZmVyczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc1JlY2VpdmVkT2ZmZXJbXSA9IFtdO1xuICB2YWxhYmlsaXR5OiBudW1iZXI7XG4gIGhhc0N1c3RvbVZhbGFiaWxpdHk6IGJvb2xlYW47XG4gIHN0YXR1c1dvcmtlclNldHRpbmdzOiBBcHBTdGF0dXNXb3JrZXJTZXR0aW5ncztcbn1cbmV4cG9ydCBjbGFzcyBBcHBTdGF0dXNXb3JrZXJTZXR0aW5ncyB7XG4gIG1heFJldHJpZXM6IG51bWJlcjtcbiAgbG9vcEludGVydmFsOiBudW1iZXI7XG59XG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc09mZmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGN1c3RvbVZhbGFiaWxpdHk/OiBudW1iZXI7XG4gIGFwaU1ldGhvZEZpZWxkcz86IGFueVtdID0gW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzUmVjZWl2ZWRPZmZlciB7XG4gIGlkOiBzdHJpbmc7XG4gIG9mZmVyczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5nc09mZmVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyRG9jdW1lbnRzIHtcbiAgaWQ6IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBkb2N1bWVudE5hbWU6IHN0cmluZztcbiAgYXBpTWV0aG9kSWQ6IHN0cmluZztcbiAgaXNFZGl0TW9kZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERvY3VtZW50IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBnZW5lcmF0ZWRCeUFwcDogYm9vbGVhbjtcbiAgaXNTdGF0aWM6IGJvb2xlYW47XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICB2ZXJzaW9uczogQXBwRG9jdW1lbnRWZXJzaW9uW10gPSBbXTtcbn1cbmV4cG9ydCBjbGFzcyBTaWduZWREb2N1bWVudCBleHRlbmRzIEFwcERvY3VtZW50IHtcbiAgc291cmNlRG9jdW1lbnRzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBEb2N1bWVudEV4dGVuZGVkIGV4dGVuZHMgQXBwRG9jdW1lbnQge1xuICBpc0FwaURvY3VtZW50PzogYm9vbGVhbjsgXG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEb2N1bWVudFZlcnNpb24ge1xuICBpZDogbnVtYmVyO1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIHZhbGlkRnJvbTogRGF0ZTtcbiAgdmFsaWRUbzogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0TW9kZTogYm9vbGVhbjtcbiAgZGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgZmx1eEJvb2ttYXJrczogQm9va21hcmtNYXBwaW5nW107XG4gIGlzVGVtcG9yYXJ5OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQm9va21hcmtNYXBwaW5nIHtcbiAgYm9va21hcms6IHN0cmluZztcbiAgY29udHJvbElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvclRyYW5zbGF0aW9ucyB7XG4gIGNvZGU6IHN0cmluZztcbiAgdHJhbnNsYXRpb25zOiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFVwbG9hZERvY3VtZW50IHtcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlRGF0YTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnREZXRhaWxzIGV4dGVuZHMgVXBsb2FkRG9jdW1lbnQge1xuICBkb2N1bWVudE5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRFeHRlbnNpb25zOiBzdHJpbmc7XG4gIGRvY3VtZW50TWF4U2l6ZTogbnVtYmVyO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNVcGxvYWRpbmc6IGJvb2xlYW47XG4gIGlzVXBsb2FkU3VjY2VzczogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFN0ZXBzU2V0dGluZ3Mge1xuICBzaG93Q291bnRlcjogYm9vbGVhbjtcbiAgc2hvd0xhYmVsczogYm9vbGVhbjtcbiAgc2hvd0FsbFN0ZXBzOiBib29sZWFuO1xuICBzaG93UHJvZ3Jlc3NCYXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEFwcERhdGFTdGF0dXMge1xuICBuZXcgPSAwLFxuICBmaW5pc2hlZCA9IDEsXG59XG4iXX0=
|