tango-app-ui-manage-billing 3.3.29 → 3.3.31
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/daily-pricing/daily-pricing.component.mjs +7 -6
- package/esm2022/lib/components/daily-pricing/generate-invoice-modal/generate-invoice-modal.component.mjs +99 -8
- package/esm2022/lib/components/invoice-preview/invoice-preview.component.mjs +3 -3
- package/esm2022/lib/components/plans-subscription/payments-subscription.component.mjs +90 -3
- package/esm2022/lib/components/plans-subscription/step-pricing/default-steps.mjs +50 -0
- package/esm2022/lib/components/purchase-order/purchase-order-form/purchase-order-form.component.mjs +67 -8
- package/esm2022/lib/components/services/billing.service.mjs +5 -1
- package/esm2022/lib/components/services/po-field-parser.mjs +208 -0
- package/esm2022/lib/components/services/po-pdf-extractor.service.mjs +79 -0
- package/esm2022/lib/components/tango-manage-billing/tango-manage-billing.component.mjs +46 -3
- package/fesm2022/tango-app-ui-manage-billing.mjs +724 -118
- package/fesm2022/tango-app-ui-manage-billing.mjs.map +1 -1
- package/lib/components/daily-pricing/generate-invoice-modal/generate-invoice-modal.component.d.ts +13 -1
- package/lib/components/plans-subscription/payments-subscription.component.d.ts +3 -0
- package/lib/components/plans-subscription/step-pricing/default-steps.d.ts +21 -0
- package/lib/components/purchase-order/purchase-order-form/purchase-order-form.component.d.ts +9 -1
- package/lib/components/services/billing.service.d.ts +1 -0
- package/lib/components/services/po-field-parser.d.ts +7 -0
- package/lib/components/services/po-pdf-extractor.service.d.ts +25 -0
- package/lib/components/tango-manage-billing/tango-manage-billing.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -407,16 +407,16 @@ export class DailyPricingComponent {
|
|
|
407
407
|
if (!this.clientId)
|
|
408
408
|
return;
|
|
409
409
|
// Open the picker first — the user chooses which billing groups to
|
|
410
|
-
// generate for. Modal closes with
|
|
410
|
+
// generate for. Modal closes with { groupIds, outstandingGroupIds }
|
|
411
411
|
// (or is dismissed = no-op).
|
|
412
412
|
const modalRef = this.modalService.open(GenerateInvoiceModalComponent, {
|
|
413
413
|
centered: true, size: 'md', scrollable: true,
|
|
414
414
|
});
|
|
415
415
|
modalRef.componentInstance.clientId = this.clientId;
|
|
416
|
-
modalRef.result.then((
|
|
417
|
-
if (!Array.isArray(groupIds) || groupIds.length === 0)
|
|
416
|
+
modalRef.result.then((result) => {
|
|
417
|
+
if (!result || !Array.isArray(result.groupIds) || result.groupIds.length === 0)
|
|
418
418
|
return;
|
|
419
|
-
this.runInvoiceGeneration(groupIds);
|
|
419
|
+
this.runInvoiceGeneration(result.groupIds, result.outstandingGroupIds || []);
|
|
420
420
|
}).catch(() => { });
|
|
421
421
|
}
|
|
422
422
|
// Open a popup listing the newly onboarded stores (with first file date).
|
|
@@ -429,12 +429,13 @@ export class DailyPricingComponent {
|
|
|
429
429
|
});
|
|
430
430
|
modalRef.componentInstance.stores = this.newlyOnboardedStoreList;
|
|
431
431
|
}
|
|
432
|
-
runInvoiceGeneration(groupIds) {
|
|
432
|
+
runInvoiceGeneration(groupIds, outstandingGroupIds = []) {
|
|
433
433
|
this.generatingInvoice = true;
|
|
434
434
|
const payload = {
|
|
435
435
|
allClient: true,
|
|
436
436
|
clientList: [this.clientId],
|
|
437
437
|
groupIds,
|
|
438
|
+
outstandingGroupIds,
|
|
438
439
|
};
|
|
439
440
|
this.billingService.createInvoice(payload).pipe(takeUntil(this.destroy$)).subscribe({
|
|
440
441
|
next: () => {
|
|
@@ -505,4 +506,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
505
506
|
}], ctorParameters: () => [{ type: i1.BillingService }, { type: i0.ChangeDetectorRef }, { type: i2.ToastService }, { type: i3.NgbModal }], propDecorators: { clientId: [{
|
|
506
507
|
type: Input
|
|
507
508
|
}] } });
|
|
508
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFpbHktcHJpY2luZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtYmlsbGluZy9zcmMvbGliL2NvbXBvbmVudHMvZGFpbHktcHJpY2luZy9kYWlseS1wcmljaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9kYWlseS1wcmljaW5nL2RhaWx5LXByaWNpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQU94RixNQUFNLE9BQU8scUJBQXFCO0lBaUV0QjtJQUNBO0lBQ0E7SUFDQTtJQW5FTyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRS9CLEdBQUcsQ0FBTTtJQUNULGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsV0FBVztJQUNYLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUUzQix5RUFBeUU7SUFDekUsY0FBYyxHQUFRLEVBQUUsQ0FBQztJQUN6Qix3RkFBd0Y7SUFDeEYsWUFBWSxHQUFRLEVBQUUsQ0FBQztJQUV2QixjQUFjO0lBQ2QsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4Qix3RUFBd0U7SUFDeEUsNkRBQTZEO0lBQzdELFlBQVksR0FBYSxFQUFFLENBQUM7SUFDNUIsOEVBQThFO0lBQzlFLGFBQWEsR0FB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LElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQUUsR0FBRyxHQUFHLGdCQUFnQixDQUFDO2lCQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBRSxHQUFHLEdBQUcsZ0JBQWdCLENBQUM7WUFDL0QsT0FBTztnQkFDTCxHQUFHLENBQUM7Z0JBQ0osVUFBVSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUN6RCxHQUFHO2dCQUNILFdBQVc7Z0JBQ1gsV0FBVztnQkFDWCxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUU7YUFDbkUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDN0QsQ0FBQzt3R0FuaEJVLHFCQUFxQjs0RkFBckIscUJBQXFCLGdIQ2JsQyxvNmlDQW9iTTs7NEZEdmFPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7cUtBT3BCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEJpbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYmlsbGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xuaW1wb3J0IHsgR2VuZXJhdGVJbnZvaWNlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyYXRlLWludm9pY2UtbW9kYWwvZ2VuZXJhdGUtaW52b2ljZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3U3RvcmVzTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL25ldy1zdG9yZXMtbW9kYWwvbmV3LXN0b3Jlcy1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGFpbHktcHJpY2luZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYWlseS1wcmljaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhaWx5LXByaWNpbmcuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIERhaWx5UHJpY2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nID0gJyc7XG5cbiAgbGVuOiBhbnk7XG4gIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gTWV0YWRhdGFcbiAgZGFpbHlQcmljaW5nSW5mbzogYW55ID0ge307XG5cbiAgLy8gRWRpdCB0cmFja2luZzoga2V5ID0gJ3N0b3JlSWRfcHJvZHVjdE5hbWUnLCB2YWx1ZSA9IGVkaXRlZCB3b3JraW5nZGF5c1xuICBlZGl0aW5nUHJvZHVjdDogYW55ID0ge307XG4gIC8vIEVkaXQgdHJhY2tpbmcgZm9yIHN0b3JlLWxldmVsIGZpZWxkcyAodHJhZmZpY0NhbWVyYUNvdW50LCB6b25lQ2FtZXJhQ291bnQsIHpvbmVDb3VudClcbiAgZWRpdGluZ0ZpZWxkOiBhbnkgPSB7fTtcblxuICAvLyBEYXRlIGZpbHRlclxuICBkYXRlRmlsdGVyOiBzdHJpbmcgPSAnJztcblxuICAvLyBGaWx0ZXIg4oCUIG11bHRpLXNlbGVjdCBzdGF0dXMuIE5vIGRlZmF1bHQ6IHRoZSB0YWJsZSBvcGVucyBzaG93aW5nIEFMTFxuICAvLyBzdG9yZXMgKGFjdGl2ZSArIGRlYWN0aXZlKTsgbmVpdGhlciBvcHRpb24gaXMgcHJlLWNoZWNrZWQuXG4gIHN0YXR1c0ZpbHRlcjogc3RyaW5nW10gPSBbXTtcbiAgLy8gTXVsdGktc2VsZWN0IGNvdW50cnkgZmlsdGVyIChvcHRpb25zIHBvcHVsYXRlZCBmcm9tIHRoZSBBUEkncyBgY291bnRyaWVzYCkuXG4gIGNvdW50cnlGaWx0ZXI6IHN0cmluZ1tdID0gW107XG4gIHN0b3JlRmlsdGVyT2JqZWN0OiBhbnlbXSA9IFtcbiAgICB7IERlc2NyaXB0aW9uOiAnU3RhdHVzJywgdHlwZTogJ211bHRpJywgSXNzdWVzOiBbeyBpZDogJ2FjdGl2ZScsIHRleHQ6ICdBY3RpdmUnIH0sIHsgaWQ6ICdkZWFjdGl2ZScsIHRleHQ6ICdEZWFjdGl2ZScgfV0gfSxcbiAgXTtcbiAgLy8gbGliLWZpbHRlcnMgc25hcHNob3RzIGRhdGFPYmplY3QgaW4gaXRzIG5nT25Jbml0LCBzbyB0aGUgQ291bnRyeSBncm91cCBtdXN0XG4gIC8vIGJlIHByZXNlbnQgQkVGT1JFIGl0IG1vdW50cy4gV2UgZ2F0ZSB0aGUgPGxpYi1maWx0ZXJzPiByZW5kZXIgb24gdGhpcyBmbGFnLFxuICAvLyBmbGlwcGluZyBpdCB0cnVlIG9ubHkgb25jZSB0aGUgY291bnRyeSBvcHRpb25zIGhhdmUgYmVlbiBidWlsdCBmcm9tIHRoZSBBUEkuXG4gIGZpbHRlcnNSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IOKAlCBkZXJpdmVkIGZyb20gaW52b2ljZSBoaXN0b3J5IGZvciB0aGUgYnJhbmQuXG4gIC8vIE5ld2VzdCBmaXJzdDsgZWFjaCByb3cgY2FycmllcyBwcmlvci1tb250aCBkZWx0YXMgZm9yIHRoZSB0cmVuZCBpbmRpY2F0b3IuXG4gIG1vbnRobHlCaWxsaW5nU3VtbWFyeTogYW55W10gPSBbXTtcbiAgbW9udGhseVN1bW1hcnlFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFRhYmxlXG4gIHN0b3JlTGlzdDogYW55ID0gW107XG4gIHN0b3JlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIHN0b3JlTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XG4gIHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcbiAgLy8gRGVmYXVsdCBzb3J0OiB3b3JraW5nIGRheXMgKGRheXNEaWZmZXJlbmNlKSwgaGlnaGVzdCBmaXJzdC5cbiAgc29ydENvbHVtTmFtZTogc3RyaW5nID0gJ2RheXNEaWZmZXJlbmNlJztcbiAgc29ydEJ5OiBudW1iZXIgPSAtMTtcbiAgZ2VuZXJhdGluZ0ludm9pY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBBZGRpdGlvbmFsIChub24tc3RhbmRhcmQpIHByb2R1Y3RzIGF2YWlsYWJsZSBvbmx5IGZvciBzcGVjaWZpYyBjbGllbnRzXG4gIC8vIChjdXJyZW50bHkgY2xpZW50SWQgMTEpLiBFbXB0eSBmb3IgZXZlcnlvbmUgZWxzZSAtPiB0aGUgdGFibGUgaXMgaGlkZGVuLlxuICBhZGRpdGlvbmFsUHJvZHVjdHM6IGFueVtdID0gW107XG4gIGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5OiBzdHJpbmcgPSAnaW5yJztcbiAgLy8gRGF0ZSAoWVlZWS1NTS1ERCkgb2YgdGhlIGJpbGxpbmdfZGV0YWlscyBzbmFwc2hvdCBiZWhpbmQgdGhlIGFkZGl0aW9uYWxcbiAgLy8gcHJvZHVjdCBjb3VudHM7IHBhc3NlZCB0byB0aGUgZXhwb3J0IHNvIGV4cG9ydHMgbWF0Y2ggdGhlIGRpc3BsYXllZCBjYXJkcy5cbiAgYWRkaXRpb25hbFByb2R1Y3RzRGF0ZTogc3RyaW5nID0gJyc7XG5cbiAgLy8gQ291bnQgKyBsaXN0IG9mIHN0b3JlcyBvbmJvYXJkZWQgdGhpcyBtb250aCAoZmlyc3QgZmlsZSBkYXRlIGluIHRoZSBjdXJyZW50XG4gIC8vIG1vbnRoKS4gVGhlIGxpc3QgZmVlZHMgdGhlIFwiVmlldyBTdG9yZXNcIiBwb3B1cC5cbiAgbmV3bHlPbmJvYXJkZWRTdG9yZXM6IG51bWJlciA9IDA7XG4gIG5ld2x5T25ib2FyZGVkU3RvcmVMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY2xpZW50SWQnXSAmJiAhY2hhbmdlc1snY2xpZW50SWQnXS5maXJzdENoYW5nZSAmJiB0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdyYW5kIHRvdGFsIGFjcm9zcyBhbGwgYWRkaXRpb25hbC1wcm9kdWN0IHJvd3MuXG4gIGdldCBhZGRpdGlvbmFsUHJvZHVjdHNUb3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5hZGRpdGlvbmFsUHJvZHVjdHMgfHwgW10pLnJlZHVjZSgoYSwgcCkgPT4gYSArIChOdW1iZXIocC50b3RhbCkgfHwgMCksIDApO1xuICB9XG5cbiAgLy8gUHJvZHVjdHMgdGhhdCBoYXZlIGEgYmFja2VuZCBkZXRhaWxlZCBleHBvcnQuIEtleWVkIGJ5IHRoZSBwcm9kdWN0IGtleSB0aGVcbiAgLy8gZXhwb3J0IGVuZHBvaW50IHVuZGVyc3RhbmRzLiBBZGQgbW9yZSBhcyB0aGVpciBxdWVyaWVzIGFyZSB3aXJlZCB1cC5cbiAgcHJpdmF0ZSByZWFkb25seSBleHBvcnRhYmxlUHJvZHVjdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJ2V5ZXRlc3QnOiAnZXlldGVzdCcsXG4gICAgJ3BsYW5vZ3JhbSc6ICdwbGFub2dyYW0nLFxuICAgICdhaSBtYW5hZ2VyJzogJ2FpbWFuYWdlcicsXG4gICAgJ3Ztcyc6ICd2bXMnLFxuICAgICdydW4gYWknOiAncnVuYWknLFxuICAgICdyZW1vdGUgb3B0dW0nOiAncmVtb3Rlb3B0dW0nLFxuICB9O1xuXG4gIGNhbkV4cG9ydEFkZGl0aW9uYWxQcm9kdWN0KHByb2R1Y3ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmV4cG9ydGFibGVQcm9kdWN0c1socHJvZHVjdE5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCldO1xuICB9XG5cbiAgZXhwb3J0QWRkaXRpb25hbFByb2R1Y3QocHJvZHVjdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZXhwb3J0YWJsZVByb2R1Y3RzWyhwcm9kdWN0TmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKV07XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gUGFzcyB0aGUgYmlsbGluZ19kZXRhaWxzIHNuYXBzaG90IGRhdGUgKFlZWVktTU0tREQpIGJlaGluZCB0aGUgY2FyZCBjb3VudHNcbiAgICAvLyBzbyBkYXktc2NvcGVkIGV4cG9ydHMgKFZNUyAvIFJ1biBBSSB2aWEgTGFtYmRhIHRvX2RhdGUsIFJlbW90ZSBPcHR1bSkgbWF0Y2hcbiAgICAvLyB3aGF0J3Mgc2hvd24uIEZhbGwgYmFjayB0byB0b2RheSBpZiB0aGUgYmFja2VuZCBkaWRuJ3QgcmV0dXJuIGEgZGF0ZS5cbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgdG9kYXlTdHIgPSBgJHt0b2RheS5nZXRGdWxsWWVhcigpfS0ke1N0cmluZyh0b2RheS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKX0tJHtTdHJpbmcodG9kYXkuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgY29uc3QgZXhwb3J0RGF0ZSA9IHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzRGF0ZSB8fCB0b2RheVN0cjtcbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmFkZGl0aW9uYWxQcm9kdWN0RXhwb3J0KHRoaXMuY2xpZW50SWQsIGtleSwgZXhwb3J0RGF0ZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBBcnJheUJ1ZmZlcikgPT4ge1xuICAgICAgICAgIC8vIEEgcmVhbCAueGxzeCBpcyBhIHppcCDigJQgaXRzIGZpcnN0IHR3byBieXRlcyBhcmUgJ1BLJyAoMHg1MCAweDRCKS5cbiAgICAgICAgICAvLyBBIDIwNC9lbXB0eSBvciBKU09OIGVycm9yIGJvZHkgaXMgTk9ULCBhbmQgc2F2aW5nIGl0IHByb2R1Y2VzIGFcbiAgICAgICAgICAvLyBcImNvcnJ1cHRlZFwiIGZpbGUuIEd1YXJkIHNvIHdlIG9ubHkgc2F2ZSBhIGdlbnVpbmUgd29ya2Jvb2suXG4gICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXMgPyBuZXcgVWludDhBcnJheShyZXMpIDogbmV3IFVpbnQ4QXJyYXkoKTtcbiAgICAgICAgICBjb25zdCBpc1hsc3ggPSBieXRlcy5sZW5ndGggPiAxICYmIGJ5dGVzWzBdID09PSAweDUwICYmIGJ5dGVzWzFdID09PSAweDRiO1xuICAgICAgICAgIGlmICghaXNYbHN4KSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ05vIGRhdGEgdG8gZXhwb3J0Jyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgYCR7cHJvZHVjdE5hbWV9LSR7dGhpcy5jbGllbnRJZH1gKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0V4cG9ydCBmYWlsZWQnKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gRmV0Y2ggdGhlIGFkZGl0aW9uYWwtcHJvZHVjdHMgdGFibGUgZm9yIHRoaXMgY2xpZW50LiBCYWNrZW5kIHJldHVybnMgYW5cbiAgLy8gZW1wdHkgbGlzdCBmb3IgYW55IGNsaWVudCB0aGF0IGhhcyBub25lIChzbyB0aGUgdGFibGUganVzdCB3b24ndCByZW5kZXIpLlxuICBsb2FkQWRkaXRpb25hbFByb2R1Y3RzKCkge1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuYWRkaXRpb25hbFByb2R1Y3RzKHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxQcm9kdWN0cyA9IHJlcz8uZGF0YT8ucHJvZHVjdHMgfHwgW107XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzQ3VycmVuY3kgPSByZXM/LmRhdGE/LmN1cnJlbmN5IHx8ICdpbnInO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxQcm9kdWN0c0RhdGUgPSByZXM/LmRhdGE/LmJpbGxpbmdEYXRlIHx8ICcnO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxQcm9kdWN0cyA9IFtdO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbG9hZERhaWx5UHJpY2luZygpIHtcbiAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5zdG9yZUxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RvcmVOb0RhdGEgPSBmYWxzZTtcblxuICAgIGxldCBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcbiAgICAgIG9mZnNldDogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmxlbixcbiAgICAgIHNvcnRDb2x1bU5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICBzdGF0dXNGaWx0ZXI6IHRoaXMuc3RhdHVzRmlsdGVyLFxuICAgICAgY291bnRyeUZpbHRlcjogdGhpcy5jb3VudHJ5RmlsdGVyLFxuICAgICAgZGF0ZUZpbHRlcjogdGhpcy5kYXRlRmlsdGVyIHx8ICcnLFxuICAgICAgZXhwb3J0OiBmYWxzZVxuICAgIH07XG5cbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmxhdGVzdERhaWx5UHJpY2luZyhmaWx0ZXJzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChlKSA9PiB7XG4gICAgICAgIC8vIFRoZSBNb250aGx5IEJpbGxpbmcgU3VtbWFyeSBjb21lcyBmcm9tIGludm9pY2UgaGlzdG9yeSwgbm90IHRoZSBzdG9yZVxuICAgICAgICAvLyByb3dzIOKAlCBhcHBseSBpdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHN0b3JlIGxpc3QgaXMgZW1wdHksIHNvIGl0XG4gICAgICAgIC8vIHN0aWxsIHNob3dzIHdoZW4gdGhlIGZpbHRlcmVkIHN0b3JlIHRhYmxlIGhhcyBubyByb3dzLlxuICAgICAgICB0aGlzLm1vbnRobHlCaWxsaW5nU3VtbWFyeSA9IHRoaXMuZGVjb3JhdGVNb250aGx5U3VtbWFyeShlPy5kYXRhPy5tb250aGx5QmlsbGluZ1N1bW1hcnkgfHwgW10pO1xuICAgICAgICAvLyBOZXdseSBvbmJvYXJkZWQgY291bnQvbGlzdCBpcyBpbmRlcGVuZGVudCBvZiB0aGUgc3RvcmUgdGFibGUnc1xuICAgICAgICAvLyBmaWx0ZXJzLCBzbyBjYXB0dXJlIGl0IHdoZXRoZXIgb3Igbm90IHRoZSBmaWx0ZXJlZCBzdG9yZSBsaXN0IGhhcyByb3dzLlxuICAgICAgICB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVzID0gZT8uZGF0YT8ubmV3bHlPbmJvYXJkZWRTdG9yZXMgfHwgMDtcbiAgICAgICAgdGhpcy5uZXdseU9uYm9hcmRlZFN0b3JlTGlzdCA9IGU/LmRhdGE/Lm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0IHx8IFtdO1xuXG4gICAgICAgIC8vIFBvcHVsYXRlIHRoZSBDb3VudHJ5IGZpbHRlciBvcHRpb25zIGZyb20gdGhlIEFQSSdzIGNvdW50cnkgbGlzdCAoYWxsXG4gICAgICAgIC8vIGNsaWVudCBzdG9yZXMpLiBJbmRlcGVuZGVudCBvZiB0aGUgZmlsdGVyZWQgc3RvcmUgY291bnQsIHNvIGJ1aWxkIGl0XG4gICAgICAgIC8vIGV2ZW4gd2hlbiB0aGUgZmlsdGVyZWQgdGFibGUgaXMgZW1wdHkuXG4gICAgICAgIHRoaXMuYnVpbGRDb3VudHJ5RmlsdGVyT3B0aW9ucyhlPy5kYXRhPy5jb3VudHJpZXMgfHwgW10pO1xuXG4gICAgICAgIGlmIChlPy5kYXRhPy5jb3VudCkge1xuICAgICAgICAgIHRoaXMuc3RvcmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zdG9yZU5vRGF0YSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gZS5kYXRhPy5kYXRhO1xuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IGUuZGF0YT8uY291bnQ7XG5cbiAgICAgICAgICB0aGlzLmRhaWx5UHJpY2luZ0luZm8gPSB7XG4gICAgICAgICAgICBicmFuZE5hbWU6IGUuZGF0YT8uYnJhbmROYW1lIHx8ICcnLFxuICAgICAgICAgICAgZGF0ZVN0cmluZzogZS5kYXRhPy5kYXRlU3RyaW5nIHx8ICcnLFxuICAgICAgICAgICAgZGF0ZUlTTzogZS5kYXRhPy5kYXRlSVNPIHx8ICcnLFxuICAgICAgICAgICAgYWN0aXZlU3RvcmVzOiBlLmRhdGE/LmFjdGl2ZVN0b3JlcyB8fCAwLFxuICAgICAgICAgICAgYWNjb3VudFR5cGU6IGUuZGF0YT8uYWNjb3VudFR5cGUgfHwgJycsXG4gICAgICAgICAgICBzdGF0dXM6IGUuZGF0YT8uc3RhdHVzIHx8ICcnLFxuICAgICAgICAgICAgcHJvUmF0ZTogZS5kYXRhPy5wcm9SYXRlIHx8ICcnLFxuICAgICAgICAgICAgY2xpZW50SWQ6IGUuZGF0YT8uY2xpZW50SWQgfHwgJydcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdG9yZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnN0b3JlTm9EYXRhID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAodGhpcy5sZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0b3JlTm9EYXRhID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBbXTtcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcbiAgICAgICAgdGhpcy5tb250aGx5QmlsbGluZ1N1bW1hcnkgPSBbXTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkRhdGVGaWx0ZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZGF0ZUZpbHRlciA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlIHx8ICcnO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgY2xlYXJEYXRlRmlsdGVyKCkge1xuICAgIHRoaXMuZGF0ZUZpbHRlciA9ICcnO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgc2VhcmNoRmllbGQoKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICAvLyBBZGQvcmVmcmVzaCB0aGUgQ291bnRyeSBncm91cCBpbiB0aGUgZmlsdGVyIGRyb3Bkb3duIGZyb20gdGhlIEFQSSdzIGNvdW50cnlcbiAgLy8gbGlzdCwgcHJlc2VydmluZyB0aGUgY3VycmVudCBzZWxlY3Rpb24gKGNoZWNrZWQpLiBsaWItZmlsdGVycyBzbmFwc2hvdHNcbiAgLy8gZGF0YU9iamVjdCBvbmx5IGluIG5nT25Jbml0LCBzbyB3ZSBidWlsZCB0aGUgZnVsbCBzdG9yZUZpbHRlck9iamVjdCBoZXJlIGFuZFxuICAvLyB0aGVuIGZsaXAgZmlsdGVyc1JlYWR5IHRvIG1vdW50IDxsaWItZmlsdGVycz4gb25jZSDigJQgYWZ0ZXIgd2hpY2ggaXQgc2VlcyBib3RoXG4gIC8vIFN0YXR1cyBhbmQgQ291bnRyeSBncm91cHMuXG4gIHByaXZhdGUgYnVpbGRDb3VudHJ5RmlsdGVyT3B0aW9ucyhjb3VudHJpZXM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkoY291bnRyaWVzKSA/IGNvdW50cmllcy5maWx0ZXIoQm9vbGVhbikgOiBbXTtcbiAgICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gbmV3IFNldCh0aGlzLmNvdW50cnlGaWx0ZXIpO1xuICAgICAgY29uc3QgaXNzdWVzID0gbGlzdC5tYXAoKGMpID0+ICh7IGlkOiBjLCB0ZXh0OiBjLCBjaGVja2VkOiBzZWxlY3RlZC5oYXMoYykgfSkpO1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnN0b3JlRmlsdGVyT2JqZWN0LmZpbmQoKGcpID0+IGcuRGVzY3JpcHRpb24gPT09ICdDb3VudHJ5Jyk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgZXhpc3RpbmcuSXNzdWVzID0gaXNzdWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9yZUZpbHRlck9iamVjdCA9IFsuLi50aGlzLnN0b3JlRmlsdGVyT2JqZWN0LCB7IERlc2NyaXB0aW9uOiAnQ291bnRyeScsIHR5cGU6ICdtdWx0aScsIElzc3VlczogaXNzdWVzIH1dO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBNb3VudCBsaWItZmlsdGVycyBvbmNlIHRoZSBmaXJzdCByZXNwb25zZSBpcyBpbiAoU3RhdHVzIGFsb25lIGlmIHRoZXJlIGFyZVxuICAgIC8vIG5vIGNvdW50cmllcyksIHNvIGl0IHNuYXBzaG90cyB0aGUgZnVsbCBkYXRhT2JqZWN0IG9uIGluaXQuXG4gICAgaWYgKCF0aGlzLmZpbHRlcnNSZWFkeSkge1xuICAgICAgdGhpcy5maWx0ZXJzUmVhZHkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5U3RvcmVGaWx0ZXJzKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBNdWx0aS1zZWxlY3QgU3RhdHVzIC8gQ291bnRyeSDigJQgbGliLWZpbHRlcnMgZW1pdHMgZWFjaCBncm91cCdzIHNlbGVjdGVkXG4gICAgLy8gb3B0aW9ucyBhcyBhbiBBUlJBWSB1bmRlciBJc3N1ZXMgKEFwcGx5IHNldHMgSXNzdWVzID0gc2VsZWN0ZWRWYWx1ZXNBcnJheVxuICAgIC8vIFtpbmRleF0pLiBDb2xsZWN0IGV2ZXJ5IHNlbGVjdGVkIGlkLCB0b2xlcmF0aW5nIGFycmF5IGFuZCBzaW5nbGUtb2JqZWN0XG4gICAgLy8gc2hhcGVzLlxuICAgIGNvbnN0IHN0YXR1c2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNvdW50cmllczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xuICAgICAgZXZlbnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzc3VlcyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudC5Jc3N1ZXMpID8gZWxlbWVudC5Jc3N1ZXMgOiAoZWxlbWVudC5Jc3N1ZXMgPyBbZWxlbWVudC5Jc3N1ZXNdIDogW10pO1xuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gJ1N0YXR1cycpIHtcbiAgICAgICAgICBpc3N1ZXMuZm9yRWFjaCgoaTogYW55KSA9PiB7IGlmIChpPy5pZCkgc3RhdHVzZXMucHVzaChpLmlkKTsgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gJ0NvdW50cnknKSB7XG4gICAgICAgICAgaXNzdWVzLmZvckVhY2goKGk6IGFueSkgPT4geyBpZiAoaT8uaWQpIGNvdW50cmllcy5wdXNoKGkuaWQpOyB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc3RhdHVzRmlsdGVyID0gWy4uLm5ldyBTZXQoc3RhdHVzZXMpXTtcbiAgICB0aGlzLmNvdW50cnlGaWx0ZXIgPSBbLi4ubmV3IFNldChjb3VudHJpZXMpXTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIHNvcnREYXRhKGNvbHVtbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zb3J0Q29sdW1OYW1lID0gY29sdW1uO1xuICAgIHRoaXMuc29ydEJ5ICo9IC0xO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYXJzZUludChwYWdlT2Zmc2V0KTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucGFnZVNpemUgPSBwYXJzZUludChwYWdlU2l6ZSk7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBvbkV4cG9ydCgpIHtcbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMubGVuLFxuICAgICAgc29ydENvbHVtTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcbiAgICAgIHN0YXR1c0ZpbHRlcjogdGhpcy5zdGF0dXNGaWx0ZXIsXG4gICAgICBkYXRlRmlsdGVyOiB0aGlzLmRhdGVGaWx0ZXIgfHwgJycsXG4gICAgICBleHBvcnQ6IHRydWVcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5sYXRlc3REYWlseVByaWNpbmdFeHBvcnQoZmlsdGVycykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ2RhaWx5LXByaWNpbmcnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NvbWV0aGluZyB3ZW50IFdyb25nLi4nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEVkaXRLZXkoc3RvcmVJZDogc3RyaW5nLCBwcm9kdWN0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c3RvcmVJZH1fJHtwcm9kdWN0TmFtZX1gO1xuICB9XG5cbiAgaXNFZGl0aW5nKHN0b3JlSWQ6IHN0cmluZywgcHJvZHVjdE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbmdQcm9kdWN0W3RoaXMuZ2V0RWRpdEtleShzdG9yZUlkLCBwcm9kdWN0TmFtZSldICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGFydEVkaXQoc3RvcmU6IGFueSwgcHJvZHVjdDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIHByb2R1Y3QucHJvZHVjdE5hbWUpO1xuICAgIC8vIENvZXJjZSB0byBhIG51bWJlciBzbyBhIDAgLyBtaXNzaW5nIHZhbHVlIHN0aWxsIGVudGVycyBlZGl0IG1vZGUgd2l0aCBhXG4gICAgLy8gZGVmaW5lZCB2YWx1ZSAodW5kZWZpbmVkIHdvdWxkIG1ha2UgaXNFZGl0aW5nKCkgdGhpbmsgd2UncmUgbm90IGVkaXRpbmcpLlxuICAgIHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XSA9IE51bWJlcihwcm9kdWN0LndvcmtpbmdkYXlzKSB8fCAwO1xuICB9XG5cbiAgY2FuY2VsRWRpdChzdG9yZTogYW55LCBwcm9kdWN0OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgcHJvZHVjdC5wcm9kdWN0TmFtZSk7XG4gICAgZGVsZXRlIHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XTtcbiAgfVxuXG4gIHNhdmVXb3JraW5nRGF5cyhzdG9yZTogYW55LCBwcm9kdWN0OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgcHJvZHVjdC5wcm9kdWN0TmFtZSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBOdW1iZXIodGhpcy5lZGl0aW5nUHJvZHVjdFtrZXldKSB8fCAwO1xuXG4gICAgLy8gVW5jaGFuZ2VkIOKGkiBqdXN0IGNsb3NlIHRoZSBlZGl0b3IgKGNvbXBhcmUgYXMgbnVtYmVycyBzbyAwIHZzIFwiMFwiIGV0Yy5cbiAgICAvLyBkb24ndCBzbGlwIHRocm91Z2gpLlxuICAgIGlmIChuZXdWYWx1ZSA9PT0gKE51bWJlcihwcm9kdWN0LndvcmtpbmdkYXlzKSB8fCAwKSkge1xuICAgICAgZGVsZXRlIHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLmRhaWx5UHJpY2luZ0luZm8uZGF0ZVN0cmluZyxcbiAgICAgIHN0b3JlSWQ6IHN0b3JlLnN0b3JlSWQsXG4gICAgICBwcm9kdWN0TmFtZTogcHJvZHVjdC5wcm9kdWN0TmFtZSxcbiAgICAgIHdvcmtpbmdkYXlzOiBuZXdWYWx1ZVxuICAgIH07XG5cbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnVwZGF0ZURhaWx5UHJpY2luZ1dvcmtpbmdEYXlzKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBwcm9kdWN0LndvcmtpbmdkYXlzID0gTnVtYmVyKG5ld1ZhbHVlKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ1dvcmtpbmcgZGF5cyB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byB1cGRhdGUgd29ya2luZyBkYXlzJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRGaWVsZEVkaXRLZXkoc3RvcmVJZDogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3N0b3JlSWR9XyR7ZmllbGROYW1lfWA7XG4gIH1cblxuICBpc0VkaXRpbmdGaWVsZChzdG9yZUlkOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ0ZpZWxkW3RoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlSWQsIGZpZWxkTmFtZSldICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGFydEZpZWxkRWRpdChzdG9yZTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIGZpZWxkTmFtZSk7XG4gICAgdGhpcy5lZGl0aW5nRmllbGRba2V5XSA9IHN0b3JlW2ZpZWxkTmFtZV0gfHwgMDtcbiAgfVxuXG4gIGNhbmNlbEZpZWxkRWRpdChzdG9yZTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIGZpZWxkTmFtZSk7XG4gICAgZGVsZXRlIHRoaXMuZWRpdGluZ0ZpZWxkW2tleV07XG4gIH1cblxuICBzYXZlRmllbGRFZGl0KHN0b3JlOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRGaWVsZEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgZmllbGROYW1lKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZWRpdGluZ0ZpZWxkW2tleV07XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHN0b3JlW2ZpZWxkTmFtZV0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZGFpbHlQcmljaW5nSW5mby5kYXRlU3RyaW5nLFxuICAgICAgc3RvcmVJZDogc3RvcmUuc3RvcmVJZCxcbiAgICAgIGZpZWxkTmFtZTogZmllbGROYW1lLFxuICAgICAgdmFsdWU6IE51bWJlcihuZXdWYWx1ZSlcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS51cGRhdGVEYWlseVByaWNpbmdTdG9yZUZpZWxkKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBzdG9yZVtmaWVsZE5hbWVdID0gTnVtYmVyKG5ld1ZhbHVlKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuZWRpdGluZ0ZpZWxkW2tleV07XG4gICAgICAgIGNvbnN0IGZpZWxkTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyB0cmFmZmljQ2FtZXJhQ291bnQ6ICdUcmFmZmljIGNhbWVyYSBjb3VudCcsIHpvbmVDYW1lcmFDb3VudDogJ1pvbmUgY2FtZXJhIGNvdW50Jywgem9uZUNvdW50OiAnWm9uZSBjb3VudCcgfTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoYCR7ZmllbGRMYWJlbHNbZmllbGROYW1lXSB8fCBmaWVsZE5hbWV9IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5YCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyB0cmFmZmljQ2FtZXJhQ291bnQ6ICd0cmFmZmljIGNhbWVyYSBjb3VudCcsIHpvbmVDYW1lcmFDb3VudDogJ3pvbmUgY2FtZXJhIGNvdW50Jywgem9uZUNvdW50OiAnem9uZSBjb3VudCcgfTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGBGYWlsZWQgdG8gdXBkYXRlICR7ZXJyb3JMYWJlbHNbZmllbGROYW1lXSB8fCBmaWVsZE5hbWV9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZW5lcmF0ZUludm9pY2UoKSB7XG4gICAgaWYgKCF0aGlzLmNsaWVudElkKSByZXR1cm47XG4gICAgLy8gT3BlbiB0aGUgcGlja2VyIGZpcnN0IOKAlCB0aGUgdXNlciBjaG9vc2VzIHdoaWNoIGJpbGxpbmcgZ3JvdXBzIHRvXG4gICAgLy8gZ2VuZXJhdGUgZm9yLiBNb2RhbCBjbG9zZXMgd2l0aCB0aGUgYXJyYXkgb2Ygc2VsZWN0ZWQgZ3JvdXAgX2lkc1xuICAgIC8vIChvciBpcyBkaXNtaXNzZWQgPSBuby1vcCkuXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEdlbmVyYXRlSW52b2ljZU1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJywgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKGdyb3VwSWRzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGdyb3VwSWRzKSB8fCBncm91cElkcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIHRoaXMucnVuSW52b2ljZUdlbmVyYXRpb24oZ3JvdXBJZHMpO1xuICAgIH0pLmNhdGNoKCgpID0+IHt9KTtcbiAgfVxuXG4gIC8vIE9wZW4gYSBwb3B1cCBsaXN0aW5nIHRoZSBuZXdseSBvbmJvYXJkZWQgc3RvcmVzICh3aXRoIGZpcnN0IGZpbGUgZGF0ZSkuXG4gIC8vIFRoZSBsaXN0IGlzIGFscmVhZHkgbG9hZGVkIHdpdGggdGhlIHBhZ2UsIHNvIG5vIGV4dHJhIEFQSSBjYWxsIGlzIG5lZWRlZC5cbiAgdmlld05ld1N0b3JlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE5ld1N0b3Jlc01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJywgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdG9yZXMgPSB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBydW5JbnZvaWNlR2VuZXJhdGlvbihncm91cElkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmdlbmVyYXRpbmdJbnZvaWNlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhbGxDbGllbnQ6IHRydWUsXG4gICAgICBjbGllbnRMaXN0OiBbdGhpcy5jbGllbnRJZF0sXG4gICAgICBncm91cElkcyxcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5jcmVhdGVJbnZvaWNlKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLmdlbmVyYXRpbmdJbnZvaWNlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KGBJbnZvaWNlIGdlbmVyYXRlZCBmb3IgJHtncm91cElkcy5sZW5ndGh9IGJpbGxpbmcgZ3JvdXAocylgKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5nZW5lcmF0aW5nSW52b2ljZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBpbnZvaWNlJyk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0UHJvZHVjdE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnJztcbiAgICByZXR1cm4gbmFtZS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKVxuICAgICAgLnJlcGxhY2UoL14uLywgKHN0cikgPT4gc3RyLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgLy8gVGFrZSB0aGUgcmF3IGFnZ3JlZ2F0aW9uIHJvd3MgKGFscmVhZHkgc29ydGVkIG5ld2VzdC1maXJzdCBieSB0aGUgQVBJKSBhbmRcbiAgLy8gYXR0YWNoIChhKSBhIGh1bWFuLXJlYWRhYmxlIG1vbnRoTGFiZWwsIChiKSB0YWcgZm9yIHRoZSBsYXRlc3QgdHdvIHJvd3NcbiAgLy8gKFwiQ3VycmVudFwiIC8gXCJMYXN0IGdlbmVyYXRlZFwiKSBhbmQgKGMpIGRlbHRhcyB2cyB0aGUgaW1tZWRpYXRlbHkgb2xkZXJcbiAgLy8gQ3VycmVuY3kgc3ltYm9sIGZvciBhIHN0b3JlJ3MgaW52b2ljZSBhbW91bnQgKG1hdGNoZXMgdGhlIGJhY2tlbmQnc1xuICAvLyBiYXNlcHJpY2luZyBjdXJyZW5jeTsgQUVEIHJlbmRlcmVkIGFzIHRleHQpLlxuICBzdG9yZUN1cnJlbmN5U3ltYm9sKHN0b3JlOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IGlucjogJ+KCuScsIGRvbGxhcjogJyQnLCBzaW5nYXBvcmVkb2xsYXI6ICdTJCcsIGV1cm86ICfigqwnLCBhZWQ6ICdBRUQgJyB9O1xuICAgIHJldHVybiBzeW1ib2xzWyhzdG9yZT8uaW52b2ljZUN1cnJlbmN5IHx8ICdpbnInKS50b0xvd2VyQ2FzZSgpXSB8fCAn4oK5JztcbiAgfVxuXG4gIC8vIG1vbnRoIHNvIHRoZSB0ZW1wbGF0ZSBjYW4gcmVuZGVyIHRoZSDilrIv4pa8L+KWrCB0cmVuZCBpbmRpY2F0b3JzLlxuICBwcml2YXRlIGRlY29yYXRlTW9udGhseVN1bW1hcnkocm93czogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJvd3MpIHx8IHJvd3MubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFsnSmFuJywnRmViJywnTWFyJywnQXByJywnTWF5JywnSnVuJywnSnVsJywnQXVnJywnU2VwJywnT2N0JywnTm92JywnRGVjJ107XG4gICAgY29uc3Qgc3ltYm9sczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgaW5yOiAn4oK5JywgZG9sbGFyOiAnJCcsIHNpbmdhcG9yZWRvbGxhcjogJ1MkJywgZXVybzogJ+KCrCcgfTtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGlzQ3VycmVudCA9IChyOiBhbnkpID0+IHIueWVhciA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiYgci5tb250aCA9PT0gKG5vdy5nZXRNb250aCgpICsgMSk7XG4gICAgcmV0dXJuIHJvd3MubWFwKChyLCBpKSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gcm93c1tpICsgMV07XG4gICAgICBjb25zdCBzdG9yZXNEZWx0YSA9IG5leHQgPyAoci5zdG9yZXNCaWxsZWQgfHwgMCkgLSAobmV4dC5zdG9yZXNCaWxsZWQgfHwgMCkgOiBudWxsO1xuICAgICAgY29uc3QgYW1vdW50RGVsdGEgPSBuZXh0ID8gKHIuaW52b2ljZUFtb3VudCB8fCAwKSAtIChuZXh0Lmludm9pY2VBbW91bnQgfHwgMCkgOiBudWxsO1xuICAgICAgbGV0IHRhZyA9ICcnO1xuICAgICAgaWYgKGlzQ3VycmVudChyKSkgdGFnID0gJ0N1cnJlbnQnO1xuICAgICAgZWxzZSBpZiAoaSA9PT0gMCkgdGFnID0gJ0xhc3QgZ2VuZXJhdGVkJztcbiAgICAgIGVsc2UgaWYgKGkgPT09IDEgJiYgaXNDdXJyZW50KHJvd3NbMF0pKSB0YWcgPSAnTGFzdCBnZW5lcmF0ZWQnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucixcbiAgICAgICAgbW9udGhMYWJlbDogYCR7bW9udGhOYW1lc1soci5tb250aCB8fCAxKSAtIDFdfSAke3IueWVhcn1gLFxuICAgICAgICB0YWcsXG4gICAgICAgIHN0b3Jlc0RlbHRhLFxuICAgICAgICBhbW91bnREZWx0YSxcbiAgICAgICAgY3VycmVuY3lTeW1ib2w6IHN5bWJvbHNbKHIuY3VycmVuY3kgfHwgJ2lucicpLnRvTG93ZXJDYXNlKCldIHx8ICcnLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZU1vbnRobHlTdW1tYXJ5SGlzdG9yeSgpOiB2b2lkIHtcbiAgICB0aGlzLm1vbnRobHlTdW1tYXJ5RXhwYW5kZWQgPSAhdGhpcy5tb250aGx5U3VtbWFyeUV4cGFuZGVkO1xuICB9XG59IiwiPGRpdiBjbGFzcz1cImludm9pY2VzLXNlY3Rpb25cIj5cbiAgICA8IS0tIEhlYWRlciBSb3cgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjY2NjY3IDEwSDEzLjMzMzNNNi42NjY2NyA2LjY2NjY3SDEzLjMzMzNNNi42NjY2NyAxMy4zMzMzSDEwTTUgMTcuNUgxNUMxNS45MjA1IDE3LjUgMTYuNjY2NyAxNi43NTM4IDE2LjY2NjcgMTUuODMzM1Y0LjE2NjY3QzE2LjY2NjcgMy4yNDYxOSAxNS45MjA1IDIuNSAxNSAyLjVINUM0LjA3OTUzIDIuNSAzLjMzMzMzIDMuMjQ2MTkgMy4zMzMzMyA0LjE2NjY3VjE1LjgzMzNDMy4zMzMzMyAxNi43NTM4IDQuMDc5NTMgMTcuNSA1IDE3LjVaXCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaWxsaW5naGVhZGVyXCI+QmlsbGluZyBCcmVha2Rvd248L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LWRhcmsgbXMtMVwiPnt7IHRvdGFsSXRlbXMgfX0gc3RvcmVzPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCIgKm5nSWY9XCJkYWlseVByaWNpbmdJbmZvPy5kYXRlU3RyaW5nXCI+XG4gICAgICAgICAgICAgICAgRGF0ZTogPHN0cm9uZz57eyBkYWlseVByaWNpbmdJbmZvPy5kYXRlU3RyaW5nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+fDwvc3Bhbj5cbiAgICAgICAgICAgICAgICBBY3RpdmUgU3RvcmVzOiA8c3Ryb25nPnt7IGRhaWx5UHJpY2luZ0luZm8/LmFjdGl2ZVN0b3JlcyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPnw8L3NwYW4+XG4gICAgICAgICAgICAgICAgQWNjb3VudCBUeXBlOiA8c3Ryb25nPnt7IGRhaWx5UHJpY2luZ0luZm8/LmFjY291bnRUeXBlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBkYXRlLWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5IGRhdGVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0ZUZpbHRlclwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRGF0ZUZpbHRlcigpXCIgdGl0bGU9XCJDbGVhciBkYXRlIGZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNSAzLjVMMy41IDEwLjVNMy41IDMuNUwxMC41IDEwLjVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdlbmVyYXRlSW52b2ljZSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXN0b3JlTGlzdC5sZW5ndGggfHwgZ2VuZXJhdGluZ0ludm9pY2VcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjY2NjY3IDEwSDEzLjMzMzNNNi42NjY2NyA2LjY2NjY3SDEzLjMzMzNNNi42NjY2NyAxMy4zMzMzSDEwTTUgMTcuNUgxNUMxNS45MjA1IDE3LjUgMTYuNjY2NyAxNi43NTM4IDE2LjY2NjcgMTUuODMzM1Y0LjE2NjY3QzE2LjY2NjcgMy4yNDYxOSAxNS45MjA1IDIuNSAxNSAyLjVINUM0LjA3OTUzIDIuNSAzLjMzMzMzIDMuMjQ2MTkgMy4zMzMzMyA0LjE2NjY3VjE1LjgzMzNDMy4zMzMzMyAxNi43NTM4IDQuMDc5NTMgMTcuNSA1IDE3LjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNmZmZcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTFcIj57eyBnZW5lcmF0aW5nSW52b2ljZSA/ICdHZW5lcmF0aW5nLi4uJyA6ICdHZW5lcmF0ZSBJbnZvaWNlJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBpbnZoZWFkZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3RvcmVMaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTFcIj5FeHBvcnQ8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE5ld2x5IE9uYm9hcmRlZCBTdG9yZXMg4oCUIHN0b3JlcyB3aG9zZSBmaXJzdCBmaWxlIGRhdGUgaXMgaW4gdGhlIGN1cnJlbnQgbW9udGggLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZXdseS1vbmJvYXJkZWQtY2FyZFwiXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE0cHg7Ym9yZGVyOjFweCBzb2xpZCAjRTRFN0VDO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMThweDtiYWNrZ3JvdW5kOiNmZmY7bWluLXdpZHRoOjI0MHB4O1wiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojRUFGOEZGO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDIxVjhsOS01IDkgNXYxM00zIDIxaDE4TTMgMjFIMW0yMCAwaDJNOSAyMXYtNmg2djZNMTIgNy41aC4wMVwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTAxODI4O2xpbmUtaGVpZ2h0OjEuMTtcIj57eyBuZXdseU9uYm9hcmRlZFN0b3JlcyB8IG51bWJlcjonMS4wLTAnOidlbi1JTicgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOjEzcHg7Y29sb3I6IzY2NzA4NTtcIj5OZXdseSBPbmJvYXJkZWQgU3RvcmVzPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxMXB4O2NvbG9yOiM5OEEyQjM7XCI+Rmlyc3QgZmlsZSBpbiBjdXJyZW50IG1vbnRoPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IG1zLTNcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhbmV3bHlPbmJvYXJkZWRTdG9yZXNcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3TmV3U3RvcmVzKClcIj5WaWV3IFN0b3JlczwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTW9udGhseSBCaWxsaW5nIFN1bW1hcnkg4oCUIGludm9pY2UgdHJlbmQgKG5ld2VzdCBmaXJzdCwgd2l0aCBkZWx0YXMgdnMgcHJpb3IgbW9udGgpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb250aGx5LWJpbGxpbmctc3VtbWFyeVwiICpuZ0lmPVwibW9udGhseUJpbGxpbmdTdW1tYXJ5Py5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zdW0taGVhZGVyXCI+TW9udGhseSBCaWxsaW5nIFN1bW1hcnk8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5NT05USDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TlVNQkVSIE9GIFNUT1JFUyBCSUxMRUQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPklOVk9JQ0UgQU1PVU5UPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIG1vbnRobHlCaWxsaW5nU3VtbWFyeTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiaSA8IDIgfHwgbW9udGhseVN1bW1hcnlFeHBhbmRlZFwiIFtjbGFzcy5jdXJyXT1cInJvdy50YWcgPT09ICdDdXJyZW50J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3cubW9udGhMYWJlbCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy50YWcgPT09ICdDdXJyZW50J1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtcy0yXCI+Q3VycmVudDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cudGFnID09PSAnTGFzdCBnZW5lcmF0ZWQnXCIgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LWRhcmsgbXMtMlwiPkxhc3QgZ2VuZXJhdGVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdy5zdG9yZXNCaWxsZWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cuc3RvcmVzRGVsdGEgIT09IG51bGxcIiBjbGFzcz1cImluZCBtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy51cF09XCJyb3cuc3RvcmVzRGVsdGEgPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb3duXT1cInJvdy5zdG9yZXNEZWx0YSA8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsYXRdPVwicm93LnN0b3Jlc0RlbHRhID09PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwicm93LnN0b3Jlc0RlbHRhID4gMFwiPuKWsiB7eyByb3cuc3RvcmVzRGVsdGEgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuc3RvcmVzRGVsdGEgPCAwXCI+4pa8IHt7IC1yb3cuc3RvcmVzRGVsdGEgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+4pasIDA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcm93LmN1cnJlbmN5U3ltYm9sIH19e3sgcm93Lmludm9pY2VBbW91bnQgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LmFtb3VudERlbHRhICE9PSBudWxsXCIgY2xhc3M9XCJpbmQgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXBdPVwicm93LmFtb3VudERlbHRhID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG93bl09XCJyb3cuYW1vdW50RGVsdGEgPCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGF0XT1cInJvdy5hbW91bnREZWx0YSA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInJvdy5hbW91bnREZWx0YSA+IDBcIj7ilrIge3sgcm93LmN1cnJlbmN5U3ltYm9sIH19e3sgcm93LmFtb3VudERlbHRhIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInJvdy5hbW91bnREZWx0YSA8IDBcIj7ilrwge3sgcm93LmN1cnJlbmN5U3ltYm9sIH19e3sgLXJvdy5hbW91bnREZWx0YSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+4pasIDA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vbnRobHlCaWxsaW5nU3VtbWFyeS5sZW5ndGggPiAyXCIgY2xhc3M9XCJtc3VtLXRvZ2dsZVwiIChjbGljayk9XCJ0b2dnbGVNb250aGx5U3VtbWFyeUhpc3RvcnkoKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb250aGx5U3VtbWFyeUV4cGFuZGVkXCI+4pa+IFNob3cgb2xkZXIgbW9udGhzICh7eyBtb250aGx5QmlsbGluZ1N1bW1hcnkubGVuZ3RoIC0gMiB9fSk8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb250aGx5U3VtbWFyeUV4cGFuZGVkXCI+4pa0IEhpZGUgb2xkZXIgbW9udGhzPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBZGRpdGlvbmFsIFByb2R1Y3RzIOKAlCBub24tc3RhbmRhcmQgcHJvZHVjdHMgYmlsbGVkIGZvciB0aGlzIGNsaWVudCBvbmx5XG4gICAgICAgICAoZS5nLiBjbGllbnRJZCAxMTogRXlldGVzdCwgUGxhbm9ncmFtKS4gSGlkZGVuIHdoZW4gdGhlIGNsaWVudCBoYXMgbm9uZS4gLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1vbnRobHktYmlsbGluZy1zdW1tYXJ5XCIgKm5nSWY9XCJhZGRpdGlvbmFsUHJvZHVjdHM/Lmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXN1bS1oZWFkZXJcIj5BZGRpdGlvbmFsIFByb2R1Y3RzPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtYi0wXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdCBOYW1lPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+UXVhbnRpdHk8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1lbmRcIj5QcmljZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlRvdGFsPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCI+QWN0aW9uPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwIG9mIGFkZGl0aW9uYWxQcm9kdWN0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHAucHJvZHVjdE5hbWUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyBwLnF1YW50aXR5IHwgbnVtYmVyOicxLjAtMCc6J2VuLUlOJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IChhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9PT0gJ2RvbGxhcicgPyAnJCcgOiAn4oK5JykgfX17eyBwLnByaWNlIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+e3sgKGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5ID09PSAnZG9sbGFyJyA/ICckJyA6ICfigrknKSB9fXt7IHAudG90YWwgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkV4cG9ydEFkZGl0aW9uYWxQcm9kdWN0KHAucHJvZHVjdE5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4cG9ydEFkZGl0aW9uYWxQcm9kdWN0KHAucHJvZHVjdE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjNcIiBjbGFzcz1cInRleHQtZW5kXCI+PHN0cm9uZz5HcmFuZCBUb3RhbDwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+e3sgKGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5ID09PSAnZG9sbGFyJyA/ICckJyA6ICfigrknKSB9fXt7IGFkZGl0aW9uYWxQcm9kdWN0c1RvdGFsIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlYXJjaCArIEZpbHRlciBSb3cgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHBheW1lbnRoaXN0b3J5IGJvcmRlci0wIHB4LTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBpbnZvaWNlc2VhcmNoIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXQtNiBtcy0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJsZW5cIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IGludm9pY2VzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTdG9yZSBuYW1lIG9yIElELi4uXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZWFyY2hGaWVsZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hEaXNhYmxlZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZmlsdGVycyAqbmdJZj1cImZpbHRlcnNSZWFkeVwiIFtkYXRhT2JqZWN0XT1cInN0b3JlRmlsdGVyT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5U3RvcmVGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBMb2FkaW5nIFNoaW1tZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3JlTG9hZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gTm8gRGF0YSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RvcmVOb0RhdGFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gU3RvcmVzIFRhYmxlIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhc3RvcmVMb2FkaW5nICYmICFzdG9yZU5vRGF0YVwiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhY2NvcmRpb24gdGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3N0b3JlTmFtZScpXCI+U1RPUkUgTkFNRVxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3N0b3JlTmFtZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+U1RPUkUgSUQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+Q09VTlRSWTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD5QUk9EVUNUUzwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlRSQUZGSUMgQ0FNRVJBU1xuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAndHJhZmZpY0NhbWVyYUNvdW50JyAmJiBzb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3RyYWZmaWNDYW1lcmFDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnem9uZUNhbWVyYUNvdW50JylcIj5aT05FIENBTUVSQVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3pvbmVDYW1lcmFDb3VudCcgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ2FtZXJhQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3pvbmVDb3VudCcpXCI+Wk9ORVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3pvbmVDb3VudCcgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPkZJUlNUIEZJTEUgREFURTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdkYXlzRGlmZmVyZW5jZScpXCI+V09SS0lORyBEQVlTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkYXlzRGlmZmVyZW5jZScgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkYXlzRGlmZmVyZW5jZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+U1RBVFVTPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1lbmRcIj5JTlZPSUNFIEFNT1VOVDwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBzdG9yZUxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIHRhYmxlLXRpdGxlLXByaW1hcnlcIj57eyBzdG9yZT8uc3RvcmVOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHN0b3JlPy5zdG9yZUlkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHN0b3JlPy5jb3VudHJ5IHx8ICfigJQnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHN0b3JlPy5wcm9kdWN0c1wiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtZS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdFByb2R1Y3ROYW1lKHByb2R1Y3Q/LnByb2R1Y3ROYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmU/LnRyYWZmaWNDYW1lcmFDb3VudCB8fCAwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45MTY2NyAxLjc1MDA0QzEwLjA2OTggMS41OTY4MyAxMC4yNTE4IDEuNDc1MzMgMTAuNDUxOSAxLjM5MjM4QzEwLjY1MjIgMS4zMDk0NiAxMC44NjY3IDEuMjY2NzkgMTEuMDgzMyAxLjI2Njc5QzExLjMgMS4yNjY3OSAxMS41MTQ1IDEuMzA5NDYgMTEuNzE0OCAxLjM5MjM4QzExLjkxNDkgMS40NzUzMyAxMi4wOTY5IDEuNTk2ODMgMTIuMjUgMS43NTAwNEMxMi40MDMyIDEuOTAzMjUgMTIuNTI0NyAyLjA4NTI5IDEyLjYwNzcgMi4yODU0NkMxMi42OTA2IDIuNDg1NjcgMTIuNzMzMyAyLjcwMDEzIDEyLjczMzMgMi45MTY3MUMxMi43MzMzIDMuMTMzMjkgMTIuNjkwNiAzLjM0Nzc1IDEyLjYwNzcgMy41NDc5NkMxMi41MjQ3IDMuNzQ4MTMgMTIuNDAzMiAzLjkzMDE3IDEyLjI1IDQuMDgzMzhMNC4zNzUgMTEuOTU4NEwxLjE2NjY3IDEyLjgzMzRMMi4wNDE2NyA5LjYyNTA0TDkuOTE2NjcgMS43NTAwNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdGaWVsZFtnZXRGaWVsZEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsICd0cmFmZmljQ2FtZXJhQ291bnQnKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc3VjY2Vzc1wiIChjbGljayk9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIiB0aXRsZT1cIlNhdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4zMzM0IDRMNi4wMDAwOCAxMS4zMzMzTDIuNjY2NzUgOFwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJDYW5jZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA0TDQgMTJNNCA0TDEyIDEyXCIgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0b3JlPy56b25lQ2FtZXJhQ291bnQgfHwgMCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTE2NjcgMS43NTAwNEMxMC4wNjk4IDEuNTk2ODMgMTAuMjUxOCAxLjQ3NTMzIDEwLjQ1MTkgMS4zOTIzOEMxMC42NTIyIDEuMzA5NDYgMTAuODY2NyAxLjI2Njc5IDExLjA4MzMgMS4yNjY3OUMxMS4zIDEuMjY2NzkgMTEuNTE0NSAxLjMwOTQ2IDExLjcxNDggMS4zOTIzOEMxMS45MTQ5IDEuNDc1MzMgMTIuMDk2OSAxLjU5NjgzIDEyLjI1IDEuNzUwMDRDMTIuNDAzMiAxLjkwMzI1IDEyLjUyNDcgMi4wODUyOSAxMi42MDc3IDIuMjg1NDZDMTIuNjkwNiAyLjQ4NTY3IDEyLjczMzMgMi43MDAxMyAxMi43MzMzIDIuOTE2NzFDMTIuNzMzMyAzLjEzMzI5IDEyLjY5MDYgMy4zNDc3NSAxMi42MDc3IDMuNTQ3OTZDMTIuNTI0NyAzLjc0ODEzIDEyLjQwMzIgMy45MzAxNyAxMi4yNSA0LjA4MzM4TDQuMzc1IDExLjk1ODRMMS4xNjY2NyAxMi44MzM0TDIuMDQxNjcgOS42MjUwNEw5LjkxNjY3IDEuNzUwMDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd6b25lQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZWRpdC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5nRmllbGRbZ2V0RmllbGRFZGl0S2V5KHN0b3JlPy5zdG9yZUlkLCAnem9uZUNhbWVyYUNvdW50JyldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJTYXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNCA0TDYuMDAwMDggMTEuMzMzM0wyLjY2Njc1IDhcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNEw0IDEyTTQgNEwxMiAxMlwiIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd6b25lQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdG9yZT8uem9uZUNvdW50IHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGVkaXQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluZ0ZpZWxkW2dldEZpZWxkRWRpdEtleShzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDb3VudCcpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zdWNjZXNzXCIgKGNsaWNrKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ291bnQnKVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZT8uZWRnZWZpcnN0RmlsZURhdGUgPyAoc3RvcmU/LmVkZ2VmaXJzdEZpbGVEYXRlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5JykgOiAn4oCUJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBzdG9yZT8ucHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic21hbGwgdGV4dC1tdXRlZFwiPnt7IGZvcm1hdFByb2R1Y3ROYW1lKHByb2R1Y3Q/LnByb2R1Y3ROYW1lKSB9fTo8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWaWV3IG1vZGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nKHN0b3JlPy5zdG9yZUlkLCBwcm9kdWN0Py5wcm9kdWN0TmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcHJvZHVjdD8ud29ya2luZ2RheXMgfHwgMCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRFZGl0KHN0b3JlLCBwcm9kdWN0KVwiIHRpdGxlPVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTE2NjcgMS43NTAwNEMxMC4wNjk4IDEuNTk2ODMgMTAuMjUxOCAxLjQ3NTMzIDEwLjQ1MTkgMS4zOTIzOEMxMC42NTIyIDEuMzA5NDYgMTAuODY2NyAxLjI2Njc5IDExLjA4MzMgMS4yNjY3OUMxMS4zIDEuMjY2NzkgMTEuNTE0NSAxLjMwOTQ2IDExLjcxNDggMS4zOTIzOEMxMS45MTQ5IDEuNDc1MzMgMTIuMDk2OSAxLjU5NjgzIDEyLjI1IDEuNzUwMDRDMTIuNDAzMiAxLjkwMzI1IDEyLjUyNDcgMi4wODUyOSAxMi42MDc3IDIuMjg1NDZDMTIuNjkwNiAyLjQ4NTY3IDEyLjczMzMgMi43MDAxMyAxMi43MzMzIDIuOTE2NzFDMTIuNzMzMyAzLjEzMzI5IDEyLjY5MDYgMy4zNDc3NSAxMi42MDc3IDMuNTQ3OTZDMTIuNTI0NyAzLjc0ODEzIDEyLjQwMzIgMy45MzAxNyAxMi4yNSA0LjA4MzM4TDQuMzc1IDExLjk1ODRMMS4xNjY2NyAxMi44MzM0TDIuMDQxNjcgOS42MjUwNEw5LjkxNjY3IDEuNzUwMDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRWRpdCBtb2RlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nKHN0b3JlPy5zdG9yZUlkLCBwcm9kdWN0Py5wcm9kdWN0TmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGVkaXQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluZ1Byb2R1Y3RbZ2V0RWRpdEtleShzdG9yZT8uc3RvcmVJZCwgcHJvZHVjdD8ucHJvZHVjdE5hbWUpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZVdvcmtpbmdEYXlzKHN0b3JlLCBwcm9kdWN0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbEVkaXQoc3RvcmUsIHByb2R1Y3QpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc3VjY2Vzc1wiIChjbGljayk9XCJzYXZlV29ya2luZ0RheXMoc3RvcmUsIHByb2R1Y3QpXCIgdGl0bGU9XCJTYXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNCA0TDYuMDAwMDggMTEuMzMzM0wyLjY2Njc1IDhcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJjYW5jZWxFZGl0KHN0b3JlLCBwcm9kdWN0KVwiIHRpdGxlPVwiQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNEw0IDEyTTQgNEwxMiAxMlwiIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgW25nQ2xhc3NdPVwic3RvcmU/LnN0YXR1cyA9PT0gJ2FjdGl2ZScgPyAnYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcycgOiAnYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3JlPy5zdGF0dXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXItcHJvZHVjdCBicmVha2Rvd24gKFRyYWZmaWM6IOKCuXgsIFpvbmU6IOKCuXkg4oCmKSArIHRvdGFsLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGIgb2Ygc3RvcmU/Lmludm9pY2VCcmVha2Rvd25cIiBjbGFzcz1cImludi1icmVha2Rvd24tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnYtYnJlYWtkb3duLWxhYmVsXCI+e3sgYi5sYWJlbCB9fTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcmVDdXJyZW5jeVN5bWJvbChzdG9yZSkgfX17eyAoYi5hbW91bnQgfHwgMCkgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBpbnYtYnJlYWtkb3duLXRvdGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdG9yZUN1cnJlbmN5U3ltYm9sKHN0b3JlKSB9fXt7IChzdG9yZT8uaW52b2ljZUFtb3VudCB8fCAwKSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXN0b3JlTG9hZGluZyAmJiAhc3RvcmVOb0RhdGFcIj5cbiAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBjbGFzcz1cInRleHQtc3RhcnRcIiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
509
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFpbHktcHJpY2luZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtYmlsbGluZy9zcmMvbGliL2NvbXBvbmVudHMvZGFpbHktcHJpY2luZy9kYWlseS1wcmljaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9kYWlseS1wcmljaW5nL2RhaWx5LXByaWNpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQU94RixNQUFNLE9BQU8scUJBQXFCO0lBaUV0QjtJQUNBO0lBQ0E7SUFDQTtJQW5FTyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRS9CLEdBQUcsQ0FBTTtJQUNULGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsV0FBVztJQUNYLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUUzQix5RUFBeUU7SUFDekUsY0FBYyxHQUFRLEVBQUUsQ0FBQztJQUN6Qix3RkFBd0Y7SUFDeEYsWUFBWSxHQUFRLEVBQUUsQ0FBQztJQUV2QixjQUFjO0lBQ2QsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4Qix3RUFBd0U7SUFDeEUsNkRBQTZEO0lBQzdELFlBQVksR0FBYSxFQUFFLENBQUM7SUFDNUIsOEVBQThFO0lBQzlFLGFBQWEsR0FB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QUFDLElBQUksQ0FBQztZQUNyRixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsR0FBRyxHQUFHLFNBQVMsQ0FBQztpQkFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxHQUFHLEdBQUcsZ0JBQWdCLENBQUM7aUJBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFFLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQztZQUMvRCxPQUFPO2dCQUNMLEdBQUcsQ0FBQztnQkFDSixVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3pELEdBQUc7Z0JBQ0gsV0FBVztnQkFDWCxXQUFXO2dCQUNYLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRTthQUNuRSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUM3RCxDQUFDO3dHQXBoQlUscUJBQXFCOzRGQUFyQixxQkFBcUIsZ0hDYmxDLG82aUNBb2JNOzs0RkR2YU8scUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjtxS0FPcEIsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQmlsbGluZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9iaWxsaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XG5pbXBvcnQgeyBHZW5lcmF0ZUludm9pY2VNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vZ2VuZXJhdGUtaW52b2ljZS1tb2RhbC9nZW5lcmF0ZS1pbnZvaWNlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZXdTdG9yZXNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbmV3LXN0b3Jlcy1tb2RhbC9uZXctc3RvcmVzLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYWlseS1wcmljaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhaWx5LXByaWNpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGFpbHktcHJpY2luZy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRGFpbHlQcmljaW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBJbnB1dCgpIGNsaWVudElkOiBzdHJpbmcgPSAnJztcblxuICBsZW46IGFueTtcbiAgc2VhcmNoRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBNZXRhZGF0YVxuICBkYWlseVByaWNpbmdJbmZvOiBhbnkgPSB7fTtcblxuICAvLyBFZGl0IHRyYWNraW5nOiBrZXkgPSAnc3RvcmVJZF9wcm9kdWN0TmFtZScsIHZhbHVlID0gZWRpdGVkIHdvcmtpbmdkYXlzXG4gIGVkaXRpbmdQcm9kdWN0OiBhbnkgPSB7fTtcbiAgLy8gRWRpdCB0cmFja2luZyBmb3Igc3RvcmUtbGV2ZWwgZmllbGRzICh0cmFmZmljQ2FtZXJhQ291bnQsIHpvbmVDYW1lcmFDb3VudCwgem9uZUNvdW50KVxuICBlZGl0aW5nRmllbGQ6IGFueSA9IHt9O1xuXG4gIC8vIERhdGUgZmlsdGVyXG4gIGRhdGVGaWx0ZXI6IHN0cmluZyA9ICcnO1xuXG4gIC8vIEZpbHRlciDigJQgbXVsdGktc2VsZWN0IHN0YXR1cy4gTm8gZGVmYXVsdDogdGhlIHRhYmxlIG9wZW5zIHNob3dpbmcgQUxMXG4gIC8vIHN0b3JlcyAoYWN0aXZlICsgZGVhY3RpdmUpOyBuZWl0aGVyIG9wdGlvbiBpcyBwcmUtY2hlY2tlZC5cbiAgc3RhdHVzRmlsdGVyOiBzdHJpbmdbXSA9IFtdO1xuICAvLyBNdWx0aS1zZWxlY3QgY291bnRyeSBmaWx0ZXIgKG9wdGlvbnMgcG9wdWxhdGVkIGZyb20gdGhlIEFQSSdzIGBjb3VudHJpZXNgKS5cbiAgY291bnRyeUZpbHRlcjogc3RyaW5nW10gPSBbXTtcbiAgc3RvcmVGaWx0ZXJPYmplY3Q6IGFueVtdID0gW1xuICAgIHsgRGVzY3JpcHRpb246ICdTdGF0dXMnLCB0eXBlOiAnbXVsdGknLCBJc3N1ZXM6IFt7IGlkOiAnYWN0aXZlJywgdGV4dDogJ0FjdGl2ZScgfSwgeyBpZDogJ2RlYWN0aXZlJywgdGV4dDogJ0RlYWN0aXZlJyB9XSB9LFxuICBdO1xuICAvLyBsaWItZmlsdGVycyBzbmFwc2hvdHMgZGF0YU9iamVjdCBpbiBpdHMgbmdPbkluaXQsIHNvIHRoZSBDb3VudHJ5IGdyb3VwIG11c3RcbiAgLy8gYmUgcHJlc2VudCBCRUZPUkUgaXQgbW91bnRzLiBXZSBnYXRlIHRoZSA8bGliLWZpbHRlcnM+IHJlbmRlciBvbiB0aGlzIGZsYWcsXG4gIC8vIGZsaXBwaW5nIGl0IHRydWUgb25seSBvbmNlIHRoZSBjb3VudHJ5IG9wdGlvbnMgaGF2ZSBiZWVuIGJ1aWx0IGZyb20gdGhlIEFQSS5cbiAgZmlsdGVyc1JlYWR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gTW9udGhseSBCaWxsaW5nIFN1bW1hcnkg4oCUIGRlcml2ZWQgZnJvbSBpbnZvaWNlIGhpc3RvcnkgZm9yIHRoZSBicmFuZC5cbiAgLy8gTmV3ZXN0IGZpcnN0OyBlYWNoIHJvdyBjYXJyaWVzIHByaW9yLW1vbnRoIGRlbHRhcyBmb3IgdGhlIHRyZW5kIGluZGljYXRvci5cbiAgbW9udGhseUJpbGxpbmdTdW1tYXJ5OiBhbnlbXSA9IFtdO1xuICBtb250aGx5U3VtbWFyeUV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVGFibGVcbiAgc3RvcmVMaXN0OiBhbnkgPSBbXTtcbiAgc3RvcmVMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgc3RvcmVOb0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG90YWxJdGVtczogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSAxMDtcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xuICAvLyBEZWZhdWx0IHNvcnQ6IHdvcmtpbmcgZGF5cyAoZGF5c0RpZmZlcmVuY2UpLCBoaWdoZXN0IGZpcnN0LlxuICBzb3J0Q29sdW1OYW1lOiBzdHJpbmcgPSAnZGF5c0RpZmZlcmVuY2UnO1xuICBzb3J0Qnk6IG51bWJlciA9IC0xO1xuICBnZW5lcmF0aW5nSW52b2ljZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEFkZGl0aW9uYWwgKG5vbi1zdGFuZGFyZCkgcHJvZHVjdHMgYXZhaWxhYmxlIG9ubHkgZm9yIHNwZWNpZmljIGNsaWVudHNcbiAgLy8gKGN1cnJlbnRseSBjbGllbnRJZCAxMSkuIEVtcHR5IGZvciBldmVyeW9uZSBlbHNlIC0+IHRoZSB0YWJsZSBpcyBoaWRkZW4uXG4gIGFkZGl0aW9uYWxQcm9kdWN0czogYW55W10gPSBbXTtcbiAgYWRkaXRpb25hbFByb2R1Y3RzQ3VycmVuY3k6IHN0cmluZyA9ICdpbnInO1xuICAvLyBEYXRlIChZWVlZLU1NLUREKSBvZiB0aGUgYmlsbGluZ19kZXRhaWxzIHNuYXBzaG90IGJlaGluZCB0aGUgYWRkaXRpb25hbFxuICAvLyBwcm9kdWN0IGNvdW50czsgcGFzc2VkIHRvIHRoZSBleHBvcnQgc28gZXhwb3J0cyBtYXRjaCB0aGUgZGlzcGxheWVkIGNhcmRzLlxuICBhZGRpdGlvbmFsUHJvZHVjdHNEYXRlOiBzdHJpbmcgPSAnJztcblxuICAvLyBDb3VudCArIGxpc3Qgb2Ygc3RvcmVzIG9uYm9hcmRlZCB0aGlzIG1vbnRoIChmaXJzdCBmaWxlIGRhdGUgaW4gdGhlIGN1cnJlbnRcbiAgLy8gbW9udGgpLiBUaGUgbGlzdCBmZWVkcyB0aGUgXCJWaWV3IFN0b3Jlc1wiIHBvcHVwLlxuICBuZXdseU9uYm9hcmRlZFN0b3JlczogbnVtYmVyID0gMDtcbiAgbmV3bHlPbmJvYXJkZWRTdG9yZUxpc3Q6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBiaWxsaW5nU2VydmljZTogQmlsbGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICAgICAgdGhpcy5sb2FkQWRkaXRpb25hbFByb2R1Y3RzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjbGllbnRJZCddICYmICFjaGFuZ2VzWydjbGllbnRJZCddLmZpcnN0Q2hhbmdlICYmIHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICAgICAgdGhpcy5sb2FkQWRkaXRpb25hbFByb2R1Y3RzKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR3JhbmQgdG90YWwgYWNyb3NzIGFsbCBhZGRpdGlvbmFsLXByb2R1Y3Qgcm93cy5cbiAgZ2V0IGFkZGl0aW9uYWxQcm9kdWN0c1RvdGFsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmFkZGl0aW9uYWxQcm9kdWN0cyB8fCBbXSkucmVkdWNlKChhLCBwKSA9PiBhICsgKE51bWJlcihwLnRvdGFsKSB8fCAwKSwgMCk7XG4gIH1cblxuICAvLyBQcm9kdWN0cyB0aGF0IGhhdmUgYSBiYWNrZW5kIGRldGFpbGVkIGV4cG9ydC4gS2V5ZWQgYnkgdGhlIHByb2R1Y3Qga2V5IHRoZVxuICAvLyBleHBvcnQgZW5kcG9pbnQgdW5kZXJzdGFuZHMuIEFkZCBtb3JlIGFzIHRoZWlyIHF1ZXJpZXMgYXJlIHdpcmVkIHVwLlxuICBwcml2YXRlIHJlYWRvbmx5IGV4cG9ydGFibGVQcm9kdWN0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAnZXlldGVzdCc6ICdleWV0ZXN0JyxcbiAgICAncGxhbm9ncmFtJzogJ3BsYW5vZ3JhbScsXG4gICAgJ2FpIG1hbmFnZXInOiAnYWltYW5hZ2VyJyxcbiAgICAndm1zJzogJ3ZtcycsXG4gICAgJ3J1biBhaSc6ICdydW5haScsXG4gICAgJ3JlbW90ZSBvcHR1bSc6ICdyZW1vdGVvcHR1bScsXG4gIH07XG5cbiAgY2FuRXhwb3J0QWRkaXRpb25hbFByb2R1Y3QocHJvZHVjdE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZXhwb3J0YWJsZVByb2R1Y3RzWyhwcm9kdWN0TmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKV07XG4gIH1cblxuICBleHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwcm9kdWN0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5leHBvcnRhYmxlUHJvZHVjdHNbKHByb2R1Y3ROYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpXTtcbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBQYXNzIHRoZSBiaWxsaW5nX2RldGFpbHMgc25hcHNob3QgZGF0ZSAoWVlZWS1NTS1ERCkgYmVoaW5kIHRoZSBjYXJkIGNvdW50c1xuICAgIC8vIHNvIGRheS1zY29wZWQgZXhwb3J0cyAoVk1TIC8gUnVuIEFJIHZpYSBMYW1iZGEgdG9fZGF0ZSwgUmVtb3RlIE9wdHVtKSBtYXRjaFxuICAgIC8vIHdoYXQncyBzaG93bi4gRmFsbCBiYWNrIHRvIHRvZGF5IGlmIHRoZSBiYWNrZW5kIGRpZG4ndCByZXR1cm4gYSBkYXRlLlxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB0b2RheVN0ciA9IGAke3RvZGF5LmdldEZ1bGxZZWFyKCl9LSR7U3RyaW5nKHRvZGF5LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS0ke1N0cmluZyh0b2RheS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICBjb25zdCBleHBvcnREYXRlID0gdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNEYXRlIHx8IHRvZGF5U3RyO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuYWRkaXRpb25hbFByb2R1Y3RFeHBvcnQodGhpcy5jbGllbnRJZCwga2V5LCBleHBvcnREYXRlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IEFycmF5QnVmZmVyKSA9PiB7XG4gICAgICAgICAgLy8gQSByZWFsIC54bHN4IGlzIGEgemlwIOKAlCBpdHMgZmlyc3QgdHdvIGJ5dGVzIGFyZSAnUEsnICgweDUwIDB4NEIpLlxuICAgICAgICAgIC8vIEEgMjA0L2VtcHR5IG9yIEpTT04gZXJyb3IgYm9keSBpcyBOT1QsIGFuZCBzYXZpbmcgaXQgcHJvZHVjZXMgYVxuICAgICAgICAgIC8vIFwiY29ycnVwdGVkXCIgZmlsZS4gR3VhcmQgc28gd2Ugb25seSBzYXZlIGEgZ2VudWluZSB3b3JrYm9vay5cbiAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcyA/IG5ldyBVaW50OEFycmF5KHJlcykgOiBuZXcgVWludDhBcnJheSgpO1xuICAgICAgICAgIGNvbnN0IGlzWGxzeCA9IGJ5dGVzLmxlbmd0aCA+IDEgJiYgYnl0ZXNbMF0gPT09IDB4NTAgJiYgYnl0ZXNbMV0gPT09IDB4NGI7XG4gICAgICAgICAgaWYgKCFpc1hsc3gpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnTm8gZGF0YSB0byBleHBvcnQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBgJHtwcm9kdWN0TmFtZX0tJHt0aGlzLmNsaWVudElkfWApO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRXhwb3J0IGZhaWxlZCcpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICAvLyBGZXRjaCB0aGUgYWRkaXRpb25hbC1wcm9kdWN0cyB0YWJsZSBmb3IgdGhpcyBjbGllbnQuIEJhY2tlbmQgcmV0dXJucyBhblxuICAvLyBlbXB0eSBsaXN0IGZvciBhbnkgY2xpZW50IHRoYXQgaGFzIG5vbmUgKHNvIHRoZSB0YWJsZSBqdXN0IHdvbid0IHJlbmRlcikuXG4gIGxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKSB7XG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5hZGRpdGlvbmFsUHJvZHVjdHModGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzID0gcmVzPy5kYXRhPy5wcm9kdWN0cyB8fCBbXTtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9IHJlcz8uZGF0YT8uY3VycmVuY3kgfHwgJ2lucic7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzRGF0ZSA9IHJlcz8uZGF0YT8uYmlsbGluZ0RhdGUgfHwgJyc7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzID0gW107XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBsb2FkRGFpbHlQcmljaW5nKCkge1xuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0b3JlTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zdG9yZU5vRGF0YSA9IGZhbHNlO1xuXG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMubGVuLFxuICAgICAgc29ydENvbHVtTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcbiAgICAgIHN0YXR1c0ZpbHRlcjogdGhpcy5zdGF0dXNGaWx0ZXIsXG4gICAgICBjb3VudHJ5RmlsdGVyOiB0aGlzLmNvdW50cnlGaWx0ZXIsXG4gICAgICBkYXRlRmlsdGVyOiB0aGlzLmRhdGVGaWx0ZXIgfHwgJycsXG4gICAgICBleHBvcnQ6IGZhbHNlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UubGF0ZXN0RGFpbHlQcmljaW5nKGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGUpID0+IHtcbiAgICAgICAgLy8gVGhlIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IGNvbWVzIGZyb20gaW52b2ljZSBoaXN0b3J5LCBub3QgdGhlIHN0b3JlXG4gICAgICAgIC8vIHJvd3Mg4oCUIGFwcGx5IGl0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgc3RvcmUgbGlzdCBpcyBlbXB0eSwgc28gaXRcbiAgICAgICAgLy8gc3RpbGwgc2hvd3Mgd2hlbiB0aGUgZmlsdGVyZWQgc3RvcmUgdGFibGUgaGFzIG5vIHJvd3MuXG4gICAgICAgIHRoaXMubW9udGhseUJpbGxpbmdTdW1tYXJ5ID0gdGhpcy5kZWNvcmF0ZU1vbnRobHlTdW1tYXJ5KGU/LmRhdGE/Lm1vbnRobHlCaWxsaW5nU3VtbWFyeSB8fCBbXSk7XG4gICAgICAgIC8vIE5ld2x5IG9uYm9hcmRlZCBjb3VudC9saXN0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBzdG9yZSB0YWJsZSdzXG4gICAgICAgIC8vIGZpbHRlcnMsIHNvIGNhcHR1cmUgaXQgd2hldGhlciBvciBub3QgdGhlIGZpbHRlcmVkIHN0b3JlIGxpc3QgaGFzIHJvd3MuXG4gICAgICAgIHRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZXMgPSBlPy5kYXRhPy5uZXdseU9uYm9hcmRlZFN0b3JlcyB8fCAwO1xuICAgICAgICB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0ID0gZT8uZGF0YT8ubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QgfHwgW107XG5cbiAgICAgICAgLy8gUG9wdWxhdGUgdGhlIENvdW50cnkgZmlsdGVyIG9wdGlvbnMgZnJvbSB0aGUgQVBJJ3MgY291bnRyeSBsaXN0IChhbGxcbiAgICAgICAgLy8gY2xpZW50IHN0b3JlcykuIEluZGVwZW5kZW50IG9mIHRoZSBmaWx0ZXJlZCBzdG9yZSBjb3VudCwgc28gYnVpbGQgaXRcbiAgICAgICAgLy8gZXZlbiB3aGVuIHRoZSBmaWx0ZXJlZCB0YWJsZSBpcyBlbXB0eS5cbiAgICAgICAgdGhpcy5idWlsZENvdW50cnlGaWx0ZXJPcHRpb25zKGU/LmRhdGE/LmNvdW50cmllcyB8fCBbXSk7XG5cbiAgICAgICAgaWYgKGU/LmRhdGE/LmNvdW50KSB7XG4gICAgICAgICAgdGhpcy5zdG9yZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnN0b3JlTm9EYXRhID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBlLmRhdGE/LmRhdGE7XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudDtcblxuICAgICAgICAgIHRoaXMuZGFpbHlQcmljaW5nSW5mbyA9IHtcbiAgICAgICAgICAgIGJyYW5kTmFtZTogZS5kYXRhPy5icmFuZE5hbWUgfHwgJycsXG4gICAgICAgICAgICBkYXRlU3RyaW5nOiBlLmRhdGE/LmRhdGVTdHJpbmcgfHwgJycsXG4gICAgICAgICAgICBkYXRlSVNPOiBlLmRhdGE/LmRhdGVJU08gfHwgJycsXG4gICAgICAgICAgICBhY3RpdmVTdG9yZXM6IGUuZGF0YT8uYWN0aXZlU3RvcmVzIHx8IDAsXG4gICAgICAgICAgICBhY2NvdW50VHlwZTogZS5kYXRhPy5hY2NvdW50VHlwZSB8fCAnJyxcbiAgICAgICAgICAgIHN0YXR1czogZS5kYXRhPy5zdGF0dXMgfHwgJycsXG4gICAgICAgICAgICBwcm9SYXRlOiBlLmRhdGE/LnByb1JhdGUgfHwgJycsXG4gICAgICAgICAgICBjbGllbnRJZDogZS5kYXRhPy5jbGllbnRJZCB8fCAnJ1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0b3JlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICh0aGlzLmxlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xuICAgICAgICB0aGlzLm1vbnRobHlCaWxsaW5nU3VtbWFyeSA9IFtdO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uRGF0ZUZpbHRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5kYXRlRmlsdGVyID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBjbGVhckRhdGVGaWx0ZXIoKSB7XG4gICAgdGhpcy5kYXRlRmlsdGVyID0gJyc7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBzZWFyY2hGaWVsZCgpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIC8vIEFkZC9yZWZyZXNoIHRoZSBDb3VudHJ5IGdyb3VwIGluIHRoZSBmaWx0ZXIgZHJvcGRvd24gZnJvbSB0aGUgQVBJJ3MgY291bnRyeVxuICAvLyBsaXN0LCBwcmVzZXJ2aW5nIHRoZSBjdXJyZW50IHNlbGVjdGlvbiAoY2hlY2tlZCkuIGxpYi1maWx0ZXJzIHNuYXBzaG90c1xuICAvLyBkYXRhT2JqZWN0IG9ubHkgaW4gbmdPbkluaXQsIHNvIHdlIGJ1aWxkIHRoZSBmdWxsIHN0b3JlRmlsdGVyT2JqZWN0IGhlcmUgYW5kXG4gIC8vIHRoZW4gZmxpcCBmaWx0ZXJzUmVhZHkgdG8gbW91bnQgPGxpYi1maWx0ZXJzPiBvbmNlIOKAlCBhZnRlciB3aGljaCBpdCBzZWVzIGJvdGhcbiAgLy8gU3RhdHVzIGFuZCBDb3VudHJ5IGdyb3Vwcy5cbiAgcHJpdmF0ZSBidWlsZENvdW50cnlGaWx0ZXJPcHRpb25zKGNvdW50cmllczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBsaXN0ID0gQXJyYXkuaXNBcnJheShjb3VudHJpZXMpID8gY291bnRyaWVzLmZpbHRlcihCb29sZWFuKSA6IFtdO1xuICAgIGlmIChsaXN0Lmxlbmd0aCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBuZXcgU2V0KHRoaXMuY291bnRyeUZpbHRlcik7XG4gICAgICBjb25zdCBpc3N1ZXMgPSBsaXN0Lm1hcCgoYykgPT4gKHsgaWQ6IGMsIHRleHQ6IGMsIGNoZWNrZWQ6IHNlbGVjdGVkLmhhcyhjKSB9KSk7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuc3RvcmVGaWx0ZXJPYmplY3QuZmluZCgoZykgPT4gZy5EZXNjcmlwdGlvbiA9PT0gJ0NvdW50cnknKTtcbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICBleGlzdGluZy5Jc3N1ZXMgPSBpc3N1ZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0b3JlRmlsdGVyT2JqZWN0ID0gWy4uLnRoaXMuc3RvcmVGaWx0ZXJPYmplY3QsIHsgRGVzY3JpcHRpb246ICdDb3VudHJ5JywgdHlwZTogJ211bHRpJywgSXNzdWVzOiBpc3N1ZXMgfV07XG4gICAgICB9XG4gICAgfVxuICAgIC8vIE1vdW50IGxpYi1maWx0ZXJzIG9uY2UgdGhlIGZpcnN0IHJlc3BvbnNlIGlzIGluIChTdGF0dXMgYWxvbmUgaWYgdGhlcmUgYXJlXG4gICAgLy8gbm8gY291bnRyaWVzKSwgc28gaXQgc25hcHNob3RzIHRoZSBmdWxsIGRhdGFPYmplY3Qgb24gaW5pdC5cbiAgICBpZiAoIXRoaXMuZmlsdGVyc1JlYWR5KSB7XG4gICAgICB0aGlzLmZpbHRlcnNSZWFkeSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTdG9yZUZpbHRlcnMoZXZlbnQ6IGFueSkge1xuICAgIC8vIE11bHRpLXNlbGVjdCBTdGF0dXMgLyBDb3VudHJ5IOKAlCBsaWItZmlsdGVycyBlbWl0cyBlYWNoIGdyb3VwJ3Mgc2VsZWN0ZWRcbiAgICAvLyBvcHRpb25zIGFzIGFuIEFSUkFZIHVuZGVyIElzc3VlcyAoQXBwbHkgc2V0cyBJc3N1ZXMgPSBzZWxlY3RlZFZhbHVlc0FycmF5XG4gICAgLy8gW2luZGV4XSkuIENvbGxlY3QgZXZlcnkgc2VsZWN0ZWQgaWQsIHRvbGVyYXRpbmcgYXJyYXkgYW5kIHNpbmdsZS1vYmplY3RcbiAgICAvLyBzaGFwZXMuXG4gICAgY29uc3Qgc3RhdHVzZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgY291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChldmVudD8ubGVuZ3RoKSB7XG4gICAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaXNzdWVzID0gQXJyYXkuaXNBcnJheShlbGVtZW50Lklzc3VlcykgPyBlbGVtZW50Lklzc3VlcyA6IChlbGVtZW50Lklzc3VlcyA/IFtlbGVtZW50Lklzc3Vlc10gOiBbXSk7XG4gICAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSAnU3RhdHVzJykge1xuICAgICAgICAgIGlzc3Vlcy5mb3JFYWNoKChpOiBhbnkpID0+IHsgaWYgKGk/LmlkKSBzdGF0dXNlcy5wdXNoKGkuaWQpOyB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSAnQ291bnRyeScpIHtcbiAgICAgICAgICBpc3N1ZXMuZm9yRWFjaCgoaTogYW55KSA9PiB7IGlmIChpPy5pZCkgY291bnRyaWVzLnB1c2goaS5pZCk7IH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zdGF0dXNGaWx0ZXIgPSBbLi4ubmV3IFNldChzdGF0dXNlcyldO1xuICAgIHRoaXMuY291bnRyeUZpbHRlciA9IFsuLi5uZXcgU2V0KGNvdW50cmllcyldO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XG4gICAgdGhpcy5zb3J0QnkgKj0gLTE7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhcnNlSW50KHBhZ2VPZmZzZXQpO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhcnNlSW50KHBhZ2VTaXplKTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIG9uRXhwb3J0KCkge1xuICAgIGxldCBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5sZW4sXG4gICAgICBzb3J0Q29sdW1OYW1lOiB0aGlzLnNvcnRDb2x1bU5hbWUsXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydEJ5LFxuICAgICAgc3RhdHVzRmlsdGVyOiB0aGlzLnN0YXR1c0ZpbHRlcixcbiAgICAgIGRhdGVGaWx0ZXI6IHRoaXMuZGF0ZUZpbHRlciB8fCAnJyxcbiAgICAgIGV4cG9ydDogdHJ1ZVxuICAgIH07XG5cbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmxhdGVzdERhaWx5UHJpY2luZ0V4cG9ydChmaWx0ZXJzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCAnZGFpbHktcHJpY2luZycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnU29tZXRoaW5nIHdlbnQgV3JvbmcuLicpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RWRpdEtleShzdG9yZUlkOiBzdHJpbmcsIHByb2R1Y3ROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtzdG9yZUlkfV8ke3Byb2R1Y3ROYW1lfWA7XG4gIH1cblxuICBpc0VkaXRpbmcoc3RvcmVJZDogc3RyaW5nLCBwcm9kdWN0TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ1Byb2R1Y3RbdGhpcy5nZXRFZGl0S2V5KHN0b3JlSWQsIHByb2R1Y3ROYW1lKV0gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXJ0RWRpdChzdG9yZTogYW55LCBwcm9kdWN0OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgcHJvZHVjdC5wcm9kdWN0TmFtZSk7XG4gICAgLy8gQ29lcmNlIHRvIGEgbnVtYmVyIHNvIGEgMCAvIG1pc3NpbmcgdmFsdWUgc3RpbGwgZW50ZXJzIGVkaXQgbW9kZSB3aXRoIGFcbiAgICAvLyBkZWZpbmVkIHZhbHVlICh1bmRlZmluZWQgd291bGQgbWFrZSBpc0VkaXRpbmcoKSB0aGluayB3ZSdyZSBub3QgZWRpdGluZykuXG4gICAgdGhpcy5lZGl0aW5nUHJvZHVjdFtrZXldID0gTnVtYmVyKHByb2R1Y3Qud29ya2luZ2RheXMpIHx8IDA7XG4gIH1cblxuICBjYW5jZWxFZGl0KHN0b3JlOiBhbnksIHByb2R1Y3Q6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RWRpdEtleShzdG9yZS5zdG9yZUlkLCBwcm9kdWN0LnByb2R1Y3ROYW1lKTtcbiAgICBkZWxldGUgdGhpcy5lZGl0aW5nUHJvZHVjdFtrZXldO1xuICB9XG5cbiAgc2F2ZVdvcmtpbmdEYXlzKHN0b3JlOiBhbnksIHByb2R1Y3Q6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RWRpdEtleShzdG9yZS5zdG9yZUlkLCBwcm9kdWN0LnByb2R1Y3ROYW1lKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IE51bWJlcih0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV0pIHx8IDA7XG5cbiAgICAvLyBVbmNoYW5nZWQg4oaSIGp1c3QgY2xvc2UgdGhlIGVkaXRvciAoY29tcGFyZSBhcyBudW1iZXJzIHNvIDAgdnMgXCIwXCIgZXRjLlxuICAgIC8vIGRvbid0IHNsaXAgdGhyb3VnaCkuXG4gICAgaWYgKG5ld1ZhbHVlID09PSAoTnVtYmVyKHByb2R1Y3Qud29ya2luZ2RheXMpIHx8IDApKSB7XG4gICAgICBkZWxldGUgdGhpcy5lZGl0aW5nUHJvZHVjdFtrZXldO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZGFpbHlQcmljaW5nSW5mby5kYXRlU3RyaW5nLFxuICAgICAgc3RvcmVJZDogc3RvcmUuc3RvcmVJZCxcbiAgICAgIHByb2R1Y3ROYW1lOiBwcm9kdWN0LnByb2R1Y3ROYW1lLFxuICAgICAgd29ya2luZ2RheXM6IG5ld1ZhbHVlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UudXBkYXRlRGFpbHlQcmljaW5nV29ya2luZ0RheXMocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHByb2R1Y3Qud29ya2luZ2RheXMgPSBOdW1iZXIobmV3VmFsdWUpO1xuICAgICAgICBkZWxldGUgdGhpcy5lZGl0aW5nUHJvZHVjdFtrZXldO1xuICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdCgnV29ya2luZyBkYXlzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIHVwZGF0ZSB3b3JraW5nIGRheXMnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEZpZWxkRWRpdEtleShzdG9yZUlkOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c3RvcmVJZH1fJHtmaWVsZE5hbWV9YDtcbiAgfVxuXG4gIGlzRWRpdGluZ0ZpZWxkKHN0b3JlSWQ6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nRmllbGRbdGhpcy5nZXRGaWVsZEVkaXRLZXkoc3RvcmVJZCwgZmllbGROYW1lKV0gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXJ0RmllbGRFZGl0KHN0b3JlOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRGaWVsZEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgZmllbGROYW1lKTtcbiAgICB0aGlzLmVkaXRpbmdGaWVsZFtrZXldID0gc3RvcmVbZmllbGROYW1lXSB8fCAwO1xuICB9XG5cbiAgY2FuY2VsRmllbGRFZGl0KHN0b3JlOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRGaWVsZEVkaXRLZXkoc3RvcmUuc3RvcmVJZCwgZmllbGROYW1lKTtcbiAgICBkZWxldGUgdGhpcy5lZGl0aW5nRmllbGRba2V5XTtcbiAgfVxuXG4gIHNhdmVGaWVsZEVkaXQoc3RvcmU6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZS5zdG9yZUlkLCBmaWVsZE5hbWUpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5lZGl0aW5nRmllbGRba2V5XTtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gc3RvcmVbZmllbGROYW1lXSkge1xuICAgICAgZGVsZXRlIHRoaXMuZWRpdGluZ0ZpZWxkW2tleV07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgZGF0ZVN0cmluZzogdGhpcy5kYWlseVByaWNpbmdJbmZvLmRhdGVTdHJpbmcsXG4gICAgICBzdG9yZUlkOiBzdG9yZS5zdG9yZUlkLFxuICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogTnVtYmVyKG5ld1ZhbHVlKVxuICAgIH07XG5cbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnVwZGF0ZURhaWx5UHJpY2luZ1N0b3JlRmllbGQocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHN0b3JlW2ZpZWxkTmFtZV0gPSBOdW1iZXIobmV3VmFsdWUpO1xuICAgICAgICBkZWxldGUgdGhpcy5lZGl0aW5nRmllbGRba2V5XTtcbiAgICAgICAgY29uc3QgZmllbGRMYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IHRyYWZmaWNDYW1lcmFDb3VudDogJ1RyYWZmaWMgY2FtZXJhIGNvdW50Jywgem9uZUNhbWVyYUNvdW50OiAnWm9uZSBjYW1lcmEgY291bnQnLCB6b25lQ291bnQ6ICdab25lIGNvdW50JyB9O1xuICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdChgJHtmaWVsZExhYmVsc1tmaWVsZE5hbWVdIHx8IGZpZWxkTmFtZX0gdXBkYXRlZCBzdWNjZXNzZnVsbHlgKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JMYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IHRyYWZmaWNDYW1lcmFDb3VudDogJ3RyYWZmaWMgY2FtZXJhIGNvdW50Jywgem9uZUNhbWVyYUNvdW50OiAnem9uZSBjYW1lcmEgY291bnQnLCB6b25lQ291bnQ6ICd6b25lIGNvdW50JyB9O1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoYEZhaWxlZCB0byB1cGRhdGUgJHtlcnJvckxhYmVsc1tmaWVsZE5hbWVdIHx8IGZpZWxkTmFtZX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdlbmVyYXRlSW52b2ljZSgpIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50SWQpIHJldHVybjtcbiAgICAvLyBPcGVuIHRoZSBwaWNrZXIgZmlyc3Qg4oCUIHRoZSB1c2VyIGNob29zZXMgd2hpY2ggYmlsbGluZyBncm91cHMgdG9cbiAgICAvLyBnZW5lcmF0ZSBmb3IuIE1vZGFsIGNsb3NlcyB3aXRoIHsgZ3JvdXBJZHMsIG91dHN0YW5kaW5nR3JvdXBJZHMgfVxuICAgIC8vIChvciBpcyBkaXNtaXNzZWQgPSBuby1vcCkuXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEdlbmVyYXRlSW52b2ljZU1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJywgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdDogeyBncm91cElkczogc3RyaW5nW107IG91dHN0YW5kaW5nR3JvdXBJZHM6IHN0cmluZ1tdIH0pID0+IHtcbiAgICAgIGlmICghcmVzdWx0IHx8ICFBcnJheS5pc0FycmF5KHJlc3VsdC5ncm91cElkcykgfHwgcmVzdWx0Lmdyb3VwSWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgdGhpcy5ydW5JbnZvaWNlR2VuZXJhdGlvbihyZXN1bHQuZ3JvdXBJZHMsIHJlc3VsdC5vdXRzdGFuZGluZ0dyb3VwSWRzIHx8IFtdKTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7fSk7XG4gIH1cblxuICAvLyBPcGVuIGEgcG9wdXAgbGlzdGluZyB0aGUgbmV3bHkgb25ib2FyZGVkIHN0b3JlcyAod2l0aCBmaXJzdCBmaWxlIGRhdGUpLlxuICAvLyBUaGUgbGlzdCBpcyBhbHJlYWR5IGxvYWRlZCB3aXRoIHRoZSBwYWdlLCBzbyBubyBleHRyYSBBUEkgY2FsbCBpcyBuZWVkZWQuXG4gIHZpZXdOZXdTdG9yZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0Lmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihOZXdTdG9yZXNNb2RhbENvbXBvbmVudCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZycsIHNjcm9sbGFibGU6IHRydWUsXG4gICAgfSk7XG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RvcmVzID0gdGhpcy5uZXdseU9uYm9hcmRlZFN0b3JlTGlzdDtcbiAgfVxuXG4gIHByaXZhdGUgcnVuSW52b2ljZUdlbmVyYXRpb24oZ3JvdXBJZHM6IHN0cmluZ1tdLCBvdXRzdGFuZGluZ0dyb3VwSWRzOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG4gICAgdGhpcy5nZW5lcmF0aW5nSW52b2ljZSA9IHRydWU7XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgYWxsQ2xpZW50OiB0cnVlLFxuICAgICAgY2xpZW50TGlzdDogW3RoaXMuY2xpZW50SWRdLFxuICAgICAgZ3JvdXBJZHMsXG4gICAgICBvdXRzdGFuZGluZ0dyb3VwSWRzLFxuICAgIH07XG5cbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmNyZWF0ZUludm9pY2UocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGluZ0ludm9pY2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoYEludm9pY2UgZ2VuZXJhdGVkIGZvciAke2dyb3VwSWRzLmxlbmd0aH0gYmlsbGluZyBncm91cChzKWApO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmdlbmVyYXRpbmdJbnZvaWNlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGdlbmVyYXRlIGludm9pY2UnKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmb3JtYXRQcm9kdWN0TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICAgIHJldHVybiBuYW1lLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgICAucmVwbGFjZSgvXi4vLCAoc3RyKSA9PiBzdHIudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAvLyBUYWtlIHRoZSByYXcgYWdncmVnYXRpb24gcm93cyAoYWxyZWFkeSBzb3J0ZWQgbmV3ZXN0LWZpcnN0IGJ5IHRoZSBBUEkpIGFuZFxuICAvLyBhdHRhY2ggKGEpIGEgaHVtYW4tcmVhZGFibGUgbW9udGhMYWJlbCwgKGIpIHRhZyBmb3IgdGhlIGxhdGVzdCB0d28gcm93c1xuICAvLyAoXCJDdXJyZW50XCIgLyBcIkxhc3QgZ2VuZXJhdGVkXCIpIGFuZCAoYykgZGVsdGFzIHZzIHRoZSBpbW1lZGlhdGVseSBvbGRlclxuICAvLyBDdXJyZW5jeSBzeW1ib2wgZm9yIGEgc3RvcmUncyBpbnZvaWNlIGFtb3VudCAobWF0Y2hlcyB0aGUgYmFja2VuZCdzXG4gIC8vIGJhc2VwcmljaW5nIGN1cnJlbmN5OyBBRUQgcmVuZGVyZWQgYXMgdGV4dCkuXG4gIHN0b3JlQ3VycmVuY3lTeW1ib2woc3RvcmU6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3ltYm9sczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgaW5yOiAn4oK5JywgZG9sbGFyOiAnJCcsIHNpbmdhcG9yZWRvbGxhcjogJ1MkJywgZXVybzogJ+KCrCcsIGFlZDogJ0FFRCAnIH07XG4gICAgcmV0dXJuIHN5bWJvbHNbKHN0b3JlPy5pbnZvaWNlQ3VycmVuY3kgfHwgJ2lucicpLnRvTG93ZXJDYXNlKCldIHx8ICfigrknO1xuICB9XG5cbiAgLy8gbW9udGggc28gdGhlIHRlbXBsYXRlIGNhbiByZW5kZXIgdGhlIOKWsi/ilrwv4pasIHRyZW5kIGluZGljYXRvcnMuXG4gIHByaXZhdGUgZGVjb3JhdGVNb250aGx5U3VtbWFyeShyb3dzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocm93cykgfHwgcm93cy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICBjb25zdCBtb250aE5hbWVzID0gWydKYW4nLCdGZWInLCdNYXInLCdBcHInLCdNYXknLCdKdW4nLCdKdWwnLCdBdWcnLCdTZXAnLCdPY3QnLCdOb3YnLCdEZWMnXTtcbiAgICBjb25zdCBzeW1ib2xzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBpbnI6ICfigrknLCBkb2xsYXI6ICckJywgc2luZ2Fwb3JlZG9sbGFyOiAnUyQnLCBldXJvOiAn4oKsJyB9O1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgaXNDdXJyZW50ID0gKHI6IGFueSkgPT4gci55ZWFyID09PSBub3cuZ2V0RnVsbFllYXIoKSAmJiByLm1vbnRoID09PSAobm93LmdldE1vbnRoKCkgKyAxKTtcbiAgICByZXR1cm4gcm93cy5tYXAoKHIsIGkpID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSByb3dzW2kgKyAxXTtcbiAgICAgIGNvbnN0IHN0b3Jlc0RlbHRhID0gbmV4dCA/IChyLnN0b3Jlc0JpbGxlZCB8fCAwKSAtIChuZXh0LnN0b3Jlc0JpbGxlZCB8fCAwKSA6IG51bGw7XG4gICAgICBjb25zdCBhbW91bnREZWx0YSA9IG5leHQgPyAoci5pbnZvaWNlQW1vdW50IHx8IDApIC0gKG5leHQuaW52b2ljZUFtb3VudCB8fCAwKSA6IG51bGw7XG4gICAgICBsZXQgdGFnID0gJyc7XG4gICAgICBpZiAoaXNDdXJyZW50KHIpKSB0YWcgPSAnQ3VycmVudCc7XG4gICAgICBlbHNlIGlmIChpID09PSAwKSB0YWcgPSAnTGFzdCBnZW5lcmF0ZWQnO1xuICAgICAgZWxzZSBpZiAoaSA9PT0gMSAmJiBpc0N1cnJlbnQocm93c1swXSkpIHRhZyA9ICdMYXN0IGdlbmVyYXRlZCc7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5yLFxuICAgICAgICBtb250aExhYmVsOiBgJHttb250aE5hbWVzWyhyLm1vbnRoIHx8IDEpIC0gMV19ICR7ci55ZWFyfWAsXG4gICAgICAgIHRhZyxcbiAgICAgICAgc3RvcmVzRGVsdGEsXG4gICAgICAgIGFtb3VudERlbHRhLFxuICAgICAgICBjdXJyZW5jeVN5bWJvbDogc3ltYm9sc1soci5jdXJyZW5jeSB8fCAnaW5yJykudG9Mb3dlckNhc2UoKV0gfHwgJycsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlTW9udGhseVN1bW1hcnlIaXN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMubW9udGhseVN1bW1hcnlFeHBhbmRlZCA9ICF0aGlzLm1vbnRobHlTdW1tYXJ5RXhwYW5kZWQ7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiaW52b2ljZXMtc2VjdGlvblwiPlxuICAgIDwhLS0gSGVhZGVyIFJvdyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuNjY2NjcgMTBIMTMuMzMzM002LjY2NjY3IDYuNjY2NjdIMTMuMzMzM002LjY2NjY3IDEzLjMzMzNIMTBNNSAxNy41SDE1QzE1LjkyMDUgMTcuNSAxNi42NjY3IDE2Ljc1MzggMTYuNjY2NyAxNS44MzMzVjQuMTY2NjdDMTYuNjY2NyAzLjI0NjE5IDE1LjkyMDUgMi41IDE1IDIuNUg1QzQuMDc5NTMgMi41IDMuMzMzMzMgMy4yNDYxOSAzLjMzMzMzIDQuMTY2NjdWMTUuODMzM0MzLjMzMzMzIDE2Ljc1MzggNC4wNzk1MyAxNy41IDUgMTcuNVpcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJpbGxpbmdoZWFkZXJcIj5CaWxsaW5nIEJyZWFrZG93bjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtZGFyayBtcy0xXCI+e3sgdG90YWxJdGVtcyB9fSBzdG9yZXM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG10LTFcIiAqbmdJZj1cImRhaWx5UHJpY2luZ0luZm8/LmRhdGVTdHJpbmdcIj5cbiAgICAgICAgICAgICAgICBEYXRlOiA8c3Ryb25nPnt7IGRhaWx5UHJpY2luZ0luZm8/LmRhdGVTdHJpbmcgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj58PC9zcGFuPlxuICAgICAgICAgICAgICAgIEFjdGl2ZSBTdG9yZXM6IDxzdHJvbmc+e3sgZGFpbHlQcmljaW5nSW5mbz8uYWN0aXZlU3RvcmVzIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+fDwvc3Bhbj5cbiAgICAgICAgICAgICAgICBBY2NvdW50IFR5cGU6IDxzdHJvbmc+e3sgZGFpbHlQcmljaW5nSW5mbz8uYWNjb3VudFR5cGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGRhdGUtZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGVGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRGF0ZUZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgYnkgZGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRlRmlsdGVyXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJEYXRlRmlsdGVyKClcIiB0aXRsZT1cIkNsZWFyIGRhdGUgZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC41IDMuNUwzLjUgMTAuNU0zLjUgMy41TDEwLjUgMTAuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZ2VuZXJhdGVJbnZvaWNlKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBpbnZoZWFkZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3RvcmVMaXN0Lmxlbmd0aCB8fCBnZW5lcmF0aW5nSW52b2ljZVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuNjY2NjcgMTBIMTMuMzMzM002LjY2NjY3IDYuNjY2NjdIMTMuMzMzM002LjY2NjY3IDEzLjMzMzNIMTBNNSAxNy41SDE1QzE1LjkyMDUgMTcuNSAxNi42NjY3IDE2Ljc1MzggMTYuNjY2NyAxNS44MzMzVjQuMTY2NjdDMTYuNjY2NyAzLjI0NjE5IDE1LjkyMDUgMi41IDE1IDIuNUg1QzQuMDc5NTMgMi41IDMuMzMzMzMgMy4yNDYxOSAzLjMzMzMzIDQuMTY2NjdWMTUuODMzM0MzLjMzMzMzIDE2Ljc1MzggNC4wNzk1MyAxNy41IDUgMTcuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI2ZmZlwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiPnt7IGdlbmVyYXRpbmdJbnZvaWNlID8gJ0dlbmVyYXRpbmcuLi4nIDogJ0dlbmVyYXRlIEludm9pY2UnIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FeHBvcnQoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gYWxpZ24taXRlbXMtZW5kIHRleHQtbm93cmFwIGludmhlYWRlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdG9yZUxpc3QubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiPkV4cG9ydDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTmV3bHkgT25ib2FyZGVkIFN0b3JlcyDigJQgc3RvcmVzIHdob3NlIGZpcnN0IGZpbGUgZGF0ZSBpcyBpbiB0aGUgY3VycmVudCBtb250aCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ld2x5LW9uYm9hcmRlZC1jYXJkXCJcbiAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTRweDtib3JkZXI6MXB4IHNvbGlkICNFNEU3RUM7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAxOHB4O2JhY2tncm91bmQ6I2ZmZjttaW4td2lkdGg6MjQwcHg7XCI+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNFQUY4RkY7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1wiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgMjFWOGw5LTUgOSA1djEzTTMgMjFoMThNMyAyMUgxbTIwIDBoMk05IDIxdi02aDZ2Nk0xMiA3LjVoLjAxXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxMDE4Mjg7bGluZS1oZWlnaHQ6MS4xO1wiPnt7IG5ld2x5T25ib2FyZGVkU3RvcmVzIHwgbnVtYmVyOicxLjAtMCc6J2VuLUlOJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6MTNweDtjb2xvcjojNjY3MDg1O1wiPk5ld2x5IE9uYm9hcmRlZCBTdG9yZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOjExcHg7Y29sb3I6Izk4QTJCMztcIj5GaXJzdCBmaWxlIGluIGN1cnJlbnQgbW9udGg8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgbXMtM1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFuZXdseU9uYm9hcmRlZFN0b3Jlc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdOZXdTdG9yZXMoKVwiPlZpZXcgU3RvcmVzPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNb250aGx5IEJpbGxpbmcgU3VtbWFyeSDigJQgaW52b2ljZSB0cmVuZCAobmV3ZXN0IGZpcnN0LCB3aXRoIGRlbHRhcyB2cyBwcmlvciBtb250aCkgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1vbnRobHktYmlsbGluZy1zdW1tYXJ5XCIgKm5nSWY9XCJtb250aGx5QmlsbGluZ1N1bW1hcnk/Lmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXN1bS1oZWFkZXJcIj5Nb250aGx5IEJpbGxpbmcgU3VtbWFyeTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWItMFwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk1PTlRIPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5OVU1CRVIgT0YgU1RPUkVTIEJJTExFRDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+SU5WT0lDRSBBTU9VTlQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2YgbW9udGhseUJpbGxpbmdTdW1tYXJ5OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJpIDwgMiB8fCBtb250aGx5U3VtbWFyeUV4cGFuZGVkXCIgW2NsYXNzLmN1cnJdPVwicm93LnRhZyA9PT0gJ0N1cnJlbnQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdy5tb250aExhYmVsIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnRhZyA9PT0gJ0N1cnJlbnQnXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IG1zLTJcIj5DdXJyZW50PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy50YWcgPT09ICdMYXN0IGdlbmVyYXRlZCdcIiBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtZGFyayBtcy0yXCI+TGFzdCBnZW5lcmF0ZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcm93LnN0b3Jlc0JpbGxlZCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5zdG9yZXNEZWx0YSAhPT0gbnVsbFwiIGNsYXNzPVwiaW5kIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnVwXT1cInJvdy5zdG9yZXNEZWx0YSA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvd25dPVwicm93LnN0b3Jlc0RlbHRhIDwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxhdF09XCJyb3cuc3RvcmVzRGVsdGEgPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuc3RvcmVzRGVsdGEgPiAwXCI+4payIHt7IHJvdy5zdG9yZXNEZWx0YSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInJvdy5zdG9yZXNEZWx0YSA8IDBcIj7ilrwge3sgLXJvdy5zdG9yZXNEZWx0YSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD7ilqwgMDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3cuY3VycmVuY3lTeW1ib2wgfX17eyByb3cuaW52b2ljZUFtb3VudCB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cuYW1vdW50RGVsdGEgIT09IG51bGxcIiBjbGFzcz1cImluZCBtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy51cF09XCJyb3cuYW1vdW50RGVsdGEgPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb3duXT1cInJvdy5hbW91bnREZWx0YSA8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsYXRdPVwicm93LmFtb3VudERlbHRhID09PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwicm93LmFtb3VudERlbHRhID4gMFwiPuKWsiB7eyByb3cuY3VycmVuY3lTeW1ib2wgfX17eyByb3cuYW1vdW50RGVsdGEgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwicm93LmFtb3VudERlbHRhIDwgMFwiPuKWvCB7eyByb3cuY3VycmVuY3lTeW1ib2wgfX17eyAtcm93LmFtb3VudERlbHRhIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD7ilqwgMDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9udGhseUJpbGxpbmdTdW1tYXJ5Lmxlbmd0aCA+IDJcIiBjbGFzcz1cIm1zdW0tdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZU1vbnRobHlTdW1tYXJ5SGlzdG9yeSgpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vbnRobHlTdW1tYXJ5RXhwYW5kZWRcIj7ilr4gU2hvdyBvbGRlciBtb250aHMgKHt7IG1vbnRobHlCaWxsaW5nU3VtbWFyeS5sZW5ndGggLSAyIH19KTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbnRobHlTdW1tYXJ5RXhwYW5kZWRcIj7ilrQgSGlkZSBvbGRlciBtb250aHM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEFkZGl0aW9uYWwgUHJvZHVjdHMg4oCUIG5vbi1zdGFuZGFyZCBwcm9kdWN0cyBiaWxsZWQgZm9yIHRoaXMgY2xpZW50IG9ubHlcbiAgICAgICAgIChlLmcuIGNsaWVudElkIDExOiBFeWV0ZXN0LCBQbGFub2dyYW0pLiBIaWRkZW4gd2hlbiB0aGUgY2xpZW50IGhhcyBub25lLiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGhseS1iaWxsaW5nLXN1bW1hcnlcIiAqbmdJZj1cImFkZGl0aW9uYWxQcm9kdWN0cz8ubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtc3VtLWhlYWRlclwiPkFkZGl0aW9uYWwgUHJvZHVjdHM8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0IE5hbWU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1lbmRcIj5RdWFudGl0eTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlByaWNlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+VG90YWw8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5BY3Rpb248L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHAgb2YgYWRkaXRpb25hbFByb2R1Y3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcC5wcm9kdWN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHAucXVhbnRpdHkgfCBudW1iZXI6JzEuMC0wJzonZW4tSU4nIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgKGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5ID09PSAnZG9sbGFyJyA/ICckJyA6ICfigrknKSB9fXt7IHAucHJpY2UgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+PHN0cm9uZz57eyAoYWRkaXRpb25hbFByb2R1Y3RzQ3VycmVuY3kgPT09ICdkb2xsYXInID8gJyQnIDogJ+KCuScpIH19e3sgcC50b3RhbCB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuRXhwb3J0QWRkaXRpb25hbFByb2R1Y3QocC5wcm9kdWN0TmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0QWRkaXRpb25hbFByb2R1Y3QocC5wcm9kdWN0TmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiIGNsYXNzPVwidGV4dC1lbmRcIj48c3Ryb25nPkdyYW5kIFRvdGFsPC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+PHN0cm9uZz57eyAoYWRkaXRpb25hbFByb2R1Y3RzQ3VycmVuY3kgPT09ICdkb2xsYXInID8gJyQnIDogJ+KCuScpIH19e3sgYWRkaXRpb25hbFByb2R1Y3RzVG90YWwgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VhcmNoICsgRmlsdGVyIFJvdyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcGF5bWVudGhpc3RvcnkgYm9yZGVyLTAgcHgtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIGludm9pY2VzZWFyY2ggc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtdC02IG1zLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImxlblwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgaW52b2ljZXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlN0b3JlIG5hbWUgb3IgSUQuLi5cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoY2hhbmdlKT1cInNlYXJjaEZpZWxkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaERpc2FibGVkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwiZmlsdGVyc1JlYWR5XCIgW2RhdGFPYmplY3RdPVwic3RvcmVGaWx0ZXJPYmplY3RcIiAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlTdG9yZUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExvYWRpbmcgU2hpbW1lciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RvcmVMb2FkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBObyBEYXRhIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZU5vRGF0YVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBTdG9yZXMgVGFibGUgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFzdG9yZUxvYWRpbmcgJiYgIXN0b3JlTm9EYXRhXCIgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFjY29yZGlvbiB0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnc3RvcmVOYW1lJylcIj5TVE9SRSBOQU1FXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdzdG9yZU5hbWUnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnc3RvcmVOYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD5TVE9SRSBJRDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD5DT1VOVFJZPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPlBST0RVQ1RTPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCI+VFJBRkZJQyBDQU1FUkFTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd0cmFmZmljQ2FtZXJhQ291bnQnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAndHJhZmZpY0NhbWVyYUNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCd6b25lQ2FtZXJhQ291bnQnKVwiPlpPTkUgQ0FNRVJBU1xuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZUNhbWVyYUNvdW50JyAmJiBzb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3pvbmVDYW1lcmFDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnem9uZUNvdW50JylcIj5aT05FU1xuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZUNvdW50JyAmJiBzb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3pvbmVDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+RklSU1QgRklMRSBEQVRFPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2RheXNEaWZmZXJlbmNlJylcIj5XT1JLSU5HIERBWVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RheXNEaWZmZXJlbmNlJyAmJiBzb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RheXNEaWZmZXJlbmNlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD5TVEFUVVM8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPklOVk9JQ0UgQU1PVU5UPC90aD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIHN0b3JlTGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgdGFibGUtdGl0bGUtcHJpbWFyeVwiPnt7IHN0b3JlPy5zdG9yZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgc3RvcmU/LnN0b3JlSWQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgc3RvcmU/LmNvdW50cnkgfHwgJ+KAlCcgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2Ygc3RvcmU/LnByb2R1Y3RzXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IG1lLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0UHJvZHVjdE5hbWUocHJvZHVjdD8ucHJvZHVjdE5hbWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdG9yZT8udHJhZmZpY0NhbWVyYUNvdW50IHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RmllbGRFZGl0KHN0b3JlLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGVkaXQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluZ0ZpZWxkW2dldEZpZWxkRWRpdEtleShzdG9yZT8uc3RvcmVJZCwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zdWNjZXNzXCIgKGNsaWNrKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmU/LnpvbmVDYW1lcmFDb3VudCB8fCAwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45MTY2NyAxLjc1MDA0QzEwLjA2OTggMS41OTY4MyAxMC4yNTE4IDEuNDc1MzMgMTAuNDUxOSAxLjM5MjM4QzEwLjY1MjIgMS4zMDk0NiAxMC44NjY3IDEuMjY2NzkgMTEuMDgzMyAxLjI2Njc5QzExLjMgMS4yNjY3OSAxMS41MTQ1IDEuMzA5NDYgMTEuNzE0OCAxLjM5MjM4QzExLjkxNDkgMS40NzUzMyAxMi4wOTY5IDEuNTk2ODMgMTIuMjUgMS43NTAwNEMxMi40MDMyIDEuOTAzMjUgMTIuNTI0NyAyLjA4NTI5IDEyLjYwNzcgMi4yODU0NkMxMi42OTA2IDIuNDg1NjcgMTIuNzMzMyAyLjcwMDEzIDEyLjczMzMgMi45MTY3MUMxMi43MzMzIDMuMTMzMjkgMTIuNjkwNiAzLjM0Nzc1IDEyLjYwNzcgMy41NDc5NkMxMi41MjQ3IDMuNzQ4MTMgMTIuNDAzMiAzLjkzMDE3IDEyLjI1IDQuMDgzMzhMNC4zNzUgMTEuOTU4NEwxLjE2NjY3IDEyLjgzMzRMMi4wNDE2NyA5LjYyNTA0TDkuOTE2NjcgMS43NTAwNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdGaWVsZFtnZXRGaWVsZEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsICd6b25lQ2FtZXJhQ291bnQnKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc3VjY2Vzc1wiIChjbGljayk9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIiB0aXRsZT1cIlNhdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4zMzM0IDRMNi4wMDAwOCAxMS4zMzMzTDIuNjY2NzUgOFwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJDYW5jZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA0TDQgMTJNNCA0TDEyIDEyXCIgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0b3JlPy56b25lQ291bnQgfHwgMCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRGaWVsZEVkaXQoc3RvcmUsICd6b25lQ291bnQnKVwiIHRpdGxlPVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTE2NjcgMS43NTAwNEMxMC4wNjk4IDEuNTk2ODMgMTAuMjUxOCAxLjQ3NTMzIDEwLjQ1MTkgMS4zOTIzOEMxMC42NTIyIDEuMzA5NDYgMTAuODY2NyAxLjI2Njc5IDExLjA4MzMgMS4yNjY3OUMxMS4zIDEuMjY2NzkgMTEuNTE0NSAxLjMwOTQ2IDExLjcxNDggMS4zOTIzOEMxMS45MTQ5IDEuNDc1MzMgMTIuMDk2OSAxLjU5NjgzIDEyLjI1IDEuNzUwMDRDMTIuNDAzMiAxLjkwMzI1IDEyLjUyNDcgMi4wODUyOSAxMi42MDc3IDIuMjg1NDZDMTIuNjkwNiAyLjQ4NTY3IDEyLjczMzMgMi43MDAxMyAxMi43MzMzIDIuOTE2NzFDMTIuNzMzMyAzLjEzMzI5IDEyLjY5MDYgMy4zNDc3NSAxMi42MDc3IDMuNTQ3OTZDMTIuNTI0NyAzLjc0ODEzIDEyLjQwMzIgMy45MzAxNyAxMi4yNSA0LjA4MzM4TDQuMzc1IDExLjk1ODRMMS4xNjY2NyAxMi44MzM0TDIuMDQxNjcgOS42MjUwNEw5LjkxNjY3IDEuNzUwMDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd6b25lQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZWRpdC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5nRmllbGRbZ2V0RmllbGRFZGl0S2V5KHN0b3JlPy5zdG9yZUlkLCAnem9uZUNvdW50JyldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd6b25lQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCIgdGl0bGU9XCJTYXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNCA0TDYuMDAwMDggMTEuMzMzM0wyLjY2Njc1IDhcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd6b25lQ291bnQnKVwiIHRpdGxlPVwiQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNEw0IDEyTTQgNEwxMiAxMlwiIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IHN0b3JlPy5lZGdlZmlyc3RGaWxlRGF0ZSA/IChzdG9yZT8uZWRnZWZpcnN0RmlsZURhdGUgfCBkYXRlOiAnZGQgTU1NIHl5eXknKSA6ICfigJQnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHN0b3JlPy5wcm9kdWN0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWFsbCB0ZXh0LW11dGVkXCI+e3sgZm9ybWF0UHJvZHVjdE5hbWUocHJvZHVjdD8ucHJvZHVjdE5hbWUpIH19Ojwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZpZXcgbW9kZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmcoc3RvcmU/LnN0b3JlSWQsIHByb2R1Y3Q/LnByb2R1Y3ROYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwcm9kdWN0Py53b3JraW5nZGF5cyB8fCAwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEVkaXQoc3RvcmUsIHByb2R1Y3QpXCIgdGl0bGU9XCJFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45MTY2NyAxLjc1MDA0QzEwLjA2OTggMS41OTY4MyAxMC4yNTE4IDEuNDc1MzMgMTAuNDUxOSAxLjM5MjM4QzEwLjY1MjIgMS4zMDk0NiAxMC44NjY3IDEuMjY2NzkgMTEuMDgzMyAxLjI2Njc5QzExLjMgMS4yNjY3OSAxMS41MTQ1IDEuMzA5NDYgMTEuNzE0OCAxLjM5MjM4QzExLjkxNDkgMS40NzUzMyAxMi4wOTY5IDEuNTk2ODMgMTIuMjUgMS43NTAwNEMxMi40MDMyIDEuOTAzMjUgMTIuNTI0NyAyLjA4NTI5IDEyLjYwNzcgMi4yODU0NkMxMi42OTA2IDIuNDg1NjcgMTIuNzMzMyAyLjcwMDEzIDEyLjczMzMgMi45MTY3MUMxMi43MzMzIDMuMTMzMjkgMTIuNjkwNiAzLjM0Nzc1IDEyLjYwNzcgMy41NDc5NkMxMi41MjQ3IDMuNzQ4MTMgMTIuNDAzMiAzLjkzMDE3IDEyLjI1IDQuMDgzMzhMNC4zNzUgMTEuOTU4NEwxLjE2NjY3IDEyLjgzMzRMMi4wNDE2NyA5LjYyNTA0TDkuOTE2NjcgMS43NTAwNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFZGl0IG1vZGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmcoc3RvcmU/LnN0b3JlSWQsIHByb2R1Y3Q/LnByb2R1Y3ROYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZWRpdC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5nUHJvZHVjdFtnZXRFZGl0S2V5KHN0b3JlPy5zdG9yZUlkLCBwcm9kdWN0Py5wcm9kdWN0TmFtZSldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlV29ya2luZ0RheXMoc3RvcmUsIHByb2R1Y3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRWRpdChzdG9yZSwgcHJvZHVjdClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zdWNjZXNzXCIgKGNsaWNrKT1cInNhdmVXb3JraW5nRGF5cyhzdG9yZSwgcHJvZHVjdClcIiB0aXRsZT1cIlNhdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4zMzM0IDRMNi4wMDAwOCAxMS4zMzMzTDIuNjY2NzUgOFwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cImNhbmNlbEVkaXQoc3RvcmUsIHByb2R1Y3QpXCIgdGl0bGU9XCJDYW5jZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA0TDQgMTJNNCA0TDEyIDEyXCIgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiBbbmdDbGFzc109XCJzdG9yZT8uc3RhdHVzID09PSAnYWN0aXZlJyA/ICdiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzJyA6ICdiYWRnZSBiYWRnZS1saWdodC1kYW5nZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcmU/LnN0YXR1cyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlci1wcm9kdWN0IGJyZWFrZG93biAoVHJhZmZpYzog4oK5eCwgWm9uZTog4oK5eSDigKYpICsgdG90YWwuIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYiBvZiBzdG9yZT8uaW52b2ljZUJyZWFrZG93blwiIGNsYXNzPVwiaW52LWJyZWFrZG93bi1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludi1icmVha2Rvd24tbGFiZWxcIj57eyBiLmxhYmVsIH19Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9yZUN1cnJlbmN5U3ltYm9sKHN0b3JlKSB9fXt7IChiLmFtb3VudCB8fCAwKSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGludi1icmVha2Rvd24tdG90YWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0b3JlQ3VycmVuY3lTeW1ib2woc3RvcmUpIH19e3sgKHN0b3JlPy5pbnZvaWNlQW1vdW50IHx8IDApIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhc3RvcmVMb2FkaW5nICYmICFzdG9yZU5vRGF0YVwiPlxuICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIGNsYXNzPVwidGV4dC1zdGFydFwiIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlXCIgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|