@unifylib/ui-lib 1.0.74 → 1.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +15 -1
- package/esm2022/lib/components/permission-matrix/permission-matrix.component.mjs +46 -4
- package/fesm2022/unifylib-ui-lib.mjs +59 -3
- package/fesm2022/unifylib-ui-lib.mjs.map +1 -1
- package/lib/components/permission-matrix/permission-matrix.component.d.ts +5 -1
- package/package.json +1 -1
- package/esm2022/iq-ui-lib.mjs +0 -5
- package/fesm2022/iq-ui-lib.mjs +0 -6725
- package/fesm2022/iq-ui-lib.mjs.map +0 -1
|
@@ -260,11 +260,19 @@ export class BaseFormCanvasComponent {
|
|
|
260
260
|
}
|
|
261
261
|
const field = this.fields.find(f => f.property === prop);
|
|
262
262
|
if (!field?.validationMessages) {
|
|
263
|
+
if (field?.type === 'phone-number' && control.touched && control.dirty && !control.value) {
|
|
264
|
+
const prefix = this.pageInfo.labelsSection + ".";
|
|
265
|
+
return prefix + 'INVALID_PHONE_NUMBER';
|
|
266
|
+
}
|
|
263
267
|
if (control.value && control.status !== 'VALID' && this.getFirstErrorKey) {
|
|
264
268
|
return this.getFirstErrorKey(prop);
|
|
265
269
|
}
|
|
266
270
|
return '';
|
|
267
271
|
}
|
|
272
|
+
if (field?.type === 'phone-number' && control.touched && control.dirty && !control.value) {
|
|
273
|
+
const prefix = this.pageInfo.labelsSection + ".";
|
|
274
|
+
return prefix + (field.validationMessages?.validatePhoneNumber || 'INVALID_PHONE_NUMBER');
|
|
275
|
+
}
|
|
268
276
|
if (control.invalid) {
|
|
269
277
|
const errors = control.errors || {};
|
|
270
278
|
const prefix = this.pageInfo.labelsSection + ".";
|
|
@@ -282,6 +290,8 @@ export class BaseFormCanvasComponent {
|
|
|
282
290
|
return prefix + (field.validationMessages?.decimalMax || 'DECIMAL_MAX');
|
|
283
291
|
if (errors['pattern'])
|
|
284
292
|
return prefix + (field.validationMessages?.pattern || 'INVALID_FORMAT');
|
|
293
|
+
if (errors['validatePhoneNumber'])
|
|
294
|
+
return prefix + (field.validationMessages?.validatePhoneNumber || 'INVALID_PHONE_NUMBER');
|
|
285
295
|
if (errors['invalidMathExpression'])
|
|
286
296
|
return prefix + 'INVALID_MATH';
|
|
287
297
|
if (errors['dateRangeInvalid'])
|
|
@@ -324,6 +334,10 @@ export class BaseFormCanvasComponent {
|
|
|
324
334
|
}
|
|
325
335
|
showError(prop) {
|
|
326
336
|
const CONTROL = this.formParam?.get([prop]);
|
|
337
|
+
const field = this.fields.find(f => f.property === prop);
|
|
338
|
+
if (field?.type === 'phone-number') {
|
|
339
|
+
return CONTROL?.touched && CONTROL?.dirty && !CONTROL?.value;
|
|
340
|
+
}
|
|
327
341
|
return (CONTROL?.value || CONTROL?.value === 0) && CONTROL?.status === 'INVALID';
|
|
328
342
|
}
|
|
329
343
|
clearFieldValue(prop) {
|
|
@@ -794,4 +808,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
794
808
|
type: ViewChild,
|
|
795
809
|
args: ['EquationValueInput']
|
|
796
810
|
}] } });
|
|
797
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlCLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFdBQVcsRUFDWCxZQUFZLEVBRVosY0FBYyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQzVDLFVBQVUsRUFDWCxNQUFNLHlCQUF5QixDQUFDO0FBSWpDLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixPQUFPLEVBQ1AsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQ3RCLFFBQVEsRUFDUixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFDLFFBQVEsRUFBRSxrQkFBa0Is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SUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNwRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBR0QsWUFBWSxDQUFDLFFBQWdCLEVBQUcsT0FBZSxFQUFHLElBQVk7UUFDNUQsT0FBUSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFFO0lBQ25FLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUs7UUFDdkIsT0FBUSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxPQUFPLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxNQUFNLEtBQUssU0FBUyxDQUFDO0lBQ25GLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ25DLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFdEMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQy9ELElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0RCxDQUFDLENBQUMsQ0FBQTtnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBQ0QsaUNBQWlDO0lBQ25DLENBQUM7SUFFTyxZQUFZLENBQUMsQ0FBUztRQUM1QiwrRUFBK0U7UUFDL0Usa0VBQWtFO1FBQ2xFLDRFQUE0RTtRQUM1RSxPQUFPO0lBQ1QsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWdCO1FBQ2pDLDJKQUEySjtRQUMzSixNQUFNLGFBQWEsR0FBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxvQkFBb0IsR0FBRyxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxhQUFhLENBQUMsSUFBZSxFQUFFLFNBQWlCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBR0QsZ0JBQWdCLENBQUMsR0FBUTtRQUN2QixnQ0FBZ0M7UUFDaEMsZ0hBQWdIO1FBQ2hILElBQUk7UUFDSixvQkFBb0I7SUFDdEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFhLEVBQUUsS0FBZ0I7UUFDM0MsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBZSxFQUFFLFNBQWlCLEVBQUUsR0FBVztRQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDLENBQUM7WUFDdEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQVksRUFBRSxRQUFnQjtRQUM3QyxJQUFJLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBYSxFQUFFLEtBQWdCO1FBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLG1CQUFtQixLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN0RixDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBWSxFQUFFLEtBQWdCO1FBQ3pELElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sMkJBQTJCLENBQUMsS0FBb0I7UUFDdEQsT0FBTyxDQUNMLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTztZQUNyQixLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUc7WUFDakIsS0FBSyxDQUFDLEdBQUcsS0FBSyxVQUFVO1lBQ3hCLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTztZQUN0QixLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFTyxrQ0FBa0MsQ0FBQyxLQUFvQjtRQUM3RCxNQUFNLElBQUksR0FDUixPQUFPLEtBQUssQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUN4QixDQUFDLENBQUMsRUFBb0IsRUFBRSxDQUN0QixDQUFDLFlBQVksV0FBVyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQzlFLENBQUM7UUFDRixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdkIsT0FBTyxDQUFDLFlBQVksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBaUIsRUFBRSxRQUFnQixFQUFFLElBQVk7UUFDcEUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUE0QixDQUFDO1FBQ2xELElBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFnQixFQUFFLElBQVksRUFBRSxPQUFnQjtRQUNyRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDYixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsSUFBWTtRQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDaEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWdCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLCtCQUErQixDQUFDLEtBQWdCO1FBQzlDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDdEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDO1FBQ25ELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsK0JBQStCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLFFBQVE7aUJBQ1osR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVPLCtCQUErQixDQUFDLEtBQWdCLEVBQUUsUUFBa0I7UUFDMUUsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDeEMsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWdCLEVBQUUsSUFBWTtRQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQztRQUM3QyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBZ0IsRUFBRSxRQUFhO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNuRCxPQUFPLFFBQVE7YUFDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQUs7UUFDekIsSUFBSSxFQUFFLEdBQUcseUpBQXlKLENBQUM7UUFDbkssT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBd0IsRUFBRSxJQUFlLEVBQUUsU0FBaUI7UUFFMUUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzFCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0Isb0JBQW9CO1FBQ3BCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWEsRUFBRSxRQUFnQjtRQUNsRCxNQUFNLENBQUMsR0FBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUNsQixPQUFPLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFDcEYsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBd0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRS9CLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxjQUFjLENBQUM7WUFDeEIsQ0FBQztZQUVELGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzQyxPQUFPLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBbUM7UUFDMUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDdEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRWxDLElBQUksYUFBdUIsQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELGFBQWEsR0FBRyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztZQUM3RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQztRQUNELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxtQ0FBbUM7UUFDakMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ04sdURBQXVEO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWdCLEVBQUUsTUFBYTtRQUMzQyxpQ0FBaUM7UUFDakMsUUFBUTtRQUNSLDZGQUE2RjtRQUM3Rix1REFBdUQ7UUFDdkQsb0NBQW9DO1FBQ3BDLGdCQUFnQjtRQUNoQiwrRUFBK0U7UUFDL0Usa0NBQWtDO1FBQ2xDLElBQUk7SUFDTixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUs7UUFDWCxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxlQUFlLENBQUMsc0JBQThCLEVBQUUsTUFBNkIsRUFBRSxLQUFLO1FBQ2xGLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDN0IsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3RELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWdCO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELDBGQUEwRjtRQUMxRixvRkFBb0Y7UUFDcEYsbUNBQW1DO1FBQ25DLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUM5QixDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBaUIsRUFBRSxLQUFnQjtRQUMxRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1Qsb0RBQW9EO1lBQ3BELElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN6QixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDdEYsTUFBTSxhQUFhLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO29CQUMxQyxxREFBcUQ7b0JBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxhQUFhLHFDQUFxQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztvQkFDcEcsT0FBTztnQkFDVCxDQUFDO1lBQ0gsQ0FBQztZQUVELG1DQUFtQztZQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUVELHdCQUF3QjtZQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUMxQixJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsS0FBSztnQkFDWixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7YUFDckMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTiw0Q0FBNEM7WUFDNUMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0F4dkJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLCtwRUFYdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsV0FBVztnQkFDcEIsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO2FBQ3pEO1lBQ0QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQzFELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO1NBQ2hELGtLQ3BKSCxraXBGQXF5Q0EsNjhJRG50Q0ksbUJBQW1CLHErQ0FDbkIsUUFBUSw0RUFDUixXQUFXLCtCQUNYLE9BQU8sbUhBQ1AsZ0JBQWdCLCtJQUNoQixZQUFZLGlEQUNaLElBQUksNkZBQ0osT0FBTyxvRkFDUCxRQUFRLHFEQUNSLGtCQUFrQiw0ckJBQ2xCLGVBQWUsMkZBQ2YsY0FBYywwa0JBQ2Qsa0JBQWtCLG1LQUNsQixhQUFhLHdGQUNiLG1CQUFtQiw2S0FFbkIsWUFBWSxxRkFDWixPQUFPLDJJQUNQLGFBQWEsNkZBR2IsT0FBTyw4U0FFUCxhQUFhLHVNQUNiLFdBQVcsaVVBQ1gsY0FBYyxnU0FDZCxjQUFjLG1UQUNkLFNBQVMsd2VBQ1QsU0FBUyxxSkFDVCxPQUFPLDJRQUNQLFdBQVcsc0lBQ1gsY0FBYyxxU0FDZCxVQUFVLGtGQUNWLFFBQVEsNENBQ1IsbUJBQW1CLHdLQUNuQixZQUFZLGlEQUNaLDJCQUEyQix3VUFDM0IsV0FBVyw2S0FDWCxZQUFZLDZRQUNaLFVBQVUsOEpBQ1YsY0FBYyw4TUFDZCxhQUFhLGlNQUNiLDBCQUEwQixvS0FDMUIscUJBQXFCLHlLQUdyQixhQUFhLDREQU1iLDJCQUEyQiw2SUFDM0Isb0JBQW9CLG1GQUNwQixrQkFBa0I7OzRGQWVULHVCQUF1QjtrQkF6RW5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixJQUFJO3dCQUNKLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixRQUFRO3dCQUNSLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysc0JBQXNCO3dCQUN0QixPQUFPO3dCQUNQLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsVUFBVTt3QkFDVixRQUFRO3dCQUNSLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWiwyQkFBMkI7d0JBQzNCLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixPQUFPO3dCQUNQLDJCQUEyQjt3QkFDM0Isb0JBQW9CO3dCQUNwQixrQkFBa0I7cUJBQ25CLGFBR1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLFdBQVc7NEJBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7NEJBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQzt5QkFDekQ7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO3dCQUMxRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtxQkFDaEQ7cU1BT0QsUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFHTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFNTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUtJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU07Z0JBbUJFLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFhMkIsV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGNvbXB1dGVkLFxyXG4gIG1vZGVsLFxyXG4gIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7XHJcbiAgTWF0Q2hpcCxcclxuICBNYXRDaGlwR3JpZCxcclxuICBNYXRDaGlwSW5wdXQsXHJcbiAgTWF0Q2hpcElucHV0RXZlbnQsXHJcbiAgTWF0Q2hpcExpc3Rib3gsIE1hdENoaXBPcHRpb24sIE1hdENoaXBSZW1vdmUsXHJcbiAgTWF0Q2hpcFJvd1xyXG59IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5pbXBvcnQge0ZpZWxkSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvZmllbGQtaW5mb1wiO1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9iYWNrZW5kLXNlcnZpY2VcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7UGFnZUluZm99IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL3BhZ2UtaW5mb1wiO1xyXG5pbXBvcnQge0NPTU1BLCBFTlRFUiwgU0VNSUNPTE9OfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2tleWNvZGVzXCI7XHJcbmltcG9ydCB7TG9va3VwSXRlbX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvbG9va3VwSXRlbVwiO1xyXG5pbXBvcnQge0ZpZWxkTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvYXBpLXJlc3BvbnNlXCI7XHJcbmltcG9ydCB7XHJcbiAgQXN5bmNQaXBlLFxyXG4gIEN1cnJlbmN5UGlwZSxcclxuICBEYXRlUGlwZSxcclxuICBLZXlWYWx1ZVBpcGUsXHJcbiAgTmdGb3JPZixcclxuICBOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlLFxyXG4gIE5nU3dpdGNoLFxyXG4gIE5nU3dpdGNoQ2FzZSxcclxuICBOZ1RlbXBsYXRlT3V0bGV0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEVycm9yLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdExhYmVsfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHtNYXREYXRlcGlja2VyLCBNYXREYXRlcGlja2VySW5wdXQsIE1hdERhdGVwaWNrZXJUb2dnbGUsIE1hdERhdGVSYW5nZUlucHV0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7TWF0SWNvbkJ1dHRvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQge0Nka1RleHRhcmVhQXV0b3NpemV9IGZyb20gXCJAYW5ndWxhci9jZGsvdGV4dC1maWVsZFwiO1xyXG5pbXBvcnQge01hdFJhZGlvQnV0dG9uLCBNYXRSYWRpb0dyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW9cIjtcclxuaW1wb3J0IHtNYXRDaGVja2JveH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94XCI7XHJcbmltcG9ydCB7TWF0U2xpZGVUb2dnbGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcclxuaW1wb3J0IHtNYXRPcHRpb24sIE1hdFNlbGVjdH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xyXG5pbXBvcnQge01hdE1lbnUsIE1hdE1lbnVJdGVtLCBNYXRNZW51VHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHtNYXREaXZpZGVyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlclwiO1xyXG5pbXBvcnQge05neEpzb25WaWV3ZXJNb2R1bGV9IGZyb20gXCJuZ3gtanNvbi12aWV3ZXJcIjtcclxuaW1wb3J0IHtOZ3hNYXRJbnRsVGVsSW5wdXRDb21wb25lbnR9IGZyb20gXCJuZ3gtbWF0LWludGwtdGVsLWlucHV0XCI7XHJcbmltcG9ydCB7TXVsdGlBdXRvQ29tcGxldGVDb21wb25lbnR9IGZyb20gXCIuLi9tdWx0aS1hdXRvLWNvbXBsZXRlL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXV0b0NvbXBsZXRlQ29tcG9uZW50fSBmcm9tIFwiLi4vYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0F0dGFjaG1lbnRVcGxvYWRlckNvbXBvbmVudH0gZnJvbSBcIi4uL3NoYXJlZC9hdHRhY2htZW50LXVwbG9hZGVyL2F0dGFjaG1lbnQtdXBsb2FkZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtYXB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7TGl2ZUFubm91bmNlcn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCI7XHJcbmltcG9ydCB7YnVpbGRGb3JtRmllbGRzLCBleHRyYWN0RmllbGROYW1lfSBmcm9tIFwiLi4vLi4vdXRpbHMvYmFzZS11dGlsc1wiO1xyXG5pbXBvcnQgbW9tZW50LCB7TW9tZW50fSBmcm9tIFwibW9tZW50L21vbWVudFwiO1xyXG5pbXBvcnQge01hdENlbGwsIE1hdENlbGxEZWYsIE1hdEhlYWRlckNlbGwsIE1hdEhlYWRlckNlbGxEZWZ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xyXG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7TUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlclwiO1xyXG5pbXBvcnQge0RlY2ltYWxPbmx5RGlyZWN0aXZlfSBmcm9tIFwiLi9OdW1iZXJzT25seURpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge01heERpZ2l0c0RpcmVjdGl2ZX0gZnJvbSBcIi4vTWF4RGlnaXRzRGlyZWN0aXZlXCI7XHJcbmV4cG9ydCBjb25zdCBERF9NTV9ZWVlZX0Zvcm1hdCA9IHtcclxuICBwYXJzZTogeyBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZJyB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogJ0REL01NL1lZWVknLFxyXG4gICAgbW9udGhZZWFyTGFiZWw6ICdNTU0gWVlZWScsXHJcbiAgICBkYXRlQTExeUxhYmVsOiAnREQvTU0vWVlZWScsXHJcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIFlZWVknLFxyXG4gIH0sXHJcbn07XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJhc2UtZm9ybS1jYW52YXMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5nU3dpdGNoLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBOZ0Zvck9mLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIEtleVZhbHVlUGlwZSxcclxuICAgIE5nSWYsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0TGFiZWwsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdERhdGVwaWNrZXJJbnB1dCxcclxuICAgIE1hdERhdGVwaWNrZXIsXHJcbiAgICBNYXREYXRlcGlja2VyVG9nZ2xlLFxyXG4gICAgTWF0RXJyb3IsXHJcbiAgICBOZ1N3aXRjaENhc2UsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgTWF0SWNvbkJ1dHRvbixcclxuICAgIE1hdEF1dG9jb21wbGV0ZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXHJcbiAgICBNYXRDaGlwLFxyXG4gICAgQ2RrVGV4dGFyZWFBdXRvc2l6ZSxcclxuICAgIE1hdFJhZGlvR3JvdXAsXHJcbiAgICBNYXRDaGVja2JveCxcclxuICAgIE1hdFJhZGlvQnV0dG9uLFxyXG4gICAgTWF0U2xpZGVUb2dnbGUsXHJcbiAgICBNYXRTZWxlY3QsXHJcbiAgICBNYXRPcHRpb24sXHJcbiAgICBNYXRNZW51LFxyXG4gICAgTWF0TWVudUl0ZW0sXHJcbiAgICBNYXRNZW51VHJpZ2dlcixcclxuICAgIE1hdERpdmlkZXIsXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIE5neEpzb25WaWV3ZXJNb2R1bGUsXHJcbiAgICBDdXJyZW5jeVBpcGUsXHJcbiAgICBOZ3hNYXRJbnRsVGVsSW5wdXRDb21wb25lbnQsXHJcbiAgICBNYXRDaGlwR3JpZCxcclxuICAgIE1hdENoaXBJbnB1dCxcclxuICAgIE1hdENoaXBSb3csXHJcbiAgICBNYXRDaGlwTGlzdGJveCxcclxuICAgIE1hdENoaXBPcHRpb24sXHJcbiAgICBNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudCxcclxuICAgIEF1dG9Db21wbGV0ZUNvbXBvbmVudCxcclxuICAgIE1hdERhdGVSYW5nZUlucHV0LFxyXG4gICAgQXN5bmNQaXBlLFxyXG4gICAgTWF0Q2hpcFJlbW92ZSxcclxuICAgIE1hdENlbGwsXHJcbiAgICBNYXRDZWxsRGVmLFxyXG4gICAgTWF0SGVhZGVyQ2VsbCxcclxuICAgIE1hdEhlYWRlckNlbGxEZWYsXHJcbiAgICBOZ1N0eWxlLFxyXG4gICAgQXR0YWNobWVudFVwbG9hZGVyQ29tcG9uZW50LFxyXG4gICAgRGVjaW1hbE9ubHlEaXJlY3RpdmUsXHJcbiAgICBNYXhEaWdpdHNEaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNlLWZvcm0tY2FudmFzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuY3NzJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXHJcbiAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlcixcclxuICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU11cclxuICAgIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBERF9NTV9ZWVlZX0Zvcm1hdCB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZVZhbHVlOiAnZW4tR0InIH1cclxuICBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUZvcm1DYW52YXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBwdWJsaWMgaGlkZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgZGF0ZVZpZXdNb2RlOiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInID0gJ21vbnRoJztcclxuICBASW5wdXQoKVxyXG4gIHBhZ2VJbmZvITogUGFnZUluZm87XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIGN1cnJlbmN5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxyXG4gIGZpZWxkczogRmllbGRJbmZvW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZXJyb3JzOiBGaWVsZE1lc3NhZ2VbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHdvcmtmbG93RWRpdGFibGVGaWVsZHM6IHN0cmluZ1tdPVtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgaXNXb3JrZmxvd0VkaXRhYmxlTWFuYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHN1cHBvcnRpbmdBdHRyaWJ1dGVzOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gV2hlbiB0cnVlLCBlbWl0IGZvcm1VcGRhdGVkIG9uIGV2ZXJ5IHZhbHVlIGNoYW5nZS4gRGVmYXVsdCBpcyBmYWxzZSB0byBhdm9pZFxyXG4gIC8vIG5vaXN5IGVtaXNzaW9ucyBmb3IgYWxsIGNvbnN1bWVycy4gSXRlbS1saW5lLWVkaXRvciB3aWxsIGVuYWJsZSB0aGlzIGV4cGxpY2l0bHkuXHJcbiAgQElucHV0KClcclxuICBlbWl0T25WYWx1ZUNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJSZXNldE5vbmNlID0gMDtcclxuXHJcbiAgQElucHV0KClcclxuICBpdGVtOiBhbnkgPSB7fTtcclxuXHJcbiAgX2RlZmF1bHRzOiBhbnkgPSB7fTtcclxuXHJcbiAgQE91dHB1dCgpIGF0dGFjaG1lbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgYWN0aW9uRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZvcm1VcGRhdGVkOiBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBoeXBlclRleHRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcbiAgZm9ybVBhcmFtITogRm9ybUdyb3VwO1xyXG4gIHNjcmVlbkZpZWxkcyA9IG5ldyBNYXA8bnVtYmVyLCBGaWVsZEluZm9bXT4oKTtcclxuICByZW1vdmFibGUgPSB0cnVlO1xyXG4gIHNlbGVjdGFibGUgPSB0cnVlO1xyXG4gIGFkZE9uQmx1ciA9IHRydWU7XHJcblxyXG4gIHJlYWRvbmx5IHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BLCBTRU1JQ09MT05dO1xyXG5cclxuICByZWFkb25seSBtaW5EYXRlID0gbW9tZW50KFsxODAwLCAwLCAxXSk7XHJcblxyXG4gIHB1YmxpYyBpc1BlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNOZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpdGVtSWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZXF1YXRpb25PcGVyYXRvcnMgOiBzdHJpbmdbXSA9IFsnKycsJy0nLCcoJyBdO1xyXG4gIEBJbnB1dCgpIGVxdWF0aW9uU3VnZ2VzdGVkRmllbGRzOiB7IG5hbWU6IHN0cmluZywgaWQ6IHN0cmluZyB9W10gPSBbXTtcclxuICBhbGxFcXVhdGlvbkZpZWxkczogQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPjtcclxuICByZWFkb25seSBlcXVhdGlvblZhbHVlcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xyXG4gIGN1cnJlbnRFcXVhdGlvblZhbHVlID0gbW9kZWw8c3RyaW5nPignJyk7XHJcblxyXG4gIHJlYWRvbmx5IGVxdWF0aW9uRmlsdGVyZWRGaWVsZHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBjdXJyZW50RXF1YXRpb25WYWx1ZSA9IHRoaXMuY3VycmVudEVxdWF0aW9uVmFsdWUoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsRXF1YXRpb25GaWVsZHMucGlwZShcclxuICAgICAgICBtYXAoZmllbGRzID0+XHJcbiAgICAgICAgICAgIGN1cnJlbnRFcXVhdGlvblZhbHVlID8gZmllbGRzPy5maWx0ZXIoZmllbGQgPT4gZmllbGQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjdXJyZW50RXF1YXRpb25WYWx1ZSkpIDogZmllbGRzPy5zbGljZSgpXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxuICB9KTtcclxuICBAVmlld0NoaWxkKCdFcXVhdGlvblZhbHVlSW5wdXQnKSBmaWVsZHNJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgc2V0IGRlZmF1bHRzKHZhbHVlOiBhbnkgfCB1bmRlZmluZWQpIHtcclxuICAgIC8vIHRoaXMuYmFja2VuZFNlcnZpY2UuX2RlZmF1bHRzID0gdmFsdWU7XHJcbiAgICB0aGlzLl9kZWZhdWx0cyA9IHZhbHVlO1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIC8vIHRoaXMubXlDYWxsYmFjayA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRzKCk6IGFueSB8IHVuZGVmaW5lZCB7XHJcbiAgICAvLyB0aGlzLm15Q2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdHM7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5iYWNrZW5kU2VydmljZS5fZGVmYXVsdHM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBiYWNrZW5kU2VydmljZTogQmFja2VuZFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5pdGVtICYmIHRoaXMuaXRlbS5maWVsZFZhbHVlKXtcclxuICAgICAgdGhpcy5lcXVhdGlvblZhbHVlcy51cGRhdGUodmFsdWUgPT4gdGhpcy5pdGVtLmZpZWxkVmFsdWUpXHJcbiAgICB9XHJcbiAgICB0aGlzLmRlZmF1bHRzID0gdGhpcy5pdGVtO1xyXG4gICAgdGhpcy5leHRyYWN0TGFibGVzKCk7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pc1BlbmRpbmcgPSBkYXRhWydtb2RlJ10gPT09ICdwZW5kaW5nJztcclxuICAgICAgdGhpcy5pc05ldyA9IGRhdGFbJ21vZGUnXSA9PT0gJ25ldyc7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuYXV0aFNlcnZpY2Uuc3VtbWFyeVBhbmVsU3RhdGUkLm5leHQoQ29uc3RhbnRzLlNVTU1BUllfUEFORUxfQ0xPU0VEKTtcclxuICAgIC8vIHRoaXMuZGVmYXVsdHMgPSB7fTtcclxuICAgIC8vIHRoaXMuaW52b2ljZVFJbml0KCk7XHJcbiAgICB0aGlzLmFsbEVxdWF0aW9uRmllbGRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlRXF1YXRpb25PcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUaW1lVG9EYXRlKHY6IGFueSl7XHJcbiAgICBjb25zdCBmcm9tVGltZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodikge1xyXG4gICAgICBsZXQgc3BsaXQgPSB2LnNwbGl0KFwiOlwiKTtcclxuICAgICAgZnJvbVRpbWUuc2V0SG91cnMoc3BsaXRbMF0sIHNwbGl0WzFdKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRGF0ZShmcm9tVGltZS5nZXRUaW1lKCkpO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2hMb29rdXBWYWx1ZSgkZXZlbnQ6IExvb2t1cEl0ZW0sIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoJGV2ZW50Py5pZCAhPT0gLTEgJiYgdGhpcy5kZWZhdWx0cykge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHRoaXMuZGVmYXVsdHNbZmllbGROYW1lXSA9IHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZE5hbWUpLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRCYW5rTmFtZShmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgLy9UT0RPIEJhdG9vbCBkbyB3ZSBuZWVkIHRoaXMgaGVyZSA/XHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkTmFtZSkudmFsdWU/Lmxlbmd0aCA+IDEwICYmICFpc05hTih0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGROYW1lKS52YWx1ZSkgKSB7XHJcbiAgICAgIHJldHVybiAnIC8gJyArIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdCQU5LLicgKyB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGROYW1lKS52YWx1ZT8uc3Vic3RyKDQsIDQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhdGNoTXVsdGlTZWxlY3RWYWx1ZSgkZXZlbnQ6IExvb2t1cEl0ZW1bXSwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICgkZXZlbnQ/Lmxlbmd0aCA+PSAwICYmIHRoaXMuZGVmYXVsdHMpIHtcclxuICAgICAgdGhpcy5kZWZhdWx0c1tmaWVsZE5hbWVdID0gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkTmFtZSkudmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGl0ZW0sIGVycm9ycywgZmllbGRzLCBmaWx0ZXJSZXNldE5vbmNlIH0gPSBjaGFuZ2VzO1xyXG5cclxuICAgIGVycm9ycz8uY3VycmVudFZhbHVlPy5mb3JFYWNoKChtc2c6IEZpZWxkTWVzc2FnZSkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1QYXJhbS5nZXQobXNnLmZpZWxkTmFtZSk/LnNldEVycm9ycyh7c2VydmVyRXJyb3I6IG1zZy5tZXNzYWdlfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoaXRlbT8uY3VycmVudFZhbHVlICYmICFpdGVtLmlzRmlyc3RDaGFuZ2UoKSl7XHJcbiAgICAgIHRoaXMuZGVmYXVsdHMgPSBpdGVtLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmllbGRzPy5jdXJyZW50VmFsdWUgJiYgIWZpZWxkcy5pc0ZpcnN0Q2hhbmdlKCkpe1xyXG4gICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgZmlsdGVyUmVzZXROb25jZSAmJlxyXG4gICAgICAhZmlsdGVyUmVzZXROb25jZS5pc0ZpcnN0Q2hhbmdlKCkgJiZcclxuICAgICAgZmlsdGVyUmVzZXROb25jZS5jdXJyZW50VmFsdWUgIT09IGZpbHRlclJlc2V0Tm9uY2UucHJldmlvdXNWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucmVzZXRGaWx0ZXJGb3JtVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93RmllbGQoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XHJcbiAgICByZXR1cm4gKGl0ZW0uaWQgfHwgKCFpdGVtLmlkICYmICFmaWVsZC51cGRhdGVPbmx5KSkgJiYgZmllbGQudmlzaWJsZVxyXG4gIH1cclxuXHJcbiAgd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkOiB7IHByb3BlcnR5OiBzdHJpbmc7IH0pIHtcclxuICAgIGNvbnN0IHggPSB0aGlzLmlzV29ya2Zsb3dFZGl0YWJsZU1hbmFnZWQgPyB0aGlzLndvcmtmbG93RWRpdGFibGVGaWVsZHM/LmZpbmRJbmRleChkID0+IGQgPT09IGZpZWxkLnByb3BlcnR5KSA+IC0xIDogdHJ1ZTtcclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcbiAgc2hvd011bHRpU2VsZWN0VmFsdWVzQXNSZWFkb25seShmaWVsZDogRmllbGRJbmZvKSB7XHJcbiAgICBjb25zdCB2aWV3UHJvcCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXREZWZhdWx0TGFuZygpID09PSAnZW4nID8gJ2VuZ2xpc2hOYW1lJyA6ICdhcmFiaWNOYW1lJztcclxuICAgIHJldHVybiB0aGlzLmV4dHJhY3RGaWVsZE5hbWUodGhpcy5kZWZhdWx0cyxmaWVsZC5wcm9wZXJ0eSk/Lm1hcCgoYTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiBhW3ZpZXdQcm9wXSk7XHJcbiAgfVxyXG5cclxuICBzcGxpdFJlYWRvbmx5KHZhbHVlczogYW55KSB7XHJcbiAgICByZXR1cm4gIXZhbHVlcyB8fCB2YWx1ZXMgPT09ICcnID8gW106IHZhbHVlcy5zcGxpdCgnOycpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlZmVyZW5jZUF0dHJpYnV0ZVRydWUoZmllbGROYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogYW55KSB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5yZWZlcmVuY2VBdHRyaWJ1dGVUcnVlKGZpZWxkTmFtZSwgdGhpcy5wYWdlSW5mby5wcm9jZXNzSWQsIGF0dHJpYnV0ZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVMYWJsZShpdGVtRWxlbWVudDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoaXRlbUVsZW1lbnQpXHJcbiAgfVxyXG5cclxuICBidWlsZEZvcm0oKSB7XHJcbiAgICBpZiAoIXRoaXMuZmllbGRzIHx8IHRoaXMuZmllbGRzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5kZWZhdWx0cykgcmV0dXJuO1xyXG5cclxuICAgIGlmICghdGhpcy5mb3JtUGFyYW0pIHtcclxuICAgICAgdGhpcy5mb3JtUGFyYW0gPSB0aGlzLmZiLmdyb3VwKGJ1aWxkRm9ybUZpZWxkcyh0aGlzLmZpZWxkcywgdGhpcy5kZWZhdWx0cykpO1xyXG4gICAgICAvLyBFbWl0IGluaXRpYWwgZm9ybSByZWZlcmVuY2VcclxuICAgICAgdGhpcy5mb3JtVXBkYXRlZC5uZXh0KHRoaXMuZm9ybVBhcmFtKTtcclxuICAgICAgLy8gRW1pdCBvbiBldmVyeSB2YWx1ZSBjaGFuZ2Ugc28gcGFyZW50IGNvbXBvbmVudHMgY2FuIHJlYWN0IGxpdmVcclxuICAgICAgaWYgKHRoaXMuZW1pdE9uVmFsdWVDaGFuZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFyYW0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQodGhpcy5mb3JtUGFyYW0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXRjaFZhbHVlczogYW55ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIGlmIChmaWVsZC5yZWFkb25seSkge1xyXG4gICAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpZWxkLnR5cGUgIT09ICdzcGFjZXInKSB7XHJcbiAgICAgICAgbGV0IHYgPSBleHRyYWN0RmllbGROYW1lKHRoaXMuZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KTtcclxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ211bHRpLXN0YXRlLWNoZWNrYm94JyAmJiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwpKSB7XHJcbiAgICAgICAgICB2ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhdGNoVmFsdWVzW2ZpZWxkLnByb3BlcnR5XSA9IHY7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1QYXJhbS5wYXRjaFZhbHVlKHBhdGNoVmFsdWVzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0RmlsdGVyRm9ybVZhbHVlcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5mb3JtUGFyYW0gfHwgIXRoaXMuZmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZW1wdHk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlICE9PSAnc3BhY2VyJykge1xyXG4gICAgICAgIGVtcHR5W2ZpZWxkLnByb3BlcnR5XSA9IGZpZWxkLnR5cGUgPT09ICdtdWx0aS1zdGF0ZS1jaGVja2JveCcgPyBbXSA6IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZm9ybVBhcmFtLnBhdGNoVmFsdWUoZW1wdHksIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgbGFiZWxLZXkoY29sdW1uOiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbmZpZ3VyZWRLZXkgPSBjb2x1bW4ubGFiZWwgPyBjb2x1bW4ubGFiZWwgOiBjb2x1bW4ucHJvcGVydHlcclxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uKSA/IGAke2NvbmZpZ3VyZWRLZXl9YCA6IGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XHJcbiAgfVxyXG5cclxuICBsYWJlbEtleVBsYWNlSG9sZGVyKGNvbHVtbjogYW55KSB7XHJcbiAgICBjb25zdCBjb25maWd1cmVkS2V5ID0gY29sdW1uLnBsYWNlaG9sZGVyID8gY29sdW1uLnBsYWNlaG9sZGVyIDogY29sdW1uLnByb3BlcnR5XHJcbiAgICByZXR1cm4gY29uZmlndXJlZEtleS5zdGFydHNXaXRoKHRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbikgPyBgJHtjb25maWd1cmVkS2V5fWAgOiBgJHt0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb259LiR7Y29uZmlndXJlZEtleX1gO1xyXG4gIH1cclxuXHJcbiAgYmxvY2tOZWdhdGl2ZU51bWJlcktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGZpZWxkOiBGaWVsZEluZm8pOiB2b2lkIHtcclxuICAgIGlmIChmaWVsZC5hbGxvd05lZ2F0aXZlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5rZXkgPT09ICctJyB8fCBldmVudC5jb2RlID09PSAnTWludXMnIHx8IGV2ZW50LmNvZGUgPT09ICdOdW1wYWRTdWJ0cmFjdCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEVycm9ycyhwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybVBhcmFtPy5nZXQoW3Byb3BdKTtcclxuICAgIGlmICghY29udHJvbCB8fCBjb250cm9sLmRpc2FibGVkKSByZXR1cm4gJyc7XHJcblxyXG4gICAgaWYgKGNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLmVycm9ycykge1xyXG4gICAgICBjb25zdCBlcnIgPSBjb250cm9sLmVycm9ycztcclxuICAgICAgaWYgKGVyclsnbWF0RGF0ZXBpY2tlck1pbiddKSB7XHJcbiAgICAgICAgcmV0dXJuICdtYXREYXRlcGlja2VyTWluJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXJyWydtYXREYXRlcGlja2VyTWF4J10pIHtcclxuICAgICAgICByZXR1cm4gJ21hdERhdGVwaWNrZXJNYXgnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKGYgPT4gZi5wcm9wZXJ0eSA9PT0gcHJvcCk7XHJcblxyXG4gICAgaWYgKCFmaWVsZD8udmFsaWRhdGlvbk1lc3NhZ2VzKSB7XHJcbiAgICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wuc3RhdHVzICE9PSAnVkFMSUQnICYmIHRoaXMuZ2V0Rmlyc3RFcnJvcktleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpcnN0RXJyb3JLZXkocHJvcCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb250cm9sLmludmFsaWQpIHtcclxuICAgICAgY29uc3QgZXJyb3JzID0gY29udHJvbC5lcnJvcnMgfHwge307XHJcbiAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbiArIFwiLlwiO1xyXG5cclxuICAgICAgaWYgKGVycm9yc1sncmVxdWlyZWQnXSkgcmV0dXJuIHByZWZpeCArICdSRVFVSVJFRCc7XHJcbiAgICAgIGlmIChlcnJvcnNbJ21pbiddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8ubWluIHx8ICdOVU1CRVJfTUlOJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ21heCddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8ubWF4IHx8ICdOVU1CRVJfTUFYJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ21heGxlbmd0aCddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8ubWF4bGVuZ3RoIHx8ICdNQVhfTEVOR1RIJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ2RlY2ltYWxNaW4nXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/LmRlY2ltYWxNaW4gfHwgJ0RFQ0lNQUxfTUlOJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ2RlY2ltYWxNYXgnXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/LmRlY2ltYWxNYXggfHwgJ0RFQ0lNQUxfTUFYJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ3BhdHRlcm4nXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/LnBhdHRlcm4gfHwgJ0lOVkFMSURfRk9STUFUJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ2ludmFsaWRNYXRoRXhwcmVzc2lvbiddKSByZXR1cm4gcHJlZml4ICsgJ0lOVkFMSURfTUFUSCc7XHJcbiAgICAgIGlmIChlcnJvcnNbJ2RhdGVSYW5nZUludmFsaWQnXSkgcmV0dXJuIHByZWZpeCArICdkYXRlUmFuZ2VJbnZhbGlkJztcclxuICAgICAgaWYgKGVycm9yc1snc2VydmVyRXJyb3InXSkgcmV0dXJuIHByZWZpeCArIGVycm9yc1snc2VydmVyRXJyb3InXTtcclxuXHJcbiAgICAgIHJldHVybiBwcmVmaXggKyAnSU5WQUxJRF9WQUxVRSc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEZpcnN0RXJyb3JLZXkocHJvcDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZm9ybVBhcmFtPy5nZXQoW3Byb3BdKT8uZXJyb3JzO1xyXG5cclxuICAgIGlmICghZXJyb3JzIHx8IE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBlcnJvcnM/Llsnc2VydmVyRXJyb3InXSB8fCAnSU5WQUxJRF9GT1JNQVQnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpWzBdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENvdW50cnlDb2RlTGlzdCgpIHtcclxuICAgIHJldHVybiBbJ2FmJywgJ2F4JywgJ2FsJywgJ2R6JywgJ2FzJywgJ2FkJywgJ2FvJywgJ2FpJywgJ2FxJywgJ2FnJywgJ2FyJywgJ2FtJywgJ2F3JywgJ2F1JywgJ2F0JywgJ2F6JyxcclxuICAgICAgJ2JzJywgJ2JoJywgJ2JkJywgJ2JiJywgJ2J5JywgJ2JlJywgJ2J6JywgJ2JqJywgJ2JtJywgJ2J0JywgJ2JvJywgJ2JhJywgJ2J3JywgJ2J2JywgJ2JyJywgJ2lvJywgJ2JuJyxcclxuICAgICAgJ2JnJywgJ2JmJywgJ2JpJywgJ2toJywgJ2NtJywgJ2NhJywgJ2N2JywgJ2t5JywgJ2NmJywgJ3RkJywgJ2NsJywgJ2NuJywgJ2N4JywgJ2NjJywgJ2NvJywgJ2ttJywgJ2NnJyxcclxuICAgICAgJ2NkJywgJ2NrJywgJ2NyJywgJ2NpJywgJ2hyJywgJ2N1JywgJ2N5JywgJ2N6JywgJ2RrJywgJ2RqJywgJ2RtJywgJ2RvJywgJ2VjJywgJ2VnJywgJ3N2JywgJ2dxJywgJ2VyJyxcclxuICAgICAgJ2VlJywgJ2V0JywgJ2ZrJywgJ2ZvJywgJ2ZqJywgJ2ZpJywgJ2ZyJywgJ2dmJywgJ3BmJywgJ3RmJywgJ2dhJywgJ2dtJywgJ2dlJywgJ2RlJywgJ2doJywgJ2dpJywgJ2dyJyxcclxuICAgICAgJ2dsJywgJ2dkJywgJ2dwJywgJ2d1JywgJ2d0JywgJ2dnJywgJ2duJywgJ2d3JywgJ2d5JywgJ2h0JywgJ2htJywgJ3ZhJywgJ2huJywgJ2hrJywgJ2h1JywgJ2lzJywgJ2luJyxcclxuICAgICAgJ2lkJywgJ2lyJywgJ2lxJywgJ2llJywgJ2ltJywgJ2l0JywgJ2ptJywgJ2pwJywgJ2plJywgJ2pvJywgJ2t6JywgJ2tlJywgJ2tpJywgJ2tyJywgJ2t3JywgJ2tnJywgJ2xhJyxcclxuICAgICAgJ2x2JywgJ2xiJywgJ2xzJywgJ2xyJywgJ2x5JywgJ2xpJywgJ2x0JywgJ2x1JywgJ21vJywgJ21rJywgJ21nJywgJ213JywgJ215JywgJ212JywgJ21sJywgJ210JywgJ21oJyxcclxuICAgICAgJ21xJywgJ21yJywgJ211JywgJ3l0JywgJ214JywgJ2ZtJywgJ21kJywgJ21jJywgJ21uJywgJ21lJywgJ21zJywgJ21hJywgJ216JywgJ21tJywgJ25hJywgJ25yJywgJ25wJyxcclxuICAgICAgJ25sJywgJ2FuJywgJ25jJywgJ256JywgJ25pJywgJ25lJywgJ25nJywgJ251JywgJ25mJywgJ21wJywgJ25vJywgJ29tJywgJ3BrJywgJ3B3JywgJ3BzJywgJ3BhJywgJ3BnJyxcclxuICAgICAgJ3B5JywgJ3BlJywgJ3BoJywgJ3BuJywgJ3BsJywgJ3B0JywgJ3ByJywgJ3FhJywgJ3JlJywgJ3JvJywgJ3J1JywgJ3J3JywgJ2JsJywgJ3NoJywgJ2tuJywgJ2xjJywgJ21mJyxcclxuICAgICAgJ3BtJywgJ3ZjJywgJ3dzJywgJ3NtJywgJ3N0JywgJ3NhJywgJ3NuJywgJ3JzJywgJ3NjJywgJ3NsJywgJ3NnJywgJ3NrJywgJ3NpJywgJ3NiJywgJ3NvJywgJ3phJywgJ2dzJyxcclxuICAgICAgJ2VzJywgJ2xrJywgJ3NkJywgJ3NyJywgJ3NqJywgJ3N6JywgJ3NlJywgJ2NoJywgJ3N5JywgJ3R3JywgJ3RqJywgJ3R6JywgJ3RoJywgJ3RsJywgJ3RnJywgJ3RrJywgJ3RvJyxcclxuICAgICAgJ3R0JywgJ3RuJywgJ3RyJywgJ3RtJywgJ3RjJywgJ3R2JywgJ3VnJywgJ3VhJywgJ2FlJywgJ2diJywgJ3VzJywgJ3VtJywgJ3V5JywgJ3V6JywgJ3Z1JywgJ3ZlJywgJ3ZuJyxcclxuICAgICAgJ3ZnJywgJ3ZpJywgJ3dmJywgJ2VoJywgJ3llJywgJ3ptJywgJ3p3J107XHJcbiAgfVxyXG5cclxuXHJcbiAgZnJpZW5kbHlOYW1lKGZ1bGxQYXRoOiBzdHJpbmcgLCBzdWJQYXRoOiBzdHJpbmcgLCBpdGVtOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuICBmdWxsUGF0aC5zdWJzdHJpbmcoMCwgZnVsbFBhdGguaW5kZXhPZihzdWJQYXRoKSkgKyBpdGVtIDtcclxuICB9XHJcblxyXG4gIHNob3dWYWx1ZShkZWZhdWx0cywgZmllbGQpe1xyXG4gICAgcmV0dXJuICB0aGlzLmZyaWVuZGx5TmFtZShmaWVsZC5sYWJlbCAsIGZpZWxkLnByb3BlcnR5ICwgZGVmYXVsdHNbZmllbGQucHJvcGVydHldKTtcclxuICB9XHJcblxyXG4gIHNob3dFcnJvcihwcm9wOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IENPTlRST0wgPSB0aGlzLmZvcm1QYXJhbT8uZ2V0KFtwcm9wXSk7XHJcbiAgICByZXR1cm4gKENPTlRST0w/LnZhbHVlIHx8IENPTlRST0w/LnZhbHVlID09PSAwKSAmJiBDT05UUk9MPy5zdGF0dXMgPT09ICdJTlZBTElEJztcclxuICB9XHJcblxyXG4gIGNsZWFyRmllbGRWYWx1ZShwcm9wOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybVBhcmFtPy5nZXQoW3Byb3BdKT8uc2V0VmFsdWUoJycpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlZmF1bHRzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdExhYmxlcygpIHtcclxuICAgIHRoaXMuZmllbGRzLmZvckVhY2goZiA9PiB7XHJcbiAgICAgIGlmIChmLnZpc2libGUpIHtcclxuICAgICAgICBmLmxhYmVsID0gdGhpcy5sYWJlbEtleShmKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNjcmVlbkZpZWxkcy5oYXMoZi5yb3cpKSB7XHJcbiAgICAgICAgICB0aGlzLnNjcmVlbkZpZWxkcy5zZXQoZi5yb3csIFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zY3JlZW5GaWVsZHMuZ2V0KGYucm93KSEucHVzaChmKTtcclxuXHJcbiAgICAgICAgaWYgKGYuY2FzY2FkZWRCeSkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUGFyYW0/LmdldChbZi5jYXNjYWRlZEJ5XSk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1QYXJhbT8uZ2V0KFtmLnByb3BlcnR5XSk/LnBhdGNoVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnNjcmVlbkZpZWxkcy5zaXplOyBpKyspIHtcclxuICAgICAgdGhpcy5jYWxjRmxleFNpemUoaSk7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnNjcmVlbkZpZWxkcylcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY0ZsZXhTaXplKGk6IG51bWJlcil7XHJcbiAgICAvLyBQcmVzZXJ2ZSBleHBsaWNpdCBmaWVsZFNpemUgdmFsdWVzIG9ubHkuIEZvciBmaWVsZHMgd2l0aG91dCBmaWVsZFNpemUsIGFsbG93XHJcbiAgICAvLyB0aGUgbGF5b3V0IHRvIGF1dG8tc2l6ZSB2aWEgZmxleCAoaGFuZGxlZCBpbiB0aGUgdGVtcGxhdGUvQ1NTKS5cclxuICAgIC8vIEludGVudGlvbmFsbHkgZG8gbm90aGluZyBoZXJlIHNvIHRoYXQgdW5zcGVjaWZpZWQgZmllbGRzIHJlbWFpbiBmbGV4aWJsZS5cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGdldEN1cnJlbmN5UGF0dGVybihmaWVsZDogRmllbGRJbmZvKSB7XHJcbiAgICAvLyBjb25zdCBkZWNpbWFsUGxhY2VzICA9IHRoaXMuYXV0aFNlcnZpY2U/Lm15Q3VycmVuY2llcz8uZmluZChjID0+IGMua2V5ID09PSB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQuY3VycmVuY3kpPy52YWx1ZSk/LmN1cnJlbmN5TnVtT2ZEZWNpbWFsUGF0dGVybiB8fCAzO1xyXG4gICAgY29uc3QgZGVjaW1hbFBsYWNlcyAgPSAzO1xyXG4gICAgcmV0dXJuICdeXFxcXGQqKD86Wy4sXVxcXFxkezEsJyArIGRlY2ltYWxQbGFjZXMgKyAnfSk/JCc7XHJcbiAgfVxyXG5cclxuICBzcGxpdHRlZENoaXBzKGZvcm06IEZvcm1Hcm91cCwgZmllbGROYW1lOiBzdHJpbmcpOnN0cmluZ1tdIHtcclxuICAgIHJldHVybiBmb3JtLmdldChmaWVsZE5hbWUpLnZhbHVlID09PSAnJyA/IFtdOiBmb3JtLmdldChmaWVsZE5hbWUpLnZhbHVlLnRyaW0oKS5zcGxpdCgnOycpO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpeEFyYWJpY051bWJlcnMoc3RyOiBhbnkpIHtcclxuICAgIC8vIGlmKHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAvLyAgICAgc3RyID0gc3RyLnJlcGxhY2UoLyhb2aDZodmi2aPZpNml2abZp9mo2aldKXwoW9uw27Hbstuz27Tbtdu227fbuNu5XSkvZywgKG0sICQxLCAkMikgPT4gbS5jaGFyQ29kZUF0KDApIC0gKCQxID8gMTYzMiA6IDE3NzYpKTtcclxuICAgIC8vIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKHN0cik7XHJcbiAgfVxyXG5cclxuICBsaXN0U2hvd1ZhbHVlKGRlZmF1bHRzOiBhbnksIGZpZWxkOiBGaWVsZEluZm8pIHtcclxuICAgIHJldHVybiBkZWZhdWx0c1tmaWVsZC5wcm9wZXJ0eV0gPyB0aGlzLnNob3dWYWx1ZShkZWZhdWx0cywgZmllbGQpIDogJyc7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDaGlwc0l0ZW0oZm9ybTogRm9ybUdyb3VwLCBmaWVsZE5hbWU6IHN0cmluZywgaWR4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGVtYWlscyA9IHRoaXMuc3BsaXR0ZWRDaGlwcyhmb3JtLCBmaWVsZE5hbWUpO1xyXG4gICAgaWYgKGVtYWlscy5sZW5ndGggPj0gMSl7XHJcbiAgICAgIGVtYWlscy5zcGxpY2UoaWR4LDEpO1xyXG4gICAgfVxyXG4gICAgbGV0IGNsZWFuZWRFbWFpbHMgPSBlbWFpbHMuam9pbihcIjtcIik7XHJcbiAgICBmb3JtLmdldChmaWVsZE5hbWUpLnNldFZhbHVlKGNsZWFuZWRFbWFpbHMpO1xyXG4gIH1cclxuXHJcbiAgZXh0cmFjdEZpZWxkTmFtZShlbGVtZW50OiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcclxuICAgIGlmIChwcm9wZXJ0eT8uaW5jbHVkZXMoJy4nKSkge1xyXG4gICAgICByZXR1cm4gcHJvcGVydHkuc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgZWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZWxlbWVudFtwcm9wZXJ0eV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1JlYWRvbmx5VGV4dFZhbHVlRW1wdHkoZGVmYXVsdHM6IGFueSwgZmllbGQ6IEZpZWxkSW5mbyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KTtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnRyaW0oKSA9PT0gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRSZWFkb25seURhdGVGb3JtYXQoZmllbGQ6IEZpZWxkSW5mbyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZmllbGQucmVhZG9ubHlEYXRlRGlzcGxheSA9PT0gJ2RhdGV0aW1lJyA/ICdkZC9NTS95eXl5IEhIOm1tJyA6ICdkZC9NTS95eXl5JztcclxuICB9XHJcblxyXG4gIG9uTXVsdGlTdGF0ZU1lbnVJbm5lcktleWRvd24oZXZlbnQ6IEV2ZW50LCBmaWVsZDogRmllbGRJbmZvKTogdm9pZCB7XHJcbiAgICBpZiAoIShldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5pc011bHRpU3RhdGVNZW51QWN0aXZhdGVLZXkoZXZlbnQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJvdyA9IHRoaXMuZmluZE11bHRpU3RhdGVSb3dGcm9tS2V5Ym9hcmRFdmVudChldmVudCk7XHJcbiAgICBpZiAoIXJvdykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2RlID0gcm93LmdldEF0dHJpYnV0ZSgnZGF0YS1tdWx0aS1zdGF0ZS1jb2RlJyk7XHJcbiAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgY29uc3QgbmV4dCA9ICF0aGlzLmlzTXVsdGlTdGF0ZVNlbGVjdGVkKGZpZWxkLnByb3BlcnR5LCBjb2RlKTtcclxuICAgIHRoaXMudG9nZ2xlTXVsdGlTdGF0ZUZpbHRlcihmaWVsZC5wcm9wZXJ0eSwgY29kZSwgbmV4dCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzTXVsdGlTdGF0ZU1lbnVBY3RpdmF0ZUtleShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZXZlbnQua2V5ID09PSAnRW50ZXInIHx8XHJcbiAgICAgIGV2ZW50LmtleSA9PT0gJyAnIHx8XHJcbiAgICAgIGV2ZW50LmtleSA9PT0gJ1NwYWNlYmFyJyB8fFxyXG4gICAgICBldmVudC5jb2RlID09PSAnU3BhY2UnIHx8XHJcbiAgICAgIGV2ZW50LmNvZGUgPT09ICdOdW1wYWRFbnRlcidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRNdWx0aVN0YXRlUm93RnJvbUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xyXG4gICAgY29uc3QgcGF0aCA9XHJcbiAgICAgIHR5cGVvZiBldmVudC5jb21wb3NlZFBhdGggPT09ICdmdW5jdGlvbicgPyBldmVudC5jb21wb3NlZFBhdGgoKSA6IFtdO1xyXG4gICAgY29uc3QgZnJvbVBhdGggPSBwYXRoLmZpbmQoXHJcbiAgICAgIChuKTogbiBpcyBIVE1MRWxlbWVudCA9PlxyXG4gICAgICAgIG4gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBuLmNsYXNzTGlzdC5jb250YWlucygnbXVsdGktc3RhdGUtZmlsdGVyX19yb3cnKSxcclxuICAgICk7XHJcbiAgICBpZiAoZnJvbVBhdGgpIHtcclxuICAgICAgcmV0dXJuIGZyb21QYXRoO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdCA9IGV2ZW50LnRhcmdldDtcclxuICAgIHJldHVybiB0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyB0LmNsb3Nlc3QoJy5tdWx0aS1zdGF0ZS1maWx0ZXJfX3JvdycpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIG9uTXVsdGlTdGF0ZVJvd0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBwcm9wZXJ0eTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuICAgIGlmICh0YXJnZXQ/LmNsb3Nlc3QoJ21hdC1jaGVja2JveCcpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG5leHQgPSAhdGhpcy5pc011bHRpU3RhdGVTZWxlY3RlZChwcm9wZXJ0eSwgY29kZSk7XHJcbiAgICB0aGlzLnRvZ2dsZU11bHRpU3RhdGVGaWx0ZXIocHJvcGVydHksIGNvZGUsIG5leHQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTXVsdGlTdGF0ZUZpbHRlcihwcm9wZXJ0eTogc3RyaW5nLCBjb2RlOiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmZvcm1QYXJhbS5nZXQocHJvcGVydHkpO1xyXG4gICAgaWYgKCFjdHJsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhdyA9IGN0cmwudmFsdWU7XHJcbiAgICBjb25zdCBjdXI6IHN0cmluZ1tdID0gQXJyYXkuaXNBcnJheShyYXcpID8gWy4uLnJhd10gOiBbXTtcclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIGlmICghY3VyLmluY2x1ZGVzKGNvZGUpKSB7XHJcbiAgICAgICAgY3VyLnB1c2goY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlkeCA9IGN1ci5pbmRleE9mKGNvZGUpO1xyXG4gICAgICBpZiAoaWR4ID49IDApIHtcclxuICAgICAgICBjdXIuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGN0cmwuc2V0VmFsdWUoY3VyKTtcclxuICB9XHJcblxyXG4gIGlzTXVsdGlTdGF0ZVNlbGVjdGVkKHByb3BlcnR5OiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmF3ID0gdGhpcy5mb3JtUGFyYW0uZ2V0KHByb3BlcnR5KT8udmFsdWU7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyYXcpICYmIHJhdy5pbmNsdWRlcyhjb2RlKTtcclxuICB9XHJcblxyXG4gIGlzTXVsdGlTdGF0ZUVtcHR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJhdyA9IHRoaXMuZm9ybVBhcmFtLmdldChwcm9wZXJ0eSk/LnZhbHVlO1xyXG4gICAgcmV0dXJuICFBcnJheS5pc0FycmF5KHJhdykgfHwgcmF3Lmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIC8qKiBUcmlnZ2VyIGxhYmVsOiBlbXB0eSA9PiBjYWxsZXIgc2hvd3MgcGxhY2Vob2xkZXI7IGVsc2Ugc2hvcnQgc3VtbWFyeS4gKi9cclxuICBnZXRNdWx0aVN0YXRlRmlsdGVyVHJpZ2dlckxhYmVsKGZpZWxkOiBGaWVsZEluZm8pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmF3ID0gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8udmFsdWU7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IFtdO1xyXG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMucGFnZUluZm8/LmxhYmVsc1NlY3Rpb24gfHwgJyc7XHJcbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRklMVEVSLUJVSUxERVIuc2VsZWN0U3RhdHVzJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hcmVBbGxNdWx0aVN0YXRlT3B0aW9uc1NlbGVjdGVkKGZpZWxkLCBzZWxlY3RlZCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGSUxURVItQlVJTERFUi5hbGxTdGF0dXNlcycpO1xyXG4gICAgfVxyXG4gICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA8PSAyKSB7XHJcbiAgICAgIHJldHVybiBzZWxlY3RlZFxyXG4gICAgICAgIC5tYXAoYyA9PiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtjfWAgOiBjKSlcclxuICAgICAgICAuam9pbignLCAnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRklMVEVSLUJVSUxERVIubXVsdGlTdGF0dXNTdW1tYXJ5JywgeyBjb3VudDogc2VsZWN0ZWQubGVuZ3RoIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcmVBbGxNdWx0aVN0YXRlT3B0aW9uc1NlbGVjdGVkKGZpZWxkOiBGaWVsZEluZm8sIHNlbGVjdGVkOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGZpZWxkLmxpc3RPcHRpb25zIHx8IFtdO1xyXG4gICAgcmV0dXJuIG9wdGlvbnMubGVuZ3RoID4gMCAmJiBvcHRpb25zLmV2ZXJ5KChjb2RlOiBzdHJpbmcpID0+IHNlbGVjdGVkLmluY2x1ZGVzKGNvZGUpKTtcclxuICB9XHJcblxyXG4gIHN0YXR1c09wdGlvbkxhYmVsS2V5KGZpZWxkOiBGaWVsZEluZm8sIGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5wYWdlSW5mbz8ubGFiZWxzU2VjdGlvbjtcclxuICAgIHJldHVybiBzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtjb2RlfWAgOiBjb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0TXVsdGlTdGF0ZVJlYWRvbmx5U3VtbWFyeShmaWVsZDogRmllbGRJbmZvLCBkZWZhdWx0czogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJhdyA9IHRoaXMuZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXcgOiBbXTtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLnBhZ2VJbmZvPy5sYWJlbHNTZWN0aW9uIHx8ICcnO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkXHJcbiAgICAgIC5tYXAoYyA9PiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtjfWAgOiBjKSlcclxuICAgICAgLmpvaW4oJywgJyk7XHJcbiAgfVxyXG5cclxuICBnZXRNdWx0aVZhbHVlKGZpZWxkOiBGaWVsZEluZm8pIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy52YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVFbWFpbChlbWFpbCkge1xyXG4gICAgdmFyIHJlID0gL14oKFtePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcclxuICAgIHJldHVybiByZS50ZXN0KFN0cmluZyhlbWFpbCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgfVxyXG5cclxuICBhZGRFbWFpbFRvQ2hpcHMoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50LCBmb3JtOiBGb3JtR3JvdXAsIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC5pbnB1dDtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudmFsdWU7XHJcbiAgICBjb25zdCBpdGVtcyA9IHZhbHVlLnNwbGl0KCc7Jyk7XHJcbiAgICAvLyB2YWx1ZS5zcGxpdCgnICcpO1xyXG4gICAgaXRlbXMuZm9yRWFjaChpdG0gPT4ge1xyXG4gICAgICBpZiAodGhpcy52YWxpZGF0ZUVtYWlsKChpdG0gfHwgJycpLnRyaW0oKSkpIHtcclxuICAgICAgICBjb25zdCB4ID0gdGhpcy5zcGxpdHRlZENoaXBzKGZvcm0sIGZpZWxkTmFtZSk7XHJcbiAgICAgICAgeC5wdXNoKGl0bSk7XHJcbiAgICAgICAgZm9ybS5nZXQoZmllbGROYW1lKS5wYXRjaFZhbHVlKHguam9pbignOycpKTtcclxuICAgICAgICBpZiAoaW5wdXQpIHtcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBleHRyYWN0SnNvbkZpZWxkTmFtZShkZWZhdWx0czogYW55LCBwcm9wZXJ0eTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB4PSB0aGlzLmV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIHByb3BlcnR5KTtcclxuICAgIGlmICh4Py5sZW5ndGggPiAwKVxyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh4KTtcclxuICAgIGVsc2UgcmV0dXJuICd7fSc7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25WYWx1ZShpdGVtOiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnID9cclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0RGVmYXVsdExhbmcoKSA9PT0gJ2VuJyA/IGl0ZW0uZW5nbGlzaE5hbWUgOiBpdGVtLmFyYWJpY05hbWVcclxuICAgICAgICA6IGl0ZW07XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRIeXBlclRleHRFdmVudCgpIHtcclxuICAgIHRoaXMuaHlwZXJUZXh0RXZlbnQuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGFkZChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuZXF1YXRpb25PcGVyYXRvcnMuaW5jbHVkZXModmFsdWUpIHx8ICF0aGlzLmVxdWF0aW9uVmFsdWVzKCkuaW5jbHVkZXModmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5lcXVhdGlvblZhbHVlcy51cGRhdGUoZXF1YXRpb25WYWx1ZXMgPT4gWy4uLmVxdWF0aW9uVmFsdWVzLCB2YWx1ZV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHNJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmN1cnJlbnRFcXVhdGlvblZhbHVlLnNldCgnJyk7XHJcbiAgICB0aGlzLnVwZGF0ZUVxdWF0aW9uT3B0aW9ucygpO1xyXG5cclxuICB9XHJcblxyXG4gIHJlbW92ZShpdGVtOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZXF1YXRpb25WYWx1ZXMudXBkYXRlKGVxdWF0aW9uVmFsdWVzID0+IHtcclxuICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgIHJldHVybiBlcXVhdGlvblZhbHVlcztcclxuICAgICAgfVxyXG5cclxuICAgICAgZXF1YXRpb25WYWx1ZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgdGhpcy5hbm5vdW5jZXIuYW5ub3VuY2UoYFJlbW92ZWQgJHtpdGVtfWApO1xyXG4gICAgICByZXR1cm4gWy4uLmVxdWF0aW9uVmFsdWVzXTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy51cGRhdGVFcXVhdGlvbk9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZHtcclxuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBldmVudC5vcHRpb24udmlld1ZhbHVlLnRyaW0oKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZXF1YXRpb25PcGVyYXRvcnMuaW5jbHVkZXMoc2VsZWN0ZWRWYWx1ZSkgJiYgIXRoaXMuZXF1YXRpb25WYWx1ZXMoKS5pbmNsdWRlcyhzZWxlY3RlZFZhbHVlKSkge1xyXG4gICAgICB0aGlzLmVxdWF0aW9uVmFsdWVzLnVwZGF0ZShlcXVhdGlvblZhbHVlcyA9PiBbLi4uZXF1YXRpb25WYWx1ZXMsIHNlbGVjdGVkVmFsdWVdKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5lcXVhdGlvbk9wZXJhdG9ycy5pbmNsdWRlcyhzZWxlY3RlZFZhbHVlKSkge1xyXG4gICAgICB0aGlzLmVxdWF0aW9uVmFsdWVzLnVwZGF0ZShlcXVhdGlvblZhbHVlcyA9PiBbLi4uZXF1YXRpb25WYWx1ZXMsIHNlbGVjdGVkVmFsdWVdKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRFcXVhdGlvblZhbHVlLnNldCgnJyk7XHJcbiAgICBldmVudC5vcHRpb24uZGVzZWxlY3QoKTtcclxuICAgIHRoaXMuZmllbGRzSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy51cGRhdGVFcXVhdGlvbk9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUVxdWF0aW9uT3B0aW9ucygpe1xyXG4gICAgdGhpcy5yZWZsZWN0RXF1YXRpb25WYWx1ZU9uRm9ybSgpO1xyXG5cclxuICAgIGxldCB1cGRhdGVkRmllbGRzOiBzdHJpbmdbXTtcclxuICAgIGlmICh0aGlzLmVxdWF0aW9uVmFsdWVzKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHVwZGF0ZWRGaWVsZHMgPSB0aGlzLmdldE5hbWVzRnJvbVN1Z2dlc3RlZEVxdWF0aW9uRmllbGRzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbGFzdEVsZW1lbnQgPSB0aGlzLmVxdWF0aW9uVmFsdWVzKClbdGhpcy5lcXVhdGlvblZhbHVlcygpLmxlbmd0aCAtIDFdO1xyXG4gICAgICBpZiAodGhpcy5lcXVhdGlvbk9wZXJhdG9ycy5pbmNsdWRlcyhsYXN0RWxlbWVudCkpIHtcclxuICAgICAgICB1cGRhdGVkRmllbGRzID0gdGhpcy5nZXROYW1lc0Zyb21TdWdnZXN0ZWRFcXVhdGlvbkZpZWxkcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVwZGF0ZWRGaWVsZHMgPSB0aGlzLmVxdWF0aW9uT3BlcmF0b3JzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnKioqKionLCB1cGRhdGVkRmllbGRzKTtcclxuICAgIHRoaXMuYWxsRXF1YXRpb25GaWVsZHMubmV4dCh1cGRhdGVkRmllbGRzKTtcclxuICB9XHJcblxyXG4gIGdldE5hbWVzRnJvbVN1Z2dlc3RlZEVxdWF0aW9uRmllbGRzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLmVxdWF0aW9uU3VnZ2VzdGVkRmllbGRzPy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSk7XHJcbiAgfVxyXG5cclxuICByZWZsZWN0RXF1YXRpb25WYWx1ZU9uRm9ybSgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbSAmJiB0aGlzLmZvcm1QYXJhbS5nZXQoJ2ZpZWxkVmFsdWUnKSkge1xyXG4gICAgICB0aGlzLmZvcm1QYXJhbS5nZXQoJ2ZpZWxkVmFsdWUnKS5zZXRWYWx1ZSh0aGlzLmVxdWF0aW9uVmFsdWVzKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ0Zvcm0gb3IgZmllbGRWYWx1ZSBpcyBub3QgYXZhaWxhYmxlLicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tFcXVhdGlvbihmaWVsZDogRmllbGRJbmZvLCAkZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnJGV2ZW50JywgJGV2ZW50KTtcclxuICAgIC8vIHRyeSB7XHJcbiAgICAvLyAgIGV2YWx1YXRlKGVxdWF0aW9uLnJlcGxhY2UoL1thLXpBLVowLTldKy9nLCAnMScpKTsgLy8gUmVwbGFjZSB2YXJpYWJsZXMgd2l0aCBkdW1teSB2YWx1ZXNcclxuICAgIC8vICAgdGhpcy5mb3JtR3JvdXBzW2luZGV4XS5nZXQoJ3h5eicpLnNldEVycm9ycyhudWxsKTtcclxuICAgIC8vICAgY29uc29sZS5sb2coJ3ZhbGlkICcsIGVxdWF0aW9uKVxyXG4gICAgLy8gfSBjYXRjaCAoZSkge1xyXG4gICAgLy8gICB0aGlzLmZvcm1Hcm91cHNbaW5kZXhdLmdldCgneHl6Jykuc2V0RXJyb3JzKHtzZXJ2ZXJFcnJvcjogJ2luY29tcGxldGUgJ30pO1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygnYmFkICcsIGVxdWF0aW9uKVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZ2V0VmlldyhmaWVsZCk6ICdtb250aCcgfCAneWVhcicgfCAnbXVsdGkteWVhcicge1xyXG4gICAgcmV0dXJuIGZpZWxkLnBhdHRlcm4gfHwgJ21vbnRoJztcclxuICB9XHJcblxyXG4gIHNldE1vbnRoQW5kWWVhcihub3JtYWxpemVkTW9udGhBbmRZZWFyOiBNb21lbnQsIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxNb21lbnQ+LCBmaWVsZCkge1xyXG4gICAgY29uc29sZS5sb2coJ2ZpZWxkLnBhdHRlcm4nLCBmaWVsZC5wYXR0ZXJuKVxyXG4gICAgaWYgKGZpZWxkLnBhdHRlcm4gPT09ICdtdWx0aS15ZWFyJykge1xyXG4gICAgICBjb25zb2xlLmxvZygnaGknKVxyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IEZvcm1Db250cm9sKG1vbWVudCgpKTtcclxuICAgICAgY29uc3QgY3RybFZhbHVlID0gZGF0ZS52YWx1ZTtcclxuICAgICAgY3RybFZhbHVlLnllYXIobm9ybWFsaXplZE1vbnRoQW5kWWVhci55ZWFyKCkpO1xyXG4gICAgICBjdHJsVmFsdWUubW9udGgoMSk7XHJcbiAgICAgIGN0cmxWYWx1ZS5kYXlPZlllYXIoMSk7XHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSkuc2V0VmFsdWUoY3RybFZhbHVlKVxyXG4gICAgICBwaWNrZXIuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEFjY2VwdGVkRmlsZVR5cGVzKGZpZWxkOiBGaWVsZEluZm8pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFmaWVsZC5zdXBwb3J0ZWRUeXBlcykge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgLy8gQ29udmVydCBcIi5qcGcsLnBuZywucGRmXCIgZm9ybWF0IHRvIFwiaW1hZ2UvanBlZyxpbWFnZS9wbmcsYXBwbGljYXRpb24vcGRmXCIgb3Iga2VlcCBhcyBpc1xyXG4gICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlJ2xsIHBhc3MgdGhlIHN1cHBvcnRlZFR5cGVzIGFzLWlzIGFuZCBsZXQgdGhlIGJyb3dzZXIgaGFuZGxlIGl0XHJcbiAgICAvLyBUaGUgYnJvd3NlciBhY2NlcHRzIGJvdGggZm9ybWF0c1xyXG4gICAgcmV0dXJuIGZpZWxkLnN1cHBvcnRlZFR5cGVzO1xyXG4gIH1cclxuXHJcbiAgb25BdHRhY2htZW50RmlsZVNlbGVjdGVkKGZpbGU6IEZpbGUgfCBudWxsLCBmaWVsZDogRmllbGRJbmZvKTogdm9pZCB7XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICAvLyBWYWxpZGF0ZSBmaWxlIHR5cGUgaWYgc3VwcG9ydGVkVHlwZXMgaXMgc3BlY2lmaWVkXHJcbiAgICAgIGlmIChmaWVsZC5zdXBwb3J0ZWRUeXBlcykge1xyXG4gICAgICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IGZpZWxkLnN1cHBvcnRlZFR5cGVzLnNwbGl0KCcsJykubWFwKHQgPT4gdC50cmltKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9ICcuJyArIGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XHJcbiAgICAgICAgICAvLyBGaWxlIHR5cGUgbm90IHN1cHBvcnRlZCAtIGNvdWxkIHNob3cgZXJyb3IgbWVzc2FnZVxyXG4gICAgICAgICAgY29uc29sZS53YXJuKGBGaWxlIHR5cGUgJHtmaWxlRXh0ZW5zaW9ufSBpcyBub3Qgc3VwcG9ydGVkLiBBbGxvd2VkIHR5cGVzOiAke2ZpZWxkLnN1cHBvcnRlZFR5cGVzfWApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gVXBkYXRlIGZvcm0gY29udHJvbCBpZiBpdCBleGlzdHNcclxuICAgICAgaWYgKHRoaXMuZm9ybVBhcmFtICYmIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSkpIHtcclxuICAgICAgICB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZShmaWxlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRW1pdCBhdHRhY2htZW50IGV2ZW50XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICBmaWVsZDogZmllbGQsXHJcbiAgICAgICAgYXR0YWNobWVudFR5cGU6IGZpZWxkLmF0dGFjaG1lbnRUeXBlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQ2xlYXIgdGhlIGZvcm0gY29udHJvbCBpZiBmaWxlIGlzIHJlbW92ZWRcclxuICAgICAgaWYgKHRoaXMuZm9ybVBhcmFtICYmIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSkpIHtcclxuICAgICAgICB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWFpbi1mb3JtLWNhbnZhc1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLXdyYXBwZXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZWZhdWx0c1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGU7IGVsc2UgcmVhZG9ubHlWaWV3XCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCIgY2xhc3M9XCJmb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2Ygc2NyZWVuRmllbGRzIHwga2V5dmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHJvdy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1jb2x1bW5cIiBbc3R5bGUuZmxleF09XCJmaWVsZC5maWVsZFNpemUgPyAoJzAgMCAnICsgZmllbGQuZmllbGRTaXplICsgJyUnKSA6ICcxIDEgMCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkLnR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJmb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KS5zZXRWYWx1ZSgkZXZlbnQudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZmllbGQucmVhZG9ubHkgPyAtMSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e2ZpZWxkLnByb3BlcnR5fX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSAqbmdJZj1cIiFmaWVsZC5yZWFkb25seVwiIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRWaWV3XT1cImdldFZpZXcoZmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJzZXRNb250aEFuZFllYXIoJGV2ZW50LCBwaWNrZXIsIGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M9XCJleGFtcGxlLW1vbnRoLXBpY2tlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwaG9uZS1udW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwiY3VzdG9tLW5neC1tYXQtaW50bC10ZWwtaW5wdXRcIiAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1pbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmd4LW1hdC1pbnRsLXRlbC1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dFBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZlcnJlZENvdW50cmllc109XCJbJ3FhJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlUGxhY2Vob2xkZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGVTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvbmx5Q291bnRyaWVzXT1cImdldENvdW50cnlDb2RlTGlzdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtbWF0LWludGwtdGVsLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2liYW4tdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImZpZWxkLnJlYWRvbmx5ID8gLTEgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncGFzc3dvcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImhpZGUgJiYgIWZpZWxkLmRpc2FibGVkID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZmllbGQucmVhZG9ubHkgPyAtMSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGlkZSA9ICFoaWRlXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBoaWRlID8gJ3Zpc2liaWxpdHlfb2ZmJyA6ICd2aXNpYmlsaXR5JyB9fS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImZpZWxkLnNob3dTZWFyY2hJY29uXCIgbWF0UHJlZml4PnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJmaWVsZC5yZWFkb25seSA/IC0xIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJmaXhBcmFiaWNOdW1iZXJzKCRldmVudC50YXJnZXQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEaWdpdHNdPVwiZmllbGQubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuc2hvd1NlYXJjaEljb24gJiYgIWZpZWxkLnJlYWRvbmx5ICYmIChmb3JtUGFyYW0/LmdldChbZmllbGQucHJvcGVydHldKT8udmFsdWUgPz8gJycpICE9PSAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItaWNvbi1zdWZmaXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLWljb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQkFTRV9UQUJMRS5jbGVhckZpZWxkJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZpZWxkVmFsdWUoZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zdGF0ZS1jaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX3RyaWdnZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInN0YXR1c011bHRpTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyX190cmlnZ2VyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubXVsdGktc3RhdGUtZmlsdGVyX190cmlnZ2VyLXRleHQtLXBsYWNlaG9sZGVyXT1cImlzTXVsdGlTdGF0ZUVtcHR5KGZpZWxkLnByb3BlcnR5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE11bHRpU3RhdGVGaWx0ZXJUcmlnZ2VyTGFiZWwoZmllbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZmllbGQucGxhY2Vob2xkZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCdGSUxURVItQlVJTERFUi5zZWxlY3RTdGF0dXMnIHwgdHJhbnNsYXRlKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fY2hldnJvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjc3RhdHVzTXVsdGlNZW51PVwibWF0TWVudVwiIGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyX19tZW51LXBhbmVsXCIgW2hhc0JhY2tkcm9wXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX21lbnUtaW5uZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25NdWx0aVN0YXRlTWVudUlubmVyS2V5ZG93bigkZXZlbnQsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvZGUgb2YgZmllbGQubGlzdE9wdGlvbnMgfHwgW11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLW11bHRpLXN0YXRlLWNvZGVdPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTXVsdGlTdGF0ZVJvd0NsaWNrKCRldmVudCwgZmllbGQucHJvcGVydHksIGNvZGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzTXVsdGlTdGF0ZVNlbGVjdGVkKGZpZWxkLnByb3BlcnR5LCBjb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZU11bHRpU3RhdGVGaWx0ZXIoZmllbGQucHJvcGVydHksIGNvZGUsICRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fcGlsbCBzdGF0ZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RhdHVzT3B0aW9uTGFiZWxLZXkoZmllbGQsIGNvZGUpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoaXAtbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtZ3JpZCBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwLXJvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1haWwgb2Ygc3BsaXR0ZWRDaGlwcyhmb3JtUGFyYW0sIGZpZWxkLnByb3BlcnR5KTsgbGV0IGlkeCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwicmVtb3ZhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZUNoaXBzSXRlbShmb3JtUGFyYW0sIGZpZWxkLnByb3BlcnR5LCBpZHgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtYWlsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZSAqbmdJZj1cInJlbW92YWJsZVwiPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1yb3c+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRBZGRPbkJsdXJdPVwiYWRkT25CbHVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZEVtYWlsVG9DaGlwcygkZXZlbnQsIGZvcm1QYXJhbSwgZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCIgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhbW91bnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFtb3VudFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJmaWVsZC5yZWFkb25seSA/IC0xIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlcXVlbmNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicmVmZXJlbmNlQXR0cmlidXRlVHJ1ZShmaWVsZC5wcm9wZXJ0eSwgJ2F1dG9HZW5lcmF0ZWQnKTsgZWxzZSBub1NlcXVlbmNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1NlcXVlbmNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRhcmVhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0YXJlYVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNka0ZvY3VzSW5pdGlhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERpZ2l0c109XCJmaWVsZC5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImZpZWxkLnJlYWRvbmx5ID8gLTEgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibnVtYmVyUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImFwcC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLm1pbl09XCJmaWVsZC5hbGxvd05lZ2F0aXZlID8gbnVsbCA6IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJibG9ja05lZ2F0aXZlTnVtYmVyS2V5ZG93bigkZXZlbnQsIGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERpZ2l0c109XCJmaWVsZC5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZWFkb25seSA/IGZhbHNlIDogZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJmaWVsZC5yZWFkb25seSA/IC0xIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cImZpZWxkLnBhdHRlcm5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIiAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2JpZ2RlY2ltYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm51bWJlclJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcnNPbmx5ICBbbWF4RGVjaW1hbHNdPVwiZmllbGQubWF4RGVjaW1hbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERpZ2l0c109XCJmaWVsZC5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiZmllbGQucGF0dGVyblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVhZG9ubHkgPyBmYWxzZSA6IGZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJmaWVsZC5yZWFkb25seSA/IC0xIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGltZVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwcC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImZpZWxkLnJlYWRvbmx5ID8gLTEgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTRweDsgcGFkZGluZy10b3A6IDE0cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RvZ2dsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9nZ2xlUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29sb3ItcGlja2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCI+e3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWpzLWNvbG9ycGlja2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbG9ycGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvLWJ1dHRvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmFkaW9CdXR0b25SZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e2ZpZWxkLnByb3BlcnR5fX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXBwLXJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCI+e3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwLWN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpZWxkLmxpc3RPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7ZmllbGQucHJvcGVydHl9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZpZWxkLm11bHRpIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZWFkb25seSA/IGZhbHNlIDogZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiZmllbGQuZGVmYXVsdExpc3RPcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC50cmFuc2xhdGU7IGVsc2UgbG9va3VwX25vX3RyYW5zbGF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQubGlzdE9wdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZnJpZW5kbHlOYW1lKGZpZWxkLmxhYmVsLCBmaWVsZC5wcm9wZXJ0eSwgaXRlbSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvb2t1cF9ub190cmFuc2xhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5saXN0T3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRPcHRpb25WYWx1ZShpdGVtKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYXR0YWNobWVudCdcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYXR0YWNobWVudC11cGxvYWRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY2NlcHRlZFR5cGVzXT1cImdldEFjY2VwdGVkRmlsZVR5cGVzKGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlU2VsZWN0ZWQpPVwib25BdHRhY2htZW50RmlsZVNlbGVjdGVkKCRldmVudCwgZmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdHRhY2htZW50LXVwbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiaXEtZXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsb29rdXAnXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9va3VwUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWF1dG8tY29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtUGFyYW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1cHBvcnRpbmdBdHRyaWJ1dGVzXT1cInN1cHBvcnRpbmdBdHRyaWJ1dGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRWYWx1ZSk9XCJwYXRjaExvb2t1cFZhbHVlKCRldmVudCwgZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWF1dG8tY29tcGxldGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1cnJlbmN5UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFVuY29tbWVudCBhbmQgdXNlIHRoZSBjdXJyZW5jeSBjb250cm9sIHdoZW4gcmVhZHkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGFwcC1jdXJyZW5jeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtUGFyYW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwicGF0Y2hDdXJyZW5jeVZhbHVlKCRldmVudCwgZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWN1cnJlbmN5PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zZWxlY3QnXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibXVsdGlTZWxlY3RSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtbXVsdGktYXV0by1jb21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1QYXJhbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cImdldE11bHRpVmFsdWUoZmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRWYWx1ZSk9XCJwYXRjaE11bHRpU2VsZWN0VmFsdWUoJGV2ZW50LCBmaWVsZC5wcm9wZXJ0eSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtbXVsdGktYXV0by1jb21wbGV0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JpY2gtdGV4dCdcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBVbmNvbW1lbnQgYW5kIHVzZSB0aGUgcmljaCB0ZXh0IGVkaXRvciB3aGVuIHJlYWR5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8Y2tlZGl0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0b3JdPVwiRWRpdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2tlZGl0b3I+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkaXZpZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidoeXBlci10ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnZXRIeXBlclRleHRFdmVudCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoeXBlci1saW5rXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlY3Rpb24tdGl0bGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHJkaXZpZGVyLW1pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidlcXVhdGlvbi1idWlsZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImFwcC1pbnB1dFwiIGRpcj1cImx0clwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZmllbGQucmVhZG9ubHkgPyAtMSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZXF1YXRpb24tYnVpbGRlcidcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGVSZWFkb25seVwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDM1MCVcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogNDAwJVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1ncmlkICNjaGlwR3JpZD4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcXVhdGlvblZhbHVlIG9mIGVxdWF0aW9uVmFsdWVzKCk7IGxldCBpID0gaW5kZXhcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1yb3cgKHJlbW92ZWQpPVwicmVtb3ZlKGVxdWF0aW9uVmFsdWUsIGkpXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVxdWF0aW9uVmFsdWUgfX0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdENoaXBSZW1vdmUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidyZW1vdmUgJyArIGVxdWF0aW9uVmFsdWVcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLXJvdz4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1ncmlkPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRFcXVhdGlvblZhbHVlXCItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBHcmlkXCItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQWRkIGVxdWF0aW9uIHZhbHVlXCIgLz4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlcmVkRmllbGQgb2YgKGVxdWF0aW9uRmlsdGVyZWRGaWVsZHMoKSB8IGFzeW5jKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImZpbHRlcmVkRmllbGRcIj57eyBmaWx0ZXJlZEZpZWxkIH19PC9tYXQtb3B0aW9uPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJpcS1lcnJvclwiICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG48bmctdGVtcGxhdGUgI2RhdGVSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpIHwgZGF0ZTogZ2V0UmVhZG9ubHlEYXRlRm9ybWF0KGZpZWxkKSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGltZVJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBmb3JtYXRUaW1lVG9EYXRlKGRlZmF1bHRzW2ZpZWxkLnByb3BlcnR5XSkgfCBkYXRlOiAnc2hvcnRUaW1lJyB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcGhvbmVOdW1iZXJSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpIH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0ZXh0UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIiAqbmdJZj1cIiFmaWVsZC5hZHZhbmNlZEZpbHRlclwiPjwvbGFiZWw+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNSZWFkb25seVRleHRWYWx1ZUVtcHR5KGRlZmF1bHRzLCBmaWVsZCkgJiYgZmllbGQuZW1wdHlSZWFkb25seVBsYWNlaG9sZGVyS2V5OyBlbHNlIHRleHRSZWFkb25seUhhc1ZhbHVlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWUgcmVhZG9ubHktdmFsdWUtLWVtcHR5XCI+e3sgZmllbGQuZW1wdHlSZWFkb25seVBsYWNlaG9sZGVyS2V5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RleHRSZWFkb25seUhhc1ZhbHVlPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpIH19PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGV4dGFyZWFSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC50ZXh0Rm9ybWF0ID09PSAnanNvbic7IGVsc2Ugbm9ybWFsVGV4dFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktdmFsdWUganNvbi12aWV3ZXJcIj5cclxuICAgICAgICA8bmd4LWpzb24tdmlld2VyIFtqc29uXT1cImV4dHJhY3RKc29uRmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSlcIiBbZXhwYW5kZWRdPVwidHJ1ZVwiPjwvbmd4LWpzb24tdmlld2VyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVGV4dD5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI251bWJlclJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2N1cnJlbmN5UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmFkaW9CdXR0b25SZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgdHJhbnNsYXRlTGFibGUoZGVmYXVsdHNbZmllbGQucHJvcGVydHldKSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmljaFRleHRSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCIgW2lubmVySHRtbF09XCJleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSlcIj48L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NoZWNrYm94UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPlxyXG4gICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCIgKm5nSWY9XCJleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSk7IGVsc2Ugc2hvd05vXCI+ZG9uZTwvbWF0LWljb24+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd05vPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RvZ2dsZVJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj5cclxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiICpuZ0lmPVwiZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpOyBlbHNlIHNob3dOb1wiPmRvbmU8L21hdC1pY29uPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dObz5cclxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsaXN0UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiICpuZ0lmPVwiZmllbGQudHJhbnNsYXRlOyBlbHNlIG5vVHJhbnNsYXRlXCI+XHJcbiAgICAgIHt7IGxpc3RTaG93VmFsdWUoZGVmYXVsdHMsIGZpZWxkKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gICAgPG5nLXRlbXBsYXRlICNub1RyYW5zbGF0ZT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NlcXVlbmNlUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbG9va3VwUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPlxyXG4gICAgICB7eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSk/Llt0cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyAnZW5nbGlzaE5hbWUnIDogJ2FyYWJpY05hbWUnXSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhbW91bnRSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+XHJcbiAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB8IGN1cnJlbmN5OiBjdXJyZW5jeSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtdWx0aVNlbGVjdFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxtYXQtY2hpcC1ncmlkIGNsYXNzPVwicmVhZG9ubHktdmFsdWUgY2hpcExpc3RcIj5cclxuICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCBmaWxlZFByb3Agb2Ygc2hvd011bHRpU2VsZWN0VmFsdWVzQXNSZWFkb25seShmaWVsZClcIj5cclxuICAgICAgICB7eyBmaWxlZFByb3AgfX1cclxuICAgICAgPC9tYXQtY2hpcD5cclxuICAgIDwvbWF0LWNoaXAtZ3JpZD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2hpcExpc3RSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckhUTUxdPVwiZmllbGQubGFiZWwgfCB0cmFuc2xhdGVcIj48L2xhYmVsPlxyXG4gICAgPG1hdC1jaGlwLWxpc3Rib3ggY2xhc3M9XCJyZWFkb25seS12YWx1ZSBjaGlwTGlzdFwiPlxyXG4gICAgICA8bWF0LWNoaXAtb3B0aW9uICpuZ0Zvcj1cImxldCBsb2Mgb2Ygc3BsaXRSZWFkb25seShleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICB7eyBsb2MgfX1cclxuICAgICAgPC9tYXQtY2hpcC1vcHRpb24+XHJcbiAgICA8L21hdC1jaGlwLWxpc3Rib3g+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNyZWFkb25seVZpZXc+XHJcbiAgPGRpdiBjbGFzcz1cInJvdy13cmFwcGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXdyYXBwZXJcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHNjcmVlbkZpZWxkcyB8IGtleXZhbHVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHJvdy52YWx1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtY29sdW1uIHJlYWRvbmx5LWl0ZW1cIiBbc3R5bGUuZmxleF09XCJmaWVsZC5maWVsZFNpemUgPyAoJzAgMCAnICsgZmllbGQuZmllbGRTaXplICsgJyUnKSA6ICcxIDEgMCdcIj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGQudHlwZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGVSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpbWVSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwaG9uZS1udW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGhvbmVOdW1iZXJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRleHRSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0YXJlYVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJudW1iZXJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXJyZW5jeVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvLWJ1dHRvbidcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJyYWRpb0J1dHRvblJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoZWNrYm94UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndG9nZ2xlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvZ2dsZVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N0YXR1cydcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xvb2t1cCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb29rdXBSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhbW91bnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYW1vdW50UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm11bHRpU2VsZWN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2hpcC1saXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaXBMaXN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VxdWVuY2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VxdWVuY2VSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zdGF0ZS1jaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIFtpbm5lckh0bWxdPVwiZmllbGQubGFiZWwgfCB0cmFuc2xhdGVcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBnZXRNdWx0aVN0YXRlUmVhZG9ubHlTdW1tYXJ5KGZpZWxkLCBkZWZhdWx0cykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2liYW4tdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiIFtpbm5lckh0bWxdPVwiZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VjdGlvbi10aXRsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhyZGl2aWRlci1taWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuIl19
|
|
811
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlCLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFdBQVcsRUFDWCxZQUFZLEVBRVosY0FBYyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQzVDLFVBQVUsRUFDWCxNQUFNLHlCQUF5QixDQUFDO0FBSWpDLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixPQUFPLEVBQ1AsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQ3RCLFFBQVEsRUFDUixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFDLFFBQVEsRUFBRSxrQkFBa0Is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QUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJ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Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTTtnQkFtQkUsdUJBQXVCO3NCQUEvQixLQUFLO2dCQWEyQixXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgbW9kZWwsXHJcbiAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUsIEZvcm1Db250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtcclxuICBNYXRDaGlwLFxyXG4gIE1hdENoaXBHcmlkLFxyXG4gIE1hdENoaXBJbnB1dCxcclxuICBNYXRDaGlwSW5wdXRFdmVudCxcclxuICBNYXRDaGlwTGlzdGJveCwgTWF0Q2hpcE9wdGlvbiwgTWF0Q2hpcFJlbW92ZSxcclxuICBNYXRDaGlwUm93XHJcbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoaXBzXCI7XHJcbmltcG9ydCB7RmllbGRJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9maWVsZC1pbmZvXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2JhY2tlbmQtc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtQYWdlSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvcGFnZS1pbmZvXCI7XHJcbmltcG9ydCB7Q09NTUEsIEVOVEVSLCBTRU1JQ09MT059IGZyb20gXCJAYW5ndWxhci9jZGsva2V5Y29kZXNcIjtcclxuaW1wb3J0IHtMb29rdXBJdGVtfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9sb29rdXBJdGVtXCI7XHJcbmltcG9ydCB7RmllbGRNZXNzYWdlfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9hcGktcmVzcG9uc2VcIjtcclxuaW1wb3J0IHtcclxuICBBc3luY1BpcGUsXHJcbiAgQ3VycmVuY3lQaXBlLFxyXG4gIERhdGVQaXBlLFxyXG4gIEtleVZhbHVlUGlwZSxcclxuICBOZ0Zvck9mLFxyXG4gIE5nSWYsIE5nQ2xhc3MsIE5nU3R5bGUsXHJcbiAgTmdTd2l0Y2gsXHJcbiAgTmdTd2l0Y2hDYXNlLFxyXG4gIE5nVGVtcGxhdGVPdXRsZXRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0RXJyb3IsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0TGFiZWx9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge01hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dCwgTWF0RGF0ZXBpY2tlclRvZ2dsZSwgTWF0RGF0ZVJhbmdlSW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyXCI7XHJcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7Q2RrVGV4dGFyZWFBdXRvc2l6ZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay90ZXh0LWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0UmFkaW9CdXR0b24sIE1hdFJhZGlvR3JvdXB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9yYWRpb1wiO1xyXG5pbXBvcnQge01hdENoZWNrYm94fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3hcIjtcclxuaW1wb3J0IHtNYXRTbGlkZVRvZ2dsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZVwiO1xyXG5pbXBvcnQge01hdE9wdGlvbiwgTWF0U2VsZWN0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQge01hdERpdmlkZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyXCI7XHJcbmltcG9ydCB7Tmd4SnNvblZpZXdlck1vZHVsZX0gZnJvbSBcIm5neC1qc29uLXZpZXdlclwiO1xyXG5pbXBvcnQge05neE1hdEludGxUZWxJbnB1dENvbXBvbmVudH0gZnJvbSBcIm5neC1tYXQtaW50bC10ZWwtaW5wdXRcIjtcclxuaW1wb3J0IHtNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudH0gZnJvbSBcIi4uL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtBdXRvQ29tcGxldGVDb21wb25lbnR9IGZyb20gXCIuLi9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXR0YWNobWVudFVwbG9hZGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vc2hhcmVkL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIG1hcH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtMaXZlQW5ub3VuY2VyfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIjtcclxuaW1wb3J0IHtidWlsZEZvcm1GaWVsZHMsIGV4dHJhY3RGaWVsZE5hbWV9IGZyb20gXCIuLi8uLi91dGlscy9iYXNlLXV0aWxzXCI7XHJcbmltcG9ydCBtb21lbnQsIHtNb21lbnR9IGZyb20gXCJtb21lbnQvbW9tZW50XCI7XHJcbmltcG9ydCB7TWF0Q2VsbCwgTWF0Q2VsbERlZiwgTWF0SGVhZGVyQ2VsbCwgTWF0SGVhZGVyQ2VsbERlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYmxlXCI7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyXCI7XHJcbmltcG9ydCB7RGVjaW1hbE9ubHlEaXJlY3RpdmV9IGZyb20gXCIuL051bWJlcnNPbmx5RGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7TWF4RGlnaXRzRGlyZWN0aXZlfSBmcm9tIFwiLi9NYXhEaWdpdHNEaXJlY3RpdmVcIjtcclxuZXhwb3J0IGNvbnN0IEREX01NX1lZWVlfRm9ybWF0ID0ge1xyXG4gIHBhcnNlOiB7IGRhdGVJbnB1dDogJ0REL01NL1lZWVknIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnREQvTU0vWVlZWScsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcclxuICAgIGRhdGVBMTF5TGFiZWw6ICdERC9NTS9ZWVlZJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWScsXHJcbiAgfSxcclxufTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmFzZS1mb3JtLWNhbnZhcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTmdTd2l0Y2gsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE5nRm9yT2YsXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgS2V5VmFsdWVQaXBlLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRMYWJlbCxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0RGF0ZXBpY2tlcklucHV0LFxyXG4gICAgTWF0RGF0ZXBpY2tlcixcclxuICAgIE1hdERhdGVwaWNrZXJUb2dnbGUsXHJcbiAgICBNYXRFcnJvcixcclxuICAgIE5nU3dpdGNoQ2FzZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcclxuICAgIE1hdENoaXAsXHJcbiAgICBDZGtUZXh0YXJlYUF1dG9zaXplLFxyXG4gICAgTWF0UmFkaW9Hcm91cCxcclxuICAgIE1hdENoZWNrYm94LFxyXG4gICAgTWF0UmFkaW9CdXR0b24sXHJcbiAgICBNYXRTbGlkZVRvZ2dsZSxcclxuICAgIE1hdFNlbGVjdCxcclxuICAgIE1hdE9wdGlvbixcclxuICAgIE1hdE1lbnUsXHJcbiAgICBNYXRNZW51SXRlbSxcclxuICAgIE1hdE1lbnVUcmlnZ2VyLFxyXG4gICAgTWF0RGl2aWRlcixcclxuICAgIERhdGVQaXBlLFxyXG4gICAgTmd4SnNvblZpZXdlck1vZHVsZSxcclxuICAgIEN1cnJlbmN5UGlwZSxcclxuICAgIE5neE1hdEludGxUZWxJbnB1dENvbXBvbmVudCxcclxuICAgIE1hdENoaXBHcmlkLFxyXG4gICAgTWF0Q2hpcElucHV0LFxyXG4gICAgTWF0Q2hpcFJvdyxcclxuICAgIE1hdENoaXBMaXN0Ym94LFxyXG4gICAgTWF0Q2hpcE9wdGlvbixcclxuICAgIE11bHRpQXV0b0NvbXBsZXRlQ29tcG9uZW50LFxyXG4gICAgQXV0b0NvbXBsZXRlQ29tcG9uZW50LFxyXG4gICAgTWF0RGF0ZVJhbmdlSW5wdXQsXHJcbiAgICBBc3luY1BpcGUsXHJcbiAgICBNYXRDaGlwUmVtb3ZlLFxyXG4gICAgTWF0Q2VsbCxcclxuICAgIE1hdENlbGxEZWYsXHJcbiAgICBNYXRIZWFkZXJDZWxsLFxyXG4gICAgTWF0SGVhZGVyQ2VsbERlZixcclxuICAgIE5nU3R5bGUsXHJcbiAgICBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBEZWNpbWFsT25seURpcmVjdGl2ZSxcclxuICAgIE1heERpZ2l0c0RpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9iYXNlLWZvcm0tY2FudmFzLmNvbXBvbmVudC5jc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcclxuICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxyXG4gICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXVxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IEREX01NX1lZWVlfRm9ybWF0IH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdlbi1HQicgfVxyXG4gIF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlRm9ybUNhbnZhc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBoaWRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBkYXRlVmlld01vZGU6ICdtb250aCcgfCAneWVhcicgfCAnbXVsdGkteWVhcicgPSAnbW9udGgnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGFnZUluZm8hOiBQYWdlSW5mbztcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY3VycmVuY3k6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZmllbGRzOiBGaWVsZEluZm9bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcclxuICBlcnJvcnM6IEZpZWxkTWVzc2FnZVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgd29ya2Zsb3dFZGl0YWJsZUZpZWxkczogc3RyaW5nW109W107XHJcbiAgQElucHV0KClcclxuICBpc1dvcmtmbG93RWRpdGFibGVNYW5hZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc3VwcG9ydGluZ0F0dHJpYnV0ZXM6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBXaGVuIHRydWUsIGVtaXQgZm9ybVVwZGF0ZWQgb24gZXZlcnkgdmFsdWUgY2hhbmdlLiBEZWZhdWx0IGlzIGZhbHNlIHRvIGF2b2lkXHJcbiAgLy8gbm9pc3kgZW1pc3Npb25zIGZvciBhbGwgY29uc3VtZXJzLiBJdGVtLWxpbmUtZWRpdG9yIHdpbGwgZW5hYmxlIHRoaXMgZXhwbGljaXRseS5cclxuICBASW5wdXQoKVxyXG4gIGVtaXRPblZhbHVlQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGZpbHRlclJlc2V0Tm9uY2UgPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW06IGFueSA9IHt9O1xyXG5cclxuICBfZGVmYXVsdHM6IGFueSA9IHt9O1xyXG5cclxuICBAT3V0cHV0KCkgYXR0YWNobWVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBhY3Rpb25FbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZm9ybVVwZGF0ZWQ6IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGh5cGVyVGV4dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICBmb3JtUGFyYW0hOiBGb3JtR3JvdXA7XHJcbiAgc2NyZWVuRmllbGRzID0gbmV3IE1hcDxudW1iZXIsIEZpZWxkSW5mb1tdPigpO1xyXG4gIHJlbW92YWJsZSA9IHRydWU7XHJcbiAgc2VsZWN0YWJsZSA9IHRydWU7XHJcbiAgYWRkT25CbHVyID0gdHJ1ZTtcclxuXHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUEsIFNFTUlDT0xPTl07XHJcblxyXG4gIHJlYWRvbmx5IG1pbkRhdGUgPSBtb21lbnQoWzE4MDAsIDAsIDFdKTtcclxuXHJcbiAgcHVibGljIGlzUGVuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc05ldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW1JZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICBlcXVhdGlvbk9wZXJhdG9ycyA6IHN0cmluZ1tdID0gWycrJywnLScsJygnIF07XHJcbiAgQElucHV0KCkgZXF1YXRpb25TdWdnZXN0ZWRGaWVsZHM6IHsgbmFtZTogc3RyaW5nLCBpZDogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIGFsbEVxdWF0aW9uRmllbGRzOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+O1xyXG4gIHJlYWRvbmx5IGVxdWF0aW9uVmFsdWVzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XHJcbiAgY3VycmVudEVxdWF0aW9uVmFsdWUgPSBtb2RlbDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgcmVhZG9ubHkgZXF1YXRpb25GaWx0ZXJlZEZpZWxkcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGN1cnJlbnRFcXVhdGlvblZhbHVlID0gdGhpcy5jdXJyZW50RXF1YXRpb25WYWx1ZSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxFcXVhdGlvbkZpZWxkcy5waXBlKFxyXG4gICAgICAgIG1hcChmaWVsZHMgPT5cclxuICAgICAgICAgICAgY3VycmVudEVxdWF0aW9uVmFsdWUgPyBmaWVsZHM/LmZpbHRlcihmaWVsZCA9PiBmaWVsZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGN1cnJlbnRFcXVhdGlvblZhbHVlKSkgOiBmaWVsZHM/LnNsaWNlKClcclxuICAgICAgICApXHJcbiAgICApO1xyXG4gIH0pO1xyXG4gIEBWaWV3Q2hpbGQoJ0VxdWF0aW9uVmFsdWVJbnB1dCcpIGZpZWxkc0lucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBzZXQgZGVmYXVsdHModmFsdWU6IGFueSB8IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gdGhpcy5iYWNrZW5kU2VydmljZS5fZGVmYXVsdHMgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2RlZmF1bHRzID0gdmFsdWU7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgLy8gdGhpcy5teUNhbGxiYWNrID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVmYXVsdHMoKTogYW55IHwgdW5kZWZpbmVkIHtcclxuICAgIC8vIHRoaXMubXlDYWxsYmFjaztcclxuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0cztcclxuICAgIC8vIHJldHVybiB0aGlzLmJhY2tlbmRTZXJ2aWNlLl9kZWZhdWx0cztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGJhY2tlbmRTZXJ2aWNlOiBCYWNrZW5kU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIGFubm91bmNlcjogTGl2ZUFubm91bmNlcikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLml0ZW0gJiYgdGhpcy5pdGVtLmZpZWxkVmFsdWUpe1xyXG4gICAgICB0aGlzLmVxdWF0aW9uVmFsdWVzLnVwZGF0ZSh2YWx1ZSA9PiB0aGlzLml0ZW0uZmllbGRWYWx1ZSlcclxuICAgIH1cclxuICAgIHRoaXMuZGVmYXVsdHMgPSB0aGlzLml0ZW07XHJcbiAgICB0aGlzLmV4dHJhY3RMYWJsZXMoKTtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmlzUGVuZGluZyA9IGRhdGFbJ21vZGUnXSA9PT0gJ3BlbmRpbmcnO1xyXG4gICAgICB0aGlzLmlzTmV3ID0gZGF0YVsnbW9kZSddID09PSAnbmV3JztcclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy5hdXRoU2VydmljZS5zdW1tYXJ5UGFuZWxTdGF0ZSQubmV4dChDb25zdGFudHMuU1VNTUFSWV9QQU5FTF9DTE9TRUQpO1xyXG4gICAgLy8gdGhpcy5kZWZhdWx0cyA9IHt9O1xyXG4gICAgLy8gdGhpcy5pbnZvaWNlUUluaXQoKTtcclxuICAgIHRoaXMuYWxsRXF1YXRpb25GaWVsZHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVFcXVhdGlvbk9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFRpbWVUb0RhdGUodjogYW55KXtcclxuICAgIGNvbnN0IGZyb21UaW1lOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIGlmICh2KSB7XHJcbiAgICAgIGxldCBzcGxpdCA9IHYuc3BsaXQoXCI6XCIpO1xyXG4gICAgICBmcm9tVGltZS5zZXRIb3VycyhzcGxpdFswXSwgc3BsaXRbMV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGZyb21UaW1lLmdldFRpbWUoKSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaExvb2t1cFZhbHVlKCRldmVudDogTG9va3VwSXRlbSwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICgkZXZlbnQ/LmlkICE9PSAtMSAmJiB0aGlzLmRlZmF1bHRzKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5kZWZhdWx0c1tmaWVsZE5hbWVdID0gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkTmFtZSkudmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEJhbmtOYW1lKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICAvL1RPRE8gQmF0b29sIGRvIHdlIG5lZWQgdGhpcyBoZXJlID9cclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGROYW1lKS52YWx1ZT8ubGVuZ3RoID4gMTAgJiYgIWlzTmFOKHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZE5hbWUpLnZhbHVlKSApIHtcclxuICAgICAgcmV0dXJuICcgLyAnICsgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0JBTksuJyArIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZE5hbWUpLnZhbHVlPy5zdWJzdHIoNCwgNCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGF0Y2hNdWx0aVNlbGVjdFZhbHVlKCRldmVudDogTG9va3VwSXRlbVtdLCBmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKCRldmVudD8ubGVuZ3RoID49IDAgJiYgdGhpcy5kZWZhdWx0cykge1xyXG4gICAgICB0aGlzLmRlZmF1bHRzW2ZpZWxkTmFtZV0gPSB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGROYW1lKS52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgaXRlbSwgZXJyb3JzLCBmaWVsZHMsIGZpbHRlclJlc2V0Tm9uY2UgfSA9IGNoYW5nZXM7XHJcblxyXG4gICAgZXJyb3JzPy5jdXJyZW50VmFsdWU/LmZvckVhY2goKG1zZzogRmllbGRNZXNzYWdlKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChtc2cuZmllbGROYW1lKT8uc2V0RXJyb3JzKHtzZXJ2ZXJFcnJvcjogbXNnLm1lc3NhZ2V9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChpdGVtPy5jdXJyZW50VmFsdWUgJiYgIWl0ZW0uaXNGaXJzdENoYW5nZSgpKXtcclxuICAgICAgdGhpcy5kZWZhdWx0cyA9IGl0ZW0uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWVsZHM/LmN1cnJlbnRWYWx1ZSAmJiAhZmllbGRzLmlzRmlyc3RDaGFuZ2UoKSl7XHJcbiAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBmaWx0ZXJSZXNldE5vbmNlICYmXHJcbiAgICAgICFmaWx0ZXJSZXNldE5vbmNlLmlzRmlyc3RDaGFuZ2UoKSAmJlxyXG4gICAgICBmaWx0ZXJSZXNldE5vbmNlLmN1cnJlbnRWYWx1ZSAhPT0gZmlsdGVyUmVzZXROb25jZS5wcmV2aW91c1ZhbHVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5yZXNldEZpbHRlckZvcm1WYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dGaWVsZChpdGVtOiBhbnksIGZpZWxkOiBhbnkpIHtcclxuICAgIHJldHVybiAoaXRlbS5pZCB8fCAoIWl0ZW0uaWQgJiYgIWZpZWxkLnVwZGF0ZU9ubHkpKSAmJiBmaWVsZC52aXNpYmxlXHJcbiAgfVxyXG5cclxuICB3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQ6IHsgcHJvcGVydHk6IHN0cmluZzsgfSkge1xyXG4gICAgY29uc3QgeCA9IHRoaXMuaXNXb3JrZmxvd0VkaXRhYmxlTWFuYWdlZCA/IHRoaXMud29ya2Zsb3dFZGl0YWJsZUZpZWxkcz8uZmluZEluZGV4KGQgPT4gZCA9PT0gZmllbGQucHJvcGVydHkpID4gLTEgOiB0cnVlO1xyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuICBzaG93TXVsdGlTZWxlY3RWYWx1ZXNBc1JlYWRvbmx5KGZpZWxkOiBGaWVsZEluZm8pIHtcclxuICAgIGNvbnN0IHZpZXdQcm9wID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyAnZW5nbGlzaE5hbWUnIDogJ2FyYWJpY05hbWUnO1xyXG4gICAgcmV0dXJuIHRoaXMuZXh0cmFjdEZpZWxkTmFtZSh0aGlzLmRlZmF1bHRzLGZpZWxkLnByb3BlcnR5KT8ubWFwKChhOiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IGFbdmlld1Byb3BdKTtcclxuICB9XHJcblxyXG4gIHNwbGl0UmVhZG9ubHkodmFsdWVzOiBhbnkpIHtcclxuICAgIHJldHVybiAhdmFsdWVzIHx8IHZhbHVlcyA9PT0gJycgPyBbXTogdmFsdWVzLnNwbGl0KCc7Jyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVmZXJlbmNlQXR0cmlidXRlVHJ1ZShmaWVsZE5hbWU6IHN0cmluZywgYXR0cmlidXRlOiBhbnkpIHtcclxuICAgIC8vIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLnJlZmVyZW5jZUF0dHJpYnV0ZVRydWUoZmllbGROYW1lLCB0aGlzLnBhZ2VJbmZvLnByb2Nlc3NJZCwgYXR0cmlidXRlKTtcclxuICB9XHJcblxyXG4gIHRyYW5zbGF0ZUxhYmxlKGl0ZW1FbGVtZW50OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChpdGVtRWxlbWVudClcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGlmICghdGhpcy5maWVsZHMgfHwgdGhpcy5maWVsZHMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmRlZmF1bHRzKSByZXR1cm47XHJcblxyXG4gICAgaWYgKCF0aGlzLmZvcm1QYXJhbSkge1xyXG4gICAgICB0aGlzLmZvcm1QYXJhbSA9IHRoaXMuZmIuZ3JvdXAoYnVpbGRGb3JtRmllbGRzKHRoaXMuZmllbGRzLCB0aGlzLmRlZmF1bHRzKSk7XHJcbiAgICAgIC8vIEVtaXQgaW5pdGlhbCBmb3JtIHJlZmVyZW5jZVxyXG4gICAgICB0aGlzLmZvcm1VcGRhdGVkLm5leHQodGhpcy5mb3JtUGFyYW0pO1xyXG4gICAgICAvLyBFbWl0IG9uIGV2ZXJ5IHZhbHVlIGNoYW5nZSBzbyBwYXJlbnQgY29tcG9uZW50cyBjYW4gcmVhY3QgbGl2ZVxyXG4gICAgICBpZiAodGhpcy5lbWl0T25WYWx1ZUNoYW5nZXMpIHtcclxuICAgICAgICB0aGlzLmZvcm1QYXJhbS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVVwZGF0ZWQuZW1pdCh0aGlzLmZvcm1QYXJhbSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhdGNoVmFsdWVzOiBhbnkgPSB7fTtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmllbGQudHlwZSAhPT0gJ3NwYWNlcicpIHtcclxuICAgICAgICBsZXQgdiA9IGV4dHJhY3RGaWVsZE5hbWUodGhpcy5kZWZhdWx0cywgZmllbGQucHJvcGVydHkpO1xyXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbXVsdGktc3RhdGUtY2hlY2tib3gnICYmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkpIHtcclxuICAgICAgICAgIHYgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGF0Y2hWYWx1ZXNbZmllbGQucHJvcGVydHldID0gdjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybVBhcmFtLnBhdGNoVmFsdWUocGF0Y2hWYWx1ZXMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRGaWx0ZXJGb3JtVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmZvcm1QYXJhbSB8fCAhdGhpcy5maWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbXB0eTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgIT09ICdzcGFjZXInKSB7XHJcbiAgICAgICAgZW1wdHlbZmllbGQucHJvcGVydHldID0gZmllbGQudHlwZSA9PT0gJ211bHRpLXN0YXRlLWNoZWNrYm94JyA/IFtdIDogbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtUGFyYW0ucGF0Y2hWYWx1ZShlbXB0eSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBsYWJlbEtleShjb2x1bW46IGFueSkge1xyXG4gICAgY29uc3QgY29uZmlndXJlZEtleSA9IGNvbHVtbi5sYWJlbCA/IGNvbHVtbi5sYWJlbCA6IGNvbHVtbi5wcm9wZXJ0eVxyXG4gICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXkuc3RhcnRzV2l0aCh0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24pID8gYCR7Y29uZmlndXJlZEtleX1gIDogYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke2NvbmZpZ3VyZWRLZXl9YDtcclxuICB9XHJcblxyXG4gIGxhYmVsS2V5UGxhY2VIb2xkZXIoY29sdW1uOiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbmZpZ3VyZWRLZXkgPSBjb2x1bW4ucGxhY2Vob2xkZXIgPyBjb2x1bW4ucGxhY2Vob2xkZXIgOiBjb2x1bW4ucHJvcGVydHlcclxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uKSA/IGAke2NvbmZpZ3VyZWRLZXl9YCA6IGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XHJcbiAgfVxyXG5cclxuICBibG9ja05lZ2F0aXZlTnVtYmVyS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgZmllbGQ6IEZpZWxkSW5mbyk6IHZvaWQge1xyXG4gICAgaWYgKGZpZWxkLmFsbG93TmVnYXRpdmUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJy0nIHx8IGV2ZW50LmNvZGUgPT09ICdNaW51cycgfHwgZXZlbnQuY29kZSA9PT0gJ051bXBhZFN1YnRyYWN0Jykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JzKHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtUGFyYW0/LmdldChbcHJvcF0pO1xyXG4gICAgaWYgKCFjb250cm9sIHx8IGNvbnRyb2wuZGlzYWJsZWQpIHJldHVybiAnJztcclxuXHJcbiAgICBpZiAoY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIGNvbnN0IGVyciA9IGNvbnRyb2wuZXJyb3JzO1xyXG4gICAgICBpZiAoZXJyWydtYXREYXRlcGlja2VyTWluJ10pIHtcclxuICAgICAgICByZXR1cm4gJ21hdERhdGVwaWNrZXJNaW4nO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlcnJbJ21hdERhdGVwaWNrZXJNYXgnXSkge1xyXG4gICAgICAgIHJldHVybiAnbWF0RGF0ZXBpY2tlck1heCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wKTtcclxuXHJcbiAgICBpZiAoIWZpZWxkPy52YWxpZGF0aW9uTWVzc2FnZXMpIHtcclxuICAgICAgaWYgKGZpZWxkPy50eXBlID09PSAncGhvbmUtbnVtYmVyJyAmJiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5kaXJ0eSAmJiAhY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbiArIFwiLlwiO1xyXG4gICAgICAgIHJldHVybiBwcmVmaXggKyAnSU5WQUxJRF9QSE9ORV9OVU1CRVInO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wuc3RhdHVzICE9PSAnVkFMSUQnICYmIHRoaXMuZ2V0Rmlyc3RFcnJvcktleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpcnN0RXJyb3JLZXkocHJvcCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ3Bob25lLW51bWJlcicgJiYgY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZGlydHkgJiYgIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uICsgXCIuXCI7XHJcbiAgICAgIHJldHVybiBwcmVmaXggKyAoZmllbGQudmFsaWRhdGlvbk1lc3NhZ2VzPy52YWxpZGF0ZVBob25lTnVtYmVyIHx8ICdJTlZBTElEX1BIT05FX05VTUJFUicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb250cm9sLmludmFsaWQpIHtcclxuICAgICAgY29uc3QgZXJyb3JzID0gY29udHJvbC5lcnJvcnMgfHwge307XHJcbiAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbiArIFwiLlwiO1xyXG5cclxuICAgICAgaWYgKGVycm9yc1sncmVxdWlyZWQnXSkgcmV0dXJuIHByZWZpeCArICdSRVFVSVJFRCc7XHJcbiAgICAgIGlmIChlcnJvcnNbJ21pbiddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8ubWluIHx8ICdOVU1CRVJfTUlOJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ21heCddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8ubWF4IHx8ICdOVU1CRVJfTUFYJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ21heGxlbmd0aCddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8ubWF4bGVuZ3RoIHx8ICdNQVhfTEVOR1RIJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ2RlY2ltYWxNaW4nXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/LmRlY2ltYWxNaW4gfHwgJ0RFQ0lNQUxfTUlOJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ2RlY2ltYWxNYXgnXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/LmRlY2ltYWxNYXggfHwgJ0RFQ0lNQUxfTUFYJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ3BhdHRlcm4nXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/LnBhdHRlcm4gfHwgJ0lOVkFMSURfRk9STUFUJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ3ZhbGlkYXRlUGhvbmVOdW1iZXInXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/LnZhbGlkYXRlUGhvbmVOdW1iZXIgfHwgJ0lOVkFMSURfUEhPTkVfTlVNQkVSJyk7XHJcbiAgICAgIGlmIChlcnJvcnNbJ2ludmFsaWRNYXRoRXhwcmVzc2lvbiddKSByZXR1cm4gcHJlZml4ICsgJ0lOVkFMSURfTUFUSCc7XHJcbiAgICAgIGlmIChlcnJvcnNbJ2RhdGVSYW5nZUludmFsaWQnXSkgcmV0dXJuIHByZWZpeCArICdkYXRlUmFuZ2VJbnZhbGlkJztcclxuICAgICAgaWYgKGVycm9yc1snc2VydmVyRXJyb3InXSkgcmV0dXJuIHByZWZpeCArIGVycm9yc1snc2VydmVyRXJyb3InXTtcclxuXHJcbiAgICAgIHJldHVybiBwcmVmaXggKyAnSU5WQUxJRF9WQUxVRSc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEZpcnN0RXJyb3JLZXkocHJvcDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZm9ybVBhcmFtPy5nZXQoW3Byb3BdKT8uZXJyb3JzO1xyXG5cclxuICAgIGlmICghZXJyb3JzIHx8IE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBlcnJvcnM/Llsnc2VydmVyRXJyb3InXSB8fCAnSU5WQUxJRF9GT1JNQVQnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpWzBdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENvdW50cnlDb2RlTGlzdCgpIHtcclxuICAgIHJldHVybiBbJ2FmJywgJ2F4JywgJ2FsJywgJ2R6JywgJ2FzJywgJ2FkJywgJ2FvJywgJ2FpJywgJ2FxJywgJ2FnJywgJ2FyJywgJ2FtJywgJ2F3JywgJ2F1JywgJ2F0JywgJ2F6JyxcclxuICAgICAgJ2JzJywgJ2JoJywgJ2JkJywgJ2JiJywgJ2J5JywgJ2JlJywgJ2J6JywgJ2JqJywgJ2JtJywgJ2J0JywgJ2JvJywgJ2JhJywgJ2J3JywgJ2J2JywgJ2JyJywgJ2lvJywgJ2JuJyxcclxuICAgICAgJ2JnJywgJ2JmJywgJ2JpJywgJ2toJywgJ2NtJywgJ2NhJywgJ2N2JywgJ2t5JywgJ2NmJywgJ3RkJywgJ2NsJywgJ2NuJywgJ2N4JywgJ2NjJywgJ2NvJywgJ2ttJywgJ2NnJyxcclxuICAgICAgJ2NkJywgJ2NrJywgJ2NyJywgJ2NpJywgJ2hyJywgJ2N1JywgJ2N5JywgJ2N6JywgJ2RrJywgJ2RqJywgJ2RtJywgJ2RvJywgJ2VjJywgJ2VnJywgJ3N2JywgJ2dxJywgJ2VyJyxcclxuICAgICAgJ2VlJywgJ2V0JywgJ2ZrJywgJ2ZvJywgJ2ZqJywgJ2ZpJywgJ2ZyJywgJ2dmJywgJ3BmJywgJ3RmJywgJ2dhJywgJ2dtJywgJ2dlJywgJ2RlJywgJ2doJywgJ2dpJywgJ2dyJyxcclxuICAgICAgJ2dsJywgJ2dkJywgJ2dwJywgJ2d1JywgJ2d0JywgJ2dnJywgJ2duJywgJ2d3JywgJ2d5JywgJ2h0JywgJ2htJywgJ3ZhJywgJ2huJywgJ2hrJywgJ2h1JywgJ2lzJywgJ2luJyxcclxuICAgICAgJ2lkJywgJ2lyJywgJ2lxJywgJ2llJywgJ2ltJywgJ2l0JywgJ2ptJywgJ2pwJywgJ2plJywgJ2pvJywgJ2t6JywgJ2tlJywgJ2tpJywgJ2tyJywgJ2t3JywgJ2tnJywgJ2xhJyxcclxuICAgICAgJ2x2JywgJ2xiJywgJ2xzJywgJ2xyJywgJ2x5JywgJ2xpJywgJ2x0JywgJ2x1JywgJ21vJywgJ21rJywgJ21nJywgJ213JywgJ215JywgJ212JywgJ21sJywgJ210JywgJ21oJyxcclxuICAgICAgJ21xJywgJ21yJywgJ211JywgJ3l0JywgJ214JywgJ2ZtJywgJ21kJywgJ21jJywgJ21uJywgJ21lJywgJ21zJywgJ21hJywgJ216JywgJ21tJywgJ25hJywgJ25yJywgJ25wJyxcclxuICAgICAgJ25sJywgJ2FuJywgJ25jJywgJ256JywgJ25pJywgJ25lJywgJ25nJywgJ251JywgJ25mJywgJ21wJywgJ25vJywgJ29tJywgJ3BrJywgJ3B3JywgJ3BzJywgJ3BhJywgJ3BnJyxcclxuICAgICAgJ3B5JywgJ3BlJywgJ3BoJywgJ3BuJywgJ3BsJywgJ3B0JywgJ3ByJywgJ3FhJywgJ3JlJywgJ3JvJywgJ3J1JywgJ3J3JywgJ2JsJywgJ3NoJywgJ2tuJywgJ2xjJywgJ21mJyxcclxuICAgICAgJ3BtJywgJ3ZjJywgJ3dzJywgJ3NtJywgJ3N0JywgJ3NhJywgJ3NuJywgJ3JzJywgJ3NjJywgJ3NsJywgJ3NnJywgJ3NrJywgJ3NpJywgJ3NiJywgJ3NvJywgJ3phJywgJ2dzJyxcclxuICAgICAgJ2VzJywgJ2xrJywgJ3NkJywgJ3NyJywgJ3NqJywgJ3N6JywgJ3NlJywgJ2NoJywgJ3N5JywgJ3R3JywgJ3RqJywgJ3R6JywgJ3RoJywgJ3RsJywgJ3RnJywgJ3RrJywgJ3RvJyxcclxuICAgICAgJ3R0JywgJ3RuJywgJ3RyJywgJ3RtJywgJ3RjJywgJ3R2JywgJ3VnJywgJ3VhJywgJ2FlJywgJ2diJywgJ3VzJywgJ3VtJywgJ3V5JywgJ3V6JywgJ3Z1JywgJ3ZlJywgJ3ZuJyxcclxuICAgICAgJ3ZnJywgJ3ZpJywgJ3dmJywgJ2VoJywgJ3llJywgJ3ptJywgJ3p3J107XHJcbiAgfVxyXG5cclxuXHJcbiAgZnJpZW5kbHlOYW1lKGZ1bGxQYXRoOiBzdHJpbmcgLCBzdWJQYXRoOiBzdHJpbmcgLCBpdGVtOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuICBmdWxsUGF0aC5zdWJzdHJpbmcoMCwgZnVsbFBhdGguaW5kZXhPZihzdWJQYXRoKSkgKyBpdGVtIDtcclxuICB9XHJcblxyXG4gIHNob3dWYWx1ZShkZWZhdWx0cywgZmllbGQpe1xyXG4gICAgcmV0dXJuICB0aGlzLmZyaWVuZGx5TmFtZShmaWVsZC5sYWJlbCAsIGZpZWxkLnByb3BlcnR5ICwgZGVmYXVsdHNbZmllbGQucHJvcGVydHldKTtcclxuICB9XHJcblxyXG4gIHNob3dFcnJvcihwcm9wOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IENPTlRST0wgPSB0aGlzLmZvcm1QYXJhbT8uZ2V0KFtwcm9wXSk7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wKTtcclxuICAgIGlmIChmaWVsZD8udHlwZSA9PT0gJ3Bob25lLW51bWJlcicpIHtcclxuICAgICAgcmV0dXJuIENPTlRST0w/LnRvdWNoZWQgJiYgQ09OVFJPTD8uZGlydHkgJiYgIUNPTlRST0w/LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChDT05UUk9MPy52YWx1ZSB8fCBDT05UUk9MPy52YWx1ZSA9PT0gMCkgJiYgQ09OVFJPTD8uc3RhdHVzID09PSAnSU5WQUxJRCc7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpZWxkVmFsdWUocHJvcDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1QYXJhbT8uZ2V0KFtwcm9wXSk/LnNldFZhbHVlKCcnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWZhdWx0cyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RMYWJsZXMoKSB7XHJcbiAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICBpZiAoZi52aXNpYmxlKSB7XHJcbiAgICAgICAgZi5sYWJlbCA9IHRoaXMubGFiZWxLZXkoZik7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zY3JlZW5GaWVsZHMuaGFzKGYucm93KSkge1xyXG4gICAgICAgICAgdGhpcy5zY3JlZW5GaWVsZHMuc2V0KGYucm93LCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2NyZWVuRmllbGRzLmdldChmLnJvdykhLnB1c2goZik7XHJcblxyXG4gICAgICAgIGlmIChmLmNhc2NhZGVkQnkpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVBhcmFtPy5nZXQoW2YuY2FzY2FkZWRCeV0pPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFyYW0/LmdldChbZi5wcm9wZXJ0eV0pPy5wYXRjaFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5zY3JlZW5GaWVsZHMuc2l6ZTsgaSsrKSB7XHJcbiAgICAgIHRoaXMuY2FsY0ZsZXhTaXplKGkpO1xyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5zY3JlZW5GaWVsZHMpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGNGbGV4U2l6ZShpOiBudW1iZXIpe1xyXG4gICAgLy8gUHJlc2VydmUgZXhwbGljaXQgZmllbGRTaXplIHZhbHVlcyBvbmx5LiBGb3IgZmllbGRzIHdpdGhvdXQgZmllbGRTaXplLCBhbGxvd1xyXG4gICAgLy8gdGhlIGxheW91dCB0byBhdXRvLXNpemUgdmlhIGZsZXggKGhhbmRsZWQgaW4gdGhlIHRlbXBsYXRlL0NTUykuXHJcbiAgICAvLyBJbnRlbnRpb25hbGx5IGRvIG5vdGhpbmcgaGVyZSBzbyB0aGF0IHVuc3BlY2lmaWVkIGZpZWxkcyByZW1haW4gZmxleGlibGUuXHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW5jeVBhdHRlcm4oZmllbGQ6IEZpZWxkSW5mbykge1xyXG4gICAgLy8gY29uc3QgZGVjaW1hbFBsYWNlcyAgPSB0aGlzLmF1dGhTZXJ2aWNlPy5teUN1cnJlbmNpZXM/LmZpbmQoYyA9PiBjLmtleSA9PT0gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLmN1cnJlbmN5KT8udmFsdWUpPy5jdXJyZW5jeU51bU9mRGVjaW1hbFBhdHRlcm4gfHwgMztcclxuICAgIGNvbnN0IGRlY2ltYWxQbGFjZXMgID0gMztcclxuICAgIHJldHVybiAnXlxcXFxkKig/OlsuLF1cXFxcZHsxLCcgKyBkZWNpbWFsUGxhY2VzICsgJ30pPyQnO1xyXG4gIH1cclxuXHJcbiAgc3BsaXR0ZWRDaGlwcyhmb3JtOiBGb3JtR3JvdXAsIGZpZWxkTmFtZTogc3RyaW5nKTpzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gZm9ybS5nZXQoZmllbGROYW1lKS52YWx1ZSA9PT0gJycgPyBbXTogZm9ybS5nZXQoZmllbGROYW1lKS52YWx1ZS50cmltKCkuc3BsaXQoJzsnKTtcclxuICB9XHJcblxyXG5cclxuICBmaXhBcmFiaWNOdW1iZXJzKHN0cjogYW55KSB7XHJcbiAgICAvLyBpZih0eXBlb2Ygc3RyID09PSAnc3RyaW5nJykge1xyXG4gICAgLy8gICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8oW9mg2aHZotmj2aTZpdmm2afZqNmpXSl8KFvbsNux27Lbs9u027Xbttu327jbuV0pL2csIChtLCAkMSwgJDIpID0+IG0uY2hhckNvZGVBdCgwKSAtICgkMSA/IDE2MzIgOiAxNzc2KSk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhzdHIpO1xyXG4gIH1cclxuXHJcbiAgbGlzdFNob3dWYWx1ZShkZWZhdWx0czogYW55LCBmaWVsZDogRmllbGRJbmZvKSB7XHJcbiAgICByZXR1cm4gZGVmYXVsdHNbZmllbGQucHJvcGVydHldID8gdGhpcy5zaG93VmFsdWUoZGVmYXVsdHMsIGZpZWxkKSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hpcHNJdGVtKGZvcm06IEZvcm1Hcm91cCwgZmllbGROYW1lOiBzdHJpbmcsIGlkeDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBlbWFpbHMgPSB0aGlzLnNwbGl0dGVkQ2hpcHMoZm9ybSwgZmllbGROYW1lKTtcclxuICAgIGlmIChlbWFpbHMubGVuZ3RoID49IDEpe1xyXG4gICAgICBlbWFpbHMuc3BsaWNlKGlkeCwxKTtcclxuICAgIH1cclxuICAgIGxldCBjbGVhbmVkRW1haWxzID0gZW1haWxzLmpvaW4oXCI7XCIpO1xyXG4gICAgZm9ybS5nZXQoZmllbGROYW1lKS5zZXRWYWx1ZShjbGVhbmVkRW1haWxzKTtcclxuICB9XHJcblxyXG4gIGV4dHJhY3RGaWVsZE5hbWUoZWxlbWVudDogYW55LCBwcm9wZXJ0eTogc3RyaW5nKSB7XHJcbiAgICBpZiAocHJvcGVydHk/LmluY2x1ZGVzKCcuJykpIHtcclxuICAgICAgcmV0dXJuIHByb3BlcnR5LnNwbGl0KCcuJykucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYyAmJiBhY2NbcGFydF0sIGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGVsZW1lbnRbcHJvcGVydHldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNSZWFkb25seVRleHRWYWx1ZUVtcHR5KGRlZmF1bHRzOiBhbnksIGZpZWxkOiBGaWVsZEluZm8pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5leHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSk7XHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS50cmltKCkgPT09ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVhZG9ubHlEYXRlRm9ybWF0KGZpZWxkOiBGaWVsZEluZm8pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGZpZWxkLnJlYWRvbmx5RGF0ZURpc3BsYXkgPT09ICdkYXRldGltZScgPyAnZGQvTU0veXl5eSBISDptbScgOiAnZGQvTU0veXl5eSc7XHJcbiAgfVxyXG5cclxuICBvbk11bHRpU3RhdGVNZW51SW5uZXJLZXlkb3duKGV2ZW50OiBFdmVudCwgZmllbGQ6IEZpZWxkSW5mbyk6IHZvaWQge1xyXG4gICAgaWYgKCEoZXZlbnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVN0YXRlTWVudUFjdGl2YXRlS2V5KGV2ZW50KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByb3cgPSB0aGlzLmZpbmRNdWx0aVN0YXRlUm93RnJvbUtleWJvYXJkRXZlbnQoZXZlbnQpO1xyXG4gICAgaWYgKCFyb3cpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29kZSA9IHJvdy5nZXRBdHRyaWJ1dGUoJ2RhdGEtbXVsdGktc3RhdGUtY29kZScpO1xyXG4gICAgaWYgKCFjb2RlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGNvbnN0IG5leHQgPSAhdGhpcy5pc011bHRpU3RhdGVTZWxlY3RlZChmaWVsZC5wcm9wZXJ0eSwgY29kZSk7XHJcbiAgICB0aGlzLnRvZ2dsZU11bHRpU3RhdGVGaWx0ZXIoZmllbGQucHJvcGVydHksIGNvZGUsIG5leHQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc011bHRpU3RhdGVNZW51QWN0aXZhdGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fFxyXG4gICAgICBldmVudC5rZXkgPT09ICcgJyB8fFxyXG4gICAgICBldmVudC5rZXkgPT09ICdTcGFjZWJhcicgfHxcclxuICAgICAgZXZlbnQuY29kZSA9PT0gJ1NwYWNlJyB8fFxyXG4gICAgICBldmVudC5jb2RlID09PSAnTnVtcGFkRW50ZXInXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kTXVsdGlTdGF0ZVJvd0Zyb21LZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcclxuICAgIGNvbnN0IHBhdGggPVxyXG4gICAgICB0eXBlb2YgZXZlbnQuY29tcG9zZWRQYXRoID09PSAnZnVuY3Rpb24nID8gZXZlbnQuY29tcG9zZWRQYXRoKCkgOiBbXTtcclxuICAgIGNvbnN0IGZyb21QYXRoID0gcGF0aC5maW5kKFxyXG4gICAgICAobik6IG4gaXMgSFRNTEVsZW1lbnQgPT5cclxuICAgICAgICBuIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgbi5jbGFzc0xpc3QuY29udGFpbnMoJ211bHRpLXN0YXRlLWZpbHRlcl9fcm93JyksXHJcbiAgICApO1xyXG4gICAgaWYgKGZyb21QYXRoKSB7XHJcbiAgICAgIHJldHVybiBmcm9tUGF0aDtcclxuICAgIH1cclxuICAgIGNvbnN0IHQgPSBldmVudC50YXJnZXQ7XHJcbiAgICByZXR1cm4gdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gdC5jbG9zZXN0KCcubXVsdGktc3RhdGUtZmlsdGVyX19yb3cnKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBvbk11bHRpU3RhdGVSb3dDbGljayhldmVudDogTW91c2VFdmVudCwgcHJvcGVydHk6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XHJcbiAgICBpZiAodGFyZ2V0Py5jbG9zZXN0KCdtYXQtY2hlY2tib3gnKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXh0ID0gIXRoaXMuaXNNdWx0aVN0YXRlU2VsZWN0ZWQocHJvcGVydHksIGNvZGUpO1xyXG4gICAgdGhpcy50b2dnbGVNdWx0aVN0YXRlRmlsdGVyKHByb3BlcnR5LCBjb2RlLCBuZXh0KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU11bHRpU3RhdGVGaWx0ZXIocHJvcGVydHk6IHN0cmluZywgY29kZTogc3RyaW5nLCBjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtUGFyYW0uZ2V0KHByb3BlcnR5KTtcclxuICAgIGlmICghY3RybCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByYXcgPSBjdHJsLnZhbHVlO1xyXG4gICAgY29uc3QgY3VyOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkocmF3KSA/IFsuLi5yYXddIDogW107XHJcbiAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICBpZiAoIWN1ci5pbmNsdWRlcyhjb2RlKSkge1xyXG4gICAgICAgIGN1ci5wdXNoKGNvZGUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpZHggPSBjdXIuaW5kZXhPZihjb2RlKTtcclxuICAgICAgaWYgKGlkeCA+PSAwKSB7XHJcbiAgICAgICAgY3VyLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjdHJsLnNldFZhbHVlKGN1cik7XHJcbiAgfVxyXG5cclxuICBpc011bHRpU3RhdGVTZWxlY3RlZChwcm9wZXJ0eTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJhdyA9IHRoaXMuZm9ybVBhcmFtLmdldChwcm9wZXJ0eSk/LnZhbHVlO1xyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3KSAmJiByYXcuaW5jbHVkZXMoY29kZSk7XHJcbiAgfVxyXG5cclxuICBpc011bHRpU3RhdGVFbXB0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByYXcgPSB0aGlzLmZvcm1QYXJhbS5nZXQocHJvcGVydHkpPy52YWx1ZTtcclxuICAgIHJldHVybiAhQXJyYXkuaXNBcnJheShyYXcpIHx8IHJhdy5sZW5ndGggPT09IDA7XHJcbiAgfVxyXG5cclxuICAvKiogVHJpZ2dlciBsYWJlbDogZW1wdHkgPT4gY2FsbGVyIHNob3dzIHBsYWNlaG9sZGVyOyBlbHNlIHNob3J0IHN1bW1hcnkuICovXHJcbiAgZ2V0TXVsdGlTdGF0ZUZpbHRlclRyaWdnZXJMYWJlbChmaWVsZDogRmllbGRJbmZvKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJhdyA9IHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnZhbHVlO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXcgOiBbXTtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLnBhZ2VJbmZvPy5sYWJlbHNTZWN0aW9uIHx8ICcnO1xyXG4gICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0ZJTFRFUi1CVUlMREVSLnNlbGVjdFN0YXR1cycpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYXJlQWxsTXVsdGlTdGF0ZU9wdGlvbnNTZWxlY3RlZChmaWVsZCwgc2VsZWN0ZWQpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRklMVEVSLUJVSUxERVIuYWxsU3RhdHVzZXMnKTtcclxuICAgIH1cclxuICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPD0gMikge1xyXG4gICAgICByZXR1cm4gc2VsZWN0ZWRcclxuICAgICAgICAubWFwKGMgPT4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoc2VjdGlvbiA/IGAke3NlY3Rpb259LiR7Y31gIDogYykpXHJcbiAgICAgICAgLmpvaW4oJywgJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0ZJTFRFUi1CVUlMREVSLm11bHRpU3RhdHVzU3VtbWFyeScsIHsgY291bnQ6IHNlbGVjdGVkLmxlbmd0aCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXJlQWxsTXVsdGlTdGF0ZU9wdGlvbnNTZWxlY3RlZChmaWVsZDogRmllbGRJbmZvLCBzZWxlY3RlZDogc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBmaWVsZC5saXN0T3B0aW9ucyB8fCBbXTtcclxuICAgIHJldHVybiBvcHRpb25zLmxlbmd0aCA+IDAgJiYgb3B0aW9ucy5ldmVyeSgoY29kZTogc3RyaW5nKSA9PiBzZWxlY3RlZC5pbmNsdWRlcyhjb2RlKSk7XHJcbiAgfVxyXG5cclxuICBzdGF0dXNPcHRpb25MYWJlbEtleShmaWVsZDogRmllbGRJbmZvLCBjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMucGFnZUluZm8/LmxhYmVsc1NlY3Rpb247XHJcbiAgICByZXR1cm4gc2VjdGlvbiA/IGAke3NlY3Rpb259LiR7Y29kZX1gIDogY29kZTtcclxuICB9XHJcblxyXG4gIGdldE11bHRpU3RhdGVSZWFkb25seVN1bW1hcnkoZmllbGQ6IEZpZWxkSW5mbywgZGVmYXVsdHM6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByYXcgPSB0aGlzLmV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KTtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3IDogW107XHJcbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5wYWdlSW5mbz8ubGFiZWxzU2VjdGlvbiB8fCAnJztcclxuICAgIHJldHVybiBzZWxlY3RlZFxyXG4gICAgICAubWFwKGMgPT4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoc2VjdGlvbiA/IGAke3NlY3Rpb259LiR7Y31gIDogYykpXHJcbiAgICAgIC5qb2luKCcsICcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TXVsdGlWYWx1ZShmaWVsZDogRmllbGRJbmZvKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlRW1haWwoZW1haWwpIHtcclxuICAgIHZhciByZSA9IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC87XHJcbiAgICByZXR1cm4gcmUudGVzdChTdHJpbmcoZW1haWwpLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgYWRkRW1haWxUb0NoaXBzKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCwgZm9ybTogRm9ybUdyb3VwLCBmaWVsZE5hbWU6IHN0cmluZykge1xyXG5cclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQuaW5wdXQ7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgY29uc3QgaXRlbXMgPSB2YWx1ZS5zcGxpdCgnOycpO1xyXG4gICAgLy8gdmFsdWUuc3BsaXQoJyAnKTtcclxuICAgIGl0ZW1zLmZvckVhY2goaXRtID0+IHtcclxuICAgICAgaWYgKHRoaXMudmFsaWRhdGVFbWFpbCgoaXRtIHx8ICcnKS50cmltKCkpKSB7XHJcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuc3BsaXR0ZWRDaGlwcyhmb3JtLCBmaWVsZE5hbWUpO1xyXG4gICAgICAgIHgucHVzaChpdG0pO1xyXG4gICAgICAgIGZvcm0uZ2V0KGZpZWxkTmFtZSkucGF0Y2hWYWx1ZSh4LmpvaW4oJzsnKSk7XHJcbiAgICAgICAgaWYgKGlucHV0KSB7XHJcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZXh0cmFjdEpzb25GaWVsZE5hbWUoZGVmYXVsdHM6IGFueSwgcHJvcGVydHk6IHN0cmluZykge1xyXG4gICAgY29uc3QgeD0gdGhpcy5leHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBwcm9wZXJ0eSk7XHJcbiAgICBpZiAoeD8ubGVuZ3RoID4gMClcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoeCk7XHJcbiAgICBlbHNlIHJldHVybiAne30nO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9uVmFsdWUoaXRlbTogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyBpdGVtLmVuZ2xpc2hOYW1lIDogaXRlbS5hcmFiaWNOYW1lXHJcbiAgICAgICAgOiBpdGVtO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0SHlwZXJUZXh0RXZlbnQoKSB7XHJcbiAgICB0aGlzLmh5cGVyVGV4dEV2ZW50LmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBhZGQoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC52YWx1ZSB8fCAnJykudHJpbSgpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmVxdWF0aW9uT3BlcmF0b3JzLmluY2x1ZGVzKHZhbHVlKSB8fCAhdGhpcy5lcXVhdGlvblZhbHVlcygpLmluY2x1ZGVzKHZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuZXF1YXRpb25WYWx1ZXMudXBkYXRlKGVxdWF0aW9uVmFsdWVzID0+IFsuLi5lcXVhdGlvblZhbHVlcywgdmFsdWVdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmllbGRzSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5jdXJyZW50RXF1YXRpb25WYWx1ZS5zZXQoJycpO1xyXG4gICAgdGhpcy51cGRhdGVFcXVhdGlvbk9wdGlvbnMoKTtcclxuXHJcbiAgfVxyXG5cclxuICByZW1vdmUoaXRlbTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmVxdWF0aW9uVmFsdWVzLnVwZGF0ZShlcXVhdGlvblZhbHVlcyA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA8IDApIHtcclxuICAgICAgICByZXR1cm4gZXF1YXRpb25WYWx1ZXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGVxdWF0aW9uVmFsdWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuYW5ub3VuY2VyLmFubm91bmNlKGBSZW1vdmVkICR7aXRlbX1gKTtcclxuICAgICAgcmV0dXJuIFsuLi5lcXVhdGlvblZhbHVlc107XHJcbiAgICB9KTtcclxuICAgIHRoaXMudXBkYXRlRXF1YXRpb25PcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWR7XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gZXZlbnQub3B0aW9uLnZpZXdWYWx1ZS50cmltKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmVxdWF0aW9uT3BlcmF0b3JzLmluY2x1ZGVzKHNlbGVjdGVkVmFsdWUpICYmICF0aGlzLmVxdWF0aW9uVmFsdWVzKCkuaW5jbHVkZXMoc2VsZWN0ZWRWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5lcXVhdGlvblZhbHVlcy51cGRhdGUoZXF1YXRpb25WYWx1ZXMgPT4gWy4uLmVxdWF0aW9uVmFsdWVzLCBzZWxlY3RlZFZhbHVlXSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZXF1YXRpb25PcGVyYXRvcnMuaW5jbHVkZXMoc2VsZWN0ZWRWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5lcXVhdGlvblZhbHVlcy51cGRhdGUoZXF1YXRpb25WYWx1ZXMgPT4gWy4uLmVxdWF0aW9uVmFsdWVzLCBzZWxlY3RlZFZhbHVlXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdXJyZW50RXF1YXRpb25WYWx1ZS5zZXQoJycpO1xyXG4gICAgZXZlbnQub3B0aW9uLmRlc2VsZWN0KCk7XHJcbiAgICB0aGlzLmZpZWxkc0lucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIHRoaXMudXBkYXRlRXF1YXRpb25PcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVFcXVhdGlvbk9wdGlvbnMoKXtcclxuICAgIHRoaXMucmVmbGVjdEVxdWF0aW9uVmFsdWVPbkZvcm0oKTtcclxuXHJcbiAgICBsZXQgdXBkYXRlZEZpZWxkczogc3RyaW5nW107XHJcbiAgICBpZiAodGhpcy5lcXVhdGlvblZhbHVlcygpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB1cGRhdGVkRmllbGRzID0gdGhpcy5nZXROYW1lc0Zyb21TdWdnZXN0ZWRFcXVhdGlvbkZpZWxkcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGxhc3RFbGVtZW50ID0gdGhpcy5lcXVhdGlvblZhbHVlcygpW3RoaXMuZXF1YXRpb25WYWx1ZXMoKS5sZW5ndGggLSAxXTtcclxuICAgICAgaWYgKHRoaXMuZXF1YXRpb25PcGVyYXRvcnMuaW5jbHVkZXMobGFzdEVsZW1lbnQpKSB7XHJcbiAgICAgICAgdXBkYXRlZEZpZWxkcyA9IHRoaXMuZ2V0TmFtZXNGcm9tU3VnZ2VzdGVkRXF1YXRpb25GaWVsZHMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cGRhdGVkRmllbGRzID0gdGhpcy5lcXVhdGlvbk9wZXJhdG9ycztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2coJyoqKioqJywgdXBkYXRlZEZpZWxkcyk7XHJcbiAgICB0aGlzLmFsbEVxdWF0aW9uRmllbGRzLm5leHQodXBkYXRlZEZpZWxkcyk7XHJcbiAgfVxyXG5cclxuICBnZXROYW1lc0Zyb21TdWdnZXN0ZWRFcXVhdGlvbkZpZWxkcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5lcXVhdGlvblN1Z2dlc3RlZEZpZWxkcz8ubWFwKGZpZWxkID0+IGZpZWxkLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcmVmbGVjdEVxdWF0aW9uVmFsdWVPbkZvcm0oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW0gJiYgdGhpcy5mb3JtUGFyYW0uZ2V0KCdmaWVsZFZhbHVlJykpIHtcclxuICAgICAgdGhpcy5mb3JtUGFyYW0uZ2V0KCdmaWVsZFZhbHVlJykuc2V0VmFsdWUodGhpcy5lcXVhdGlvblZhbHVlcygpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdGb3JtIG9yIGZpZWxkVmFsdWUgaXMgbm90IGF2YWlsYWJsZS4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRXF1YXRpb24oZmllbGQ6IEZpZWxkSW5mbywgJGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJyRldmVudCcsICRldmVudCk7XHJcbiAgICAvLyB0cnkge1xyXG4gICAgLy8gICBldmFsdWF0ZShlcXVhdGlvbi5yZXBsYWNlKC9bYS16QS1aMC05XSsvZywgJzEnKSk7IC8vIFJlcGxhY2UgdmFyaWFibGVzIHdpdGggZHVtbXkgdmFsdWVzXHJcbiAgICAvLyAgIHRoaXMuZm9ybUdyb3Vwc1tpbmRleF0uZ2V0KCd4eXonKS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCd2YWxpZCAnLCBlcXVhdGlvbilcclxuICAgIC8vIH0gY2F0Y2ggKGUpIHtcclxuICAgIC8vICAgdGhpcy5mb3JtR3JvdXBzW2luZGV4XS5nZXQoJ3h5eicpLnNldEVycm9ycyh7c2VydmVyRXJyb3I6ICdpbmNvbXBsZXRlICd9KTtcclxuICAgIC8vICAgY29uc29sZS5sb2coJ2JhZCAnLCBlcXVhdGlvbilcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGdldFZpZXcoZmllbGQpOiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInIHtcclxuICAgIHJldHVybiBmaWVsZC5wYXR0ZXJuIHx8ICdtb250aCc7XHJcbiAgfVxyXG5cclxuICBzZXRNb250aEFuZFllYXIobm9ybWFsaXplZE1vbnRoQW5kWWVhcjogTW9tZW50LCBwaWNrZXI6IE1hdERhdGVwaWNrZXI8TW9tZW50PiwgZmllbGQpIHtcclxuICAgIGNvbnNvbGUubG9nKCdmaWVsZC5wYXR0ZXJuJywgZmllbGQucGF0dGVybilcclxuICAgIGlmIChmaWVsZC5wYXR0ZXJuID09PSAnbXVsdGkteWVhcicpIHtcclxuICAgICAgY29uc29sZS5sb2coJ2hpJylcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBGb3JtQ29udHJvbChtb21lbnQoKSk7XHJcbiAgICAgIGNvbnN0IGN0cmxWYWx1ZSA9IGRhdGUudmFsdWU7XHJcbiAgICAgIGN0cmxWYWx1ZS55ZWFyKG5vcm1hbGl6ZWRNb250aEFuZFllYXIueWVhcigpKTtcclxuICAgICAgY3RybFZhbHVlLm1vbnRoKDEpO1xyXG4gICAgICBjdHJsVmFsdWUuZGF5T2ZZZWFyKDEpO1xyXG4gICAgICB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpLnNldFZhbHVlKGN0cmxWYWx1ZSlcclxuICAgICAgcGlja2VyLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBY2NlcHRlZEZpbGVUeXBlcyhmaWVsZDogRmllbGRJbmZvKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghZmllbGQuc3VwcG9ydGVkVHlwZXMpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIC8vIENvbnZlcnQgXCIuanBnLC5wbmcsLnBkZlwiIGZvcm1hdCB0byBcImltYWdlL2pwZWcsaW1hZ2UvcG5nLGFwcGxpY2F0aW9uL3BkZlwiIG9yIGtlZXAgYXMgaXNcclxuICAgIC8vIEZvciBzaW1wbGljaXR5LCB3ZSdsbCBwYXNzIHRoZSBzdXBwb3J0ZWRUeXBlcyBhcy1pcyBhbmQgbGV0IHRoZSBicm93c2VyIGhhbmRsZSBpdFxyXG4gICAgLy8gVGhlIGJyb3dzZXIgYWNjZXB0cyBib3RoIGZvcm1hdHNcclxuICAgIHJldHVybiBmaWVsZC5zdXBwb3J0ZWRUeXBlcztcclxuICB9XHJcblxyXG4gIG9uQXR0YWNobWVudEZpbGVTZWxlY3RlZChmaWxlOiBGaWxlIHwgbnVsbCwgZmllbGQ6IEZpZWxkSW5mbyk6IHZvaWQge1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgLy8gVmFsaWRhdGUgZmlsZSB0eXBlIGlmIHN1cHBvcnRlZFR5cGVzIGlzIHNwZWNpZmllZFxyXG4gICAgICBpZiAoZmllbGQuc3VwcG9ydGVkVHlwZXMpIHtcclxuICAgICAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBmaWVsZC5zdXBwb3J0ZWRUeXBlcy5zcGxpdCgnLCcpLm1hcCh0ID0+IHQudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSAnLicgKyBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAoIWFsbG93ZWRUeXBlcy5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKSkge1xyXG4gICAgICAgICAgLy8gRmlsZSB0eXBlIG5vdCBzdXBwb3J0ZWQgLSBjb3VsZCBzaG93IGVycm9yIG1lc3NhZ2VcclxuICAgICAgICAgIGNvbnNvbGUud2FybihgRmlsZSB0eXBlICR7ZmlsZUV4dGVuc2lvbn0gaXMgbm90IHN1cHBvcnRlZC4gQWxsb3dlZCB0eXBlczogJHtmaWVsZC5zdXBwb3J0ZWRUeXBlc31gKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFVwZGF0ZSBmb3JtIGNvbnRyb2wgaWYgaXQgZXhpc3RzXHJcbiAgICAgIGlmICh0aGlzLmZvcm1QYXJhbSAmJiB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8uc2V0VmFsdWUoZmlsZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEVtaXQgYXR0YWNobWVudCBldmVudFxyXG4gICAgICB0aGlzLmF0dGFjaG1lbnRFbWl0dGVyLmVtaXQoe1xyXG4gICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgIGF0dGFjaG1lbnRUeXBlOiBmaWVsZC5hdHRhY2htZW50VHlwZVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIENsZWFyIHRoZSBmb3JtIGNvbnRyb2wgaWYgZmlsZSBpcyByZW1vdmVkXHJcbiAgICAgIGlmICh0aGlzLmZvcm1QYXJhbSAmJiB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW4tZm9ybS1jYW52YXNcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS13cmFwcGVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGVmYXVsdHNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlOyBlbHNlIHJlYWRvbmx5Vmlld1wiIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiIGNsYXNzPVwiZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHNjcmVlbkZpZWxkcyB8IGtleXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiByb3cudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtY29sdW1uXCIgW3N0eWxlLmZsZXhdPVwiZmllbGQuZmllbGRTaXplID8gKCcwIDAgJyArIGZpZWxkLmZpZWxkU2l6ZSArICclJykgOiAnMSAxIDAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZC50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwiZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSkuc2V0VmFsdWUoJGV2ZW50LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImZpZWxkLnJlYWRvbmx5ID8gLTEgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tmaWVsZC5wcm9wZXJ0eX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgKm5nSWY9XCIhZmllbGQucmVhZG9ubHlcIiBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0Vmlld109XCJnZXRWaWV3KGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwic2V0TW9udGhBbmRZZWFyKCRldmVudCwgcGlja2VyLCBmaWVsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbENsYXNzPVwiZXhhbXBsZS1tb250aC1waWNrZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncGhvbmUtbnVtYmVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cImN1c3RvbS1uZ3gtbWF0LWludGwtdGVsLWlucHV0XCIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1tYXQtaW50bC10ZWwtaW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRQbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVmZXJyZWRDb3VudHJpZXNdPVwiWydxYSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZVBsYWNlaG9sZGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlU2VhcmNoXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb25seUNvdW50cmllc109XCJnZXRDb3VudHJ5Q29kZUxpc3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1pbnRsLXRlbC1pbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpYmFuLXRleHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRleHRSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJmaWVsZC5yZWFkb25seSA/IC0xIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Bhc3N3b3JkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwcC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJoaWRlICYmICFmaWVsZC5kaXNhYmxlZCA/ICdwYXNzd29yZCcgOiAndGV4dCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImZpZWxkLnJlYWRvbmx5ID8gLTEgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXgtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhpZGUgPSAhaGlkZVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaGlkZSA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eScgfX0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJmaWVsZC5zaG93U2VhcmNoSWNvblwiIG1hdFByZWZpeD5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImFwcC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZmllbGQucmVhZG9ubHkgPyAtMSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwiZml4QXJhYmljTnVtYmVycygkZXZlbnQudGFyZ2V0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4RGlnaXRzXT1cImZpZWxkLm1heExlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLnNob3dTZWFyY2hJY29uICYmICFmaWVsZC5yZWFkb25seSAmJiAoZm9ybVBhcmFtPy5nZXQoW2ZpZWxkLnByb3BlcnR5XSk/LnZhbHVlID8/ICcnKSAhPT0gJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLWljb24tc3VmZml4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGVhci1pY29uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUuY2xlYXJGaWVsZCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWVsZFZhbHVlKGZpZWxkLnByb3BlcnR5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc3RhdGUtY2hlY2tib3gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyX190cmlnZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJzdGF0dXNNdWx0aU1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fdHJpZ2dlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm11bHRpLXN0YXRlLWZpbHRlcl9fdHJpZ2dlci10ZXh0LS1wbGFjZWhvbGRlcl09XCJpc011bHRpU3RhdGVFbXB0eShmaWVsZC5wcm9wZXJ0eSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRNdWx0aVN0YXRlRmlsdGVyVHJpZ2dlckxhYmVsKGZpZWxkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGZpZWxkLnBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgnRklMVEVSLUJVSUxERVIuc2VsZWN0U3RhdHVzJyB8IHRyYW5zbGF0ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX2NoZXZyb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI3N0YXR1c011bHRpTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fbWVudS1wYW5lbFwiIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyX19tZW51LWlubmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uTXVsdGlTdGF0ZU1lbnVJbm5lcktleWRvd24oJGV2ZW50LCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2RlIG9mIGZpZWxkLmxpc3RPcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX3Jvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1tdWx0aS1zdGF0ZS1jb2RlXT1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk11bHRpU3RhdGVSb3dDbGljaygkZXZlbnQsIGZpZWxkLnByb3BlcnR5LCBjb2RlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc011bHRpU3RhdGVTZWxlY3RlZChmaWVsZC5wcm9wZXJ0eSwgY29kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVNdWx0aVN0YXRlRmlsdGVyKGZpZWxkLnByb3BlcnR5LCBjb2RlLCAkZXZlbnQuY2hlY2tlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX3BpbGwgc3RhdGVUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0YXR1c09wdGlvbkxhYmVsS2V5KGZpZWxkLCBjb2RlKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGlwLWxpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwLWdyaWQgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1yb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtYWlsIG9mIHNwbGl0dGVkQ2hpcHMoZm9ybVBhcmFtLCBmaWVsZC5wcm9wZXJ0eSk7IGxldCBpZHggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cInJlbW92YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVDaGlwc0l0ZW0oZm9ybVBhcmFtLCBmaWVsZC5wcm9wZXJ0eSwgaWR4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWFpbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmUgKm5nSWY9XCJyZW1vdmFibGVcIj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwibnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cImFkZE9uQmx1clwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGRFbWFpbFRvQ2hpcHMoJGV2ZW50LCBmb3JtUGFyYW0sIGZpZWxkLnByb3BlcnR5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYW1vdW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhbW91bnRSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZmllbGQucmVhZG9ubHkgPyAtMSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZXF1ZW5jZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlZmVyZW5jZUF0dHJpYnV0ZVRydWUoZmllbGQucHJvcGVydHksICdhdXRvR2VuZXJhdGVkJyk7IGVsc2Ugbm9TZXF1ZW5jZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9TZXF1ZW5jZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dGFyZWFSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjZGtGb2N1c0luaXRpYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEaWdpdHNdPVwiZmllbGQubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJmaWVsZC5yZWFkb25seSA/IC0xIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm51bWJlclJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5taW5dPVwiZmllbGQuYWxsb3dOZWdhdGl2ZSA/IG51bGwgOiAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiYmxvY2tOZWdhdGl2ZU51bWJlcktleWRvd24oJGV2ZW50LCBmaWVsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEaWdpdHNdPVwiZmllbGQubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVhZG9ubHkgPyBmYWxzZSA6IGZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZmllbGQucmVhZG9ubHkgPyAtMSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJmaWVsZC5wYXR0ZXJuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCIgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidiaWdkZWNpbWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJudW1iZXJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJzT25seSAgW21heERlY2ltYWxzXT1cImZpZWxkLm1heERlY2ltYWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEaWdpdHNdPVwiZmllbGQubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cImZpZWxkLnBhdHRlcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlYWRvbmx5ID8gZmFsc2UgOiBmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZmllbGQucmVhZG9ubHkgPyAtMSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIiAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpbWVSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJmaWVsZC5yZWFkb25seSA/IC0xIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hlY2tib3hSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDE0cHg7IHBhZGRpbmctdG9wOiAxNHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0b2dnbGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvZ2dsZVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbG9yLXBpY2tlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiPnt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVqcy1jb2xvcnBpY2tlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb2xvcnBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYWRpby1idXR0b24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJhZGlvQnV0dG9uUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tmaWVsZC5wcm9wZXJ0eX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwcC1yYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiPnt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cC1jdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWVsZC5saXN0T3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e2ZpZWxkLnByb3BlcnR5fX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpID8gJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVhZG9ubHkgPyBmYWxzZSA6IGZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cImZpZWxkLmRlZmF1bHRMaXN0T3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQudHJhbnNsYXRlOyBlbHNlIGxvb2t1cF9ub190cmFuc2xhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLmxpc3RPcHRpb25zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZyaWVuZGx5TmFtZShmaWVsZC5sYWJlbCwgZmllbGQucHJvcGVydHksIGl0ZW0pIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb29rdXBfbm9fdHJhbnNsYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQubGlzdE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0T3B0aW9uVmFsdWUoaXRlbSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2F0dGFjaG1lbnQnXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWF0dGFjaG1lbnQtdXBsb2FkZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0ZWRUeXBlc109XCJnZXRBY2NlcHRlZEZpbGVUeXBlcyhmaWVsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KSA/ICdlcnJvci0nICsgZmllbGQucHJvcGVydHkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZVNlbGVjdGVkKT1cIm9uQXR0YWNobWVudEZpbGVTZWxlY3RlZCgkZXZlbnQsIGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiA1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtYXR0YWNobWVudC11cGxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cImlxLWVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbG9va3VwJ1wiIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvb2t1cFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1hdXRvLWNvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVBhcmFtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdXBwb3J0aW5nQXR0cmlidXRlc109XCJzdXBwb3J0aW5nQXR0cmlidXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJ0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwicGF0Y2hMb29rdXBWYWx1ZSgkZXZlbnQsIGZpZWxkLnByb3BlcnR5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdXRvLWNvbXBsZXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXJyZW5jeVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBVbmNvbW1lbnQgYW5kIHVzZSB0aGUgY3VycmVuY3kgY29udHJvbCB3aGVuIHJlYWR5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhcHAtY3VycmVuY3lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVBhcmFtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJ0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFZhbHVlKT1cInBhdGNoQ3VycmVuY3lWYWx1ZSgkZXZlbnQsIGZpZWxkLnByb3BlcnR5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jdXJyZW5jeT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm11bHRpU2VsZWN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLW11bHRpLWF1dG8tY29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtUGFyYW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJnZXRNdWx0aVZhbHVlKGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwicGF0Y2hNdWx0aVNlbGVjdFZhbHVlKCRldmVudCwgZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLW11bHRpLWF1dG8tY29tcGxldGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyaWNoLXRleHQnXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVW5jb21tZW50IGFuZCB1c2UgdGhlIHJpY2ggdGV4dCBlZGl0b3Igd2hlbiByZWFkeSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGNrZWRpdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdG9yXT1cIkVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NrZWRpdG9yPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGl2aWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaHlwZXItdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0SHlwZXJUZXh0RXZlbnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaHlwZXItbGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWN0aW9uLXRpdGxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhyZGl2aWRlci1taWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmllbGQubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZXF1YXRpb24tYnVpbGRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIiBkaXI9XCJsdHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImZpZWxkLnJlYWRvbmx5ID8gLTEgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSkgPyAnZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5IDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2VxdWF0aW9uLWJ1aWxkZXInXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXRlUmVhZG9ubHlcIi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IHdpZHRoOiAzNTAlXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDQwMCVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcEdyaWQ+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXF1YXRpb25WYWx1ZSBvZiBlcXVhdGlvblZhbHVlcygpOyBsZXQgaSA9IGluZGV4XCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtcm93IChyZW1vdmVkKT1cInJlbW92ZShlcXVhdGlvblZhbHVlLCBpKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlcXVhdGlvblZhbHVlIH19LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRDaGlwUmVtb3ZlLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncmVtb3ZlICcgKyBlcXVhdGlvblZhbHVlXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1yb3c+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtZ3JpZD4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50RXF1YXRpb25WYWx1ZVwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGQoJGV2ZW50KVwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFkZCBlcXVhdGlvbiB2YWx1ZVwiIC8+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudClcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXJlZEZpZWxkIG9mIChlcXVhdGlvbkZpbHRlcmVkRmllbGRzKCkgfCBhc3luYylcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmaWx0ZXJlZEZpZWxkXCI+e3sgZmlsdGVyZWRGaWVsZCB9fTwvbWF0LW9wdGlvbj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiaXEtZXJyb3JcIiAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICNkYXRlUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB8IGRhdGU6IGdldFJlYWRvbmx5RGF0ZUZvcm1hdChmaWVsZCkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RpbWVSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZm9ybWF0VGltZVRvRGF0ZShkZWZhdWx0c1tmaWVsZC5wcm9wZXJ0eV0pIHwgZGF0ZTogJ3Nob3J0VGltZScgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Bob25lTnVtYmVyUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGV4dFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCIgKm5nSWY9XCIhZmllbGQuYWR2YW5jZWRGaWx0ZXJcIj48L2xhYmVsPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVhZG9ubHlUZXh0VmFsdWVFbXB0eShkZWZhdWx0cywgZmllbGQpICYmIGZpZWxkLmVtcHR5UmVhZG9ubHlQbGFjZWhvbGRlcktleTsgZWxzZSB0ZXh0UmVhZG9ubHlIYXNWYWx1ZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlIHJlYWRvbmx5LXZhbHVlLS1lbXB0eVwiPnt7IGZpZWxkLmVtcHR5UmVhZG9ubHlQbGFjZWhvbGRlcktleSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0UmVhZG9ubHlIYXNWYWx1ZT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RleHRhcmVhUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQudGV4dEZvcm1hdCA9PT0gJ2pzb24nOyBlbHNlIG5vcm1hbFRleHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlIGpzb24tdmlld2VyXCI+XHJcbiAgICAgICAgPG5neC1qc29uLXZpZXdlciBbanNvbl09XCJleHRyYWN0SnNvbkZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpXCIgW2V4cGFuZGVkXT1cInRydWVcIj48L25neC1qc29uLXZpZXdlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI25vcm1hbFRleHQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNudW1iZXJSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpIH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjdXJyZW5jeVJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JhZGlvQnV0dG9uUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IHRyYW5zbGF0ZUxhYmxlKGRlZmF1bHRzW2ZpZWxkLnByb3BlcnR5XSkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JpY2hUZXh0UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiIFtpbm5lckh0bWxdPVwiZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjaGVja2JveFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj5cclxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiICpuZ0lmPVwiZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpOyBlbHNlIHNob3dOb1wiPmRvbmU8L21hdC1pY29uPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dObz5cclxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiAqbmdJZj1cImV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KTsgZWxzZSBzaG93Tm9cIj5kb25lPC9tYXQtaWNvbj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzaG93Tm8+XHJcbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbGlzdFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIiAqbmdJZj1cImZpZWxkLnRyYW5zbGF0ZTsgZWxzZSBub1RyYW5zbGF0ZVwiPlxyXG4gICAgICB7eyBsaXN0U2hvd1ZhbHVlKGRlZmF1bHRzLCBmaWVsZCkgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2xhdGU+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzZXF1ZW5jZVJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvb2t1cFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj5cclxuICAgICAge3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpPy5bdHJhbnNsYXRlU2VydmljZS5nZXREZWZhdWx0TGFuZygpID09PSAnZW4nID8gJ2VuZ2xpc2hOYW1lJyA6ICdhcmFiaWNOYW1lJ10gfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYW1vdW50UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPlxyXG4gICAgICB7eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfCBjdXJyZW5jeTogY3VycmVuY3kgfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbXVsdGlTZWxlY3RSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8bWF0LWNoaXAtZ3JpZCBjbGFzcz1cInJlYWRvbmx5LXZhbHVlIGNoaXBMaXN0XCI+XHJcbiAgICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgZmlsZWRQcm9wIG9mIHNob3dNdWx0aVNlbGVjdFZhbHVlc0FzUmVhZG9ubHkoZmllbGQpXCI+XHJcbiAgICAgICAge3sgZmlsZWRQcm9wIH19XHJcbiAgICAgIDwvbWF0LWNoaXA+XHJcbiAgICA8L21hdC1jaGlwLWdyaWQ+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NoaXBMaXN0UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIVE1MXT1cImZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlXCI+PC9sYWJlbD5cclxuICAgIDxtYXQtY2hpcC1saXN0Ym94IGNsYXNzPVwicmVhZG9ubHktdmFsdWUgY2hpcExpc3RcIj5cclxuICAgICAgPG1hdC1jaGlwLW9wdGlvbiAqbmdGb3I9XCJsZXQgbG9jIG9mIHNwbGl0UmVhZG9ubHkoZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAge3sgbG9jIH19XHJcbiAgICAgIDwvbWF0LWNoaXAtb3B0aW9uPlxyXG4gICAgPC9tYXQtY2hpcC1saXN0Ym94PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlWaWV3PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3ctd3JhcHBlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbi13cmFwcGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBzY3JlZW5GaWVsZHMgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiByb3cudmFsdWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWNvbHVtbiByZWFkb25seS1pdGVtXCIgW3N0eWxlLmZsZXhdPVwiZmllbGQuZmllbGRTaXplID8gKCcwIDAgJyArIGZpZWxkLmZpZWxkU2l6ZSArICclJykgOiAnMSAxIDAnXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkLnR5cGVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXRlUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aW1lUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncGhvbmUtbnVtYmVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBob25lTnVtYmVyUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dGFyZWFSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibnVtYmVyUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VycmVuY3lSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYWRpby1idXR0b24nXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicmFkaW9CdXR0b25SZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RvZ2dsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b2dnbGVSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdGF0dXMnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hlY2tib3hSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsb29rdXAnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9va3VwUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYW1vdW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFtb3VudFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpLXNlbGVjdCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJtdWx0aVNlbGVjdFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoaXAtbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlwTGlzdFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlcXVlbmNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlcXVlbmNlUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc3RhdGUtY2hlY2tib3gnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBbaW5uZXJIdG1sXT1cImZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZ2V0TXVsdGlTdGF0ZVJlYWRvbmx5U3VtbWFyeShmaWVsZCwgZGVmYXVsdHMpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpYmFuLXRleHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIiBbaW5uZXJIdG1sXT1cImV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlY3Rpb24tdGl0bGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJocmRpdmlkZXItbWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmllbGQubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiJdfQ==
|