vcomply-workflow-engine 6.1.11 → 6.1.13

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.
Files changed (19) hide show
  1. package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +14 -10
  2. package/esm2022/lib/sharedComponents/floating-bar/floating-bar.component.mjs +5 -4
  3. package/esm2022/lib/sharedComponents/floating-bar/floating-bar.module.mjs +6 -5
  4. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +2 -2
  5. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +39 -17
  6. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.interface.mjs +1 -1
  7. package/esm2022/lib/sharedComponents/pipes/parentResponsibilitySelection.pipe.mjs +2 -2
  8. package/esm2022/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +5 -4
  9. package/esm2022/lib/workflow/shared/workflow-pipes/get-user-details.pipe.mjs +2 -2
  10. package/esm2022/lib/workflow/shared/workflow-pipes/user-short-name.pipe.mjs +33 -0
  11. package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +13 -8
  12. package/fesm2022/vcomply-workflow-engine.mjs +134 -73
  13. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  14. package/lib/sharedComponents/floating-bar/floating-bar.module.d.ts +4 -3
  15. package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +3 -0
  16. package/lib/sharedComponents/link-responsibility/link-responsibility.interface.d.ts +2 -0
  17. package/lib/workflow/shared/workflow-pipes/user-short-name.pipe.d.ts +7 -0
  18. package/lib/workflow/shared/workflow-pipes/workflow-pipes.module.d.ts +6 -5
  19. package/package.json +1 -1
@@ -572,24 +572,28 @@ export class WorkflowCaseComponent {
572
572
  if (this.openedFrom === 'COMPLIANCE_WORKROOM') {
573
573
  this.payload.source = this.source;
574
574
  const { rid, uid, rcid } = this.responsibilityData || {};
575
- const transformed = {};
575
+ const allRespIds = [];
576
+ const transformed = [];
576
577
  for (const item of payload?.responsibilities_Linked || []) {
577
- const { responsibilityId, assigneeIds, responsibilityCenters } = item;
578
+ const { responsibilityId, assigneeBridgeId, responsibilityCenterBridgeId } = item;
578
579
  if (responsibilityId != null) {
579
- transformed[responsibilityId] = {
580
- assigneeIds,
581
- responsibilityCenters,
582
- };
580
+ allRespIds.push(responsibilityId);
581
+ transformed.push({
582
+ rid: responsibilityId,
583
+ uid: assigneeBridgeId,
584
+ rcid: responsibilityCenterBridgeId,
585
+ });
583
586
  }
584
587
  }
585
588
  // Add current responsibility
586
589
  if (rid != null) {
587
590
  transformed[rid] = {
588
- assigneeIds: [uid],
589
- responsibilityCenters: [rcid],
591
+ assigneeId: [uid],
592
+ rcid: [rcid],
590
593
  };
591
594
  }
592
- payload.responsibilities_Linked = transformed;
595
+ payload.responsibilities_Linked = allRespIds;
596
+ payload.linked_responsibilities_details = transformed;
593
597
  }
594
598
  }
595
599
  filterAssessment(payload) {
@@ -851,4 +855,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
851
855
  }], pickerChanged: [{
852
856
  type: Output
853
857
  }] } });
854
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY2FzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9yZXBvcnQtYS1jYXNlL3dvcmtmbG93LWNhc2Uvd29ya2Zsb3ctY2FzZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9yZXBvcnQtYS1jYXNlL3dvcmtmbG93LWNhc2Uvd29ya2Zsb3ctY2FzZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixjQUFjLEVBQ2QseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBSzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUzFELE1BQU0sT0FBTyxxQkFBcUI7SUEyRGhDLFlBQ1Usa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLHVCQUFnRCxFQUNoRCxxQkFBNEMsRUFDNUMsdUJBQWdELEVBQ2hELGFBQTRCO1FBTDVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtR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LENBQUM7WUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDN0IsQ0FBQztJQUNKLENBQUM7K0dBaDVCVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwwZ0JDOUJsQyw2b3pCQWl3QkE7OzRGRG51QmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjtnUkErQ3BCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBRERfVE9fQ0FTRV9XT1JLRkxPVyxcbiAgQURESVRJT05BTF9PUFRJT05fU1RBVFVTLFxuICBFWENFUFRJT05fVFlQRSxcbiAgT1ZFUlNJR0hUX1NFTEVDVE9SX0NPTkZJRyxcbiAgUkVQT1JUX0NBU0UsXG4gIFJFUE9SVF9DQVNFX1BBWUxPQUQsXG4gIFJJU0tfQ0xBU1NJRklDQVRJT04sXG4gIFNJREVfU0VMRUNUT1JfRUxFTUVOVFMsXG4gIFZBTElEQVRJT05fRVJST1IsXG4gIFdPUktGTE9XX0RFVEFJTFNfUEFSQU1TLFxuICBBQ1RJT05fQlVUVE9OUyxcbiAgU01JTEVZX01FU1NBR0UsXG4gIEZJRUxEX1NFTEVDVE9SLFxufSBmcm9tICcuLi9jb25zdGFudHMvcmVwb3J0LWNhc2UuY29uc3RhbnRzJztcbmltcG9ydCB7IHJlcG9ydCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY2FzZS10eXBlLXNsaWRlci9jYXNlLXR5cGUuY29tcG9uZW50JztcbmltcG9ydCB7IFJlcG9ydEFDYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlcG9ydC1hLWNhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Vc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi11c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBSZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQtY2FzZS1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LWNhc2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctY2FzZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LWNhc2UuY29tcG9uZW50Lmxlc3MnLCAnLi4vLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0Nhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlcG9ydFRleHRzID0gUkVQT1JUX0NBU0U7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgY2FzZVR5cGUgPSByZXBvcnQ7XG4gIGNhc2VUeXBlU2VsZWN0ZWQgPSByZXBvcnQuUkVQT1JUX0NBU0U7XG4gIHBheWxvYWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KFJFUE9SVF9DQVNFX1BBWUxPQUQpKTtcbiAgcGFyYW1zID0gV09SS0ZMT1dfREVUQUlMU19QQVJBTVM7XG4gIHZhbGlkYXRpb25FcnJvciA9IFZBTElEQVRJT05fRVJST1I7XG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFJJU0tfQ0xBU1NJRklDQVRJT047XG4gIGFkZFRvQ2FzZVBheWxvYWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KEFERF9UT19DQVNFX1dPUktGTE9XKSk7XG4gIGV4Y2VwdGlvblR5cGUgPSBFWENFUFRJT05fVFlQRTtcbiAgb3ZlcnNpZ2h0X2NvbmZpZyA9IE9WRVJTSUdIVF9TRUxFQ1RPUl9DT05GSUc7XG4gIHNtaWxleU1lc3NhZ2UgPSBTTUlMRVlfTUVTU0FHRTtcbiAgYWN0aW9uQnV0dG9uczogYW55W10gPSBBQ1RJT05fQlVUVE9OUztcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHM6IGFueSA9IFNJREVfU0VMRUNUT1JfRUxFTUVOVFM7XG4gIGFkZGl0aW9uYWxPcHRpb25TdGF0dXM6IGFueSA9IEFERElUSU9OQUxfT1BUSU9OX1NUQVRVUztcbiAgZmllbGRTZWxlY3RvciA9IEZJRUxEX1NFTEVDVE9SO1xuICBjYXNlRGF0YTogYW55O1xuXG4gIGZpZWxkQ2xpY2tlZDogc3RyaW5nID0gJyc7XG4gIGFjdGl2ZUZpZWxkOiBzdHJpbmcgPSAnJztcbiAgYWN0aXZlU2VsZWN0b3I6IHN0cmluZyA9ICcnO1xuXG4gIHNob3dTbWlsZXk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2Nyb2xsVG9Cb3R0b206IGJvb2xlYW4gPSBmYWxzZTtcblxuICB3b3JrZmxvd0RldGFpbHNEYXRhOiBhbnk7XG4gIGdyb3VwTGlzdDogYW55W10gPSBbXTtcbiAgdXNlckxpc3Q6IGFueSA9IFtdO1xuICBzZWxlY3RlZE92ZXJzaWdodHM6IGFueSA9IHtcbiAgICBjY19saXN0OiBbXSxcbiAgICBjY19mYWlsdXJlc19saXN0OiBbXSxcbiAgfTtcbiAgbG9hZGVyID0ge1xuICAgIHVzZXJMaXN0TG9hZGVyOiBmYWxzZSxcbiAgICB0eXBlTG9hZGVyOiBmYWxzZSxcbiAgICBwcmlvcml0eUxvYWRlcjogZmFsc2UsXG4gICAgY2FzZUxvYWRlcjogZmFsc2UsXG4gICAgZ3JvdXBMaXN0TG9hZGVyOiBmYWxzZSxcbiAgICByZXBvcnRDYXNlTG9hZGVyOiBmYWxzZSxcbiAgICBwZXJtaXNzaW9uTG9hZGVyOiBmYWxzZSxcbiAgfTtcblxuICBASW5wdXQoKSBvcGVuZWRGcm9tOiBhbnk7XG4gIEBJbnB1dCgpIHNvdXJjZTogYW55O1xuICBASW5wdXQoKSBjYXNlSWQ6IGFueTtcbiAgQElucHV0KCkgbW9kZTogYW55O1xuICBASW5wdXQoKSB3b3JrZmxvd1R5cGU6IGFueTtcbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdHlEYXRhOiBhbnk7XG4gIEBJbnB1dCgpIGFzc2Vzc21lbnRRdWVzdGlvbjogYW55O1xuICBASW5wdXQoKSBjYXNlVHlwZVBlcm1pc3Npb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2FzZVJlcG9ydGVkQnkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB1c2VyTGlzdEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXBvcnRBQ2FzZVNlcnZpY2U6IFJlcG9ydEFDYXNlU2VydmljZSxcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uVXNlclNlcnZpY2U6IE9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wbGlhbmNlQ29tbW9uU2VydmljZTogQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZnJhbWVTZXJ2aWNlOiBJZnJhbWVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucGVybWlzc2lvbkxvYWRlcigpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMuZ2V0VXNlckxpc3QoKTtcbiAgICB0aGlzLmdldEdyb3VwTGlzdCgpO1xuXG4gICAgaWYgKHRoaXMud29ya2Zsb3dUeXBlID09PSAnQUNUVycpIHtcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cyA9IHsgLi4uQURESVRJT05BTF9PUFRJT05fU1RBVFVTIH07XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5nZXRDYXNlRGV0YWlscygpO1xuICAgIH1cbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwZXJtaXNzaW9uTG9hZGVyKCkge1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLmNhc2VUeXBlTG9hZGVyLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLmxvYWRlci5wZXJtaXNzaW9uTG9hZGVyID0gcmVzO1xuICAgIH0pO1xuICB9XG5cblxuICBnZXRVc2VyTGlzdCgpIHtcbiAgICB0aGlzLmxvYWRlci51c2VyTGlzdExvYWRlciA9IHRydWU7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Vc2VyU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLnVzZXJMaXN0ID0gcmVzO1xuICAgICAgdGhpcy51c2VyTGlzdEVtaXR0ZXIuZW1pdChyZXMpO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyAmJlxuICAgICAgICB0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHJlcG9ydC5BRERfQ0FTRV9UT19XT1JLRkxPV1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVPdmVyc2lnaHRzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRlci51c2VyTGlzdExvYWRlciA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0R3JvdXBMaXN0KCkge1xuICAgIHRoaXMubG9hZGVyLmdyb3VwTGlzdExvYWRlciA9IHRydWU7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uR3JvdXBzKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMuZ3JvdXBMaXN0ID0gcmVzO1xuICAgICAgdGhpcy5sb2FkZXIuZ3JvdXBMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXNlRGV0YWlscygpIHtcbiAgICB0aGlzLmxvYWRlci5jYXNlTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZVxuICAgICAgLmdldENhc2VEZXRhaWxzKHRoaXMuY2FzZUlkKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jYXNlUmVwb3J0ZWRCeS5lbWl0KHJlcz8uZGF0YT8uY3JlYXRlZF9ieSk7XG4gICAgICAgIHRoaXMuc2V0Q2FzZURldGFpbHMocmVzKTtcbiAgICAgICAgdGhpcy5sb2FkZXIuY2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRDYXNlRGV0YWlscyhyZXM6IGFueSkge1xuICAgIGlmIChyZXM/LmRhdGE/LmFkZGVkX3RvX3dvcmtmbG93IHx8IHRoaXMud29ya2Zsb3dUeXBlID09PSAnQUNUVycpIHtcbiAgICAgIHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9IHJlcG9ydC5BRERfQ0FTRV9UT19XT1JLRkxPVztcbiAgICAgIHRoaXMucG9wdWxhdGVBZGRDYXNlUGF5bG9hZChyZXM/LmRhdGEpO1xuICAgICAgdGhpcy5nZXRXb3JrZmxvd0RldGFpbHMocmVzPy5kYXRhKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPSByZXBvcnQuUkVQT1JUX0NBU0U7XG4gICAgICB0aGlzLnBvcHVsYXRlUmVwb3J0Q2FzZVBheWxvYWQocmVzPy5kYXRhKTtcbiAgICB9XG4gIH1cblxuICAvLyBlZGl0IGNhc2VcblxuICBnZXRXb3JrZmxvd0RldGFpbHMoZGF0YTogYW55KSB7XG4gICAgdGhpcy5wYXJhbXMuY2FzZV90eXBlLmlkID0gZGF0YT8uY2FzZV90eXBlPy5pZDtcbiAgICB0aGlzLnBhcmFtcy5wcmlvcml0eS5pZCA9IGRhdGE/LnByaW9yaXR5Py5pZDtcbiAgICB0aGlzLnBhcmFtcy5yY19kZXRhaWxzLmlkID1cbiAgICAgIGRhdGE/LnJjX2RldGFpbHM/Lm1haW5fcmNfaWQgfHwgZGF0YT8ucmNfZGV0YWlscz8uaWRzPy5bMF07XG4gICAgdGhpcy5wYXJhbXMuY2F0ZWdvcnkuaWQgPSBkYXRhPy5jYXRlZ29yeT8uaWRzWzBdO1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLmdldFdvcmtmbG93RGV0YWlscyh0aGlzLnBhcmFtcyk7XG4gIH1cblxuICBwb3B1bGF0ZVJlcG9ydENhc2VQYXlsb2FkKGRhdGE6IGFueSkge1xuICAgIHRoaXMucGF5bG9hZC5uYW1lID0gZGF0YT8ubmFtZTtcbiAgICB0aGlzLnBheWxvYWQuZGVzY3JpcHRpb24gPSBkYXRhPy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLnBheWxvYWQub2NjdXJyZW5jZV9kYXRlID0gbmV3IERhdGUoZGF0YT8ub2NjdXJyZW5jZV9kYXRlKTtcbiAgICB0aGlzLnBheWxvYWQucHJpb3JpdHkgPSBkYXRhPy5wcmlvcml0eTtcbiAgICB0aGlzLnBheWxvYWQuY2FzZV90eXBlID0gZGF0YT8uY2FzZV90eXBlO1xuICAgIHRoaXMucGF5bG9hZC5yY19kZXRhaWxzID0gZGF0YT8ucmNfZGV0YWlscztcbiAgICB0aGlzLnBheWxvYWQucmVjZWl2ZV91cGRhdGVzID0gZGF0YT8ucmVjZWl2ZV91cGRhdGVzO1xuICAgIHRoaXMucGF5bG9hZC5zdXBwb3J0aW5nX2RvY3VtZW50cyA9IGRhdGE/LnN1cHBvcnRpbmdfZG9jdW1lbnRzO1xuICAgIHRoaXMucGF5bG9hZC5jYXRlZ29yeSA9IGRhdGE/LmNhdGVnb3J5O1xuICB9XG5cbiAgcG9wdWxhdGVBZGRDYXNlUGF5bG9hZChkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS53b3JrZmxvd0NvZGUubmV4dCgnQUNXJyk7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLm5hbWUgPSBkYXRhPy5uYW1lO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5kZXNjcmlwdGlvbiA9IGRhdGE/LmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5wcmlvcml0eSA9IGRhdGE/LnByaW9yaXR5O1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5vY2N1cnJlbmNlX2RhdGUgPSBuZXcgRGF0ZShkYXRhPy5vY2N1cnJlbmNlX2RhdGUpO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlX3R5cGUgPSBkYXRhPy5jYXNlX3R5cGU7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLnJjX2RldGFpbHMgPSBkYXRhPy5yY19kZXRhaWxzO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5yaXNrX2NsYXNzID0gZGF0YT8ucmlza19jbGFzcztcbiAgICBpZiAodGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkgPSBkYXRhPy5jYXRlZ29yeTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhdGVnb3J5ID0gZGF0YT8uY2F0ZWdvcnk7XG4gICAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeSA9IGRhdGE/LmFkZGl0aW9uYWxfY2F0ZWdvcnk7XG4gICAgfVxuICAgIGlmIChkYXRhPy5jYXNlVG9Xb3JrZmxvdykge1xuICAgICAgdGhpcy5wb3B1bGF0ZUFkZGl0aW9uYWxGaWVsZHMoZGF0YT8uY2FzZVRvV29ya2Zsb3cpO1xuICAgICAgdGhpcy5wb3B1bGF0ZVJlc29sdXRpb25EZWFkbGluZShkYXRhPy5jYXNlVG9Xb3JrZmxvdyk7XG4gICAgICB0aGlzLnBvcHVsYXRlVXNlckRldGFpbHMoZGF0YT8uY2FzZVRvV29ya2Zsb3cpO1xuICAgICAgdGhpcy5zZXRPcHRpb25hbEZpZWxkKGRhdGE/LmNhc2VUb1dvcmtmbG93LCBkYXRhPy5yaXNrX2NsYXNzKTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZVVzZXJEZXRhaWxzKGRhdGE6IGFueSkge1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NpZ25lZXNfZ3JvdXAgPVxuICAgICAgZGF0YT8uYXNzaWduZWVzX2dyb3VwO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5vd25lcnMgPSBkYXRhPy5vd25lcnM7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LmFzc2lnbmVlcyA9IGRhdGE/LmFzc2lnbmVlcztcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cud29ya2Zsb3dfaWQgPSBkYXRhPy53b3JrZmxvd19pZDtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cuYXNzaWduZWVzX2dyb3VwID1cbiAgICAgIGRhdGE/LmFzc2lnbmVlc19ncm91cDtcbiAgfVxuXG4gIHBvcHVsYXRlUmVzb2x1dGlvbkRlYWRsaW5lKGRhdGE6IGFueSkge1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lID1cbiAgICAgIGRhdGE/LnJlc29sdXRpb25fZGVhZGxpbmU7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGE/LnJlc29sdXRpb25fZGVhZGxpbmU/LmR1ZV9kYXRlKTtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSAxKTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLmR1ZV9kYXRlID1cbiAgICAgIGRhdGUudG9JU09TdHJpbmcoKTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5yZXNvbHV0aW9uX2RlYWRsaW5lPy5zdGFnZXNfYXNzaWduZWVzPy5mb3JFYWNoKFxuICAgICAgKHN0YWdlOiBhbnkpID0+IHtcbiAgICAgICAgc3RhZ2UuZHVlX2RhdGUgPSBkYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHBvcHVsYXRlQWRkaXRpb25hbEZpZWxkcyhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cuZXhjZXB0aW9uX3R5cGUgPSBkYXRhPy5leGNlcHRpb25fdHlwZTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cuYXNzb2NpYXRlZF9yaXNrcyA9XG4gICAgICBkYXRhPy5hc3NvY2lhdGVkX3Jpc2tzO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5ldmlkZW5jZV9lbmFibGVkID1cbiAgICAgIGRhdGE/LmV2aWRlbmNlX2VuYWJsZWQ7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlY29tbWVuZGF0aW9ucyA9XG4gICAgICBkYXRhPy5yZWNvbW1lbmRhdGlvbnM7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93Lm92ZXJzaWdodHMuY2NfaWRzID1cbiAgICAgIGRhdGE/Lm92ZXJzaWdodHM/LmNjX2lkcztcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cub3ZlcnNpZ2h0cy5jY19mYWlsdXJlc19pZHMgPVxuICAgICAgZGF0YT8ub3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfaWRzO1xuICAgIHRoaXMucG9wdWxhdGVPdmVyc2lnaHRzKCk7XG4gIH1cblxuICBwb3B1bGF0ZU92ZXJzaWdodHMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZE92ZXJzaWdodHMuY2NfbGlzdCA9IHRoaXMudXNlckxpc3Q/LmZpbHRlcigodXNlcjogYW55KSA9PlxuICAgICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93Lm92ZXJzaWdodHMuY2NfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgdXNlcj8uX2lkIGFzIG5ldmVyXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19mYWlsdXJlc19saXN0ID0gdGhpcy51c2VyTGlzdD8uZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93Lm92ZXJzaWdodHMuY2NfZmFpbHVyZXNfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICB1c2VyPy5faWQgYXMgbmV2ZXJcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBzZXRPcHRpb25hbEZpZWxkKGRhdGE6IGFueSwgcmlza0NsYXNzOiBudW1iZXIpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMgPSB7XG4gICAgICBFWENFUFRJT05fVFlQRTogZGF0YT8uZXhjZXB0aW9uX3R5cGUgPyB0cnVlIDogZmFsc2UsXG4gICAgICBFVklERU5DRTogZGF0YT8uZXZpZGVuY2VfZW5hYmxlZCA/IHRydWUgOiBmYWxzZSxcbiAgICAgIEFTU09DSUFURURfUklTS1M6IGRhdGE/LmFzc29jaWF0ZWRfcmlza3M/LnRleHQ/Lmxlbmd0aCA/IHRydWUgOiBmYWxzZSxcbiAgICAgIE9WRVJTSUdIVDpcbiAgICAgICAgZGF0YT8ub3ZlcnNpZ2h0cz8uY2NfaWRzPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgZGF0YT8ub3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgIFJFQ09NTUVOREVEX0FDVElPTlM6XG4gICAgICAgIGRhdGE/LnJlY29tbWVuZGF0aW9ucz8udGV4dD8ubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZSxcbiAgICAgIFJJU0tfQ0xBU1NJRklDQVRJT046IHJpc2tDbGFzcyA/IHRydWUgOiBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICB9XG5cbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzKSkge1xuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1c1trZXldID09PSB0cnVlKSB7XG4gICAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XG4gIH1cblxuICAvLyBDaGFuZ2UgaW4gY2FzZSB0eXBlXG4gIG9uQ2FzZVR5cGVDaGFuZ2UoY2FzZVR5cGU6IHJlcG9ydCkge1xuICAgIHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9IGNhc2VUeXBlO1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2UucmNMaXN0Py5uZXh0KG51bGwpO1xuICAgIGlmIChjYXNlVHlwZSA9PT0gcmVwb3J0LlJFUE9SVF9DQVNFKSB7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2Uud29ya2Zsb3dDb2RlLm5leHQoJ1JBQycpO1xuICAgIH0gZWxzZSBpZiAoY2FzZVR5cGUgPT09IHJlcG9ydC5BRERfQ0FTRV9UT19XT1JLRkxPVykge1xuICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLndvcmtmbG93Q29kZS5uZXh0KCdBQ1cnKTtcbiAgICB9XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzID0geyAuLi5BRERJVElPTkFMX09QVElPTl9TVEFUVVMgfTtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5yZXNldE1vcmVPcHRpb24ubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHNhdmVTdXBwb3J0aW5nRG9jdW1lbnQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRvY3VtZW50ID0gZXZlbnQ/LmZpbGVzO1xuICAgIHRoaXMucGF5bG9hZC5zdXBwb3J0aW5nX2RvY3VtZW50cyA9IFsuLi5kb2N1bWVudF0gYXMgbmV2ZXI7XG4gIH1cblxuICBvbkNhdGVnb3J5Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBhcmFtcy5jYXRlZ29yeS5pZCA9IGV2ZW50WzBdO1xuICAgIGlmICh0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHJlcG9ydC5BRERfQ0FTRV9UT19XT1JLRkxPVykge1xuICAgICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuZ2V0V29ya2Zsb3dEZXRhaWxzKHRoaXMucGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBvblByaW9yaXR5Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBhcmFtcy5wcmlvcml0eS5pZCA9IGV2ZW50O1xuICAgIGlmICh0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHJlcG9ydC5BRERfQ0FTRV9UT19XT1JLRkxPVykge1xuICAgICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuZ2V0V29ya2Zsb3dEZXRhaWxzKHRoaXMucGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBvblJjQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBhcmFtcy5yY19kZXRhaWxzLmlkID0gZXZlbnQ7XG4gICAgaWYgKHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gcmVwb3J0LkFERF9DQVNFX1RPX1dPUktGTE9XKSB7XG4gICAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5nZXRXb3JrZmxvd0RldGFpbHModGhpcy5wYXJhbXMpO1xuICAgIH1cbiAgICB0aGlzLnBpY2tlclRvZ2dsZShmYWxzZSk7XG4gIH1cblxuICBvbkNhc2VUeXBlRHJvcGRvd25DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucGFyYW1zLmNhc2VfdHlwZS5pZCA9IGV2ZW50O1xuICAgIGlmICh0aGlzLmNhc2VUeXBlU2VsZWN0ZWQgPT09IHJlcG9ydC5BRERfQ0FTRV9UT19XT1JLRkxPVykge1xuICAgICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuZ2V0V29ya2Zsb3dEZXRhaWxzKHRoaXMucGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICByZXBvcnRDYXNlKCkge1xuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdDT01QTElBTkNFX1dPUktST09NJyB8fCB0aGlzLm9wZW5lZEZyb20gPT09ICdBU1NFU1NNRU5UJykge1xuICAgICAgdGhpcy5maWx0ZXJSZXNwb25zaWJpbGl0aWVzKHRoaXMucGF5bG9hZCk7XG4gICAgICB0aGlzLmZpbHRlckFzc2Vzc21lbnQodGhpcy5wYXlsb2FkKTtcbiAgICB9XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2hlY2tWYWxpZGF0aW9uKHRoaXMucGF5bG9hZCk7XG4gICAgaWYgKCFpc1ZhbGlkKSByZXR1cm47XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5yZXBvcnRBQ2FzZSh0aGlzLnBheWxvYWQpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLmNhc2VEYXRhID0geyAuLi5yZXM/LmRhdGEsIHNvdXJjZTogdGhpcy5zb3VyY2UgfTtcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIsICdlcnInKTtcbiAgICAgICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDYXNlKCkge1xuICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLnVwZGF0ZUNhc2UodGhpcy5wYXlsb2FkLCB0aGlzLmNhc2VJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNhc2VEYXRhID0geyAuLi5yZXM/LmRhdGEsIHNvdXJjZTogdGhpcy5zb3VyY2UgfTtcbiAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XG4gICAgICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2hlY2sgdmFsaWRhdGlvbiBmb3IgcmVwb3J0IGEgY2FzZVxuICBjaGVja1ZhbGlkYXRpb24ocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudmFsaWRhdGVOYW1lKHBheWxvYWQubmFtZSkgJiZcbiAgICAgIHRoaXMudmFsaWRhdGVEZXNjcmlwdGlvbihwYXlsb2FkLmRlc2NyaXB0aW9uLnRleHQpICYmXG4gICAgICB0aGlzLnZhbGlkYXRlQ2FzZVR5cGUocGF5bG9hZC5jYXNlX3R5cGUuaWQpICYmXG4gICAgICB0aGlzLnZhbGlkYXRlUmVwb3J0RGF0ZShwYXlsb2FkLm9jY3VycmVuY2VfZGF0ZSlcbiAgICApO1xuICB9XG5cbiAgY2hlY2tBZGRUb0Nhc2VWYWxpZGF0aW9uKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnZhbGlkYXRlTmFtZShwYXlsb2FkPy5uYW1lKSAmJlxuICAgICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKHBheWxvYWQ/LmRlc2NyaXB0aW9uPy50ZXh0KSAmJlxuICAgICAgdGhpcy52YWxpZGF0ZVJjKHBheWxvYWQpICYmXG4gICAgICB0aGlzLnZhbGlkYXRlQ2FzZVR5cGUocGF5bG9hZD8uY2FzZV90eXBlPy5pZCkgJiZcbiAgICAgIHRoaXMudmFsaWRhdGVDYXNlUHJpb3JpdHkocGF5bG9hZD8ucHJpb3JpdHk/LmlkKSAmJlxuICAgICAgdGhpcy52YWxpZGF0ZUNhc2VPd25lcihwYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ub3duZXJzKSAmJlxuICAgICAgKHRoaXMudmFsaWRhdGVDYXNlQXNzaWduZWUocGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlcykgfHxcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNhc2VBc3NpZ25lZUdyb3VwKFxuICAgICAgICAgIHBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NpZ25lZXNfZ3JvdXBcbiAgICAgICAgKSkgJiZcbiAgICAgIHRoaXMudmFsaWRhdGVDYXNlUmVzb2x1dGlvbkRlYWRsaW5lKFxuICAgICAgICBwYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVzb2x1dGlvbl9kZWFkbGluZVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICB2YWxpZGF0ZU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5uYW1lLmlzRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IubmFtZS5tZXNzYWdlID0gdGhpcy5yZXBvcnRUZXh0cy5lcnJvck1lc3NhZ2UubmFtZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIWRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5kZXNjcmlwdGlvbi5pc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmRlc2NyaXB0aW9uLm1lc3NhZ2UgPVxuICAgICAgICB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5kZXNjcmlwdGlvbjtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZUNhc2VUeXBlKGNhc2VUeXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoIWNhc2VUeXBlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5jYXNlVHlwZS5pc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VUeXBlLm1lc3NhZ2UgPVxuICAgICAgICB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5jYXNlVHlwZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZVJlcG9ydERhdGUocmVwb3J0RGF0ZTogc3RyaW5nKSB7XG4gICAgaWYgKCFyZXBvcnREYXRlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5yZXBvcnREYXRlLmlzRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IucmVwb3J0RGF0ZS5tZXNzYWdlID1cbiAgICAgICAgdGhpcy5yZXBvcnRUZXh0cy5lcnJvck1lc3NhZ2UucmVwb3J0RGF0ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZUNhc2VQcmlvcml0eShwcmlvcml0eTogc3RyaW5nKSB7XG4gICAgaWYgKCFwcmlvcml0eSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IucHJpb3JpdHkuaXNFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5wcmlvcml0eS5tZXNzYWdlID1cbiAgICAgICAgdGhpcy5yZXBvcnRUZXh0cy5lcnJvck1lc3NhZ2UucHJpb3JpdHk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFsaWRhdGVSYyhwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAoIXBheWxvYWQ/LnJjX2RldGFpbHM/Lmlkcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5yYy5pc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLnJjLm1lc3NhZ2UgPSB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5yYztcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcGF5bG9hZD8ucmNfZGV0YWlscz8uaWRzPy5sZW5ndGggPiAxICYmXG4gICAgICAhcGF5bG9hZD8ucmNfZGV0YWlscz8uc2VwYXJhdGVfcmNfY2FzZXMgJiZcbiAgICAgICFwYXlsb2FkPy5yY19kZXRhaWxzPy5tYWluX3JjX2lkXG4gICAgKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5tYWluUmMuaXNFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5tYWluUmMubWVzc2FnZSA9XG4gICAgICAgIHRoaXMucmVwb3J0VGV4dHMuZXJyb3JNZXNzYWdlLm1haW5SYztcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZUNhc2VPd25lcihvd25lcnM6IGFueSkge1xuICAgIGlmICghb3duZXJzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VPd25lci5pc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VPd25lci5tZXNzYWdlID1cbiAgICAgICAgdGhpcy5yZXBvcnRUZXh0cy5lcnJvck1lc3NhZ2UuY2FzZU93bmVyO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlQ2FzZUFzc2lnbmVlKGFzc2lnbmVlczogYW55KSB7XG4gICAgaWYgKCFhc3NpZ25lZXM/Lmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLmFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NpZ25lZXNfZ3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5jYXNlQXNzaWduZWUuaXNFcnJvciA9IHRydWU7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VBc3NpZ25lZS5tZXNzYWdlID1cbiAgICAgICAgICB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5jYXNlQXNzaWduZWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZUNhc2VBc3NpZ25lZUdyb3VwKGFzc2lnbmVlc19ncm91cDogYW55KSB7XG4gICAgaWYgKCFhc3NpZ25lZXNfZ3JvdXA/Lmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLmFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NpZ25lZXM/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5jYXNlQXNzaWduZWUuaXNFcnJvciA9IHRydWU7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VBc3NpZ25lZS5tZXNzYWdlID1cbiAgICAgICAgICB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5jYXNlQXNzaWduZWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZUNhc2VSZXNvbHV0aW9uRGVhZGxpbmUocmVzb2x1dGlvbkRlYWRsaW5lOiBhbnkpIHtcbiAgICBsZXQgY2FzZUFzc2lnbmVlOiBib29sZWFuID0gdHJ1ZTtcbiAgICByZXNvbHV0aW9uRGVhZGxpbmU/LnN0YWdlc19hc3NpZ25lZXM/LmZvckVhY2goKHN0YWdlOiBhbnkpID0+IHtcbiAgICAgIGlmICghc3RhZ2U/LmFzc2lnbmVlX2lkKSB7XG4gICAgICAgIGNhc2VBc3NpZ25lZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcmVzb2x1dGlvbkRlYWRsaW5lPy5kdWVfZGF0ZSB8fCAhY2FzZUFzc2lnbmVlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5jYXNlUmVzb2x1dGlvbkRlYWRsaW5lLmlzRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuY2FzZVJlc29sdXRpb25EZWFkbGluZS5tZXNzYWdlID1cbiAgICAgICAgdGhpcy5yZXBvcnRUZXh0cy5lcnJvck1lc3NhZ2UuY2FzZVJlc29sdXRpb25EZWFkbGluZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBmaWVsZCBzZWxlY3RvciBhbmQgZGUtc2VsZWN0b3JcbiAgb25GaWVsZENsaWNrZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmllbGRDbGlja2VkID0gZXZlbnQ7XG4gICAgdGhpcy5waWNrZXJUb2dnbGUoZXZlbnQgPyB0cnVlIDogZmFsc2UpO1xuICB9XG5cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1c1tldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XG4gIH1cblxuICBzZXRBY3RpdmVGaWVsZFNlbGVjdG9yKGZpZWxkOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuYWN0aXZlRmllbGQgPSBmaWVsZDtcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gdHlwZTtcbiAgICB0aGlzLmZpZWxkQ2xpY2tlZCA9IGZpZWxkO1xuICAgIHRoaXMucGlja2VyVG9nZ2xlKHRydWUpO1xuICB9XG5cbiAgZmllbGREZXNlbGVjdG9yKHR5cGU6IGFueSkge1xuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcbiAgICB0aGlzLmFjdGl2ZUZpZWxkID0gJyc7XG4gICAgdGhpcy5maWVsZENsaWNrZWQgPSAnJztcbiAgICB0aGlzLnBpY2tlclRvZ2dsZShmYWxzZSk7XG4gIH1cblxuICBwaWNrZXJUb2dnbGUodHlwZTogYm9vbGVhbikge1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHR5cGUpO1xuICB9XG5cbiAgLy8gQWRkIENhc2UgdG8gd29ya2Zsb3dcbiAgc2V0RXhjZXB0aW9uKHR5cGU6IGFueSkge1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5leGNlcHRpb25fdHlwZSA9IHR5cGU7XG4gIH1cblxuICBjaGVja0Rlc2NyaXB0aW9uKCkge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8uYXNzb2NpYXRlZF9yaXNrcz8udGV4dCxcbiAgICAgICd0ZXh0J1xuICAgICk7XG4gIH1cblxuICBzZWxlY3RGaWxlKHR5cGU6IHN0cmluZywgZmlsZXM6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcbiAgICAgICAgICAvLyB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuYXNzb2NpYXRlZF9yaXNrcy5hdHRhY2htZW50cy5wdXNoKG5hbWUpO1xuICAgICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlc1tpXS5maWxlLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGxvYWRGaWxlKGZpbGU6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2coZmlsZSwgdHlwZSwgJ2ZpbGUnKTtcbiAgfVxuXG4gIHNldEV2aWRlbmNlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cuZXZpZGVuY2VfZW5hYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgZGVsZXRlSXRlbSh0eXBlOiBhbnksIGVsZW1lbnQ6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnQ0FTRV9DQyc6IHtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5zZWxlY3RlZE92ZXJzaWdodHMuY2NfbGlzdD8uZmluZEluZGV4KFxuICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmVtcGxveWVlX2VtYWlsID09PSBlbGVtZW50Py5lbXBsb3llZV9lbWFpbFxuICAgICAgICApO1xuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2xpc3Q/LnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ0FTRV9GQ0MnOiB7XG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2ZhaWx1cmVzX2xpc3Q/LmZpbmRJbmRleChcbiAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5lbXBsb3llZV9lbWFpbCA9PT0gZWxlbWVudD8uZW1wbG95ZWVfZW1haWxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19mYWlsdXJlc19saXN0Py5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZWxlY3RvckFjdGlvbihldnQ6IGFueSwgdHlwZTogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdDQVNFX0NDJzoge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19saXN0ID0gZXZ0O1xuICAgICAgICB0aGlzLmdldENjVXNlcnMoZXZ0LCAnY2MnKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ0FTRV9GQ0MnOiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2ZhaWx1cmVzX2xpc3QgPSBldnQ7XG4gICAgICAgIHRoaXMuZ2V0Q2NVc2VycyhldnQsICdmY2MnKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XG4gICAgdGhpcy5maWVsZENsaWNrZWQgPSAnJztcbiAgICB0aGlzLnBpY2tlclRvZ2dsZShmYWxzZSk7XG4gIH1cblxuICBnZXRDY1VzZXJzKGV2dDogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1c2VyTGlzdCA9IHRoaXMudXNlckxpc3Q/LmZpbHRlcigodXNlcjogYW55KSA9PlxuICAgICAgZXZ0Py5pbmNsdWRlcyh1c2VyPy5lbXBsb3llZV9lbWFpbClcbiAgICApO1xuICAgIGlmICh0eXBlID09PSAnY2MnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19saXN0ID0gdXNlckxpc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2ZhaWx1cmVzX2xpc3QgPSB1c2VyTGlzdDtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJPdmVyc2lnaHRzKCkge1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5vdmVyc2lnaHRzLmNjX2lkcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19saXN0XG4gICAgICAgID8ubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZClcbiAgICAgICAgPy5maWx0ZXIoQm9vbGVhbikgYXMgYW55O1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5vdmVyc2lnaHRzLmNjX2ZhaWx1cmVzX2lkcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19mYWlsdXJlc19saXN0XG4gICAgICAgID8ubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9pZClcbiAgICAgICAgPy5maWx0ZXIoQm9vbGVhbikgYXMgYW55O1xuICB9XG5cbiAgZmlsdGVyUmVzcG9uc2liaWxpdGllcyhwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnQ09NUExJQU5DRV9XT1JLUk9PTScpIHtcbiAgICAgIHRoaXMucGF5bG9hZC5zb3VyY2UgPSB0aGlzLnNvdXJjZTtcbiAgICAgIGNvbnN0IHsgcmlkLCB1aWQsIHJjaWQgfSA9IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhIHx8IHt9O1xuICBcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkOiBSZWNvcmQ8bnVtYmVyLCBhbnk+ID0ge307XG4gIFxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHBheWxvYWQ/LnJlc3BvbnNpYmlsaXRpZXNfTGlua2VkIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IHsgcmVzcG9uc2liaWxpdHlJZCwgYXNzaWduZWVJZHMsIHJlc3BvbnNpYmlsaXR5Q2VudGVycyB9ID0gaXRlbTtcbiAgICAgICAgaWYgKHJlc3BvbnNpYmlsaXR5SWQgIT0gbnVsbCkge1xuICAgICAgICAgIHRyYW5zZm9ybWVkW3Jlc3BvbnNpYmlsaXR5SWRdID0ge1xuICAgICAgICAgICAgYXNzaWduZWVJZHMsXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICBcbiAgICAgIC8vIEFkZCBjdXJyZW50IHJlc3BvbnNpYmlsaXR5XG4gICAgICBpZiAocmlkICE9IG51bGwpIHtcbiAgICAgICAgdHJhbnNmb3JtZWRbcmlkXSA9IHtcbiAgICAgICAgICBhc3NpZ25lZUlkczogW3VpZF0sIC8vIEFzc3VtaW5nIGB1aWRgIGlzIGFzc2lnbmVlOyBjaGFuZ2UgaWYgaW5jb3JyZWN0XG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzOiBbcmNpZF0sXG4gICAgICAgIH07XG4gICAgICB9XG4gIFxuICAgICAgcGF5bG9hZC5yZXNwb25zaWJpbGl0aWVzX0xpbmtlZCA9IHRyYW5zZm9ybWVkO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckFzc2Vzc21lbnQocGF5bG9hZDogYW55KSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5vcGVuZWRGcm9tID09PSAnQVNTRVNTTUVOVCcgfHxcbiAgICAgIHRoaXMub3BlbmVkRnJvbSA9PT0gJ0NPTVBMSUFOQ0VfV09SS1JPT00nXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHJpZCwgdWlkLCByY2lkIH0gPSB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSB8fCB7fTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWRkaWQsXG4gICAgICAgIGFpZCxcbiAgICAgICAgcXVlc3Rpb25JZDogcXVlc3Rpb25faWQsXG4gICAgICAgIGF1ZGl0ZWVJZDogYXVkaXRlZV9pZCxcbiAgICAgIH0gPSB0aGlzLmFzc2Vzc21lbnRRdWVzdGlvbiB8fCB7fTtcbiAgICAgIHRoaXMucGF5bG9hZC5zb3VyY2UgPSB0aGlzLnNvdXJjZTtcbiAgICAgIHBheWxvYWQubGlua2VkX2Fzc2Vzc21lbnRfaXNzdWVzID0ge1xuICAgICAgICByaWQ6IHRoaXMuc291cmNlID8gcmlkIDogJycsXG4gICAgICAgIGFkZGlkLFxuICAgICAgICBhaWQsXG4gICAgICAgIHF1ZXN0aW9uX2lkLFxuICAgICAgICBhdWRpdGVlX2lkLFxuICAgICAgICB1aWQsXG4gICAgICAgIHJjaWQsXG4gICAgICB9O1xuICAgICAgcGF5bG9hZC5zb3VyY2UgPSB0aGlzLnNvdXJjZTtcbiAgICB9XG4gIH1cblxuICBhZGREdWVEYXRlSWQocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgYXNzZXNzbWVudENvbXBsZXRpb24gPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3d2RGF0YScpIHx8ICd7fScpLnJlc3BvbnNpYmlsaXR5RGF0YTtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICAgIHBheWxvYWQubGlua2VkX2Fzc2Vzc21lbnRfaXNzdWVzLmFkZGlkID1cbiAgICAgICAgYXNzZXNzbWVudENvbXBsZXRpb24/LmFkZGlkO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdER1ZURhdGUoZGF0ZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBsb2NhbERhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAvLyBBZGQgb25lIGRheSB0byB0aGUgZGF0ZVxuICAgIGxvY2FsRGF0ZS5zZXREYXRlKGxvY2FsRGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAvLyBTZXQgdGltZSB0byBtaWRuaWdodFxuICAgIGxvY2FsRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICByZXR1cm4gbG9jYWxEYXRlLnRvSVNPU3RyaW5nKCk7XG4gIH1cbiAgdXBkYXRlRGF0ZSgpIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5mb3JtYXREdWVEYXRlKFxuICAgICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGVcbiAgICApO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLmR1ZV9kYXRlID0gZGF0ZTtcblxuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LnJlc29sdXRpb25fZGVhZGxpbmU/LnN0YWdlc19hc3NpZ25lZXM/LmZvckVhY2goXG4gICAgICAoc3RhZ2U6IGFueSkgPT4ge1xuICAgICAgICBzdGFnZS5kdWVfZGF0ZSA9IGRhdGU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFkZFRvQ2FzZSgpIHtcbiAgICB0aGlzLmZpbHRlck92ZXJzaWdodHMoKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jaGVja0FkZFRvQ2FzZVZhbGlkYXRpb24odGhpcy5hZGRUb0Nhc2VQYXlsb2FkKTtcbiAgICBpZiAoIWlzVmFsaWQpIHJldHVybjtcbiAgICB0aGlzLnVwZGF0ZURhdGUoKTtcbiAgICBpZiAodGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5hZGRDYXNlVG9Xb3JrZmxvdygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnRURJVCcgJiYgdGhpcy53b3JrZmxvd1R5cGUgIT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5maWx0ZXJSZXNwb25zaWJpbGl0aWVzKHRoaXMuYWRkVG9DYXNlUGF5bG9hZCk7XG4gICAgICB0aGlzLmZpbHRlckFzc2Vzc21lbnQodGhpcy5hZGRUb0Nhc2VQYXlsb2FkKTtcbiAgICAgIHRoaXMudXBkYXRlQWRkVG9DYXNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyUmVzcG9uc2liaWxpdGllcyh0aGlzLmFkZFRvQ2FzZVBheWxvYWQpO1xuICAgICAgdGhpcy5maWx0ZXJBc3Nlc3NtZW50KHRoaXMuYWRkVG9DYXNlUGF5bG9hZCk7XG4gICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLnJlcG9ydEFDYXNlKHRoaXMuYWRkVG9DYXNlUGF5bG9hZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlRGF0YSA9IHsgLi4ucmVzPy5kYXRhLCBzb3VyY2U6IHRoaXMuc291cmNlIH07XG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2FzZVRvV29ya2Zsb3coKSB7XG4gICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IHRydWU7XG4gICAgbGV0IHBheWxvYWQgPSB7IC4uLnRoaXMuYWRkVG9DYXNlUGF5bG9hZCB9O1xuICAgIGNvbnN0IHdvcmtmbG93UGF5bG9hZCA9IHtcbiAgICAgIC4uLnBheWxvYWQsXG4gICAgICBjYXNlX2lkOiB0aGlzLmNhc2VJZCxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuYWRkQ2FzZVRvV29ya2Zsb3cod29ya2Zsb3dQYXlsb2FkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2FzZURhdGEgPSB7IC4uLnJlcz8uZGF0YSwgc291cmNlOiB0aGlzLnNvdXJjZSB9O1xuICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVBZGRUb0Nhc2UoKSB7XG4gICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2VcbiAgICAgIC51cGRhdGVDYXNlKHRoaXMuYWRkVG9DYXNlUGF5bG9hZCwgdGhpcy5jYXNlSWQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlRGF0YSA9IHsgLi4ucmVzPy5kYXRhLCBzb3VyY2U6IHRoaXMuc291cmNlIH07XG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICAvLyBTbWlsZXkgYWN0aW9uc1xuICBzbWlsZXlBY3Rpb25zKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dCA9PT0gJ3JlcG9ydENhc2UnKSB7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChldnQgPT09ICd2aWV3Q2FzZScpIHtcbiAgICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgICAgdGhpcy52aWV3Q2FzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHZpZXdDYXNlKCkge1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBsZXQgdXJsU3Vic3RyaW5nID0gJyc7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5jYXNlVHlwZVBlcm1pc3Npb24pIHtcbiAgICAgIHVybFN1YnN0cmluZyA9ICcvY2FzZS9yZXBvcnRlZC1jYXNlcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybFN1YnN0cmluZyA9ICcvY2FzZS9yZXBvcnRlZC1jYXNlcy9yZXBvcnRlZC1ieS1tZSc7XG4gICAgfVxuICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHVybFN1YnN0cmluZztcblxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIHRoaXMuY2xvc2VTbWlsZXkoKTtcbiAgfVxuXG4gIHJlc2V0Rm9ybSgpIHtcbiAgICB0aGlzLnJlcG9ydEFDYXNlUmVzZXQoKTtcbiAgICB0aGlzLmFkZFRvQ2FzZVJlc2V0KCk7XG4gIH1cblxuICByZXBvcnRBQ2FzZVJlc2V0KCkge1xuICAgIHRoaXMucGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoUkVQT1JUX0NBU0VfUEFZTE9BRCkpO1xuICB9XG5cbiAgYWRkVG9DYXNlUmVzZXQoKSB7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLm5hbWUgPSAnJztcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuZGVzY3JpcHRpb24gPSB7IHRleHQ6ICcnLCBhdHRhY2htZW50czogW10gfTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQucHJpb3JpdHkgPSB7IGlkOiAnJywgY3VzdG9tX2ZpZWxkczogW10gfTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZV90eXBlID0geyBpZDogJycsIGN1c3RvbV9maWVsZHM6IFtdIH07XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLnJjX2RldGFpbHMgPSB7XG4gICAgICBpZHM6IFtdLFxuICAgICAgc2VwYXJhdGVfcmNfY2FzZXM6IGZhbHNlLFxuICAgICAgbWFpbl9yY19pZDogJycsXG4gICAgfTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2F0ZWdvcnkgPSB7IGlkczogW10sIGN1c3RvbV9maWVsZHM6IFtdIH07XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkgPSB7IGlkczogW10sIGN1c3RvbV9maWVsZHM6IFtdIH07XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3MgPSAwO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NpZ25lZXNfZ3JvdXAgPSBbXTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cub3duZXJzID0gW107XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LmFzc2lnbmVlcyA9IFtdO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy53b3JrZmxvd19pZCA9ICcnO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lID0ge1xuICAgICAgZHVlX2RhdGU6ICcnLFxuICAgICAgc3RhZ2VzX2Fzc2lnbmVlczogW10sXG4gICAgICBhc3NpZ25lZV9yZW1pbmRfYmVmb3JlOiAwLFxuICAgICAgb3duZXJfcmVtaW5kX2JlZm9yZTogMCxcbiAgICB9O1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5leGNlcHRpb25fdHlwZSA9ICcnO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NvY2lhdGVkX3Jpc2tzID0ge1xuICAgICAgdGV4dDogJycsXG4gICAgICBhdHRhY2htZW50czogW10sXG4gICAgfTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cuZXZpZGVuY2VfZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZWNvbW1lbmRhdGlvbnMgPSB7XG4gICAgICB0ZXh0OiAnJyxcbiAgICAgIGF0dGFjaG1lbnRzOiBbXSxcbiAgICB9O1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5vdmVyc2lnaHRzID0ge1xuICAgICAgY2NfaWRzOiBbXSxcbiAgICAgIGNjX2ZhaWx1cmVzX2lkczogW10sXG4gICAgfTtcbiAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19saXN0ID0gW107XG4gICAgdGhpcy5zZWxlY3RlZE92ZXJzaWdodHMuY2NfZmFpbHVyZXNfbGlzdCA9IFtdO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cyA9IHsgLi4uQURESVRJT05BTF9PUFRJT05fU1RBVFVTIH07XG4gIH1cblxuICBjbG9zZVNtaWxleShldnQ/OiBhbnkpIHtcbiAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlV29ya0Zsb3codGhpcy5jYXNlRGF0YSwgZmFsc2UpO1xuICB9XG5cbiAgY2xvc2VXb3JrRmxvdyhldnQ6IGFueSwgY29uZmlybTogYW55KSB7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQsIGNvbmZpcm0gfSk7XG4gIH1cblxuICBvbkNhc2VMb2FkZXIoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICd0eXBlJzoge1xuICAgICAgICB0aGlzLmxvYWRlci50eXBlTG9hZGVyID0gZXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAncHJpb3JpdHknOiB7XG4gICAgICAgIHRoaXMubG9hZGVyLnByaW9yaXR5TG9hZGVyID0gZXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNwbGF5QWRkaXRpb25hbE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cy5FWENFUFRJT05fVFlQRSB8fFxuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzLkVWSURFTkNFIHx8XG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMuUFJJT1JJVFkgfHxcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cy5JU1NVRV9UWVBFIHx8XG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMuQVNTT0NJQVRFRF9SSVNLUyB8fFxuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzLk9WRVJTSUdIVCB8fFxuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzLlJFQ09NTUVOREVEX0FDVElPTlNcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNoZWNrbG9hZGVyKCkge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5sb2FkZXIudHlwZUxvYWRlciAmJlxuICAgICAgICB0aGlzLmxvYWRlci5wcmlvcml0eUxvYWRlciAmJlxuICAgICAgICB0aGlzLmxvYWRlci5jYXNlTG9hZGVyICYmXG4gICAgICAgIHRoaXMubG9hZGVyLmdyb3VwTGlzdExvYWRlciAmJlxuICAgICAgICB0aGlzLmxvYWRlci51c2VyTGlzdExvYWRlclxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmxvYWRlci50eXBlTG9hZGVyICYmIHRoaXMubG9hZGVyLnByaW9yaXR5TG9hZGVyKSB8fFxuICAgICAgKHRoaXMubG9hZGVyLnBlcm1pc3Npb25Mb2FkZXIgJiYgdGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJykgfHxcbiAgICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXJcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIXNob3dTbWlsZXlcIiBjbGFzcz1cIndvcmtmbG93LWNhc2VcIj5cbiAgPGFwcC1jYXNlLXR5cGVcbiAgICAqbmdJZj1cIm1vZGUgIT09ICdFRElUJyAmJiBjYXNlVHlwZVBlcm1pc3Npb25cIlxuICAgIFtmaWVsZFNlbGVjdGVkXT1cImZpZWxkQ2xpY2tlZFwiXG4gICAgKGNhc2VUeXBlQ2hhbmdlKT1cIm9uQ2FzZVR5cGVDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2FwcC1jYXNlLXR5cGU+XG4gIDxhcHAtbGlua2VkLXJlc3BvbnNpYmlsaXRpZXNcbiAgICAqbmdJZj1cIlsnQ09NUExJQU5DRV9XT1JLUk9PTScsICdBU1NFU1NNRU5UJ10uaW5jbHVkZXMob3BlbmVkRnJvbSlcIlxuICAgIFtwYXlsb2FkXT1cIlxuICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0UgPyBwYXlsb2FkIDogYWRkVG9DYXNlUGF5bG9hZFxuICAgIFwiXG4gICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgW2ZpZWxkU2VsZWN0ZWRdPVwiZmllbGRDbGlja2VkXCJcbiAgICBbcmVzcG9uc2liaWxpdHlEYXRhXT1cInJlc3BvbnNpYmlsaXR5RGF0YVwiXG4gICAgKGZpZWxkQ2xpY2tlZCk9XCJvbkZpZWxkQ2xpY2tlZCgkZXZlbnQpXCJcbiAgPjwvYXBwLWxpbmtlZC1yZXNwb25zaWJpbGl0aWVzPlxuICA8YXBwLWxpbmtlZC1hc3Nlc3NtZW50XG4gICAgKm5nSWY9XCJvcGVuZWRGcm9tID09PSAnQVNTRVNTTUVOVCdcIlxuICAgIFtwYXlsb2FkXT1cInBheWxvYWRcIlxuICAgIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIlxuICAgIFtmaWVsZFNlbGVjdGVkXT1cImZpZWxkQ2xpY2tlZFwiXG4gICAgW3Jlc3BvbnNpYmlsaXR5RGF0YV09XCJyZXNwb25zaWJpbGl0eURhdGFcIlxuICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCJcbiAgICAoZmllbGRDbGlja2VkKT1cIm9uRmllbGRDbGlja2VkKCRldmVudClcIlxuICA+PC9hcHAtbGlua2VkLWFzc2Vzc21lbnQ+XG4gIDxhcHAtY2FzZS1kZXRhaWxzXG4gICAgW3BheWxvYWRdPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/IHBheWxvYWQgOiBhZGRUb0Nhc2VQYXlsb2FkXG4gICAgXCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcbiAgICBbY2FzZVR5cGVTZWxlY3RlZF09XCJjYXNlVHlwZVNlbGVjdGVkXCJcbiAgPjwvYXBwLWNhc2UtZGV0YWlscz5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XXCJcbiAgICBjbGFzcz1cImhlYWQtbGFiZWwgdngtZnMtMTAgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTRcIlxuICA+XG4gICAgQ0FTRSBERVRBSUxTXG4gIDwvc3Bhbj5cbiAgPGFwcC1pbmZvcm1hdGlvbi1ibG9ja1xuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICA+PC9hcHAtaW5mb3JtYXRpb24tYmxvY2s+XG4gIDxhcHAtcmMtZGV0YWlsc1xuICAgIFtwYXlsb2FkXT1cIlxuICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0UgPyBwYXlsb2FkIDogYWRkVG9DYXNlUGF5bG9hZFxuICAgIFwiXG4gICAgW2ZpZWxkU2VsZWN0ZWRdPVwiZmllbGRDbGlja2VkXCJcbiAgICBbY2FzZVR5cGVTZWxlY3RlZF09XCJjYXNlVHlwZVNlbGVjdGVkXCJcbiAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXG4gICAgW2luaXRpYWxTZWxlY3Rpb25dPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRVxuICAgICAgICA/IHBheWxvYWQ/LnJjX2RldGFpbHNcbiAgICAgICAgOiBhZGRUb0Nhc2VQYXlsb2FkPy5yY19kZXRhaWxzXG4gICAgXCJcbiAgICBbbW9kZV09XCJtb2RlXCJcbiAgICBbd29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXG4gICAgKGZpZWxkQ2xpY2tlZCk9XCJvbkZpZWxkQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAob25SY0NoYW5nZSk9XCJvblJjQ2hhbmdlKCRldmVudClcIlxuICAgIChmaWx0ZXJEZXNlbGVjdG9yKT1cInBpY2tlclRvZ2dsZSgkZXZlbnQpXCJcbiAgPjwvYXBwLXJjLWRldGFpbHM+XG4gIDxhcHAtY2FzZS10eXBlLWRyb3Bkb3duXG4gICAgW3BheWxvYWRdPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/IHBheWxvYWQgOiBhZGRUb0Nhc2VQYXlsb2FkXG4gICAgXCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcbiAgICBbaW5pdGlhbFNlbGVjdGlvbl09XCJcbiAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLlJFUE9SVF9DQVNFXG4gICAgICAgID8gcGF5bG9hZD8uY2FzZV90eXBlXG4gICAgICAgIDogYWRkVG9DYXNlUGF5bG9hZD8uY2FzZV90eXBlXG4gICAgXCJcbiAgICBbbW9kZV09XCJtb2RlXCJcbiAgICBbY2FzZVR5cGVTZWxlY3RlZF09XCJjYXNlVHlwZVNlbGVjdGVkXCJcbiAgICBbd29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXG4gICAgKG9uQ2FzZVR5cGVDaGFuZ2UpPVwib25DYXNlVHlwZURyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgIChvbkNhc2VUeXBlTG9hZGluZyk9XCJvbkNhc2VMb2FkZXIoJGV2ZW50LCAndHlwZScpXCJcbiAgPjwvYXBwLWNhc2UtdHlwZS1kcm9wZG93bj5cbiAgPGFwcC1jYXNlLWNhdGVnb3J5XG4gICAgW3BheWxvYWRdPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/IHBheWxvYWQgOiBhZGRUb0Nhc2VQYXlsb2FkXG4gICAgXCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFtjYXNlVHlwZVNlbGVjdGVkXT1cImNhc2VUeXBlU2VsZWN0ZWRcIlxuICAgIFtpbml0aWFsU2VsZWN0aW9uXT1cIlxuICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0VcbiAgICAgICAgPyBwYXlsb2FkPy5jYXRlZ29yeVxuICAgICAgICA6IGFkZFRvQ2FzZVBheWxvYWQ/LmNhdGVnb3J5XG4gICAgXCJcbiAgICBbaW5pdGlhbEFkZGl0aW9uYWxTZWxlY3Rpb25dPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRVxuICAgICAgICA/IHBheWxvYWQ/LmFkZGl0aW9uYWxfY2F0ZWdvcnlcbiAgICAgICAgOiBhZGRUb0Nhc2VQYXlsb2FkPy5hZGRpdGlvbmFsX2NhdGVnb3J5XG4gICAgXCJcbiAgICBbbW9kZV09XCJtb2RlXCJcbiAgICBbd29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXG4gICAgKG9uQ2F0ZWdvcnlDaGFuZ2UpPVwib25DYXRlZ29yeUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoZmllbGRDbGlja2VkKT1cIm9uRmllbGRDbGlja2VkKCRldmVudClcIlxuICAgIChmaWx0ZXJEZXNlbGVjdG9yKT1cInBpY2tlclRvZ2dsZSgkZXZlbnQpXCJcbiAgPjwvYXBwLWNhc2UtY2F0ZWdvcnk+XG4gIDxhcHAtcmVwb3J0LWRhdGVcbiAgICBbcGF5bG9hZF09XCJcbiAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLlJFUE9SVF9DQVNFID8gcGF5bG9hZCA6IGFkZFRvQ2FzZVBheWxvYWRcbiAgICBcIlxuICAgIFtmaWVsZFNlbGVjdGVkXT1cImZpZWxkQ2xpY2tlZFwiXG4gICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxuICAgIChmaWVsZENsaWNrZWQpPVwib25GaWVsZENsaWNrZWQoJGV2ZW50KVwiXG4gID48L2FwcC1yZXBvcnQtZGF0ZT5cbiAgPGFwcC1jYXNlLXByaW9yaXR5XG4gICAgW3BheWxvYWRdPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/IHBheWxvYWQgOiBhZGRUb0Nhc2VQYXlsb2FkXG4gICAgXCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFtjYXNlVHlwZVNlbGVjdGVkXT1cImNhc2VUeXBlU2VsZWN0ZWRcIlxuICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcbiAgICBbaW5pdGlhbFNlbGVjdGlvbl09XCJcbiAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLlJFUE9SVF9DQVNFXG4gICAgICAgID8gcGF5bG9hZD8ucHJpb3JpdHlcbiAgICAgICAgOiBhZGRUb0Nhc2VQYXlsb2FkPy5wcmlvcml0eVxuICAgIFwiXG4gICAgW21vZGVdPVwibW9kZVwiXG4gICAgW3dvcmtmbG93VHlwZV09XCJ3b3JrZmxvd1R5cGVcIlxuICAgIChvblByaW9yaXR5Q2hhbmdlKT1cIm9uUHJpb3JpdHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG9uUHJpb3JpdHlMb2FkZXIpPVwib25DYXNlTG9hZGVyKCRldmVudCwgJ3ByaW9yaXR5JylcIlxuICA+PC9hcHAtY2FzZS1wcmlvcml0eT5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XXCJcbiAgICBjbGFzcz1cImhlYWQtbGFiZWwgdngtZnMtMTAgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTRcIlxuICA+XG4gICAgVVNFUiBERVRBSUxTXG4gIDwvc3Bhbj5cbiAgPGFwcC1jYXNlLW93bmVyc1xuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgIFtwYXlsb2FkXT1cImFkZFRvQ2FzZVBheWxvYWRcIlxuICAgIFtpbml0aWFsU2VsZWN0aW9uXT1cImFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vd25lcnNcIlxuICAgIFt3b3JrZmxvd0lkXT1cImFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py53b3JrZmxvd19pZFwiXG4gICAgW2ZpZWxkU2VsZWN0ZWRdPVwiZmllbGRDbGlja2VkXCJcbiAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXG4gICAgW21vZGVdPVwibW9kZVwiXG4gICAgKGZpZWxkQ2xpY2tlZCk9XCJvbkZpZWxkQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAoZmlsdGVyRGVzZWxlY3Rvcik9XCJwaWNrZXJUb2dnbGUoJGV2ZW50KVwiXG4gID48L2FwcC1jYXNlLW93bmVycz5cbiAgPGFwcC1jYXNlLWFzc2lnbmVlc1xuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgIFtwYXlsb2FkXT1cImFkZFRvQ2FzZVBheWxvYWRcIlxuICAgIFtmaWVsZFNlbGVjdGVkXT1cImZpZWxkQ2xpY2tlZFwiXG4gICAgW2luaXRpYWxTZWxlY3Rpb25dPVwiYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3dcIlxuICAgIFt1c2VyTGlzdF09XCJ1c2VyTGlzdFwiXG4gICAgW2dyb3VwTGlzdF09XCJncm91cExpc3RcIlxuICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcbiAgICAoZmllbGRDbGlja2VkKT1cIm9uRmllbGRDbGlja2VkKCRldmVudClcIlxuICAgIChmaWx0ZXJEZXNlbGVjdG9yKT1cInBpY2tlclRvZ2dsZSgkZXZlbnQpXCJcbiAgPjwvYXBwLWNhc2UtYXNzaWduZWVzPlxuICA8YXBwLWZpZWxkLWhvbGRlclxuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0VcIlxuICAgIFtpbWFnZV09XCJBU1NFVFMuZm9ybWF0X2V2aWRlbmNlXCJcbiAgICBbZGlzYWJsZWRdPVwiZmllbGRTZWxlY3Rvcj8uaW5jbHVkZXMoZmllbGRDbGlja2VkKVwiXG4gICAgW2NoZWNrZWRdPVwicGF5bG9hZD8uc3VwcG9ydGluZ19kb2N1bWVudHM/Lmxlbmd0aFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGZpZWxkPlxuICAgICAgPGFwcC12Yy1sYWJlbFxuICAgICAgICBsYWJlbFxuICAgICAgICBbbGFiZWxUZXh0XT1cInJlcG9ydFRleHRzLmNhc2VfZGV0YWlscy5hdHRhY2htZW50cy50aXRsZVwiXG4gICAgICA+PC9hcHAtdmMtbGFiZWw+XG4gICAgICA8YXBwLWZvcm1hdC1hbmQtZXZpZGVuY2VcbiAgICAgICAgKHVwZGF0ZUZpbGVzKT1cInNhdmVTdXBwb3J0aW5nRG9jdW1lbnQoJGV2ZW50KVwiXG4gICAgICAgIFttb2RlXT1cIidyZXBvcnRBQ2FzZSdcIlxuICAgICAgICBbZm9ybWF0RXZpZGFuY2VEYXRhXT1cInBheWxvYWQ/LnN1cHBvcnRpbmdfZG9jdW1lbnRzXCJcbiAgICAgID48L2FwcC1mb3JtYXQtYW5kLWV2aWRlbmNlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2FwcC1maWVsZC1ob2xkZXI+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5BRERfQ0FTRV9UT19XT1JLRkxPV1wiXG4gICAgY2xhc3M9XCJoZWFkLWxhYmVsIHZ4LWZzLTEwIHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1iLTRcIlxuICA+XG4gICAgQ0FTRSBSRVNPTFVUSU9OIERFVEFJTFNcbiAgPC9zcGFuPlxuICA8YXBwLWNhc2UtcmVzb2x1dGlvbi1kZWFkbGluZVxuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgIFtwYXlsb2FkXT1cImFkZFRvQ2FzZVBheWxvYWRcIlxuICAgIFt1c2VyTGlzdF09XCJ1c2VyTGlzdFwiXG4gICAgW2dyb3VwTGlzdF09XCJncm91cExpc3RcIlxuICAgIFtpbml0aWFsU2VsZWN0aW9uXT1cImFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93XCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFttb2RlXT1cIm1vZGVcIlxuICAgIChmaWVsZENsaWNrZWQpPVwib25GaWVsZENsaWNrZWQoJGV2ZW50KVwiXG4gICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxuICAgIChmaWx0ZXJEZXNlbGVjdG9yKT1cInBpY2tlclRvZ2dsZSgkZXZlbnQpXCJcbiAgPjwvYXBwLWNhc2UtcmVzb2x1dGlvbi1kZWFkbGluZT5cbiAgPHNwYW5cbiAgICAqbmdJZj1cIlxuICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1cgJiZcbiAgICAgIGRpc3BsYXlBZGRpdGlvbmFsT3B0aW9uc1xuICAgIFwiXG4gICAgY2xhc3M9XCJoZWFkLWxhYmVsIHZ4LWZzLTEwIHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1saC00XCJcbiAgPlxuICAgIEFERElUSU9OQUwgT1BUSU9OU1xuICA8L3NwYW4+XG4gIDwhLS0gRXhjZXB0aW9uIFR5cGUgLS0+XG4gIDxhcHAtZmllbGQtaG9sZGVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGFkZGl0aW9uYWxPcHRpb25TdGF0dXMuRVhDRVBUSU9OX1RZUEUgJiZcbiAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XXG4gICAgXCJcbiAgICBbc2Nyb2xsVG9Cb3R0b21dPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIFthY3RpdmVdPVwiZmFsc2VcIlxuICAgIFtkaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZENsaWNrZWQpXCJcbiAgICBbY2hlY2tlZF09XCJhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8uZXhjZXB0aW9uX3R5cGVcIlxuICAgIFtpbWFnZV09XCJBU1NFVFMub2JqZWN0aXZlc1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGZpZWxkPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkV4Y2VwdGlvbiBUeXBlPC9sYWJlbD5cbiAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgY2xhc3M9XCJtYWluLWZpbGVkXCJcbiAgICAgICAgW3ZhbHVlXT1cImV4Y2VwdGlvblR5cGUuREVTSUdOX0VYQ0VQVElPTlwiXG4gICAgICAgIG5hbWU9XCJleGNlcHRpb24tdHlwZVwiXG4gICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5leGNlcHRpb25fdHlwZSA9PT1cbiAgICAgICAgICBleGNlcHRpb25UeXBlLkRFU0lHTl9FWENFUFRJT05cbiAgICAgICAgXCJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRFeGNlcHRpb24oZXhjZXB0aW9uVHlwZS5ERVNJR05fRVhDRVBUSU9OKVwiXG4gICAgICAgID5EZXNpZ24gRXhjZXB0aW9uXG4gICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgY2xhc3M9XCJtYWluLWZpbGVkXCJcbiAgICAgICAgW3ZhbHVlXT1cImV4Y2VwdGlvblR5cGUuRUZGRUNUSVZFTkVTU19FWENFUFRJT05cIlxuICAgICAgICBuYW1lPVwiZXhjZXB0aW9uLXR5cGVcIlxuICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICBhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8uZXhjZXB0aW9uX3R5cGUgPT09XG4gICAgICAgICAgZXhjZXB0aW9uVHlwZS5FRkZFQ1RJVkVORVNTX0VYQ0VQVElPTlxuICAgICAgICBcIlxuICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNldEV4Y2VwdGlvbihleGNlcHRpb25UeXBlLkVGRkVDVElWRU5FU1NfRVhDRVBUSU9OKVwiXG4gICAgICAgID5FZmZlY3RpdmVuZXNzIEV4Y2VwdGlvblxuICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYXBwLWZpZWxkLWhvbGRlcj5cblxuICA8IS0tIEFzc29jaWF0ZWQgUmlza3MgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb25TdGF0dXMuQVNTT0NJQVRFRF9SSVNLU1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImZpZWxkU2VsZWN0b3I/LmluY2x1ZGVzKGZpZWxkQ2xpY2tlZClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cImFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy50ZXh0XCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLmFzc29jaWF0ZWRfcmlza3NcIlxuICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy50ZXh0Py50cmltKClcbiAgICAgICAgICAgID8ubGVuZ3RoXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy50ZXh0Py50cmltKClcbiAgICAgICAgICAgIC5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QXNzb2NpYXRlZCBSaXNrcyA8L2xhYmVsPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgICA/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWxpc3RcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCB1cGxvYWRpbmdGaWxlIG9mIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93XG4gICAgICAgICAgICAgICAgPy5hc3NvY2lhdGVkX3Jpc2tzPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyB1cGxvYWRpbmdGaWxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgICA/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWxpc3RcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBmaWxlIG9mIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzXG4gICAgICAgICAgICAgICAgPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBmaWxlPy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShmaWxlLCAnQVNTT0NJQVRFRF9SSVNLUycpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NvY2lhdGVkX3Jpc2tzLnRleHRcIlxuICAgICAgICAgIFtlZGl0b3JDb25maWddPVwie1xuICAgICAgICAgICAgbW9kZTogJ3ByaW1lJyxcbiAgICAgICAgICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcbiAgICAgICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgICAgICBmaWxlOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQXNzb2NpYXRlZCBSaXNrcydcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2tPdXRzaWRlKT1cImNoZWNrRGVzY3JpcHRpb24oKVwiXG4gICAgICAgICAgKHNlbmRTYXZlZEZpbGVzKT1cInNlbGVjdEZpbGUoJ0FTU09DSUFURURfUklTS1MnLCAkZXZlbnQpXCJcbiAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBPdmVyc2VlciAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxuICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvblN0YXR1cy5PVkVSU0lHSFRcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZENsaWNrZWQpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/Lm92ZXJzaWdodHM/LmNjX2lkcz8ubGVuZ3RoIHx8XG4gICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vdmVyc2lnaHRzPy5jY19mYWlsdXJlc19pZHM/Lmxlbmd0aFxuICAgICAgXCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLm92ZXJzaWdodFwiXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vdmVyc2lnaHRzPy5jY19pZHM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/Lm92ZXJzaWdodHM/LmNjX2ZhaWx1cmVzX2lkc1xuICAgICAgICAgICAgICA/Lmxlbmd0aFxuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vdmVyc2lnaHRzPy5jY19pZHM/Lmxlbmd0aCB8fFxuICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vdmVyc2lnaHRzPy5jY19mYWlsdXJlc19pZHM/Lmxlbmd0aFxuICAgICAgICBcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk92ZXJzaWdodDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIiFzZWxlY3RlZE92ZXJzaWdodHM/LmNjX2xpc3Q/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJ0NBU0VfQ0MnLCAnQ0FTRV9DQycpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBoYXZlIG92ZXJzaWdodCBvZiB0aGlzIGNhc2U/XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJzZWxlY3RlZE92ZXJzaWdodHM/LmNjX2xpc3Q/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVJdGVtKCdDQVNFX0NDJywgc2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19saXN0WzBdKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJzZWxlY3RlZE92ZXJzaWdodHM/LmNjX2xpc3RbMF0/LmVtcGxveWVlX25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfbGlzdFswXT8uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJDQy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfbGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpZWxkICE9PSAnQ0FTRV9DQydcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJ0NBU0VfQ0MnLCAnQ0FTRV9DQycpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgIXNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdCB8fFxuICAgICAgICAgICAgc2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19mYWlsdXJlc19saXN0Py5sZW5ndGggPT09IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlRmllbGRTZWxlY3RvcignQ0FTRV9GQ0MnLCAnQ0FTRV9GQ0MnKVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBzaG91bGQgYmUgbm90aWZpZWQgaWYgdGhlIGNhc2UgaXMgbm90IHJlc29sdmVkP1wiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdD8ubGVuZ3RoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBkZWxldGVJdGVtKCdDQVNFX0ZDQycsIHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdFswXSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19mYWlsdXJlc19saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIkZDQy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19mYWlsdXJlc19saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdD8uc2xpY2UoMSk/Lmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWVsZCAhPT0gJ0NBU0VfRkNDJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlRmllbGRTZWxlY3RvcignQ0FTRV9GQ0MnLCAnQ0FTRV9GQ0MnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjQ0MgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBjYyBvZiBzZWxlY3RlZE92ZXJzaWdodHM/LmNjX2xpc3QgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oJ0NBU0VfQ0MnLCBjYylcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGNjPy5lbXBsb3llZV9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNGQ0MgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBmY2Mgb2Ygc2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19mYWlsdXJlc19saXN0IHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJkZWxldGVJdGVtKCdDQVNFX0ZDQycsIGZjYylcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGZjYz8uZW1wbG95ZWVfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBFdmlkZW5jZSAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvblN0YXR1cy5FVklERU5DRVwiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImZpZWxkU2VsZWN0b3I/LmluY2x1ZGVzKGZpZWxkQ2xpY2tlZClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJ0cnVlXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5FdmlkZW5jZTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCJcbiAgICAgICAgICAgID5EbyB5b3Ugd2FudCBldmlkZW5jZSBvZiBjb21wbGV0aW9uIG9mIHRoZSBjYXNlIHRvIGJlXG4gICAgICAgICAgICB1cGxvYWRlZD88L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidmaWxlLWV2aWRlbmNlJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCIxXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LmV2aWRlbmNlX2VuYWJsZWRcIlxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNldEV2aWRlbmNlKHRydWUpXCJcbiAgICAgICAgICAgICAgPlllc1xuICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidmaWxlLWV2aWRlbmNlJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCIwXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiIWFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5ldmlkZW5jZV9lbmFibGVkXCJcbiAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRFdmlkZW5jZShmYWxzZSlcIlxuICAgICAgICAgICAgICA+Tm9cbiAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBSZWNvbW1lbmRlZCBBY3Rpb25zIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uU3RhdHVzLlJFQ09NTUVOREVEX0FDVElPTlNcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZENsaWNrZWQpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVjb21tZW5kYXRpb25zPy50ZXh0XCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLnJlY29tbWVuZGVkX2FjdGlvblwiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAhKFxuICAgICAgICAgICAgYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LnJlY29tbWVuZGF0aW9ucz8udGV4dFxuICAgICAgICAgICAgfCBzcGFjZUJyZWFrZXJcbiAgICAgICAgICApPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIChcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5yZWNvbW1lbmRhdGlvbnM/LnRleHRcbiAgICAgICAgICAgIHwgc3BhY2VCcmVha2VyXG4gICAgICAgICAgKT8ubGVuZ3RoID4gMFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZWNvbW1lbmRlZCBBY3Rpb25zPC9sYWJlbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVjb21tZW5kYXRpb25zPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgICA/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWxpc3RcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCB1cGxvYWRpbmdGaWxlIG9mIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93XG4gICAgICAgICAgICAgICAgPy5yZWNvbW1lbmRhdGlvbnM/LmF0dGFjaG1lbnRzXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IHVwbG9hZGluZ0ZpbGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCIyXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5yZWNvbW1lbmRhdGlvbnM/LmF0dGFjaG1lbnRzXG4gICAgICAgICAgICAgID8ubGVuZ3RoID4gMFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZpbGUtbGlzdFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGZpbGUgb2YgYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LnJlY29tbWVuZGF0aW9uc1xuICAgICAgICAgICAgICAgID8uYXR0YWNobWVudHNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZmlsZT8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZShmaWxlLCAnUkVDT01NRU5ERURfQUNUSU9OUycpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZWNvbW1lbmRhdGlvbnMudGV4dFwiXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJ7XG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgICAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGU6IHRydWUsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1JlY29tbWVuZGVkIGFjdGlvbnMnXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICBhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVjb21tZW5kYXRpb25zPy50ZXh0Py50cmltKClcbiAgICAgICAgICAgICAgPy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gcmVtb3ZlRXJyb3IoJ2lzc3VlUmVjb21tZW5kYXRpb24nKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICBcIlxuICAgICAgICAgIChjbGlja091dHNpZGUpPVwiY2hlY2tEZXNjcmlwdGlvbigpXCJcbiAgICAgICAgICAoc2VuZFNhdmVkRmlsZXMpPVwic2VsZWN0RmlsZSgnUkVDT01NRU5ERURfQUNUSU9OUycsICRldmVudClcIlxuICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBSaXNrIENsYXNzaWZpY2F0aW9uIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uU3RhdHVzLlJJU0tfQ0xBU1NJRklDQVRJT05cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIGlkPVwicmlza19jbGFzc2lmaWNhdGlvblwiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImZpZWxkU2VsZWN0b3I/LmluY2x1ZGVzKGZpZWxkQ2xpY2tlZClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJhZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3NcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMucmlza3NcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiIWFkZFRvQ2FzZVBheWxvYWQucmlza19jbGFzc1wiIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiYWRkVG9DYXNlUGF5bG9hZC5yaXNrX2NsYXNzXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SaXNrIENsYXNzaWZpY2F0aW9uPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNsYXNzaWZpY2F0aW9uXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImxvd1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2xhc3Mgb2Ygcmlza0NsYXNzaWZpY2F0aW9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjbGFzcy5jbGFzc11cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY2xhc3NpZmljYXRpb25cIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiY2xhc3MudmFsdWVcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3MgPT09IGNsYXNzLnZhbHVlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3NcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPnt7IGNsYXNzLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImNoZWNrbG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cbjxhcHAtY2hlY2tib3gtbGlzdFxuICBbY29uZmlnXT1cIm92ZXJzaWdodF9jb25maWdcIlxuICBbdHdvQ29sdW1uXT1cInRydWVcIlxuICBbaXRlbXNMaXN0XT1cInVzZXJMaXN0XCJcbiAgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19saXN0XCJcbiAgW2lkZW50aWZpZXJLZXldPVwiJ2VtcGxveWVlX2VtYWlsJ1wiXG4gIFtkaXNwbGF5S2V5XT1cIidlbXBsb3llZV9uYW1lJ1wiXG4gIFt0b29sdGlwS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnQ0FTRV9DQydcIlxuICAoc2F2ZUxpc3QpPVwic2VsZWN0b3JBY3Rpb24oJGV2ZW50LCAnQ0FTRV9DQycpXCJcbiAgKGNsb3NlTGlzdCk9XCJmaWVsZERlc2VsZWN0b3IoJ0NBU0VfQ0MnKVwiXG4gIFtsb2FkZWRdPVwibG9hZGVyLnVzZXJMaXN0TG9hZGVyXCJcbj48L2FwcC1jaGVja2JveC1saXN0PlxuXG48YXBwLWNoZWNrYm94LWxpc3RcbiAgW2NvbmZpZ109XCJvdmVyc2lnaHRfY29uZmlnXCJcbiAgW3R3b0NvbHVtbl09XCJ0cnVlXCJcbiAgW2l0ZW1zTGlzdF09XCJ1c2VyTGlzdFwiXG4gIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdFwiXG4gIFtpZGVudGlmaWVyS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxuICBbZGlzcGxheUtleV09XCInZW1wbG95ZWVfbmFtZSdcIlxuICBbdG9vbHRpcEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0NBU0VfRkNDJ1wiXG4gIChzYXZlTGlzdCk9XCJzZWxlY3RvckFjdGlvbigkZXZlbnQsICdDQVNFX0ZDQycpXCJcbiAgKGNsb3NlTGlzdCk9XCJmaWVsZERlc2VsZWN0b3IoJ0NBU0VfRkNDJylcIlxuICBbbG9hZGVkXT1cImxvYWRlci51c2VyTGlzdExvYWRlclwiXG4+PC9hcHAtY2hlY2tib3gtbGlzdD5cblxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwic21pbGV5QWN0aW9ucygkZXZlbnQpXCJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxuPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxuIl19
858
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY2FzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9yZXBvcnQtYS1jYXNlL3dvcmtmbG93LWNhc2Uvd29ya2Zsb3ctY2FzZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9yZXBvcnQtYS1jYXNlL3dvcmtmbG93LWNhc2Uvd29ya2Zsb3ctY2FzZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixjQUFjLEVBQ2QseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBSzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUzFELE1BQU0sT0FBTyxxQkFBcUI7SUEyRGhDLFlBQ1Usa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLHVCQUFnRCxFQUNoRCxxQkFBNEMsRUFDNUMsdUJBQWdELEVBQ2hELGFBQTRCO1FBTDVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtR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QUM7U0FDSDtRQUNELE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQ3RELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQztZQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUM3QixDQUFDO0lBQ0osQ0FBQzsrR0FuNUJVLHFCQUFxQjttR0FBckIscUJBQXFCLDBnQkM5QmxDLDZvekJBaXdCQTs7NEZEbnVCYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO2dSQStDcEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFERF9UT19DQVNFX1dPUktGTE9XLFxuICBBRERJVElPTkFMX09QVElPTl9TVEFUVVMsXG4gIEVYQ0VQVElPTl9UWVBFLFxuICBPVkVSU0lHSFRfU0VMRUNUT1JfQ09ORklHLFxuICBSRVBPUlRfQ0FTRSxcbiAgUkVQT1JUX0NBU0VfUEFZTE9BRCxcbiAgUklTS19DTEFTU0lGSUNBVElPTixcbiAgU0lERV9TRUxFQ1RPUl9FTEVNRU5UUyxcbiAgVkFMSURBVElPTl9FUlJPUixcbiAgV09SS0ZMT1dfREVUQUlMU19QQVJBTVMsXG4gIEFDVElPTl9CVVRUT05TLFxuICBTTUlMRVlfTUVTU0FHRSxcbiAgRklFTERfU0VMRUNUT1IsXG59IGZyb20gJy4uL2NvbnN0YW50cy9yZXBvcnQtY2FzZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgcmVwb3J0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jYXNlLXR5cGUtc2xpZGVyL2Nhc2UtdHlwZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0QUNhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVwb3J0LWEtY2FzZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLXVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcbmltcG9ydCB7IFJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC1jYXNlLXBlcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb21wbGlhbmNlQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9jb21wbGlhbmNlLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctY2FzZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1jYXNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctY2FzZS5jb21wb25lbnQubGVzcycsICcuLi8uLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Q2FzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcmVwb3J0VGV4dHMgPSBSRVBPUlRfQ0FTRTtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBjYXNlVHlwZSA9IHJlcG9ydDtcbiAgY2FzZVR5cGVTZWxlY3RlZCA9IHJlcG9ydC5SRVBPUlRfQ0FTRTtcbiAgcGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoUkVQT1JUX0NBU0VfUEFZTE9BRCkpO1xuICBwYXJhbXMgPSBXT1JLRkxPV19ERVRBSUxTX1BBUkFNUztcbiAgdmFsaWRhdGlvbkVycm9yID0gVkFMSURBVElPTl9FUlJPUjtcbiAgcmlza0NsYXNzaWZpY2F0aW9uID0gUklTS19DTEFTU0lGSUNBVElPTjtcbiAgYWRkVG9DYXNlUGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoQUREX1RPX0NBU0VfV09SS0ZMT1cpKTtcbiAgZXhjZXB0aW9uVHlwZSA9IEVYQ0VQVElPTl9UWVBFO1xuICBvdmVyc2lnaHRfY29uZmlnID0gT1ZFUlNJR0hUX1NFTEVDVE9SX0NPTkZJRztcbiAgc21pbGV5TWVzc2FnZSA9IFNNSUxFWV9NRVNTQUdFO1xuICBhY3Rpb25CdXR0b25zOiBhbnlbXSA9IEFDVElPTl9CVVRUT05TO1xuICBzaWRlU2VsZWN0b3JFbGVtZW50czogYW55ID0gU0lERV9TRUxFQ1RPUl9FTEVNRU5UUztcbiAgYWRkaXRpb25hbE9wdGlvblN0YXR1czogYW55ID0gQURESVRJT05BTF9PUFRJT05fU1RBVFVTO1xuICBmaWVsZFNlbGVjdG9yID0gRklFTERfU0VMRUNUT1I7XG4gIGNhc2VEYXRhOiBhbnk7XG5cbiAgZmllbGRDbGlja2VkOiBzdHJpbmcgPSAnJztcbiAgYWN0aXZlRmllbGQ6IHN0cmluZyA9ICcnO1xuICBhY3RpdmVTZWxlY3Rvcjogc3RyaW5nID0gJyc7XG5cbiAgc2hvd1NtaWxleTogYm9vbGVhbiA9IGZhbHNlO1xuICBzY3JvbGxUb0JvdHRvbTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHdvcmtmbG93RGV0YWlsc0RhdGE6IGFueTtcbiAgZ3JvdXBMaXN0OiBhbnlbXSA9IFtdO1xuICB1c2VyTGlzdDogYW55ID0gW107XG4gIHNlbGVjdGVkT3ZlcnNpZ2h0czogYW55ID0ge1xuICAgIGNjX2xpc3Q6IFtdLFxuICAgIGNjX2ZhaWx1cmVzX2xpc3Q6IFtdLFxuICB9O1xuICBsb2FkZXIgPSB7XG4gICAgdXNlckxpc3RMb2FkZXI6IGZhbHNlLFxuICAgIHR5cGVMb2FkZXI6IGZhbHNlLFxuICAgIHByaW9yaXR5TG9hZGVyOiBmYWxzZSxcbiAgICBjYXNlTG9hZGVyOiBmYWxzZSxcbiAgICBncm91cExpc3RMb2FkZXI6IGZhbHNlLFxuICAgIHJlcG9ydENhc2VMb2FkZXI6IGZhbHNlLFxuICAgIHBlcm1pc3Npb25Mb2FkZXI6IGZhbHNlLFxuICB9O1xuXG4gIEBJbnB1dCgpIG9wZW5lZEZyb206IGFueTtcbiAgQElucHV0KCkgc291cmNlOiBhbnk7XG4gIEBJbnB1dCgpIGNhc2VJZDogYW55O1xuICBASW5wdXQoKSBtb2RlOiBhbnk7XG4gIEBJbnB1dCgpIHdvcmtmbG93VHlwZTogYW55O1xuICBASW5wdXQoKSByZXNwb25zaWJpbGl0eURhdGE6IGFueTtcbiAgQElucHV0KCkgYXNzZXNzbWVudFF1ZXN0aW9uOiBhbnk7XG4gIEBJbnB1dCgpIGNhc2VUeXBlUGVybWlzc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjYXNlUmVwb3J0ZWRCeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHVzZXJMaXN0RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlcG9ydEFDYXNlU2VydmljZTogUmVwb3J0QUNhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Vc2VyU2VydmljZTogT3JnYW5pemF0aW9uVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIGNvbXBsaWFuY2VDb21tb25TZXJ2aWNlOiBDb21wbGlhbmNlQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wZXJtaXNzaW9uTG9hZGVyKCk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5nZXRVc2VyTGlzdCgpO1xuICAgIHRoaXMuZ2V0R3JvdXBMaXN0KCk7XG5cbiAgICBpZiAodGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzID0geyAuLi5BRERJVElPTkFMX09QVElPTl9TVEFUVVMgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLmdldENhc2VEZXRhaWxzKCk7XG4gICAgfVxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHBlcm1pc3Npb25Mb2FkZXIoKSB7XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuY2FzZVR5cGVMb2FkZXIuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMubG9hZGVyLnBlcm1pc3Npb25Mb2FkZXIgPSByZXM7XG4gICAgfSk7XG4gIH1cblxuXG4gIGdldFVzZXJMaXN0KCkge1xuICAgIHRoaXMubG9hZGVyLnVzZXJMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLm9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblVzZXJzKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMudXNlckxpc3QgPSByZXM7XG4gICAgICB0aGlzLnVzZXJMaXN0RW1pdHRlci5lbWl0KHJlcyk7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmXG4gICAgICAgIHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gcmVwb3J0LkFERF9DQVNFX1RPX1dPUktGTE9XXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU92ZXJzaWdodHMoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGVyLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBnZXRHcm91cExpc3QoKSB7XG4gICAgdGhpcy5sb2FkZXIuZ3JvdXBMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRPcmdhbml6YXRpb25Hcm91cHMoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgdGhpcy5ncm91cExpc3QgPSByZXM7XG4gICAgICB0aGlzLmxvYWRlci5ncm91cExpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhc2VEZXRhaWxzKCkge1xuICAgIHRoaXMubG9hZGVyLmNhc2VMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlXG4gICAgICAuZ2V0Q2FzZURldGFpbHModGhpcy5jYXNlSWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNhc2VSZXBvcnRlZEJ5LmVtaXQocmVzPy5kYXRhPy5jcmVhdGVkX2J5KTtcbiAgICAgICAgdGhpcy5zZXRDYXNlRGV0YWlscyhyZXMpO1xuICAgICAgICB0aGlzLmxvYWRlci5jYXNlTG9hZGVyID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldENhc2VEZXRhaWxzKHJlczogYW55KSB7XG4gICAgaWYgKHJlcz8uZGF0YT8uYWRkZWRfdG9fd29ya2Zsb3cgfHwgdGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5jYXNlVHlwZVNlbGVjdGVkID0gcmVwb3J0LkFERF9DQVNFX1RPX1dPUktGTE9XO1xuICAgICAgdGhpcy5wb3B1bGF0ZUFkZENhc2VQYXlsb2FkKHJlcz8uZGF0YSk7XG4gICAgICB0aGlzLmdldFdvcmtmbG93RGV0YWlscyhyZXM/LmRhdGEpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9IHJlcG9ydC5SRVBPUlRfQ0FTRTtcbiAgICAgIHRoaXMucG9wdWxhdGVSZXBvcnRDYXNlUGF5bG9hZChyZXM/LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVkaXQgY2FzZVxuXG4gIGdldFdvcmtmbG93RGV0YWlscyhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnBhcmFtcy5jYXNlX3R5cGUuaWQgPSBkYXRhPy5jYXNlX3R5cGU/LmlkO1xuICAgIHRoaXMucGFyYW1zLnByaW9yaXR5LmlkID0gZGF0YT8ucHJpb3JpdHk/LmlkO1xuICAgIHRoaXMucGFyYW1zLnJjX2RldGFpbHMuaWQgPVxuICAgICAgZGF0YT8ucmNfZGV0YWlscz8ubWFpbl9yY19pZCB8fCBkYXRhPy5yY19kZXRhaWxzPy5pZHM/LlswXTtcbiAgICB0aGlzLnBhcmFtcy5jYXRlZ29yeS5pZCA9IGRhdGE/LmNhdGVnb3J5Py5pZHNbMF07XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuZ2V0V29ya2Zsb3dEZXRhaWxzKHRoaXMucGFyYW1zKTtcbiAgfVxuXG4gIHBvcHVsYXRlUmVwb3J0Q2FzZVBheWxvYWQoZGF0YTogYW55KSB7XG4gICAgdGhpcy5wYXlsb2FkLm5hbWUgPSBkYXRhPy5uYW1lO1xuICAgIHRoaXMucGF5bG9hZC5kZXNjcmlwdGlvbiA9IGRhdGE/LmRlc2NyaXB0aW9uO1xuICAgIHRoaXMucGF5bG9hZC5vY2N1cnJlbmNlX2RhdGUgPSBuZXcgRGF0ZShkYXRhPy5vY2N1cnJlbmNlX2RhdGUpO1xuICAgIHRoaXMucGF5bG9hZC5wcmlvcml0eSA9IGRhdGE/LnByaW9yaXR5O1xuICAgIHRoaXMucGF5bG9hZC5jYXNlX3R5cGUgPSBkYXRhPy5jYXNlX3R5cGU7XG4gICAgdGhpcy5wYXlsb2FkLnJjX2RldGFpbHMgPSBkYXRhPy5yY19kZXRhaWxzO1xuICAgIHRoaXMucGF5bG9hZC5yZWNlaXZlX3VwZGF0ZXMgPSBkYXRhPy5yZWNlaXZlX3VwZGF0ZXM7XG4gICAgdGhpcy5wYXlsb2FkLnN1cHBvcnRpbmdfZG9jdW1lbnRzID0gZGF0YT8uc3VwcG9ydGluZ19kb2N1bWVudHM7XG4gICAgdGhpcy5wYXlsb2FkLmNhdGVnb3J5ID0gZGF0YT8uY2F0ZWdvcnk7XG4gIH1cblxuICBwb3B1bGF0ZUFkZENhc2VQYXlsb2FkKGRhdGE6IGFueSkge1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLndvcmtmbG93Q29kZS5uZXh0KCdBQ1cnKTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQubmFtZSA9IGRhdGE/Lm5hbWU7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmRlc2NyaXB0aW9uID0gZGF0YT8uZGVzY3JpcHRpb247XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLnByaW9yaXR5ID0gZGF0YT8ucHJpb3JpdHk7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLm9jY3VycmVuY2VfZGF0ZSA9IG5ldyBEYXRlKGRhdGE/Lm9jY3VycmVuY2VfZGF0ZSk7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VfdHlwZSA9IGRhdGE/LmNhc2VfdHlwZTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQucmNfZGV0YWlscyA9IGRhdGE/LnJjX2RldGFpbHM7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3MgPSBkYXRhPy5yaXNrX2NsYXNzO1xuICAgIGlmICh0aGlzLndvcmtmbG93VHlwZSA9PT0gJ0FDVFcnKSB7XG4gICAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuYWRkaXRpb25hbF9jYXRlZ29yeSA9IGRhdGE/LmNhdGVnb3J5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2F0ZWdvcnkgPSBkYXRhPy5jYXRlZ29yeTtcbiAgICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5hZGRpdGlvbmFsX2NhdGVnb3J5ID0gZGF0YT8uYWRkaXRpb25hbF9jYXRlZ29yeTtcbiAgICB9XG4gICAgaWYgKGRhdGE/LmNhc2VUb1dvcmtmbG93KSB7XG4gICAgICB0aGlzLnBvcHVsYXRlQWRkaXRpb25hbEZpZWxkcyhkYXRhPy5jYXNlVG9Xb3JrZmxvdyk7XG4gICAgICB0aGlzLnBvcHVsYXRlUmVzb2x1dGlvbkRlYWRsaW5lKGRhdGE/LmNhc2VUb1dvcmtmbG93KTtcbiAgICAgIHRoaXMucG9wdWxhdGVVc2VyRGV0YWlscyhkYXRhPy5jYXNlVG9Xb3JrZmxvdyk7XG4gICAgICB0aGlzLnNldE9wdGlvbmFsRmllbGQoZGF0YT8uY2FzZVRvV29ya2Zsb3csIGRhdGE/LnJpc2tfY2xhc3MpO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlVXNlckRldGFpbHMoZGF0YTogYW55KSB7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LmFzc2lnbmVlc19ncm91cCA9XG4gICAgICBkYXRhPy5hc3NpZ25lZXNfZ3JvdXA7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93Lm93bmVycyA9IGRhdGE/Lm93bmVycztcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cuYXNzaWduZWVzID0gZGF0YT8uYXNzaWduZWVzO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy53b3JrZmxvd19pZCA9IGRhdGE/LndvcmtmbG93X2lkO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NpZ25lZXNfZ3JvdXAgPVxuICAgICAgZGF0YT8uYXNzaWduZWVzX2dyb3VwO1xuICB9XG5cbiAgcG9wdWxhdGVSZXNvbHV0aW9uRGVhZGxpbmUoZGF0YTogYW55KSB7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUgPVxuICAgICAgZGF0YT8ucmVzb2x1dGlvbl9kZWFkbGluZTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0YT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGUpO1xuICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIDEpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuZHVlX2RhdGUgPVxuICAgICAgZGF0ZS50b0lTT1N0cmluZygpO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LnJlc29sdXRpb25fZGVhZGxpbmU/LnN0YWdlc19hc3NpZ25lZXM/LmZvckVhY2goXG4gICAgICAoc3RhZ2U6IGFueSkgPT4ge1xuICAgICAgICBzdGFnZS5kdWVfZGF0ZSA9IGRhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcG9wdWxhdGVBZGRpdGlvbmFsRmllbGRzKGRhdGE6IGFueSkge1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5leGNlcHRpb25fdHlwZSA9IGRhdGE/LmV4Y2VwdGlvbl90eXBlO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NvY2lhdGVkX3Jpc2tzID1cbiAgICAgIGRhdGE/LmFzc29jaWF0ZWRfcmlza3M7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LmV2aWRlbmNlX2VuYWJsZWQgPVxuICAgICAgZGF0YT8uZXZpZGVuY2VfZW5hYmxlZDtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVjb21tZW5kYXRpb25zID1cbiAgICAgIGRhdGE/LnJlY29tbWVuZGF0aW9ucztcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cub3ZlcnNpZ2h0cy5jY19pZHMgPVxuICAgICAgZGF0YT8ub3ZlcnNpZ2h0cz8uY2NfaWRzO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5vdmVyc2lnaHRzLmNjX2ZhaWx1cmVzX2lkcyA9XG4gICAgICBkYXRhPy5vdmVyc2lnaHRzPy5jY19mYWlsdXJlc19pZHM7XG4gICAgdGhpcy5wb3B1bGF0ZU92ZXJzaWdodHMoKTtcbiAgfVxuXG4gIHBvcHVsYXRlT3ZlcnNpZ2h0cygpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19saXN0ID0gdGhpcy51c2VyTGlzdD8uZmlsdGVyKCh1c2VyOiBhbnkpID0+XG4gICAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cub3ZlcnNpZ2h0cy5jY19pZHM/LmluY2x1ZGVzKFxuICAgICAgICB1c2VyPy5faWQgYXMgbmV2ZXJcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2ZhaWx1cmVzX2xpc3QgPSB0aGlzLnVzZXJMaXN0Py5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cub3ZlcnNpZ2h0cy5jY19mYWlsdXJlc19pZHM/LmluY2x1ZGVzKFxuICAgICAgICAgIHVzZXI/Ll9pZCBhcyBuZXZlclxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHNldE9wdGlvbmFsRmllbGQoZGF0YTogYW55LCByaXNrQ2xhc3M6IG51bWJlcikge1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cyA9IHtcbiAgICAgIEVYQ0VQVElPTl9UWVBFOiBkYXRhPy5leGNlcHRpb25fdHlwZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgIEVWSURFTkNFOiBkYXRhPy5ldmlkZW5jZV9lbmFibGVkID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgQVNTT0NJQVRFRF9SSVNLUzogZGF0YT8uYXNzb2NpYXRlZF9yaXNrcz8udGV4dD8ubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgT1ZFUlNJR0hUOlxuICAgICAgICBkYXRhPy5vdmVyc2lnaHRzPy5jY19pZHM/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICBkYXRhPy5vdmVyc2lnaHRzPy5jY19mYWlsdXJlc19pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6IGZhbHNlLFxuICAgICAgUkVDT01NRU5ERURfQUNUSU9OUzpcbiAgICAgICAgZGF0YT8ucmVjb21tZW5kYXRpb25zPy50ZXh0Py5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgUklTS19DTEFTU0lGSUNBVElPTjogcmlza0NsYXNzID8gdHJ1ZSA6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gIH1cblxuICBwb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCkge1xuICAgIGNvbnN0IGFjdGl2YXRlZE9wdGlvbnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMpKSB7XG4gICAgICBpZiAodGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzW2tleV0gPT09IHRydWUpIHtcbiAgICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcbiAgfVxuXG4gIC8vIENoYW5nZSBpbiBjYXNlIHR5cGVcbiAgb25DYXNlVHlwZUNoYW5nZShjYXNlVHlwZTogcmVwb3J0KSB7XG4gICAgdGhpcy5jYXNlVHlwZVNlbGVjdGVkID0gY2FzZVR5cGU7XG4gICAgdGhpcy5jb21wbGlhbmNlQ29tbW9uU2VydmljZS5yY0xpc3Q/Lm5leHQobnVsbCk7XG4gICAgaWYgKGNhc2VUeXBlID09PSByZXBvcnQuUkVQT1JUX0NBU0UpIHtcbiAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS53b3JrZmxvd0NvZGUubmV4dCgnUkFDJyk7XG4gICAgfSBlbHNlIGlmIChjYXNlVHlwZSA9PT0gcmVwb3J0LkFERF9DQVNFX1RPX1dPUktGTE9XKSB7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2Uud29ya2Zsb3dDb2RlLm5leHQoJ0FDVycpO1xuICAgIH1cbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMgPSB7IC4uLkFERElUSU9OQUxfT1BUSU9OX1NUQVRVUyB9O1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLnJlc2V0TW9yZU9wdGlvbi5uZXh0KHRydWUpO1xuICB9XG5cbiAgc2F2ZVN1cHBvcnRpbmdEb2N1bWVudChldmVudDogYW55KSB7XG4gICAgY29uc3QgZG9jdW1lbnQgPSBldmVudD8uZmlsZXM7XG4gICAgdGhpcy5wYXlsb2FkLnN1cHBvcnRpbmdfZG9jdW1lbnRzID0gWy4uLmRvY3VtZW50XSBhcyBuZXZlcjtcbiAgfVxuXG4gIG9uQ2F0ZWdvcnlDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucGFyYW1zLmNhdGVnb3J5LmlkID0gZXZlbnRbMF07XG4gICAgaWYgKHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gcmVwb3J0LkFERF9DQVNFX1RPX1dPUktGTE9XKSB7XG4gICAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5nZXRXb3JrZmxvd0RldGFpbHModGhpcy5wYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIG9uUHJpb3JpdHlDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucGFyYW1zLnByaW9yaXR5LmlkID0gZXZlbnQ7XG4gICAgaWYgKHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gcmVwb3J0LkFERF9DQVNFX1RPX1dPUktGTE9XKSB7XG4gICAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5nZXRXb3JrZmxvd0RldGFpbHModGhpcy5wYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmNDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucGFyYW1zLnJjX2RldGFpbHMuaWQgPSBldmVudDtcbiAgICBpZiAodGhpcy5jYXNlVHlwZVNlbGVjdGVkID09PSByZXBvcnQuQUREX0NBU0VfVE9fV09SS0ZMT1cpIHtcbiAgICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLmdldFdvcmtmbG93RGV0YWlscyh0aGlzLnBhcmFtcyk7XG4gICAgfVxuICAgIHRoaXMucGlja2VyVG9nZ2xlKGZhbHNlKTtcbiAgfVxuXG4gIG9uQ2FzZVR5cGVEcm9wZG93bkNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5wYXJhbXMuY2FzZV90eXBlLmlkID0gZXZlbnQ7XG4gICAgaWYgKHRoaXMuY2FzZVR5cGVTZWxlY3RlZCA9PT0gcmVwb3J0LkFERF9DQVNFX1RPX1dPUktGTE9XKSB7XG4gICAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5nZXRXb3JrZmxvd0RldGFpbHModGhpcy5wYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIHJlcG9ydENhc2UoKSB7XG4gICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ0NPTVBMSUFOQ0VfV09SS1JPT00nIHx8IHRoaXMub3BlbmVkRnJvbSA9PT0gJ0FTU0VTU01FTlQnKSB7XG4gICAgICB0aGlzLmZpbHRlclJlc3BvbnNpYmlsaXRpZXModGhpcy5wYXlsb2FkKTtcbiAgICAgIHRoaXMuZmlsdGVyQXNzZXNzbWVudCh0aGlzLnBheWxvYWQpO1xuICAgIH1cbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jaGVja1ZhbGlkYXRpb24odGhpcy5wYXlsb2FkKTtcbiAgICBpZiAoIWlzVmFsaWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2FzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLnJlcG9ydEFDYXNlKHRoaXMucGF5bG9hZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuY2FzZURhdGEgPSB7IC4uLnJlcz8uZGF0YSwgc291cmNlOiB0aGlzLnNvdXJjZSB9O1xuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVyciwgJ2VycicpO1xuICAgICAgICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNhc2UoKSB7XG4gICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UudXBkYXRlQ2FzZSh0aGlzLnBheWxvYWQsIHRoaXMuY2FzZUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2FzZURhdGEgPSB7IC4uLnJlcz8uZGF0YSwgc291cmNlOiB0aGlzLnNvdXJjZSB9O1xuICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyBDaGVjayB2YWxpZGF0aW9uIGZvciByZXBvcnQgYSBjYXNlXG4gIGNoZWNrVmFsaWRhdGlvbihwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy52YWxpZGF0ZU5hbWUocGF5bG9hZC5uYW1lKSAmJlxuICAgICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKHBheWxvYWQuZGVzY3JpcHRpb24udGV4dCkgJiZcbiAgICAgIHRoaXMudmFsaWRhdGVDYXNlVHlwZShwYXlsb2FkLmNhc2VfdHlwZS5pZCkgJiZcbiAgICAgIHRoaXMudmFsaWRhdGVSZXBvcnREYXRlKHBheWxvYWQub2NjdXJyZW5jZV9kYXRlKVxuICAgICk7XG4gIH1cblxuICBjaGVja0FkZFRvQ2FzZVZhbGlkYXRpb24ocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudmFsaWRhdGVOYW1lKHBheWxvYWQ/Lm5hbWUpICYmXG4gICAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24ocGF5bG9hZD8uZGVzY3JpcHRpb24/LnRleHQpICYmXG4gICAgICB0aGlzLnZhbGlkYXRlUmMocGF5bG9hZCkgJiZcbiAgICAgIHRoaXMudmFsaWRhdGVDYXNlVHlwZShwYXlsb2FkPy5jYXNlX3R5cGU/LmlkKSAmJlxuICAgICAgdGhpcy52YWxpZGF0ZUNhc2VQcmlvcml0eShwYXlsb2FkPy5wcmlvcml0eT8uaWQpICYmXG4gICAgICB0aGlzLnZhbGlkYXRlQ2FzZU93bmVyKHBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vd25lcnMpICYmXG4gICAgICAodGhpcy52YWxpZGF0ZUNhc2VBc3NpZ25lZShwYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8uYXNzaWduZWVzKSB8fFxuICAgICAgICB0aGlzLnZhbGlkYXRlQ2FzZUFzc2lnbmVlR3JvdXAoXG4gICAgICAgICAgcGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlc19ncm91cFxuICAgICAgICApKSAmJlxuICAgICAgdGhpcy52YWxpZGF0ZUNhc2VSZXNvbHV0aW9uRGVhZGxpbmUoXG4gICAgICAgIHBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5yZXNvbHV0aW9uX2RlYWRsaW5lXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHZhbGlkYXRlTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLm5hbWUuaXNFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5uYW1lLm1lc3NhZ2UgPSB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5uYW1lO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICAgIGlmICghZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmRlc2NyaXB0aW9uLmlzRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuZGVzY3JpcHRpb24ubWVzc2FnZSA9XG4gICAgICAgIHRoaXMucmVwb3J0VGV4dHMuZXJyb3JNZXNzYWdlLmRlc2NyaXB0aW9uO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlQ2FzZVR5cGUoY2FzZVR5cGU6IHN0cmluZykge1xuICAgIGlmICghY2FzZVR5cGUpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VUeXBlLmlzRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuY2FzZVR5cGUubWVzc2FnZSA9XG4gICAgICAgIHRoaXMucmVwb3J0VGV4dHMuZXJyb3JNZXNzYWdlLmNhc2VUeXBlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlUmVwb3J0RGF0ZShyZXBvcnREYXRlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXJlcG9ydERhdGUpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLnJlcG9ydERhdGUuaXNFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5yZXBvcnREYXRlLm1lc3NhZ2UgPVxuICAgICAgICB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5yZXBvcnREYXRlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlQ2FzZVByaW9yaXR5KHByaW9yaXR5OiBzdHJpbmcpIHtcbiAgICBpZiAoIXByaW9yaXR5KSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5wcmlvcml0eS5pc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLnByaW9yaXR5Lm1lc3NhZ2UgPVxuICAgICAgICB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5wcmlvcml0eTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZVJjKHBheWxvYWQ6IGFueSkge1xuICAgIGlmICghcGF5bG9hZD8ucmNfZGV0YWlscz8uaWRzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLnJjLmlzRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IucmMubWVzc2FnZSA9IHRoaXMucmVwb3J0VGV4dHMuZXJyb3JNZXNzYWdlLnJjO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBwYXlsb2FkPy5yY19kZXRhaWxzPy5pZHM/Lmxlbmd0aCA+IDEgJiZcbiAgICAgICFwYXlsb2FkPy5yY19kZXRhaWxzPy5zZXBhcmF0ZV9yY19jYXNlcyAmJlxuICAgICAgIXBheWxvYWQ/LnJjX2RldGFpbHM/Lm1haW5fcmNfaWRcbiAgICApIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLm1haW5SYy5pc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLm1haW5SYy5tZXNzYWdlID1cbiAgICAgICAgdGhpcy5yZXBvcnRUZXh0cy5lcnJvck1lc3NhZ2UubWFpblJjO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlQ2FzZU93bmVyKG93bmVyczogYW55KSB7XG4gICAgaWYgKCFvd25lcnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuY2FzZU93bmVyLmlzRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuY2FzZU93bmVyLm1lc3NhZ2UgPVxuICAgICAgICB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5jYXNlT3duZXI7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFsaWRhdGVDYXNlQXNzaWduZWUoYXNzaWduZWVzOiBhbnkpIHtcbiAgICBpZiAoIWFzc2lnbmVlcz8ubGVuZ3RoKSB7XG4gICAgICBpZiAoIXRoaXMuYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlc19ncm91cD8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VBc3NpZ25lZS5pc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuY2FzZUFzc2lnbmVlLm1lc3NhZ2UgPVxuICAgICAgICAgIHRoaXMucmVwb3J0VGV4dHMuZXJyb3JNZXNzYWdlLmNhc2VBc3NpZ25lZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlQ2FzZUFzc2lnbmVlR3JvdXAoYXNzaWduZWVzX2dyb3VwOiBhbnkpIHtcbiAgICBpZiAoIWFzc2lnbmVlc19ncm91cD8ubGVuZ3RoKSB7XG4gICAgICBpZiAoIXRoaXMuYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VBc3NpZ25lZS5pc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuY2FzZUFzc2lnbmVlLm1lc3NhZ2UgPVxuICAgICAgICAgIHRoaXMucmVwb3J0VGV4dHMuZXJyb3JNZXNzYWdlLmNhc2VBc3NpZ25lZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlQ2FzZVJlc29sdXRpb25EZWFkbGluZShyZXNvbHV0aW9uRGVhZGxpbmU6IGFueSkge1xuICAgIGxldCBjYXNlQXNzaWduZWU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHJlc29sdXRpb25EZWFkbGluZT8uc3RhZ2VzX2Fzc2lnbmVlcz8uZm9yRWFjaCgoc3RhZ2U6IGFueSkgPT4ge1xuICAgICAgaWYgKCFzdGFnZT8uYXNzaWduZWVfaWQpIHtcbiAgICAgICAgY2FzZUFzc2lnbmVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFyZXNvbHV0aW9uRGVhZGxpbmU/LmR1ZV9kYXRlIHx8ICFjYXNlQXNzaWduZWUpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmNhc2VSZXNvbHV0aW9uRGVhZGxpbmUuaXNFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5jYXNlUmVzb2x1dGlvbkRlYWRsaW5lLm1lc3NhZ2UgPVxuICAgICAgICB0aGlzLnJlcG9ydFRleHRzLmVycm9yTWVzc2FnZS5jYXNlUmVzb2x1dGlvbkRlYWRsaW5lO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIGZpZWxkIHNlbGVjdG9yIGFuZCBkZS1zZWxlY3RvclxuICBvbkZpZWxkQ2xpY2tlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5maWVsZENsaWNrZWQgPSBldmVudDtcbiAgICB0aGlzLnBpY2tlclRvZ2dsZShldmVudCA/IHRydWUgOiBmYWxzZSk7XG4gIH1cblxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzW2V2ZW50LmNvZGVdID0gZXZlbnQuY2hlY2tlZDtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcbiAgfVxuXG4gIHNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoZmllbGQ6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3RpdmVGaWVsZCA9IGZpZWxkO1xuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSB0eXBlO1xuICAgIHRoaXMuZmllbGRDbGlja2VkID0gZmllbGQ7XG4gICAgdGhpcy5waWNrZXJUb2dnbGUodHJ1ZSk7XG4gIH1cblxuICBmaWVsZERlc2VsZWN0b3IodHlwZTogYW55KSB7XG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xuICAgIHRoaXMuYWN0aXZlRmllbGQgPSAnJztcbiAgICB0aGlzLmZpZWxkQ2xpY2tlZCA9ICcnO1xuICAgIHRoaXMucGlja2VyVG9nZ2xlKGZhbHNlKTtcbiAgfVxuXG4gIHBpY2tlclRvZ2dsZSh0eXBlOiBib29sZWFuKSB7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHlwZSk7XG4gIH1cblxuICAvLyBBZGQgQ2FzZSB0byB3b3JrZmxvd1xuICBzZXRFeGNlcHRpb24odHlwZTogYW55KSB7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LmV4Y2VwdGlvbl90eXBlID0gdHlwZTtcbiAgfVxuXG4gIGNoZWNrRGVzY3JpcHRpb24oKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy50ZXh0LFxuICAgICAgJ3RleHQnXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdEZpbGUodHlwZTogc3RyaW5nLCBmaWxlczogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzoge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xuICAgICAgICAgIC8vIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5hc3NvY2lhdGVkX3Jpc2tzLmF0dGFjaG1lbnRzLnB1c2gobmFtZSk7XG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzW2ldLmZpbGUsIHR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwbG9hZEZpbGUoZmlsZTogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZyhmaWxlLCB0eXBlLCAnZmlsZScpO1xuICB9XG5cbiAgc2V0RXZpZGVuY2UodmFsdWU6IGFueSkge1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5ldmlkZW5jZV9lbmFibGVkID0gdmFsdWU7XG4gIH1cblxuICBkZWxldGVJdGVtKHR5cGU6IGFueSwgZWxlbWVudDogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdDQVNFX0NDJzoge1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19saXN0Py5maW5kSW5kZXgoXG4gICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uZW1wbG95ZWVfZW1haWwgPT09IGVsZW1lbnQ/LmVtcGxveWVlX2VtYWlsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzaWdodHMuY2NfbGlzdD8uc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDQVNFX0ZDQyc6IHtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5zZWxlY3RlZE92ZXJzaWdodHMuY2NfZmFpbHVyZXNfbGlzdD8uZmluZEluZGV4KFxuICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmVtcGxveWVlX2VtYWlsID09PSBlbGVtZW50Py5lbXBsb3llZV9lbWFpbFxuICAgICAgICApO1xuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2ZhaWx1cmVzX2xpc3Q/LnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdG9yQWN0aW9uKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ0NBU0VfQ0MnOiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2xpc3QgPSBldnQ7XG4gICAgICAgIHRoaXMuZ2V0Q2NVc2VycyhldnQsICdjYycpO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDQVNFX0ZDQyc6IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzaWdodHMuY2NfZmFpbHVyZXNfbGlzdCA9IGV2dDtcbiAgICAgICAgdGhpcy5nZXRDY1VzZXJzKGV2dCwgJ2ZjYycpO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcbiAgICB0aGlzLmZpZWxkQ2xpY2tlZCA9ICcnO1xuICAgIHRoaXMucGlja2VyVG9nZ2xlKGZhbHNlKTtcbiAgfVxuXG4gIGdldENjVXNlcnMoZXZ0OiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHVzZXJMaXN0ID0gdGhpcy51c2VyTGlzdD8uZmlsdGVyKCh1c2VyOiBhbnkpID0+XG4gICAgICBldnQ/LmluY2x1ZGVzKHVzZXI/LmVtcGxveWVlX2VtYWlsKVxuICAgICk7XG4gICAgaWYgKHR5cGUgPT09ICdjYycpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2xpc3QgPSB1c2VyTGlzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzaWdodHMuY2NfZmFpbHVyZXNfbGlzdCA9IHVzZXJMaXN0O1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlck92ZXJzaWdodHMoKSB7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93Lm92ZXJzaWdodHMuY2NfaWRzID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2xpc3RcbiAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8uX2lkKVxuICAgICAgICA/LmZpbHRlcihCb29sZWFuKSBhcyBhbnk7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93Lm92ZXJzaWdodHMuY2NfZmFpbHVyZXNfaWRzID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2lnaHRzLmNjX2ZhaWx1cmVzX2xpc3RcbiAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8uX2lkKVxuICAgICAgICA/LmZpbHRlcihCb29sZWFuKSBhcyBhbnk7XG4gIH1cblxuICBmaWx0ZXJSZXNwb25zaWJpbGl0aWVzKHBheWxvYWQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdDT01QTElBTkNFX1dPUktST09NJykge1xuICAgICAgdGhpcy5wYXlsb2FkLnNvdXJjZSA9IHRoaXMuc291cmNlO1xuICAgICAgY29uc3QgeyByaWQsIHVpZCwgcmNpZCB9ID0gdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgfHwge307XG4gICAgICBjb25zdCBhbGxSZXNwSWRzID0gW107XG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IFtdO1xuICBcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBwYXlsb2FkPy5yZXNwb25zaWJpbGl0aWVzX0xpbmtlZCB8fCBbXSkge1xuICAgICAgICBjb25zdCB7IHJlc3BvbnNpYmlsaXR5SWQsIGFzc2lnbmVlQnJpZGdlSWQsIHJlc3BvbnNpYmlsaXR5Q2VudGVyQnJpZGdlSWQgfSA9IGl0ZW07XG4gICAgICAgIGlmIChyZXNwb25zaWJpbGl0eUlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbGxSZXNwSWRzLnB1c2gocmVzcG9uc2liaWxpdHlJZCk7XG4gICAgICAgICAgdHJhbnNmb3JtZWQucHVzaCh7XG4gICAgICAgICAgICByaWQ6IHJlc3BvbnNpYmlsaXR5SWQsXG4gICAgICAgICAgICB1aWQ6IGFzc2lnbmVlQnJpZGdlSWQsXG4gICAgICAgICAgICByY2lkOiByZXNwb25zaWJpbGl0eUNlbnRlckJyaWRnZUlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gIFxuICAgICAgLy8gQWRkIGN1cnJlbnQgcmVzcG9uc2liaWxpdHlcbiAgICAgIGlmIChyaWQgIT0gbnVsbCkge1xuICAgICAgICB0cmFuc2Zvcm1lZFtyaWRdID0ge1xuICAgICAgICAgIGFzc2lnbmVlSWQ6IFt1aWRdLCAvLyBBc3N1bWluZyBgdWlkYCBpcyBhc3NpZ25lZTsgY2hhbmdlIGlmIGluY29ycmVjdFxuICAgICAgICAgIHJjaWQ6IFtyY2lkXSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgXG4gICAgICBwYXlsb2FkLnJlc3BvbnNpYmlsaXRpZXNfTGlua2VkID0gYWxsUmVzcElkcztcbiAgICAgIHBheWxvYWQubGlua2VkX3Jlc3BvbnNpYmlsaXRpZXNfZGV0YWlscyA9IHRyYW5zZm9ybWVkO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckFzc2Vzc21lbnQocGF5bG9hZDogYW55KSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5vcGVuZWRGcm9tID09PSAnQVNTRVNTTUVOVCcgfHxcbiAgICAgIHRoaXMub3BlbmVkRnJvbSA9PT0gJ0NPTVBMSUFOQ0VfV09SS1JPT00nXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHJpZCwgdWlkLCByY2lkIH0gPSB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSB8fCB7fTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWRkaWQsXG4gICAgICAgIGFpZCxcbiAgICAgICAgcXVlc3Rpb25JZDogcXVlc3Rpb25faWQsXG4gICAgICAgIGF1ZGl0ZWVJZDogYXVkaXRlZV9pZCxcbiAgICAgIH0gPSB0aGlzLmFzc2Vzc21lbnRRdWVzdGlvbiB8fCB7fTtcbiAgICAgIHRoaXMucGF5bG9hZC5zb3VyY2UgPSB0aGlzLnNvdXJjZTtcbiAgICAgIHBheWxvYWQubGlua2VkX2Fzc2Vzc21lbnRfaXNzdWVzID0ge1xuICAgICAgICByaWQ6IHRoaXMuc291cmNlID8gcmlkIDogJycsXG4gICAgICAgIGFkZGlkLFxuICAgICAgICBhaWQsXG4gICAgICAgIHF1ZXN0aW9uX2lkLFxuICAgICAgICBhdWRpdGVlX2lkLFxuICAgICAgICB1aWQsXG4gICAgICAgIHJjaWQsXG4gICAgICB9O1xuICAgICAgcGF5bG9hZC5zb3VyY2UgPSB0aGlzLnNvdXJjZTtcbiAgICB9XG4gIH1cblxuICBhZGREdWVEYXRlSWQocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgYXNzZXNzbWVudENvbXBsZXRpb24gPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3d2RGF0YScpIHx8ICd7fScpLnJlc3BvbnNpYmlsaXR5RGF0YTtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICAgIHBheWxvYWQubGlua2VkX2Fzc2Vzc21lbnRfaXNzdWVzLmFkZGlkID1cbiAgICAgICAgYXNzZXNzbWVudENvbXBsZXRpb24/LmFkZGlkO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdER1ZURhdGUoZGF0ZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBsb2NhbERhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAvLyBBZGQgb25lIGRheSB0byB0aGUgZGF0ZVxuICAgIGxvY2FsRGF0ZS5zZXREYXRlKGxvY2FsRGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAvLyBTZXQgdGltZSB0byBtaWRuaWdodFxuICAgIGxvY2FsRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICByZXR1cm4gbG9jYWxEYXRlLnRvSVNPU3RyaW5nKCk7XG4gIH1cbiAgdXBkYXRlRGF0ZSgpIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5mb3JtYXREdWVEYXRlKFxuICAgICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGVcbiAgICApO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLmR1ZV9kYXRlID0gZGF0ZTtcblxuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LnJlc29sdXRpb25fZGVhZGxpbmU/LnN0YWdlc19hc3NpZ25lZXM/LmZvckVhY2goXG4gICAgICAoc3RhZ2U6IGFueSkgPT4ge1xuICAgICAgICBzdGFnZS5kdWVfZGF0ZSA9IGRhdGU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFkZFRvQ2FzZSgpIHtcbiAgICB0aGlzLmZpbHRlck92ZXJzaWdodHMoKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jaGVja0FkZFRvQ2FzZVZhbGlkYXRpb24odGhpcy5hZGRUb0Nhc2VQYXlsb2FkKTtcbiAgICBpZiAoIWlzVmFsaWQpIHJldHVybjtcbiAgICB0aGlzLnVwZGF0ZURhdGUoKTtcbiAgICBpZiAodGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5hZGRDYXNlVG9Xb3JrZmxvdygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnRURJVCcgJiYgdGhpcy53b3JrZmxvd1R5cGUgIT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5maWx0ZXJSZXNwb25zaWJpbGl0aWVzKHRoaXMuYWRkVG9DYXNlUGF5bG9hZCk7XG4gICAgICB0aGlzLmZpbHRlckFzc2Vzc21lbnQodGhpcy5hZGRUb0Nhc2VQYXlsb2FkKTtcbiAgICAgIHRoaXMudXBkYXRlQWRkVG9DYXNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyUmVzcG9uc2liaWxpdGllcyh0aGlzLmFkZFRvQ2FzZVBheWxvYWQpO1xuICAgICAgdGhpcy5maWx0ZXJBc3Nlc3NtZW50KHRoaXMuYWRkVG9DYXNlUGF5bG9hZCk7XG4gICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLnJlcG9ydEFDYXNlKHRoaXMuYWRkVG9DYXNlUGF5bG9hZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlRGF0YSA9IHsgLi4ucmVzPy5kYXRhLCBzb3VyY2U6IHRoaXMuc291cmNlIH07XG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2FzZVRvV29ya2Zsb3coKSB7XG4gICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IHRydWU7XG4gICAgbGV0IHBheWxvYWQgPSB7IC4uLnRoaXMuYWRkVG9DYXNlUGF5bG9hZCB9O1xuICAgIGNvbnN0IHdvcmtmbG93UGF5bG9hZCA9IHtcbiAgICAgIC4uLnBheWxvYWQsXG4gICAgICBjYXNlX2lkOiB0aGlzLmNhc2VJZCxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuYWRkQ2FzZVRvV29ya2Zsb3cod29ya2Zsb3dQYXlsb2FkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2FzZURhdGEgPSB7IC4uLnJlcz8uZGF0YSwgc291cmNlOiB0aGlzLnNvdXJjZSB9O1xuICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVBZGRUb0Nhc2UoKSB7XG4gICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2VcbiAgICAgIC51cGRhdGVDYXNlKHRoaXMuYWRkVG9DYXNlUGF5bG9hZCwgdGhpcy5jYXNlSWQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlRGF0YSA9IHsgLi4ucmVzPy5kYXRhLCBzb3VyY2U6IHRoaXMuc291cmNlIH07XG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxvYWRlci5yZXBvcnRDYXNlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIucmVwb3J0Q2FzZUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICAvLyBTbWlsZXkgYWN0aW9uc1xuICBzbWlsZXlBY3Rpb25zKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dCA9PT0gJ3JlcG9ydENhc2UnKSB7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChldnQgPT09ICd2aWV3Q2FzZScpIHtcbiAgICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgICAgdGhpcy52aWV3Q2FzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHZpZXdDYXNlKCkge1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBsZXQgdXJsU3Vic3RyaW5nID0gJyc7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5jYXNlVHlwZVBlcm1pc3Npb24pIHtcbiAgICAgIHVybFN1YnN0cmluZyA9ICcvY2FzZS9yZXBvcnRlZC1jYXNlcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybFN1YnN0cmluZyA9ICcvY2FzZS9yZXBvcnRlZC1jYXNlcy9yZXBvcnRlZC1ieS1tZSc7XG4gICAgfVxuICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHVybFN1YnN0cmluZztcblxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIHRoaXMuY2xvc2VTbWlsZXkoKTtcbiAgfVxuXG4gIHJlc2V0Rm9ybSgpIHtcbiAgICB0aGlzLnJlcG9ydEFDYXNlUmVzZXQoKTtcbiAgICB0aGlzLmFkZFRvQ2FzZVJlc2V0KCk7XG4gIH1cblxuICByZXBvcnRBQ2FzZVJlc2V0KCkge1xuICAgIHRoaXMucGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoUkVQT1JUX0NBU0VfUEFZTE9BRCkpO1xuICB9XG5cbiAgYWRkVG9DYXNlUmVzZXQoKSB7XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLm5hbWUgPSAnJztcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuZGVzY3JpcHRpb24gPSB7IHRleHQ6ICcnLCBhdHRhY2htZW50czogW10gfTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQucHJpb3JpdHkgPSB7IGlkOiAnJywgY3VzdG9tX2ZpZWxkczogW10gfTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZV90eXBlID0geyBpZDogJycsIGN1c3RvbV9maWVsZHM6IFtdIH07XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLnJjX2RldGFpbHMgPSB7XG4gICAgICBpZHM6IFtdLFxuICAgICAgc2VwYXJhdGVfcmNfY2FzZXM6IGZhbHNlLFxuICAgICAgbWFpbl9yY19pZDogJycsXG4gICAgfTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2F0ZWdvcnkgPSB7IGlkczogW10sIGN1c3RvbV9maWVsZHM6IFtdIH07XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmFkZGl0aW9uYWxfY2F0ZWdvcnkgPSB7IGlkczogW10sIGN1c3RvbV9maWVsZHM6IFtdIH07XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3MgPSAwO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NpZ25lZXNfZ3JvdXAgPSBbXTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cub3duZXJzID0gW107XG4gICAgdGhpcy5hZGRUb0Nhc2VQYXlsb2FkLmNhc2VUb1dvcmtmbG93LmFzc2lnbmVlcyA9IFtdO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy53b3JrZmxvd19pZCA9ICcnO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lID0ge1xuICAgICAgZHVlX2RhdGU6ICcnLFxuICAgICAgc3RhZ2VzX2Fzc2lnbmVlczogW10sXG4gICAgICBhc3NpZ25lZV9yZW1pbmRfYmVmb3JlOiAwLFxuICAgICAgb3duZXJfcmVtaW5kX2JlZm9yZTogMCxcbiAgICB9O1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5leGNlcHRpb25fdHlwZSA9ICcnO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NvY2lhdGVkX3Jpc2tzID0ge1xuICAgICAgdGV4dDogJycsXG4gICAgICBhdHRhY2htZW50czogW10sXG4gICAgfTtcbiAgICB0aGlzLmFkZFRvQ2FzZVBheWxvYWQuY2FzZVRvV29ya2Zsb3cuZXZpZGVuY2VfZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZWNvbW1lbmRhdGlvbnMgPSB7XG4gICAgICB0ZXh0OiAnJyxcbiAgICAgIGF0dGFjaG1lbnRzOiBbXSxcbiAgICB9O1xuICAgIHRoaXMuYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5vdmVyc2lnaHRzID0ge1xuICAgICAgY2NfaWRzOiBbXSxcbiAgICAgIGNjX2ZhaWx1cmVzX2lkczogW10sXG4gICAgfTtcbiAgICB0aGlzLnNlbGVjdGVkT3ZlcnNpZ2h0cy5jY19saXN0ID0gW107XG4gICAgdGhpcy5zZWxlY3RlZE92ZXJzaWdodHMuY2NfZmFpbHVyZXNfbGlzdCA9IFtdO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cyA9IHsgLi4uQURESVRJT05BTF9PUFRJT05fU1RBVFVTIH07XG4gIH1cblxuICBjbG9zZVNtaWxleShldnQ/OiBhbnkpIHtcbiAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlV29ya0Zsb3codGhpcy5jYXNlRGF0YSwgZmFsc2UpO1xuICB9XG5cbiAgY2xvc2VXb3JrRmxvdyhldnQ6IGFueSwgY29uZmlybTogYW55KSB7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQsIGNvbmZpcm0gfSk7XG4gIH1cblxuICBvbkNhc2VMb2FkZXIoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICd0eXBlJzoge1xuICAgICAgICB0aGlzLmxvYWRlci50eXBlTG9hZGVyID0gZXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAncHJpb3JpdHknOiB7XG4gICAgICAgIHRoaXMubG9hZGVyLnByaW9yaXR5TG9hZGVyID0gZXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNwbGF5QWRkaXRpb25hbE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cy5FWENFUFRJT05fVFlQRSB8fFxuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzLkVWSURFTkNFIHx8XG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMuUFJJT1JJVFkgfHxcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cy5JU1NVRV9UWVBFIHx8XG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMuQVNTT0NJQVRFRF9SSVNLUyB8fFxuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzLk9WRVJTSUdIVCB8fFxuICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzLlJFQ09NTUVOREVEX0FDVElPTlNcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNoZWNrbG9hZGVyKCkge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5sb2FkZXIudHlwZUxvYWRlciAmJlxuICAgICAgICB0aGlzLmxvYWRlci5wcmlvcml0eUxvYWRlciAmJlxuICAgICAgICB0aGlzLmxvYWRlci5jYXNlTG9hZGVyICYmXG4gICAgICAgIHRoaXMubG9hZGVyLmdyb3VwTGlzdExvYWRlciAmJlxuICAgICAgICB0aGlzLmxvYWRlci51c2VyTGlzdExvYWRlclxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmxvYWRlci50eXBlTG9hZGVyICYmIHRoaXMubG9hZGVyLnByaW9yaXR5TG9hZGVyKSB8fFxuICAgICAgKHRoaXMubG9hZGVyLnBlcm1pc3Npb25Mb2FkZXIgJiYgdGhpcy53b3JrZmxvd1R5cGUgPT09ICdBQ1RXJykgfHxcbiAgICAgIHRoaXMubG9hZGVyLnJlcG9ydENhc2VMb2FkZXJcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIXNob3dTbWlsZXlcIiBjbGFzcz1cIndvcmtmbG93LWNhc2VcIj5cbiAgPGFwcC1jYXNlLXR5cGVcbiAgICAqbmdJZj1cIm1vZGUgIT09ICdFRElUJyAmJiBjYXNlVHlwZVBlcm1pc3Npb25cIlxuICAgIFtmaWVsZFNlbGVjdGVkXT1cImZpZWxkQ2xpY2tlZFwiXG4gICAgKGNhc2VUeXBlQ2hhbmdlKT1cIm9uQ2FzZVR5cGVDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2FwcC1jYXNlLXR5cGU+XG4gIDxhcHAtbGlua2VkLXJlc3BvbnNpYmlsaXRpZXNcbiAgICAqbmdJZj1cIlsnQ09NUExJQU5DRV9XT1JLUk9PTScsICdBU1NFU1NNRU5UJ10uaW5jbHVkZXMob3BlbmVkRnJvbSlcIlxuICAgIFtwYXlsb2FkXT1cIlxuICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0UgPyBwYXlsb2FkIDogYWRkVG9DYXNlUGF5bG9hZFxuICAgIFwiXG4gICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgW2ZpZWxkU2VsZWN0ZWRdPVwiZmllbGRDbGlja2VkXCJcbiAgICBbcmVzcG9uc2liaWxpdHlEYXRhXT1cInJlc3BvbnNpYmlsaXR5RGF0YVwiXG4gICAgKGZpZWxkQ2xpY2tlZCk9XCJvbkZpZWxkQ2xpY2tlZCgkZXZlbnQpXCJcbiAgPjwvYXBwLWxpbmtlZC1yZXNwb25zaWJpbGl0aWVzPlxuICA8YXBwLWxpbmtlZC1hc3Nlc3NtZW50XG4gICAgKm5nSWY9XCJvcGVuZWRGcm9tID09PSAnQVNTRVNTTUVOVCdcIlxuICAgIFtwYXlsb2FkXT1cInBheWxvYWRcIlxuICAgIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIlxuICAgIFtmaWVsZFNlbGVjdGVkXT1cImZpZWxkQ2xpY2tlZFwiXG4gICAgW3Jlc3BvbnNpYmlsaXR5RGF0YV09XCJyZXNwb25zaWJpbGl0eURhdGFcIlxuICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCJcbiAgICAoZmllbGRDbGlja2VkKT1cIm9uRmllbGRDbGlja2VkKCRldmVudClcIlxuICA+PC9hcHAtbGlua2VkLWFzc2Vzc21lbnQ+XG4gIDxhcHAtY2FzZS1kZXRhaWxzXG4gICAgW3BheWxvYWRdPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/IHBheWxvYWQgOiBhZGRUb0Nhc2VQYXlsb2FkXG4gICAgXCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcbiAgICBbY2FzZVR5cGVTZWxlY3RlZF09XCJjYXNlVHlwZVNlbGVjdGVkXCJcbiAgPjwvYXBwLWNhc2UtZGV0YWlscz5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XXCJcbiAgICBjbGFzcz1cImhlYWQtbGFiZWwgdngtZnMtMTAgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTRcIlxuICA+XG4gICAgQ0FTRSBERVRBSUxTXG4gIDwvc3Bhbj5cbiAgPGFwcC1pbmZvcm1hdGlvbi1ibG9ja1xuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICA+PC9hcHAtaW5mb3JtYXRpb24tYmxvY2s+XG4gIDxhcHAtcmMtZGV0YWlsc1xuICAgIFtwYXlsb2FkXT1cIlxuICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0UgPyBwYXlsb2FkIDogYWRkVG9DYXNlUGF5bG9hZFxuICAgIFwiXG4gICAgW2ZpZWxkU2VsZWN0ZWRdPVwiZmllbGRDbGlja2VkXCJcbiAgICBbY2FzZVR5cGVTZWxlY3RlZF09XCJjYXNlVHlwZVNlbGVjdGVkXCJcbiAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXG4gICAgW2luaXRpYWxTZWxlY3Rpb25dPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRVxuICAgICAgICA/IHBheWxvYWQ/LnJjX2RldGFpbHNcbiAgICAgICAgOiBhZGRUb0Nhc2VQYXlsb2FkPy5yY19kZXRhaWxzXG4gICAgXCJcbiAgICBbbW9kZV09XCJtb2RlXCJcbiAgICBbd29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXG4gICAgKGZpZWxkQ2xpY2tlZCk9XCJvbkZpZWxkQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAob25SY0NoYW5nZSk9XCJvblJjQ2hhbmdlKCRldmVudClcIlxuICAgIChmaWx0ZXJEZXNlbGVjdG9yKT1cInBpY2tlclRvZ2dsZSgkZXZlbnQpXCJcbiAgPjwvYXBwLXJjLWRldGFpbHM+XG4gIDxhcHAtY2FzZS10eXBlLWRyb3Bkb3duXG4gICAgW3BheWxvYWRdPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/IHBheWxvYWQgOiBhZGRUb0Nhc2VQYXlsb2FkXG4gICAgXCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcbiAgICBbaW5pdGlhbFNlbGVjdGlvbl09XCJcbiAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLlJFUE9SVF9DQVNFXG4gICAgICAgID8gcGF5bG9hZD8uY2FzZV90eXBlXG4gICAgICAgIDogYWRkVG9DYXNlUGF5bG9hZD8uY2FzZV90eXBlXG4gICAgXCJcbiAgICBbbW9kZV09XCJtb2RlXCJcbiAgICBbY2FzZVR5cGVTZWxlY3RlZF09XCJjYXNlVHlwZVNlbGVjdGVkXCJcbiAgICBbd29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXG4gICAgKG9uQ2FzZVR5cGVDaGFuZ2UpPVwib25DYXNlVHlwZURyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgIChvbkNhc2VUeXBlTG9hZGluZyk9XCJvbkNhc2VMb2FkZXIoJGV2ZW50LCAndHlwZScpXCJcbiAgPjwvYXBwLWNhc2UtdHlwZS1kcm9wZG93bj5cbiAgPGFwcC1jYXNlLWNhdGVnb3J5XG4gICAgW3BheWxvYWRdPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/IHBheWxvYWQgOiBhZGRUb0Nhc2VQYXlsb2FkXG4gICAgXCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFtjYXNlVHlwZVNlbGVjdGVkXT1cImNhc2VUeXBlU2VsZWN0ZWRcIlxuICAgIFtpbml0aWFsU2VsZWN0aW9uXT1cIlxuICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0VcbiAgICAgICAgPyBwYXlsb2FkPy5jYXRlZ29yeVxuICAgICAgICA6IGFkZFRvQ2FzZVBheWxvYWQ/LmNhdGVnb3J5XG4gICAgXCJcbiAgICBbaW5pdGlhbEFkZGl0aW9uYWxTZWxlY3Rpb25dPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRVxuICAgICAgICA/IHBheWxvYWQ/LmFkZGl0aW9uYWxfY2F0ZWdvcnlcbiAgICAgICAgOiBhZGRUb0Nhc2VQYXlsb2FkPy5hZGRpdGlvbmFsX2NhdGVnb3J5XG4gICAgXCJcbiAgICBbbW9kZV09XCJtb2RlXCJcbiAgICBbd29ya2Zsb3dUeXBlXT1cIndvcmtmbG93VHlwZVwiXG4gICAgKG9uQ2F0ZWdvcnlDaGFuZ2UpPVwib25DYXRlZ29yeUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoZmllbGRDbGlja2VkKT1cIm9uRmllbGRDbGlja2VkKCRldmVudClcIlxuICAgIChmaWx0ZXJEZXNlbGVjdG9yKT1cInBpY2tlclRvZ2dsZSgkZXZlbnQpXCJcbiAgPjwvYXBwLWNhc2UtY2F0ZWdvcnk+XG4gIDxhcHAtcmVwb3J0LWRhdGVcbiAgICBbcGF5bG9hZF09XCJcbiAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLlJFUE9SVF9DQVNFID8gcGF5bG9hZCA6IGFkZFRvQ2FzZVBheWxvYWRcbiAgICBcIlxuICAgIFtmaWVsZFNlbGVjdGVkXT1cImZpZWxkQ2xpY2tlZFwiXG4gICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxuICAgIChmaWVsZENsaWNrZWQpPVwib25GaWVsZENsaWNrZWQoJGV2ZW50KVwiXG4gID48L2FwcC1yZXBvcnQtZGF0ZT5cbiAgPGFwcC1jYXNlLXByaW9yaXR5XG4gICAgW3BheWxvYWRdPVwiXG4gICAgICBjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5SRVBPUlRfQ0FTRSA/IHBheWxvYWQgOiBhZGRUb0Nhc2VQYXlsb2FkXG4gICAgXCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFtjYXNlVHlwZVNlbGVjdGVkXT1cImNhc2VUeXBlU2VsZWN0ZWRcIlxuICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcbiAgICBbaW5pdGlhbFNlbGVjdGlvbl09XCJcbiAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLlJFUE9SVF9DQVNFXG4gICAgICAgID8gcGF5bG9hZD8ucHJpb3JpdHlcbiAgICAgICAgOiBhZGRUb0Nhc2VQYXlsb2FkPy5wcmlvcml0eVxuICAgIFwiXG4gICAgW21vZGVdPVwibW9kZVwiXG4gICAgW3dvcmtmbG93VHlwZV09XCJ3b3JrZmxvd1R5cGVcIlxuICAgIChvblByaW9yaXR5Q2hhbmdlKT1cIm9uUHJpb3JpdHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG9uUHJpb3JpdHlMb2FkZXIpPVwib25DYXNlTG9hZGVyKCRldmVudCwgJ3ByaW9yaXR5JylcIlxuICA+PC9hcHAtY2FzZS1wcmlvcml0eT5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XXCJcbiAgICBjbGFzcz1cImhlYWQtbGFiZWwgdngtZnMtMTAgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTRcIlxuICA+XG4gICAgVVNFUiBERVRBSUxTXG4gIDwvc3Bhbj5cbiAgPGFwcC1jYXNlLW93bmVyc1xuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgIFtwYXlsb2FkXT1cImFkZFRvQ2FzZVBheWxvYWRcIlxuICAgIFtpbml0aWFsU2VsZWN0aW9uXT1cImFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vd25lcnNcIlxuICAgIFt3b3JrZmxvd0lkXT1cImFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py53b3JrZmxvd19pZFwiXG4gICAgW2ZpZWxkU2VsZWN0ZWRdPVwiZmllbGRDbGlja2VkXCJcbiAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXG4gICAgW21vZGVdPVwibW9kZVwiXG4gICAgKGZpZWxkQ2xpY2tlZCk9XCJvbkZpZWxkQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAoZmlsdGVyRGVzZWxlY3Rvcik9XCJwaWNrZXJUb2dnbGUoJGV2ZW50KVwiXG4gID48L2FwcC1jYXNlLW93bmVycz5cbiAgPGFwcC1jYXNlLWFzc2lnbmVlc1xuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgIFtwYXlsb2FkXT1cImFkZFRvQ2FzZVBheWxvYWRcIlxuICAgIFtmaWVsZFNlbGVjdGVkXT1cImZpZWxkQ2xpY2tlZFwiXG4gICAgW2luaXRpYWxTZWxlY3Rpb25dPVwiYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3dcIlxuICAgIFt1c2VyTGlzdF09XCJ1c2VyTGlzdFwiXG4gICAgW2dyb3VwTGlzdF09XCJncm91cExpc3RcIlxuICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcbiAgICAoZmllbGRDbGlja2VkKT1cIm9uRmllbGRDbGlja2VkKCRldmVudClcIlxuICAgIChmaWx0ZXJEZXNlbGVjdG9yKT1cInBpY2tlclRvZ2dsZSgkZXZlbnQpXCJcbiAgPjwvYXBwLWNhc2UtYXNzaWduZWVzPlxuICA8YXBwLWZpZWxkLWhvbGRlclxuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuUkVQT1JUX0NBU0VcIlxuICAgIFtpbWFnZV09XCJBU1NFVFMuZm9ybWF0X2V2aWRlbmNlXCJcbiAgICBbZGlzYWJsZWRdPVwiZmllbGRTZWxlY3Rvcj8uaW5jbHVkZXMoZmllbGRDbGlja2VkKVwiXG4gICAgW2NoZWNrZWRdPVwicGF5bG9hZD8uc3VwcG9ydGluZ19kb2N1bWVudHM/Lmxlbmd0aFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGZpZWxkPlxuICAgICAgPGFwcC12Yy1sYWJlbFxuICAgICAgICBsYWJlbFxuICAgICAgICBbbGFiZWxUZXh0XT1cInJlcG9ydFRleHRzLmNhc2VfZGV0YWlscy5hdHRhY2htZW50cy50aXRsZVwiXG4gICAgICA+PC9hcHAtdmMtbGFiZWw+XG4gICAgICA8YXBwLWZvcm1hdC1hbmQtZXZpZGVuY2VcbiAgICAgICAgKHVwZGF0ZUZpbGVzKT1cInNhdmVTdXBwb3J0aW5nRG9jdW1lbnQoJGV2ZW50KVwiXG4gICAgICAgIFttb2RlXT1cIidyZXBvcnRBQ2FzZSdcIlxuICAgICAgICBbZm9ybWF0RXZpZGFuY2VEYXRhXT1cInBheWxvYWQ/LnN1cHBvcnRpbmdfZG9jdW1lbnRzXCJcbiAgICAgID48L2FwcC1mb3JtYXQtYW5kLWV2aWRlbmNlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2FwcC1maWVsZC1ob2xkZXI+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJjYXNlVHlwZVNlbGVjdGVkID09PSBjYXNlVHlwZS5BRERfQ0FTRV9UT19XT1JLRkxPV1wiXG4gICAgY2xhc3M9XCJoZWFkLWxhYmVsIHZ4LWZzLTEwIHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1iLTRcIlxuICA+XG4gICAgQ0FTRSBSRVNPTFVUSU9OIERFVEFJTFNcbiAgPC9zcGFuPlxuICA8YXBwLWNhc2UtcmVzb2x1dGlvbi1kZWFkbGluZVxuICAgICpuZ0lmPVwiY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1dcIlxuICAgIFtwYXlsb2FkXT1cImFkZFRvQ2FzZVBheWxvYWRcIlxuICAgIFt1c2VyTGlzdF09XCJ1c2VyTGlzdFwiXG4gICAgW2dyb3VwTGlzdF09XCJncm91cExpc3RcIlxuICAgIFtpbml0aWFsU2VsZWN0aW9uXT1cImFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93XCJcbiAgICBbZmllbGRTZWxlY3RlZF09XCJmaWVsZENsaWNrZWRcIlxuICAgIFttb2RlXT1cIm1vZGVcIlxuICAgIChmaWVsZENsaWNrZWQpPVwib25GaWVsZENsaWNrZWQoJGV2ZW50KVwiXG4gICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxuICAgIChmaWx0ZXJEZXNlbGVjdG9yKT1cInBpY2tlclRvZ2dsZSgkZXZlbnQpXCJcbiAgPjwvYXBwLWNhc2UtcmVzb2x1dGlvbi1kZWFkbGluZT5cbiAgPHNwYW5cbiAgICAqbmdJZj1cIlxuICAgICAgY2FzZVR5cGVTZWxlY3RlZCA9PT0gY2FzZVR5cGUuQUREX0NBU0VfVE9fV09SS0ZMT1cgJiZcbiAgICAgIGRpc3BsYXlBZGRpdGlvbmFsT3B0aW9uc1xuICAgIFwiXG4gICAgY2xhc3M9XCJoZWFkLWxhYmVsIHZ4LWZzLTEwIHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1saC00XCJcbiAgPlxuICAgIEFERElUSU9OQUwgT1BUSU9OU1xuICA8L3NwYW4+XG4gIDwhLS0gRXhjZXB0aW9uIFR5cGUgLS0+XG4gIDxhcHAtZmllbGQtaG9sZGVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGFkZGl0aW9uYWxPcHRpb25TdGF0dXMuRVhDRVBUSU9OX1RZUEUgJiZcbiAgICAgIGNhc2VUeXBlU2VsZWN0ZWQgPT09IGNhc2VUeXBlLkFERF9DQVNFX1RPX1dPUktGTE9XXG4gICAgXCJcbiAgICBbc2Nyb2xsVG9Cb3R0b21dPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIFthY3RpdmVdPVwiZmFsc2VcIlxuICAgIFtkaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZENsaWNrZWQpXCJcbiAgICBbY2hlY2tlZF09XCJhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8uZXhjZXB0aW9uX3R5cGVcIlxuICAgIFtpbWFnZV09XCJBU1NFVFMub2JqZWN0aXZlc1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGZpZWxkPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkV4Y2VwdGlvbiBUeXBlPC9sYWJlbD5cbiAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgY2xhc3M9XCJtYWluLWZpbGVkXCJcbiAgICAgICAgW3ZhbHVlXT1cImV4Y2VwdGlvblR5cGUuREVTSUdOX0VYQ0VQVElPTlwiXG4gICAgICAgIG5hbWU9XCJleGNlcHRpb24tdHlwZVwiXG4gICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5leGNlcHRpb25fdHlwZSA9PT1cbiAgICAgICAgICBleGNlcHRpb25UeXBlLkRFU0lHTl9FWENFUFRJT05cbiAgICAgICAgXCJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRFeGNlcHRpb24oZXhjZXB0aW9uVHlwZS5ERVNJR05fRVhDRVBUSU9OKVwiXG4gICAgICAgID5EZXNpZ24gRXhjZXB0aW9uXG4gICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgY2xhc3M9XCJtYWluLWZpbGVkXCJcbiAgICAgICAgW3ZhbHVlXT1cImV4Y2VwdGlvblR5cGUuRUZGRUNUSVZFTkVTU19FWENFUFRJT05cIlxuICAgICAgICBuYW1lPVwiZXhjZXB0aW9uLXR5cGVcIlxuICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICBhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8uZXhjZXB0aW9uX3R5cGUgPT09XG4gICAgICAgICAgZXhjZXB0aW9uVHlwZS5FRkZFQ1RJVkVORVNTX0VYQ0VQVElPTlxuICAgICAgICBcIlxuICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNldEV4Y2VwdGlvbihleGNlcHRpb25UeXBlLkVGRkVDVElWRU5FU1NfRVhDRVBUSU9OKVwiXG4gICAgICAgID5FZmZlY3RpdmVuZXNzIEV4Y2VwdGlvblxuICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYXBwLWZpZWxkLWhvbGRlcj5cblxuICA8IS0tIEFzc29jaWF0ZWQgUmlza3MgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb25TdGF0dXMuQVNTT0NJQVRFRF9SSVNLU1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImZpZWxkU2VsZWN0b3I/LmluY2x1ZGVzKGZpZWxkQ2xpY2tlZClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cImFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy50ZXh0XCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLmFzc29jaWF0ZWRfcmlza3NcIlxuICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy50ZXh0Py50cmltKClcbiAgICAgICAgICAgID8ubGVuZ3RoXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy50ZXh0Py50cmltKClcbiAgICAgICAgICAgIC5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QXNzb2NpYXRlZCBSaXNrcyA8L2xhYmVsPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgICA/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWxpc3RcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCB1cGxvYWRpbmdGaWxlIG9mIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93XG4gICAgICAgICAgICAgICAgPy5hc3NvY2lhdGVkX3Jpc2tzPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyB1cGxvYWRpbmdGaWxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgICA/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWxpc3RcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBmaWxlIG9mIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5hc3NvY2lhdGVkX3Jpc2tzXG4gICAgICAgICAgICAgICAgPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBmaWxlPy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShmaWxlLCAnQVNTT0NJQVRFRF9SSVNLUycpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5hc3NvY2lhdGVkX3Jpc2tzLnRleHRcIlxuICAgICAgICAgIFtlZGl0b3JDb25maWddPVwie1xuICAgICAgICAgICAgbW9kZTogJ3ByaW1lJyxcbiAgICAgICAgICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcbiAgICAgICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgICAgICBmaWxlOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQXNzb2NpYXRlZCBSaXNrcydcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2tPdXRzaWRlKT1cImNoZWNrRGVzY3JpcHRpb24oKVwiXG4gICAgICAgICAgKHNlbmRTYXZlZEZpbGVzKT1cInNlbGVjdEZpbGUoJ0FTU09DSUFURURfUklTS1MnLCAkZXZlbnQpXCJcbiAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBPdmVyc2VlciAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxuICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvblN0YXR1cy5PVkVSU0lHSFRcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZENsaWNrZWQpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/Lm92ZXJzaWdodHM/LmNjX2lkcz8ubGVuZ3RoIHx8XG4gICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vdmVyc2lnaHRzPy5jY19mYWlsdXJlc19pZHM/Lmxlbmd0aFxuICAgICAgXCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLm92ZXJzaWdodFwiXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vdmVyc2lnaHRzPy5jY19pZHM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/Lm92ZXJzaWdodHM/LmNjX2ZhaWx1cmVzX2lkc1xuICAgICAgICAgICAgICA/Lmxlbmd0aFxuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vdmVyc2lnaHRzPy5jY19pZHM/Lmxlbmd0aCB8fFxuICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5vdmVyc2lnaHRzPy5jY19mYWlsdXJlc19pZHM/Lmxlbmd0aFxuICAgICAgICBcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk92ZXJzaWdodDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIiFzZWxlY3RlZE92ZXJzaWdodHM/LmNjX2xpc3Q/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJ0NBU0VfQ0MnLCAnQ0FTRV9DQycpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBoYXZlIG92ZXJzaWdodCBvZiB0aGlzIGNhc2U/XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJzZWxlY3RlZE92ZXJzaWdodHM/LmNjX2xpc3Q/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVJdGVtKCdDQVNFX0NDJywgc2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19saXN0WzBdKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJzZWxlY3RlZE92ZXJzaWdodHM/LmNjX2xpc3RbMF0/LmVtcGxveWVlX25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfbGlzdFswXT8uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJDQy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfbGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpZWxkICE9PSAnQ0FTRV9DQydcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJ0NBU0VfQ0MnLCAnQ0FTRV9DQycpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgIXNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdCB8fFxuICAgICAgICAgICAgc2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19mYWlsdXJlc19saXN0Py5sZW5ndGggPT09IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlRmllbGRTZWxlY3RvcignQ0FTRV9GQ0MnLCAnQ0FTRV9GQ0MnKVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBzaG91bGQgYmUgbm90aWZpZWQgaWYgdGhlIGNhc2UgaXMgbm90IHJlc29sdmVkP1wiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdD8ubGVuZ3RoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBkZWxldGVJdGVtKCdDQVNFX0ZDQycsIHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdFswXSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19mYWlsdXJlc19saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIkZDQy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19mYWlsdXJlc19saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdD8uc2xpY2UoMSk/Lmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWVsZCAhPT0gJ0NBU0VfRkNDJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlRmllbGRTZWxlY3RvcignQ0FTRV9GQ0MnLCAnQ0FTRV9GQ0MnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjQ0MgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBjYyBvZiBzZWxlY3RlZE92ZXJzaWdodHM/LmNjX2xpc3QgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oJ0NBU0VfQ0MnLCBjYylcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGNjPy5lbXBsb3llZV9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNGQ0MgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBmY2Mgb2Ygc2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19mYWlsdXJlc19saXN0IHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJkZWxldGVJdGVtKCdDQVNFX0ZDQycsIGZjYylcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGZjYz8uZW1wbG95ZWVfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBFdmlkZW5jZSAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvblN0YXR1cy5FVklERU5DRVwiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImZpZWxkU2VsZWN0b3I/LmluY2x1ZGVzKGZpZWxkQ2xpY2tlZClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJ0cnVlXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5FdmlkZW5jZTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCJcbiAgICAgICAgICAgID5EbyB5b3Ugd2FudCBldmlkZW5jZSBvZiBjb21wbGV0aW9uIG9mIHRoZSBjYXNlIHRvIGJlXG4gICAgICAgICAgICB1cGxvYWRlZD88L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidmaWxlLWV2aWRlbmNlJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCIxXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LmV2aWRlbmNlX2VuYWJsZWRcIlxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNldEV2aWRlbmNlKHRydWUpXCJcbiAgICAgICAgICAgICAgPlllc1xuICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidmaWxlLWV2aWRlbmNlJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCIwXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiIWFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5ldmlkZW5jZV9lbmFibGVkXCJcbiAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRFdmlkZW5jZShmYWxzZSlcIlxuICAgICAgICAgICAgICA+Tm9cbiAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBSZWNvbW1lbmRlZCBBY3Rpb25zIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uU3RhdHVzLlJFQ09NTUVOREVEX0FDVElPTlNcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmaWVsZFNlbGVjdG9yPy5pbmNsdWRlcyhmaWVsZENsaWNrZWQpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVjb21tZW5kYXRpb25zPy50ZXh0XCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLnJlY29tbWVuZGVkX2FjdGlvblwiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAhKFxuICAgICAgICAgICAgYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LnJlY29tbWVuZGF0aW9ucz8udGV4dFxuICAgICAgICAgICAgfCBzcGFjZUJyZWFrZXJcbiAgICAgICAgICApPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIChcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5yZWNvbW1lbmRhdGlvbnM/LnRleHRcbiAgICAgICAgICAgIHwgc3BhY2VCcmVha2VyXG4gICAgICAgICAgKT8ubGVuZ3RoID4gMFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZWNvbW1lbmRlZCBBY3Rpb25zPC9sYWJlbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVjb21tZW5kYXRpb25zPy5hdHRhY2htZW50c1xuICAgICAgICAgICAgICA/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWxpc3RcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCB1cGxvYWRpbmdGaWxlIG9mIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93XG4gICAgICAgICAgICAgICAgPy5yZWNvbW1lbmRhdGlvbnM/LmF0dGFjaG1lbnRzXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IHVwbG9hZGluZ0ZpbGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCIyXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGFkZFRvQ2FzZVBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5yZWNvbW1lbmRhdGlvbnM/LmF0dGFjaG1lbnRzXG4gICAgICAgICAgICAgID8ubGVuZ3RoID4gMFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZpbGUtbGlzdFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGZpbGUgb2YgYWRkVG9DYXNlUGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LnJlY29tbWVuZGF0aW9uc1xuICAgICAgICAgICAgICAgID8uYXR0YWNobWVudHNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZmlsZT8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZShmaWxlLCAnUkVDT01NRU5ERURfQUNUSU9OUycpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkVG9DYXNlUGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZWNvbW1lbmRhdGlvbnMudGV4dFwiXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJ7XG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgICAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGU6IHRydWUsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1JlY29tbWVuZGVkIGFjdGlvbnMnXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICBhZGRUb0Nhc2VQYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVjb21tZW5kYXRpb25zPy50ZXh0Py50cmltKClcbiAgICAgICAgICAgICAgPy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gcmVtb3ZlRXJyb3IoJ2lzc3VlUmVjb21tZW5kYXRpb24nKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICBcIlxuICAgICAgICAgIChjbGlja091dHNpZGUpPVwiY2hlY2tEZXNjcmlwdGlvbigpXCJcbiAgICAgICAgICAoc2VuZFNhdmVkRmlsZXMpPVwic2VsZWN0RmlsZSgnUkVDT01NRU5ERURfQUNUSU9OUycsICRldmVudClcIlxuICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBSaXNrIENsYXNzaWZpY2F0aW9uIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uU3RhdHVzLlJJU0tfQ0xBU1NJRklDQVRJT05cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIGlkPVwicmlza19jbGFzc2lmaWNhdGlvblwiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImZpZWxkU2VsZWN0b3I/LmluY2x1ZGVzKGZpZWxkQ2xpY2tlZClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJhZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3NcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMucmlza3NcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiIWFkZFRvQ2FzZVBheWxvYWQucmlza19jbGFzc1wiIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiYWRkVG9DYXNlUGF5bG9hZC5yaXNrX2NsYXNzXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SaXNrIENsYXNzaWZpY2F0aW9uPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNsYXNzaWZpY2F0aW9uXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImxvd1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2xhc3Mgb2Ygcmlza0NsYXNzaWZpY2F0aW9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjbGFzcy5jbGFzc11cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY2xhc3NpZmljYXRpb25cIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiY2xhc3MudmFsdWVcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3MgPT09IGNsYXNzLnZhbHVlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRUb0Nhc2VQYXlsb2FkLnJpc2tfY2xhc3NcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPnt7IGNsYXNzLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImNoZWNrbG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cbjxhcHAtY2hlY2tib3gtbGlzdFxuICBbY29uZmlnXT1cIm92ZXJzaWdodF9jb25maWdcIlxuICBbdHdvQ29sdW1uXT1cInRydWVcIlxuICBbaXRlbXNMaXN0XT1cInVzZXJMaXN0XCJcbiAgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRPdmVyc2lnaHRzPy5jY19saXN0XCJcbiAgW2lkZW50aWZpZXJLZXldPVwiJ2VtcGxveWVlX2VtYWlsJ1wiXG4gIFtkaXNwbGF5S2V5XT1cIidlbXBsb3llZV9uYW1lJ1wiXG4gIFt0b29sdGlwS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnQ0FTRV9DQydcIlxuICAoc2F2ZUxpc3QpPVwic2VsZWN0b3JBY3Rpb24oJGV2ZW50LCAnQ0FTRV9DQycpXCJcbiAgKGNsb3NlTGlzdCk9XCJmaWVsZERlc2VsZWN0b3IoJ0NBU0VfQ0MnKVwiXG4gIFtsb2FkZWRdPVwibG9hZGVyLnVzZXJMaXN0TG9hZGVyXCJcbj48L2FwcC1jaGVja2JveC1saXN0PlxuXG48YXBwLWNoZWNrYm94LWxpc3RcbiAgW2NvbmZpZ109XCJvdmVyc2lnaHRfY29uZmlnXCJcbiAgW3R3b0NvbHVtbl09XCJ0cnVlXCJcbiAgW2l0ZW1zTGlzdF09XCJ1c2VyTGlzdFwiXG4gIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkT3ZlcnNpZ2h0cz8uY2NfZmFpbHVyZXNfbGlzdFwiXG4gIFtpZGVudGlmaWVyS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxuICBbZGlzcGxheUtleV09XCInZW1wbG95ZWVfbmFtZSdcIlxuICBbdG9vbHRpcEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0NBU0VfRkNDJ1wiXG4gIChzYXZlTGlzdCk9XCJzZWxlY3RvckFjdGlvbigkZXZlbnQsICdDQVNFX0ZDQycpXCJcbiAgKGNsb3NlTGlzdCk9XCJmaWVsZERlc2VsZWN0b3IoJ0NBU0VfRkNDJylcIlxuICBbbG9hZGVkXT1cImxvYWRlci51c2VyTGlzdExvYWRlclwiXG4+PC9hcHAtY2hlY2tib3gtbGlzdD5cblxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwic21pbGV5QWN0aW9ucygkZXZlbnQpXCJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxuPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxuIl19