@cqa-lib/cqa-ui 1.1.145 → 1.1.147

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 (23) hide show
  1. package/esm2020/lib/execution-screen/ai-agent-step/ai-agent-step.component.mjs +7 -2
  2. package/esm2020/lib/execution-screen/api-step/api-step.component.mjs +6 -2
  3. package/esm2020/lib/execution-screen/basic-step/basic-step.component.mjs +8 -4
  4. package/esm2020/lib/execution-screen/condition-step/condition-step.component.mjs +8 -4
  5. package/esm2020/lib/execution-screen/db-verification-step/db-verification-step.component.mjs +6 -2
  6. package/esm2020/lib/execution-screen/execution-step.models.mjs +1 -1
  7. package/esm2020/lib/execution-screen/loop-step/loop-step.component.mjs +8 -4
  8. package/esm2020/lib/execution-screen/step-group/step-group.component.mjs +5 -3
  9. package/esm2020/lib/execution-screen/step-renderer/step-renderer.component.mjs +75 -5
  10. package/fesm2015/cqa-lib-cqa-ui.mjs +124 -19
  11. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  12. package/fesm2020/cqa-lib-cqa-ui.mjs +115 -18
  13. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  14. package/lib/execution-screen/ai-agent-step/ai-agent-step.component.d.ts +2 -5
  15. package/lib/execution-screen/api-step/api-step.component.d.ts +2 -5
  16. package/lib/execution-screen/basic-step/basic-step.component.d.ts +2 -5
  17. package/lib/execution-screen/condition-step/condition-step.component.d.ts +2 -5
  18. package/lib/execution-screen/db-verification-step/db-verification-step.component.d.ts +2 -5
  19. package/lib/execution-screen/execution-step.models.d.ts +6 -0
  20. package/lib/execution-screen/loop-step/loop-step.component.d.ts +2 -5
  21. package/lib/execution-screen/step-group/step-group.component.d.ts +5 -1
  22. package/lib/execution-screen/step-renderer/step-renderer.component.d.ts +6 -1
  23. package/package.json +1 -1
@@ -336,7 +336,11 @@ export class DbVerificationStepComponent extends BaseStepComponent {
336
336
  this.viewFullLogs.emit();
337
337
  }
338
338
  onSelfHealAction(event) {
339
- this.selfHealAction.emit(event);
339
+ this.selfHealAction.emit({
340
+ type: event.type,
341
+ healedLocator: event.healedLocator,
342
+ testStepId: this.step?.testStepId || undefined
343
+ });
340
344
  }
341
345
  }
342
346
  DbVerificationStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DbVerificationStepComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -397,4 +401,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
397
401
  }], selfHealAction: [{
398
402
  type: Output
399
403
  }] } });
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGItdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2RiLXZlcmlmaWNhdGlvbi1zdGVwL2RiLXZlcmlmaWNhdGlvbi1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9kYi12ZXJpZmljYXRpb24tc3RlcC9kYi12ZXJpZmljYXRpb24tc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUkzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7OztBQVNoRixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsaUJBQWlCO0lBTmxFOztRQXdCVyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBSTdCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHakMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRTdCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBQ25FLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDekQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbkMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQW9ELENBQUM7UUFJaEcsdUJBQWtCLEdBQWdDLEtBQUssQ0FBQztRQUV4RCxtQkFBYyxHQUFHO1lBQ2YsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUss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QkFBZ0IsQ0FBQyxLQUF1RDtRQUN0RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOzt3SEFwWVUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsbzhCQ2R4Qyxtb2RBb09BOzJGRHROYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsMEJBQTBCLFFBRzlCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs4QkFHckIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csK0JBQStCO3NCQUF2QyxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUlJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJWZXJpZmljYXRpb25TdGVwQ29uZmlnLCBEYlRlc3RSZXN1bHQsIERiUXVlcnlSZXN1bHQsIERiQXNzZXJ0aW9uUmVzdWx0LCBTdGVwU3RhdHVzLCBUaW1pbmdCcmVha2Rvd24sIEZhaWx1cmVEZXRhaWxzLCBTdWJTdGVwLCBTZWxmSGVhbEFuYWx5c2lzRGF0YSwgU2VsZkhlYWxBY3Rpb24sIEV4ZWN1dGlvblN0ZXBDb25maWcgfSBmcm9tICcuLi9leGVjdXRpb24tc3RlcC5tb2RlbHMnO1xuaW1wb3J0IHsgRHluYW1pY1RhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29uZmlnIH0gZnJvbSAnLi4vLi4vZW1wdHktc3RhdGUvZW1wdHktc3RhdGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFTVBUWV9TVEFURV9JTUFHRVMgfSBmcm9tICcuLi8uLi9hc3NldHMvaW1hZ2VzL2ltYWdlLWFzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50LCB1cGxvYWRCYXNlbGluZUV2ZW50IH0gZnJvbSAnLi4vdmlzdWFsLWNvbXBhcmlzb24vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWRiLXZlcmlmaWNhdGlvbi1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RiLXZlcmlmaWNhdGlvbi1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIERiVmVyaWZpY2F0aW9uU3RlcENvbXBvbmVudCBleHRlbmRzIEJhc2VTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBpZCE6IHN0cmluZztcbiAgQElucHV0KCkgdGVzdFN0ZXBSZXN1bHRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgc3RlcE51bWJlciE6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0YXR1cyE6IFN0ZXBTdGF0dXM7XG4gIEBJbnB1dCgpIGR1cmF0aW9uITogbnVtYmVyO1xuICBASW5wdXQoKSB0aW1pbmdCcmVha2Rvd24/OiBUaW1pbmdCcmVha2Rvd247XG4gIEBJbnB1dCgpIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgZGJUZXN0UmVzdWx0ITogRGJUZXN0UmVzdWx0O1xuICBASW5wdXQoKSBkYkNvbmZpZz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGJUeXBlOiBzdHJpbmc7XG4gIH07XG4gIEBJbnB1dCgpIGZhaWx1cmVEZXRhaWxzPzogRmFpbHVyZURldGFpbHM7XG4gIEBJbnB1dCgpIHJlYXNvbmluZz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBjb25maWRlbmNlPzogc3RyaW5nO1xuICBASW5wdXQoKSBzdGVwRGVsZXRlZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nQmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNNYWtpbmdDdXJyZW50QmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgc2VsZkhlYWxBbmFseXNpcz86IFNlbGZIZWFsQW5hbHlzaXNEYXRhO1xuICBASW5wdXQoKSBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyPzogKCkgPT4geyBpc0xvYWRpbmdBY2NlcHQ6IGJvb2xlYW47IGlzTG9hZGluZ01vZGlmeUFjY2VwdDogYm9vbGVhbiB9O1xuICBASW5wdXQoKSBvblN0ZXBDbGlja0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZywgZXZlbnQ/OiBFdmVudCkgPT4gdm9pZDtcbiAgQElucHV0KCkgaXNMaXZlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0ZXA/OiBFeGVjdXRpb25TdGVwQ29uZmlnO1xuXG4gIHNob3dGYWlsZWRTdGVwRGV0YWlsczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBtYWtlQ3VycmVudEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjxtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8dXBsb2FkQmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFuYWx5emUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RnVsbExvZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxmSGVhbEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0eXBlOiBTZWxmSGVhbEFjdGlvbjsgaGVhbGVkTG9jYXRvcjogc3RyaW5nOyB9PigpO1xuXG4gIG92ZXJyaWRlIGNvbmZpZyE6IERiVmVyaWZpY2F0aW9uU3RlcENvbmZpZztcblxuICB2ZXJpZmljYXRpb25GaWx0ZXI6ICdhbGwnIHwgJ2ZhaWxlZCcgfCAncGFzc2VkJyA9ICdhbGwnO1xuXG4gIGZpbHRlclNlZ21lbnRzID0gW1xuICAgIHsgbGFiZWw6ICdBbGwnLCB2YWx1ZTogJ2FsbCcgfSxcbiAgICB7IGxhYmVsOiAnRmFpbGVkIG9ubHknLCB2YWx1ZTogJ2ZhaWxlZCcgfSxcbiAgICB7IGxhYmVsOiAnUGFzc2VkIG9ubHknLCB2YWx1ZTogJ3Bhc3NlZCcgfSxcbiAgXTtcblxuICB2ZXJpZmljYXRpb25UYWJsZUNvbHVtbnM6IER5bmFtaWNUYWJsZUNvbHVtbltdID0gW107XG4gIFxuICBlbXB0eVN0YXRlQ29uZmlnOiBFbXB0eVN0YXRlQ29uZmlnID0ge1xuICAgIHRpdGxlOiAnTm8gQXNzZXJ0aW9ucycsXG4gICAgZGVzY3JpcHRpb246ICdObyB2ZXJpZmljYXRpb24gYXNzZXJ0aW9ucyBmb3VuZCBmb3IgdGhpcyBkYXRhYmFzZSBxdWVyeS4nLFxuICAgIGltYWdlVXJsOiBFTVBUWV9TVEFURV9JTUFHRVMuREFTSEJPQVJELFxuICAgIGFjdGlvbnM6IFtdLFxuICB9O1xuXG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBcbiAgLy8gQ2FjaGVkIHF1ZXJ5IHJlc3VsdHMgdG8gYXZvaWQgcmVjcmVhdGluZyBjb21wb25lbnRzIG9uIGV2ZXJ5IGNoYW5nZSBkZXRlY3Rpb25cbiAgY2FjaGVkUXVlcnlSZXN1bHRzOiBBcnJheTx7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfT4gPSBbXTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZygpO1xuICAgIHRoaXMuc2V0dXBUYWJsZUNvbHVtbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUNhY2hlZFF1ZXJ5UmVzdWx0cygpO1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gdGhpcy5leHBhbmRlZDtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0dXMoKTogU3RlcFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5zdGF0dXMgfHwgdGhpcy5zdGF0dXM7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIGNvbmZpZyB3aGVuIGlucHV0cyBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlc1snZGJUZXN0UmVzdWx0J10gfHwgY2hhbmdlc1snZGJDb25maWcnXSB8fCBjaGFuZ2VzWydleHBhbmRlZCddIHx8IGNoYW5nZXNbJ3N0YXR1cyddIHx8IGNoYW5nZXNbJ2R1cmF0aW9uJ10gfHwgY2hhbmdlc1snc3RlcERlbGV0ZWQnXSkge1xuICAgICAgdGhpcy51cGRhdGVDb25maWcoKTtcbiAgICAgIGlmIChjaGFuZ2VzWydkYlRlc3RSZXN1bHQnXSkge1xuICAgICAgICB0aGlzLnNldHVwVGFibGVDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkUXVlcnlSZXN1bHRzKCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFVwZGF0ZSBleHBhbmRlZCBzdGF0ZSBpZiBjaGFuZ2VkXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5leHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWQsXG4gICAgICBzdGVwTnVtYmVyOiB0aGlzLnN0ZXBOdW1iZXIsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbixcbiAgICAgIHR5cGU6ICdkYi12ZXJpZmljYXRpb24nLFxuICAgICAgZGJUZXN0UmVzdWx0OiB0aGlzLmRiVGVzdFJlc3VsdCxcbiAgICAgIGRiQ29uZmlnOiB0aGlzLmRiQ29uZmlnLFxuICAgICAgc3RlcERlbGV0ZWQ6IHRoaXMuc3RlcERlbGV0ZWQsXG4gICAgICB0aW1pbmdCcmVha2Rvd246IHRoaXMudGltaW5nQnJlYWtkb3duLFxuICAgICAgZXhwYW5kZWQ6IHRoaXMuZXhwYW5kZWQsXG4gICAgfSBhcyBEYlZlcmlmaWNhdGlvblN0ZXBDb25maWc7XG4gIH1cblxuICB0b2dnbGVIZWFkZXIoZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0xpdmUpIHJldHVybjtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIGlmICh0aGlzLm9uU3RlcENsaWNrSGFuZGxlcikge1xuICAgICAgY29uc3Qgc3RlcFRvUGFzcyA9IHRoaXMuc3RlcCB8fCB0aGlzLmNvbmZpZztcbiAgICAgIGlmIChzdGVwVG9QYXNzKSB7XG4gICAgICAgIHRoaXMub25TdGVwQ2xpY2tIYW5kbGVyKHN0ZXBUb1Bhc3MsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDYWNoZWRRdWVyeVJlc3VsdHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRiVGVzdFJlc3VsdD8ucmVzdWx0cykge1xuICAgICAgdGhpcy5jYWNoZWRRdWVyeVJlc3VsdHMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYWNoZWRRdWVyeVJlc3VsdHMgPSBPYmplY3QuZW50cmllcyh0aGlzLmRiVGVzdFJlc3VsdC5yZXN1bHRzKS5tYXAoKFtrZXksIHJlc3VsdF0pID0+ICh7IGtleSwgcmVzdWx0IH0pKTtcbiAgfVxuXG4gIGdldFF1ZXJ5UmVzdWx0cygpOiBBcnJheTx7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlZFF1ZXJ5UmVzdWx0cztcbiAgfVxuXG4gIHRyYWNrQnlRdWVyeUtleShpbmRleDogbnVtYmVyLCBpdGVtOiB7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ua2V5O1xuICB9XG5cbiAgZ2V0VG90YWxSb3dzUmV0dXJuZWQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0Py5yZXN1bHRzKSByZXR1cm4gMDtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmRiVGVzdFJlc3VsdC5yZXN1bHRzKS5yZWR1Y2UoKHRvdGFsLCByZXN1bHQpID0+IHtcbiAgICAgIHJldHVybiB0b3RhbCArIChBcnJheS5pc0FycmF5KHJlc3VsdC5kYXRhKSA/IHJlc3VsdC5kYXRhLmxlbmd0aCA6IDApO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0UXVlcnlTdGF0dXMocXVlcnlLZXk6IHN0cmluZyk6ICdwYXNzZWQnIHwgJ2ZhaWxlZCcge1xuICAgIGlmICghdGhpcy5kYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHMpIHJldHVybiAncGFzc2VkJztcbiAgICBjb25zdCBxdWVyeUFzc2VydGlvbnMgPSB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZpbHRlcihcbiAgICAgIGFzc2VydGlvbiA9PiBhc3NlcnRpb24udmFyaWFibGVOYW1lID09PSBxdWVyeUtleVxuICAgICk7XG4gICAgaWYgKHF1ZXJ5QXNzZXJ0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiAncGFzc2VkJztcbiAgICByZXR1cm4gcXVlcnlBc3NlcnRpb25zLmV2ZXJ5KGEgPT4gYS5wYXNzZWQpID8gJ3Bhc3NlZCcgOiAnZmFpbGVkJztcbiAgfVxuXG4gIGdldEZpbHRlcmVkQXNzZXJ0aW9ucygpOiBEYkFzc2VydGlvblJlc3VsdFtdIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzKSByZXR1cm4gW107XG4gICAgc3dpdGNoICh0aGlzLnZlcmlmaWNhdGlvbkZpbHRlcikge1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGJUZXN0UmVzdWx0LmFzc2VydGlvblJlc3VsdHMuZmlsdGVyKGEgPT4gIWEucGFzc2VkKTtcbiAgICAgIGNhc2UgJ3Bhc3NlZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZpbHRlcihhID0+IGEucGFzc2VkKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzO1xuICAgIH1cbiAgfVxuXG4gIHNldFZlcmlmaWNhdGlvbkZpbHRlcihmaWx0ZXI6ICdhbGwnIHwgJ2ZhaWxlZCcgfCAncGFzc2VkJykge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uRmlsdGVyID0gZmlsdGVyO1xuICB9XG5cbiAgb25GaWx0ZXJDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uRmlsdGVyID0gdmFsdWUgYXMgJ2FsbCcgfCAnZmFpbGVkJyB8ICdwYXNzZWQnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFRhYmxlQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLnZlcmlmaWNhdGlvblRhYmxlQ29sdW1ucyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ2pzb25QYXRoJyxcbiAgICAgICAgZmllbGROYW1lOiAnSlNPTiBwYXRoJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ2pzb25QYXRoJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDIsXG4gICAgICAgIHJlbmRlcjogKHJvdzogRGJBc3NlcnRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzRCNTU2M10gY3FhLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbChyb3cuanNvblBhdGgpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3ZlcmlmaWNhdGlvblR5cGUnLFxuICAgICAgICBmaWVsZE5hbWU6ICdWZXJpZmljYXRpb24gdHlwZScsXG4gICAgICAgIGZpZWxkVmFsdWU6ICd2ZXJpZmljYXRpb25UeXBlJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDEuNSxcbiAgICAgICAgcmVuZGVyOiAocm93OiBEYkFzc2VydGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbCh0aGlzLmZvcm1hdFZlcmlmaWNhdGlvblR5cGUocm93LnZlcmlmaWNhdGlvblR5cGUpKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGZpZWxkSWQ6ICdhY3R1YWxWYWx1ZScsXG4gICAgICAgIGZpZWxkTmFtZTogJ0FjdHVhbCB2YWx1ZScsXG4gICAgICAgIGZpZWxkVmFsdWU6ICdhY3R1YWxWYWx1ZScsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAxLjUsXG4gICAgICAgIHJlbmRlcjogKHJvdzogRGJBc3NlcnRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiByb3cuYWN0dWFsVmFsdWUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkocm93LmFjdHVhbFZhbHVlKSA6IFN0cmluZyhyb3cuYWN0dWFsVmFsdWUpO1xuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbCh2YWx1ZSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWVsZElkOiAnZXhwZWN0ZWRWYWx1ZScsXG4gICAgICAgIGZpZWxkTmFtZTogJ0V4cGVjdGVkIHZhbHVlJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ2V4cGVjdGVkVmFsdWUnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMS41LFxuICAgICAgICByZW5kZXI6IChyb3c6IERiQXNzZXJ0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2Ygcm93LmV4cGVjdGVkVmFsdWUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkocm93LmV4cGVjdGVkVmFsdWUpIDogU3RyaW5nKHJvdy5leHBlY3RlZFZhbHVlKTtcbiAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzRCNTU2M11cIj5cbiAgICAgICAgICAgICAgJHt0aGlzLmVzY2FwZUh0bWwodmFsdWUpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3Jlc3VsdCcsXG4gICAgICAgIGZpZWxkTmFtZTogJ1Jlc3VsdCcsXG4gICAgICAgIGZpZWxkVmFsdWU6ICdwYXNzZWQnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgcmVuZGVyOiAocm93OiBEYkFzc2VydGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyb3cucGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtYmxvY2sgY3FhLXRleHQtY2VudGVyIGNxYS13LTExIGNxYS1weC0yIGNxYS1weS0xIGNxYS1yb3VuZGVkLVs1cHhdIGNxYS10ZXh0LVsxMnB4XSBjcWEtYmctWyMyRTdEMzJdIGNxYS10ZXh0LVsjRkZGRkZGXVwiPlxuICAgICAgICAgICAgICAgIFBhc3NcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgYDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaW5saW5lLWJsb2NrIGNxYS10ZXh0LWNlbnRlciBjcWEtdy0xMSBjcWEtcHgtMiBjcWEtcHktMSBjcWEtcm91bmRlZC1bNXB4XSBjcWEtdGV4dC1bMTJweF0gY3FhLWJnLVsjREMyNjI2XSBjcWEtdGV4dC1bI0ZGRkZGRl1cIj5cbiAgICAgICAgICAgICAgICBGYWlsXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIGA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZUh0bWwodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYudGV4dENvbnRlbnQgPSB0ZXh0O1xuICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICB9XG5cbiAgZ2V0VGFibGVEYXRhKCk6IERiQXNzZXJ0aW9uUmVzdWx0W10ge1xuICAgIHJldHVybiB0aGlzLmdldEZpbHRlcmVkQXNzZXJ0aW9ucygpO1xuICB9XG5cbiAgZ2V0IGlzRW1wdHlUYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUYWJsZURhdGEoKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSk6IHZvaWQge1xuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcbiAgfVxuXG4gIGNvcHlRdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQocXVlcnkpLnRoZW4oKCkgPT4ge1xuICAgIH0pO1xuICB9XG5cbiAgY29weVJlc3BvbnNlKHF1ZXJ5UmVzdWx0OiBEYlF1ZXJ5UmVzdWx0KSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBKU09OLnN0cmluZ2lmeShxdWVyeVJlc3VsdC5kYXRhLCBudWxsLCAyKTtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChyZXNwb25zZSkudGhlbigoKSA9PiB7XG4gICAgfSk7XG4gIH1cblxuICBjb3B5RW52aXJvbm1lbnQoKSB7XG4gICAgaWYgKHRoaXMuZGJDb25maWc/Lm5hbWUpIHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMuZGJDb25maWcubmFtZSkudGhlbigoKSA9PiB7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRGYWlsdXJlTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0IHx8IHRoaXMuZGJUZXN0UmVzdWx0Py5hbGxBc3NlcnRpb25zUGFzc2VkKSByZXR1cm4gbnVsbDtcbiAgICBcbiAgICBjb25zdCBmYWlsZWRBc3NlcnRpb24gPSB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzPy5maW5kKGEgPT4gIWEucGFzc2VkKTtcbiAgICBpZiAoZmFpbGVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBxdWVyeUtleSA9IGZhaWxlZEFzc2VydGlvbi52YXJpYWJsZU5hbWU7XG4gICAgICBjb25zdCBxdWVyeUluZGV4ID0gdGhpcy5nZXRRdWVyeVJlc3VsdHMoKS5maW5kSW5kZXgocSA9PiBxLmtleSA9PT0gcXVlcnlLZXkpICsgMTtcbiAgICAgIHJldHVybiBgQXNzZXJ0aW9uIGZhaWxlZCBpbiBRdWVyeSAke3F1ZXJ5SW5kZXh9LiBFeHBlY3RlZCB2YWx1ZSBcIiR7ZmFpbGVkQXNzZXJ0aW9uLmV4cGVjdGVkVmFsdWV9XCIgYnV0IGdvdCBcIiR7ZmFpbGVkQXNzZXJ0aW9uLmFjdHVhbFZhbHVlfVwiLmA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9ybWF0VmVyaWZpY2F0aW9uVHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAnZXF1YWxzJzogJ0VxdWFscycsXG4gICAgICAnbm90X2VxdWFscyc6ICdOb3QgRXF1YWxzJyxcbiAgICAgICdjb250YWlucyc6ICdDb250YWlucycsXG4gICAgICAnbm90X2NvbnRhaW5zJzogJ05vdCBDb250YWlucycsXG4gICAgICAnZ3JlYXRlcl90aGFuJzogJ0dyZWF0ZXIgVGhhbicsXG4gICAgICAnbGVzc190aGFuJzogJ0xlc3MgVGhhbicsXG4gICAgICAnZ3JlYXRlcl90aGFuX29yX2VxdWFscyc6ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWxzJyxcbiAgICAgICdsZXNzX3RoYW5fb3JfZXF1YWxzJzogJ0xlc3MgVGhhbiBPciBFcXVhbHMnLFxuICAgICAgJ2V4aXN0cyc6ICdFeGlzdHMnLFxuICAgICAgJ25vdF9leGlzdHMnOiAnTm90IEV4aXN0cycsXG4gICAgfTtcbiAgICByZXR1cm4gdHlwZU1hcFt0eXBlXSB8fCB0eXBlO1xuICB9XG5cbiAgb25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljayhleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZXhwYW5kZWQ7XG4gIH1cblxuICBnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKTogU3ViU3RlcFtdIHtcbiAgICAvLyBDb252ZXJ0IERCIHZlcmlmaWNhdGlvbiBxdWVyeSByZXN1bHRzIHRvIFN1YlN0ZXBbXSBmb3IgdGhlIGZhaWxlZCBzdGVwIGNvbXBvbmVudFxuICAgIGNvbnN0IHN1YlN0ZXBzOiBTdWJTdGVwW10gPSBbXTtcbiAgICBcbiAgICBpZiAodGhpcy5kYlRlc3RSZXN1bHQ/LnJlc3VsdHMpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZGJUZXN0UmVzdWx0LnJlc3VsdHMpLmZvckVhY2goKFtrZXksIHJlc3VsdF0sIGluZGV4KSA9PiB7XG4gICAgICAgIHN1YlN0ZXBzLnB1c2goe1xuICAgICAgICAgIGlkOiBgcXVlcnktJHtpbmRleH1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgUXVlcnkgJHtpbmRleCArIDF9OiAke2tleX1gLFxuICAgICAgICAgIHN0YXR1czogdGhpcy5nZXRRdWVyeVN0YXR1cyhrZXkpID09PSAncGFzc2VkJyA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnLFxuICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24gfHwgMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYXNzZXJ0aW9uIHJlc3VsdHMgYXMgc3ViLXN0ZXBzXG4gICAgaWYgKHRoaXMuZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzKSB7XG4gICAgICB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZvckVhY2goKGFzc2VydGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgc3ViU3RlcHMucHVzaCh7XG4gICAgICAgICAgaWQ6IGBhc3NlcnRpb24tJHtpbmRleH1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQXNzZXJ0aW9uOiAke2Fzc2VydGlvbi5qc29uUGF0aH0gLSAke3RoaXMuZm9ybWF0VmVyaWZpY2F0aW9uVHlwZShhc3NlcnRpb24udmVyaWZpY2F0aW9uVHlwZSl9YCxcbiAgICAgICAgICBzdGF0dXM6IGFzc2VydGlvbi5wYXNzZWQgPyAnc3VjY2VzcycgOiAnZmFpbGVkJyxcbiAgICAgICAgICBkdXJhdGlvbjogMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ViU3RlcHM7XG4gIH1cblxuICBnZXQgc2hvd1ZpZXdNb3JlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRXhwYW5kZWQgJiYgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzKSAmJlxuICAgICAgKFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5leHBlY3RlZCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5hY3R1YWwpKSB8fFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uY3VycmVudCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uYmFzZWxpbmUgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmRpZmZlcmVuY2UpXG4gICAgICAgICAgfHwgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5sb2dzPy5sZW5ndGgpKSB8fCBcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhBcHBsaWVkICYmICh0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeE1lc3NhZ2UgfHwgdGhpcy5jb25maWRlbmNlIHx8IHRoaXMucmVhc29uaW5nPy5sZW5ndGgpKSlcbiAgICAgIClcbiAgfVxuXG4gIG9uTWFrZUN1cnJlbnRCYXNlbGluZShldmVudDogbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tYWtlQ3VycmVudEJhc2VsaW5lLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25VcGxvYWRCYXNlbGluZShldmVudDogdXBsb2FkQmFzZWxpbmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkQmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkFuYWx5emUoKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXplLmVtaXQoKTtcbiAgfVxuXG4gIG9uVmlld0Z1bGxMb2dzKCk6IHZvaWQge1xuICAgIHRoaXMudmlld0Z1bGxMb2dzLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2VsZkhlYWxBY3Rpb24oZXZlbnQ6IHsgdHlwZTogU2VsZkhlYWxBY3Rpb247IGhlYWxlZExvY2F0b3I6IHN0cmluZzsgfSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZkhlYWxBY3Rpb24uZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZm9udC1pbnRlclwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgPCEtLSBIZWFkZXIgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1wLTIgY3FhLWN1cnNvci1wb2ludGVyXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlSGVhZGVyKCRldmVudClcIlxuICAgIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGM0Y0RjZcIj5cbiAgICBcbiAgICA8IS0tIFN0YXR1cyBJY29uIC0tPlxuICAgIDwhLS0gU3VjY2VzcyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjkwMDUgNC45OTk5OUMxMS4xMjg5IDYuMTIwNjQgMTAuOTY2MiA3LjI4NTcxIDEwLjQzOTUgOC4zMDA4OUM5LjkxMjc5IDkuMzE2MDggOS4wNTQgMTAuMTIgOC4wMDYzMSAxMC41Nzg3QzYuOTU4NjIgMTEuMDM3MyA1Ljc4NTM2IDExLjEyMjkgNC42ODIyIDEwLjgyMTJDMy41NzkwNCAxMC41MTk1IDIuNjEyNjUgOS44NDg2OSAxLjk0NDE5IDguOTIwNzFDMS4yNzU3MyA3Ljk5MjcyIDAuOTQ1NjExIDYuODYzNjEgMS4wMDg4OCA1LjcyMTY5QzEuMDcyMTUgNC41Nzk3NiAxLjUyNDk5IDMuNDk0MDQgMi4yOTE4OCAyLjY0NTU4QzMuMDU4NzYgMS43OTcxMiA0LjA5MzM0IDEuMjM3MjEgNS4yMjMwOCAxLjA1OTIyQzYuMzUyODIgMC44ODEyMzMgNy41MDk0NCAxLjA5NTkyIDguNTAwMDUgMS42Njc0OVwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNS41TDYgN0wxMSAyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEZhaWx1cmUgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsdXJlJyB8fCBnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk03LjUgNC41TDQuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDQuNUw3LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFBlbmRpbmcgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gUnVubmluZyAtIFNob3cgc3Bpbm5lciAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnXCI+XG4gICAgICA8c3ZnIGNsYXNzPVwiY3FhLWFuaW1hdGUtc3BpbiBjcWEtdGV4dC1bIzNCODJGNl1cIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIG9wYWNpdHk9XCIwLjI1XCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTYgMUE1IDUgMCAwIDEgMTEgNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdza2lwcGVkJ1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNxYS10ZXh0LVsjOUNBM0FGXSBjcWEtdGV4dC1bMTJweF1cIj5cbiAgICAgICAgc2tpcF9uZXh0XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgcng9XCI0XCIgZmlsbD1cIiNGMEYwRjFcIi8+XG4gICAgICA8cGF0aCBkPVwiTTEzLjUgMy41SDYuNUM1Ljk1IDMuNSA1LjUgMy45NSA1LjUgNC41VjExLjVDNS41IDEyLjA1IDUuOTUgMTIuNSA2LjUgMTIuNUgxMy41QzE0LjA1IDEyLjUgMTQuNSAxMi4wNSAxNC41IDExLjVWNC41QzE0LjUgMy45NSAxNC4wNSAzLjUgMTMuNSAzLjVaTTEzLjUgNC41VjZINi41VjQuNUgxMy41Wk0xMy41IDdWOUg2LjVWN0gxMy41Wk02LjUgMTEuNVYxMEgxMy41VjExLjVINi41WlwiIGZpbGw9XCIjMjEyMTIyXCIvPlxuICAgICAgPC9zdmc+PC9kaXY+XG5cbiAgICA8IS0tIFN0ZXAgTnVtYmVyIGFuZCBUaXRsZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtYm9sZCBjcWEtZmxleC0xIGNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE4cHhdIGNxYS1mb250LWludGVyIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICA8c3Bhbj57eyBzdGVwTnVtYmVyIH19LiA8c3BhbiBbaW5uZXJIVE1MXT1cInRpdGxlXCI+PC9zcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW1sLTEgY3FhLXB4LTEuNSBjcWEtcHktMC41IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMjEyMTIyXSBjcWEtYmctWyNGMEYwRjFdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLW1pbi13LW1heFwiPlxuICAgICAgICBEYXRhYmFzZVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWcuc3RlcERlbGV0ZWRcIiBjbGFzcz1cImNxYS1weC0xLjUgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkLVs0cHhdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjQjQyMzE4XSBjcWEtYmctWyNGRUYzRjJdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0ZFRTRFMl1cIj5cbiAgICAgICAgRGVsZXRlZFxuICAgICAgPC9zcGFuPlxuXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS1mb250LWludGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgICB7eyBmb3JtYXREdXJhdGlvbihkdXJhdGlvbikgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzdmcgKm5nSWY9XCIhaXNMaXZlXCIgW2NsYXNzLmNxYS1yb3RhdGUtMTgwXT1cImlzRXhwYW5kZWRcIiBjbGFzcz1cImNxYS10cmFuc2l0aW9uLXRyYW5zZm9ybVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTMuNSA1TDcgOC41TDEwLjUgNVwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIwLjgzMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBFeHBhbmRlZCBDb250ZW50IC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNFeHBhbmRlZCAmJiAhaXNMaXZlXCIgY2xhc3M9XCJjcWEtcC0yICFjcWEtcGwtOSAhY3FhLXByLTYgY3FhLWJnLXdoaXRlXCI+XG4gICAgPCEtLSBTdW1tYXJ5IEJhciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTEuNSBjcWEtcC0zIGNxYS1iZy1bI0ZDRkNGQ10gY3FhLXJvdW5kZWQtWzZweF0gY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI0U1RTdFQjtcIiAqbmdJZj1cImdldFN0YXR1cygpIHx8IGR1cmF0aW9uIHx8IGNhY2hlZFF1ZXJ5UmVzdWx0cz8ubGVuZ3RoID4gMCB8fCBkYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHM/Lmxlbmd0aCA+IDAgfHwgZ2V0VG90YWxSb3dzUmV0dXJuZWQoKSA+IDAgfHwgZ2V0RmFpbHVyZU1lc3NhZ2UoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC00XCI+XG4gICAgICAgIDwhLS0gU3RhdHVzIEJhZGdlIC0tPlxuICAgICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICAgKm5nSWY9XCJnZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWx1cmUnIHx8IGdldFN0YXR1cygpPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiXG4gICAgICAgICAgbGFiZWw9XCJGQUlMXCJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCIjREMyNjI2XCJcbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjRkZGRkZGXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIj5cbiAgICAgICAgPC9jcWEtYmFkZ2U+XG4gICAgICAgIDxjcWEtYmFkZ2VcbiAgICAgICAgICAqbmdJZj1cImdldFN0YXR1cygpPy50b0xvd2VyQ2FzZSgpID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgIGxhYmVsPVwiUEFTU1wiXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yPVwiIzIyQzU1RVwiXG4gICAgICAgICAgdGV4dENvbG9yPVwiI0ZGRkZGRlwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCI+XG4gICAgICAgIDwvY3FhLWJhZGdlPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtaC1bMTlweF0gY3FhLXctWzFweF0gY3FhLWJnLVsjRTVFN0VCXVwiPjwvZGl2PlxuICAgICAgICBcbiAgICAgICAgPCEtLSBTdW1tYXJ5IFN0YXRzIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTQgY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF1cIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImR1cmF0aW9uXCIgY2xhc3M9XCJjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS10ZXh0LVsjMTExODI3XVwiPlRvdGFsIFRpbWU6IDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM0QjU1NjNdXCI+e3sgZm9ybWF0RHVyYXRpb24oZHVyYXRpb24pIH19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhY2hlZFF1ZXJ5UmVzdWx0cz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsxMHB4XSBjcWEtdGV4dC1bIzExMTgyN11cIj5RdWVyaWVzOiA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNEI1NTYzXVwiPnt7IGNhY2hlZFF1ZXJ5UmVzdWx0cz8ubGVuZ3RoIHx8IDAgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS10ZXh0LVsjMTExODI3XVwiPkFzc2VydGlvbnM6IDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM0QjU1NjNdXCI+e3sgZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzPy5sZW5ndGggfHwgMCB9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRUb3RhbFJvd3NSZXR1cm5lZCgpID4gMFwiIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsxMHB4XSBjcWEtdGV4dC1bIzExMTgyN11cIj5Sb3dzIFJldHVybmVkOiA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNEI1NTYzXVwiPnt7IGdldFRvdGFsUm93c1JldHVybmVkKCkgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEZhaWx1cmUgQmFubmVyIC0tPlxuICAgICAgPGRpdiBcbiAgICAgICAgKm5nSWY9XCJnZXRGYWlsdXJlTWVzc2FnZSgpXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtcHgtMiBjcWEtcHktMSBjcWEtYmctWyNGRUYyRjJdIGNxYS1yb3VuZGVkLVs0cHhdXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjRkVFMkUyO1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjQjkxQzFDXVwiPlxuICAgICAgICAgIHt7IGdldEZhaWx1cmVNZXNzYWdlKCkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERhdGFiYXNlIEVudmlyb25tZW50IFNlY3Rpb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImRiQ29uZmlnXCIgY2xhc3M9XCJjcWEtbWItMS41XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMEIwQjBCXSBjcWEtbWItMlwiPkRhdGFiYXNlIGVudmlyb25tZW50PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtcHgtNCBjcWEtcHktMiBjcWEtcmVsYXRpdmUgY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPCEtLSBFbnZpcm9ubWVudCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzQ1NTU2Q10gY3FhLW1iLTFcIj5FbnZpcm9ubWVudDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtNFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS10ZXh0LVsjMEYxNzJCXVwiPnt7IGRiQ29uZmlnLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiY29weUVudmlyb25tZW50KClcIiBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTUuMzMzMzIgMTAuNjY2N0gzLjk5OTk5QzMuNjQ2MzcgMTAuNjY2NyAzLjMwNzIzIDEwLjUyNjMgMy4wNTcxOCAxMC4yNzYyQzIuODA3MTMgMTAuMDI2MiAyLjY2NjY2IDkuNjg3MDQgMi42NjY2NiA5LjMzMzQxVjQuMDAwMDhDMi42NjY2NiAzLjY0NjQ2IDIuODA3MTMgMy4zMDczMiAzLjA1NzE4IDMuMDU3MjdDMy4zMDcyMyAyLjgwNzIyIDMuNjQ2MzcgMi42NjY3NSAzLjk5OTk5IDIuNjY2NzVIOS4zMzMzMkM5LjY4Njk1IDIuNjY2NzUgMTAuMDI2MSAyLjgwNzIyIDEwLjI3NjEgMy4wNTcyN0MxMC41MjYyIDMuMzA3MzIgMTAuNjY2NyAzLjY0NjQ2IDEwLjY2NjcgNC4wMDAwOFY1LjMzMzQxTTYuNjY2NjYgMTMuMzMzNEgxMkMxMi4zNTM2IDEzLjMzMzQgMTIuNjkyOCAxMy4xOTI5IDEyLjk0MjggMTIuOTQyOUMxMy4xOTI4IDEyLjY5MjggMTMuMzMzMyAxMi4zNTM3IDEzLjMzMzMgMTIuMDAwMVY2LjY2Njc1QzEzLjMzMzMgNi4zMTMxMyAxMy4xOTI4IDUuOTczOTkgMTIuOTQyOCA1LjcyMzk0QzEyLjY5MjggNS40NzM4OSAxMi4zNTM2IDUuMzMzNDEgMTIgNS4zMzM0MUg2LjY2NjY2QzYuMzEzMDMgNS4zMzM0MSA1Ljk3MzkgNS40NzM4OSA1LjcyMzg1IDUuNzIzOTRDNS40NzM4IDUuOTczOTkgNS4zMzMzMiA2LjMxMzEzIDUuMzMzMzIgNi42NjY3NVYxMi4wMDAxQzUuMzMzMzIgMTIuMzUzNyA1LjQ3MzggMTIuNjkyOCA1LjcyMzg1IDEyLjk0MjlDNS45NzM5IDEzLjE5MjkgNi4zMTMwMyAxMy4zMzM0IDYuNjY2NjYgMTMuMzMzNFpcIiBzdHJva2U9XCIjNjM2MzYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNDU1NTZDXSBjcWEtbWItMVwiPlR5cGU8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bIzBGMTcyQl1cIj57eyBkYkNvbmZpZy5kYlR5cGUgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbWItMS41XCIgKm5nSWY9XCJjYWNoZWRRdWVyeVJlc3VsdHM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1tYi0yXCI+UXVlcnkgRXhlY3V0aW9uPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtcHgtNCBjcWEtcHktMiBjcWEtYmctd2hpdGUgY3FhLXJvdW5kZWQtWzEwcHhdXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjRTJFOEYwO1wiPlxuICAgICAgICA8Y3FhLWRiLXF1ZXJ5LWV4ZWN1dGlvbi1pdGVtXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXJ5SXRlbSBvZiBjYWNoZWRRdWVyeVJlc3VsdHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlRdWVyeUtleVwiXG4gICAgICAgICAgW3F1ZXJ5TnVtYmVyXT1cImkgKyAxXCJcbiAgICAgICAgICBbcXVlcnlLZXldPVwicXVlcnlJdGVtLmtleVwiXG4gICAgICAgICAgW3F1ZXJ5UmVzdWx0XT1cInF1ZXJ5SXRlbS5yZXN1bHRcIlxuICAgICAgICAgIFtzdGF0dXNdPVwiZ2V0UXVlcnlTdGF0dXMocXVlcnlJdGVtLmtleSlcIlxuICAgICAgICAgIFt2YXJpYWJsZU5hbWVdPVwicXVlcnlJdGVtLmtleVwiPlxuICAgICAgICA8L2NxYS1kYi1xdWVyeS1leGVjdXRpb24taXRlbT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBWZXJpZmljYXRpb24gU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzICYmIGRiVGVzdFJlc3VsdD8uYXNzZXJ0aW9uUmVzdWx0cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLW1iLTJcIj5WZXJpZmljYXRpb248L2Rpdj4gICAgICBcbiAgICAgIDwhLS0gVmVyaWZpY2F0aW9uIFRhYmxlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTIgY3FhLW92ZXJmbG93LWhpZGRlblwiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI0UyRThGMDtcIj5cbiAgICAgICAgPCEtLSBTZWdtZW50IENvbnRyb2wgZm9yIEZpbHRlcnMgLS0+XG4gICAgICAgIDxjcWEtc2VnbWVudC1jb250cm9sXG4gICAgICAgICAgW3NlZ21lbnRzXT1cImZpbHRlclNlZ21lbnRzXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmVyaWZpY2F0aW9uRmlsdGVyXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L2NxYS1zZWdtZW50LWNvbnRyb2w+XG4gICAgICAgIDxjcWEtdGFibGUtdGVtcGxhdGVcbiAgICAgICAgICBbY29sdW1uc109XCJ2ZXJpZmljYXRpb25UYWJsZUNvbHVtbnNcIlxuICAgICAgICAgIFtkYXRhXT1cImdldFRhYmxlRGF0YSgpXCJcbiAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXG4gICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICBbaXNFbXB0eVN0YXRlXT1cImlzRW1wdHlUYWJsZVwiXG4gICAgICAgICAgW2VtcHR5U3RhdGVDb25maWddPVwiZW1wdHlTdGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgW3Nob3dTZWFyY2hCYXJdPVwiZmFsc2VcIlxuICAgICAgICAgIFtzaG93RmlsdGVyQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd1NldHRpbmdzQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd0F1dG9SZWZyZXNoQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd090aGVyQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd0ZpbHRlclBhbmVsXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2VydmVyU2lkZVBhZ2luYXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLXRhYmxlLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlbGYgSGVhbCBBbmFseXNpcyAtLT5cbiAgICA8Y3FhLXNlbGYtaGVhbC1hbmFseXNpcyBcbiAgICAgICpuZ0lmPVwic2VsZkhlYWxBbmFseXNpc1wiIFxuICAgICAgW29yaWdpbmFsTG9jYXRvcl09XCJzZWxmSGVhbEFuYWx5c2lzLm9yaWdpbmFsTG9jYXRvclwiXG4gICAgICBbaGVhbGVkTG9jYXRvcl09XCJzZWxmSGVhbEFuYWx5c2lzLmhlYWxlZExvY2F0b3JcIlxuICAgICAgW2NvbmZpZGVuY2VdPVwic2VsZkhlYWxBbmFseXNpcy5jb25maWRlbmNlXCJcbiAgICAgIFtoZWFsTWV0aG9kXT1cInNlbGZIZWFsQW5hbHlzaXMuaGVhbE1ldGhvZFwiXG4gICAgICBbaXNMb2FkaW5nQWNjZXB0XT1cImdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIgPyBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyKCkuaXNMb2FkaW5nQWNjZXB0IDogZmFsc2VcIlxuICAgICAgW2lzTG9hZGluZ01vZGlmeUFjY2VwdF09XCJnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyID8gZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcigpLmlzTG9hZGluZ01vZGlmeUFjY2VwdCA6IGZhbHNlXCJcbiAgICAgIChhY3Rpb24pPVwib25TZWxmSGVhbEFjdGlvbigkZXZlbnQpXCI+XG4gICAgPC9jcWEtc2VsZi1oZWFsLWFuYWx5c2lzPlxuXG4gICAgPCEtLSBUaW1pbmcgQnJlYWtkb3duIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJ0aW1pbmdCcmVha2Rvd25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktZW5kIGNxYS1nYXAtNSBjcWEtcHQtNCBjcWEtcHgtNCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cbiAgICAgICAgPHNwYW4+VGltaW5nIGJyZWFrZG93bjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1kaWFsb2ctbXV0ZWQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBBcHAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzM3NDE1MV1cIj57eyBmb3JtYXREdXJhdGlvbih0aW1pbmdCcmVha2Rvd24uYXBwKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMSAxMVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNLTMuODE0N2UtMDYgMTAuMzJWLTcuMTUyNTZlLTA3SDAuOTU5OTk2VjEwLjMySC0zLjgxNDdlLTA2WlwiIGZpbGw9XCIjRTVFN0VCXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIFRvb2wgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzM3NDE1MV1cIj57eyBmb3JtYXREdXJhdGlvbih0aW1pbmdCcmVha2Rvd24udG9vbCkgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBWaWV3IE1vcmUgRmFpbGVkIFN0ZXAgQnV0dG9uIC0gc2hvd24gd2hlbiBleHBhbmRlZCBhbmQgZmFpbHVyZSBkZXRhaWxzIGV4aXN0IC0tPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93Vmlld01vcmVCdXR0b25cIiBjbGFzcz1cImNxYS1tdC0yIGNxYS1weC00XCI+XG4gICAgICA8Y3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b25cbiAgICAgICAgW3RpbWluZ0JyZWFrZG93bl09XCJ0aW1pbmdCcmVha2Rvd25cIlxuICAgICAgICBbc3ViU3RlcHNdPVwiZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKClcIlxuICAgICAgICBbZmFpbHVyZURldGFpbHNdPVwiZmFpbHVyZURldGFpbHNcIlxuICAgICAgICBbaXNFeHBhbmRlZF09XCJzaG93RmFpbGVkU3RlcERldGFpbHNcIlxuICAgICAgICAodmlld01vcmVDbGljayk9XCJvblZpZXdNb3JlRmFpbGVkU3RlcENsaWNrKCRldmVudClcIj5cbiAgICAgIDwvY3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFVwZGF0ZWQgRmFpbGVkIFN0ZXAgQ29tcG9uZW50IC0gc2hvd24gd2hlbiBidXR0b24gaXMgY2xpY2tlZCAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdNb3JlQnV0dG9uICYmIHNob3dGYWlsZWRTdGVwRGV0YWlscyAmJiBmYWlsdXJlRGV0YWlsc1wiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICAgIDxjcWEtdXBkYXRlZC1mYWlsZWQtc3RlcFxuICAgICAgICBbdGVzdFN0ZXBSZXN1bHRJZF09XCJ0ZXN0U3RlcFJlc3VsdElkXCJcbiAgICAgICAgW3RpbWluZ0JyZWFrZG93bl09XCJ0aW1pbmdCcmVha2Rvd25cIlxuICAgICAgICBbZXhwYW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtzdWJTdGVwc109XCJnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKVwiXG4gICAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICAgIFtyZWFzb25pbmddPVwicmVhc29uaW5nXCJcbiAgICAgICAgW2NvbmZpZGVuY2VdPVwiY29uZmlkZW5jZVwiXG4gICAgICAgIFtpc1VwbG9hZGluZ0Jhc2VsaW5lXT1cImlzVXBsb2FkaW5nQmFzZWxpbmVcIlxuICAgICAgICBbaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVdPVwiaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVcIlxuICAgICAgICBbaXNMaXZlXT1cImlzTGl2ZVwiXG4gICAgICAgIChtYWtlQ3VycmVudEJhc2VsaW5lKT1cIm9uTWFrZUN1cnJlbnRCYXNlbGluZSgkZXZlbnQpXCJcbiAgICAgICAgKHVwbG9hZEJhc2VsaW5lKT1cIm9uVXBsb2FkQmFzZWxpbmUoJGV2ZW50KVwiXG4gICAgICAgIChhbmFseXplKT1cIm9uQW5hbHl6ZSgpXCJcbiAgICAgICAgKHZpZXdGdWxsTG9ncyk9XCJvblZpZXdGdWxsTG9ncygpXCI+XG4gICAgICA8L2NxYS11cGRhdGVkLWZhaWxlZC1zdGVwPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGItdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2RiLXZlcmlmaWNhdGlvbi1zdGVwL2RiLXZlcmlmaWNhdGlvbi1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9kYi12ZXJpZmljYXRpb24tc3RlcC9kYi12ZXJpZmljYXRpb24tc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUkzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7OztBQVNoRixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsaUJBQWlCO0lBTmxFOztRQXdCVyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBSTdCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHakMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRTdCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBQ25FLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDekQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbkMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFJbkUsdUJBQWtCLEdBQWdDLEtBQUssQ0FBQztRQUV4RCxtQkFBYyxHQUFHO1lBQ2YsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUss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QWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYlZlcmlmaWNhdGlvblN0ZXBDb25maWcsIERiVGVzdFJlc3VsdCwgRGJRdWVyeVJlc3VsdCwgRGJBc3NlcnRpb25SZXN1bHQsIFN0ZXBTdGF0dXMsIFRpbWluZ0JyZWFrZG93biwgRmFpbHVyZURldGFpbHMsIFN1YlN0ZXAsIFNlbGZIZWFsQW5hbHlzaXNEYXRhLCBTZWxmSGVhbEFjdGlvbiwgRXhlY3V0aW9uU3RlcENvbmZpZywgU2VsZkhlYWxBY3Rpb25FdmVudCB9IGZyb20gJy4uL2V4ZWN1dGlvbi1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBEeW5hbWljVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb25maWcgfSBmcm9tICcuLi8uLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVNUFRZX1NUQVRFX0lNQUdFUyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvaW1hZ2UtYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQsIHVwbG9hZEJhc2VsaW5lRXZlbnQgfSBmcm9tICcuLi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZGItdmVyaWZpY2F0aW9uLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGItdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgRGJWZXJpZmljYXRpb25TdGVwQ29tcG9uZW50IGV4dGVuZHMgQmFzZVN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGlkITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXN0U3RlcFJlc3VsdElkITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGVwTnVtYmVyITogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KCkgc3RhdHVzITogU3RlcFN0YXR1cztcbiAgQElucHV0KCkgZHVyYXRpb24hOiBudW1iZXI7XG4gIEBJbnB1dCgpIHRpbWluZ0JyZWFrZG93bj86IFRpbWluZ0JyZWFrZG93bjtcbiAgQElucHV0KCkgZXhwYW5kZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBkYlRlc3RSZXN1bHQhOiBEYlRlc3RSZXN1bHQ7XG4gIEBJbnB1dCgpIGRiQ29uZmlnPzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkYlR5cGU6IHN0cmluZztcbiAgfTtcbiAgQElucHV0KCkgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbiAgQElucHV0KCkgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0ZXBEZWxldGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNVcGxvYWRpbmdCYXNlbGluZSA9IHt9O1xuICBASW5wdXQoKSBpc01ha2luZ0N1cnJlbnRCYXNlbGluZSA9IHt9O1xuICBASW5wdXQoKSBzZWxmSGVhbEFuYWx5c2lzPzogU2VsZkhlYWxBbmFseXNpc0RhdGE7XG4gIEBJbnB1dCgpIGdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXI/OiAoKSA9PiB7IGlzTG9hZGluZ0FjY2VwdDogYm9vbGVhbjsgaXNMb2FkaW5nTW9kaWZ5QWNjZXB0OiBib29sZWFuIH07XG4gIEBJbnB1dCgpIG9uU3RlcENsaWNrSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnLCBldmVudD86IEV2ZW50KSA9PiB2b2lkO1xuICBASW5wdXQoKSBpc0xpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3RlcD86IEV4ZWN1dGlvblN0ZXBDb25maWc7XG5cbiAgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG1ha2VDdXJyZW50QmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIHVwbG9hZEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjx1cGxvYWRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgYW5hbHl6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHZpZXdGdWxsTG9ncyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlbGZIZWFsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxmSGVhbEFjdGlvbkV2ZW50PigpO1xuXG4gIG92ZXJyaWRlIGNvbmZpZyE6IERiVmVyaWZpY2F0aW9uU3RlcENvbmZpZztcblxuICB2ZXJpZmljYXRpb25GaWx0ZXI6ICdhbGwnIHwgJ2ZhaWxlZCcgfCAncGFzc2VkJyA9ICdhbGwnO1xuXG4gIGZpbHRlclNlZ21lbnRzID0gW1xuICAgIHsgbGFiZWw6ICdBbGwnLCB2YWx1ZTogJ2FsbCcgfSxcbiAgICB7IGxhYmVsOiAnRmFpbGVkIG9ubHknLCB2YWx1ZTogJ2ZhaWxlZCcgfSxcbiAgICB7IGxhYmVsOiAnUGFzc2VkIG9ubHknLCB2YWx1ZTogJ3Bhc3NlZCcgfSxcbiAgXTtcblxuICB2ZXJpZmljYXRpb25UYWJsZUNvbHVtbnM6IER5bmFtaWNUYWJsZUNvbHVtbltdID0gW107XG4gIFxuICBlbXB0eVN0YXRlQ29uZmlnOiBFbXB0eVN0YXRlQ29uZmlnID0ge1xuICAgIHRpdGxlOiAnTm8gQXNzZXJ0aW9ucycsXG4gICAgZGVzY3JpcHRpb246ICdObyB2ZXJpZmljYXRpb24gYXNzZXJ0aW9ucyBmb3VuZCBmb3IgdGhpcyBkYXRhYmFzZSBxdWVyeS4nLFxuICAgIGltYWdlVXJsOiBFTVBUWV9TVEFURV9JTUFHRVMuREFTSEJPQVJELFxuICAgIGFjdGlvbnM6IFtdLFxuICB9O1xuXG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBcbiAgLy8gQ2FjaGVkIHF1ZXJ5IHJlc3VsdHMgdG8gYXZvaWQgcmVjcmVhdGluZyBjb21wb25lbnRzIG9uIGV2ZXJ5IGNoYW5nZSBkZXRlY3Rpb25cbiAgY2FjaGVkUXVlcnlSZXN1bHRzOiBBcnJheTx7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfT4gPSBbXTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZygpO1xuICAgIHRoaXMuc2V0dXBUYWJsZUNvbHVtbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUNhY2hlZFF1ZXJ5UmVzdWx0cygpO1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gdGhpcy5leHBhbmRlZDtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0dXMoKTogU3RlcFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5zdGF0dXMgfHwgdGhpcy5zdGF0dXM7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIGNvbmZpZyB3aGVuIGlucHV0cyBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlc1snZGJUZXN0UmVzdWx0J10gfHwgY2hhbmdlc1snZGJDb25maWcnXSB8fCBjaGFuZ2VzWydleHBhbmRlZCddIHx8IGNoYW5nZXNbJ3N0YXR1cyddIHx8IGNoYW5nZXNbJ2R1cmF0aW9uJ10gfHwgY2hhbmdlc1snc3RlcERlbGV0ZWQnXSkge1xuICAgICAgdGhpcy51cGRhdGVDb25maWcoKTtcbiAgICAgIGlmIChjaGFuZ2VzWydkYlRlc3RSZXN1bHQnXSkge1xuICAgICAgICB0aGlzLnNldHVwVGFibGVDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkUXVlcnlSZXN1bHRzKCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFVwZGF0ZSBleHBhbmRlZCBzdGF0ZSBpZiBjaGFuZ2VkXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5leHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWQsXG4gICAgICBzdGVwTnVtYmVyOiB0aGlzLnN0ZXBOdW1iZXIsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbixcbiAgICAgIHR5cGU6ICdkYi12ZXJpZmljYXRpb24nLFxuICAgICAgZGJUZXN0UmVzdWx0OiB0aGlzLmRiVGVzdFJlc3VsdCxcbiAgICAgIGRiQ29uZmlnOiB0aGlzLmRiQ29uZmlnLFxuICAgICAgc3RlcERlbGV0ZWQ6IHRoaXMuc3RlcERlbGV0ZWQsXG4gICAgICB0aW1pbmdCcmVha2Rvd246IHRoaXMudGltaW5nQnJlYWtkb3duLFxuICAgICAgZXhwYW5kZWQ6IHRoaXMuZXhwYW5kZWQsXG4gICAgfSBhcyBEYlZlcmlmaWNhdGlvblN0ZXBDb25maWc7XG4gIH1cblxuICB0b2dnbGVIZWFkZXIoZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0xpdmUpIHJldHVybjtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIGlmICh0aGlzLm9uU3RlcENsaWNrSGFuZGxlcikge1xuICAgICAgY29uc3Qgc3RlcFRvUGFzcyA9IHRoaXMuc3RlcCB8fCB0aGlzLmNvbmZpZztcbiAgICAgIGlmIChzdGVwVG9QYXNzKSB7XG4gICAgICAgIHRoaXMub25TdGVwQ2xpY2tIYW5kbGVyKHN0ZXBUb1Bhc3MsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDYWNoZWRRdWVyeVJlc3VsdHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRiVGVzdFJlc3VsdD8ucmVzdWx0cykge1xuICAgICAgdGhpcy5jYWNoZWRRdWVyeVJlc3VsdHMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYWNoZWRRdWVyeVJlc3VsdHMgPSBPYmplY3QuZW50cmllcyh0aGlzLmRiVGVzdFJlc3VsdC5yZXN1bHRzKS5tYXAoKFtrZXksIHJlc3VsdF0pID0+ICh7IGtleSwgcmVzdWx0IH0pKTtcbiAgfVxuXG4gIGdldFF1ZXJ5UmVzdWx0cygpOiBBcnJheTx7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlZFF1ZXJ5UmVzdWx0cztcbiAgfVxuXG4gIHRyYWNrQnlRdWVyeUtleShpbmRleDogbnVtYmVyLCBpdGVtOiB7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ua2V5O1xuICB9XG5cbiAgZ2V0VG90YWxSb3dzUmV0dXJuZWQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0Py5yZXN1bHRzKSByZXR1cm4gMDtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmRiVGVzdFJlc3VsdC5yZXN1bHRzKS5yZWR1Y2UoKHRvdGFsLCByZXN1bHQpID0+IHtcbiAgICAgIHJldHVybiB0b3RhbCArIChBcnJheS5pc0FycmF5KHJlc3VsdC5kYXRhKSA/IHJlc3VsdC5kYXRhLmxlbmd0aCA6IDApO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0UXVlcnlTdGF0dXMocXVlcnlLZXk6IHN0cmluZyk6ICdwYXNzZWQnIHwgJ2ZhaWxlZCcge1xuICAgIGlmICghdGhpcy5kYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHMpIHJldHVybiAncGFzc2VkJztcbiAgICBjb25zdCBxdWVyeUFzc2VydGlvbnMgPSB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZpbHRlcihcbiAgICAgIGFzc2VydGlvbiA9PiBhc3NlcnRpb24udmFyaWFibGVOYW1lID09PSBxdWVyeUtleVxuICAgICk7XG4gICAgaWYgKHF1ZXJ5QXNzZXJ0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiAncGFzc2VkJztcbiAgICByZXR1cm4gcXVlcnlBc3NlcnRpb25zLmV2ZXJ5KGEgPT4gYS5wYXNzZWQpID8gJ3Bhc3NlZCcgOiAnZmFpbGVkJztcbiAgfVxuXG4gIGdldEZpbHRlcmVkQXNzZXJ0aW9ucygpOiBEYkFzc2VydGlvblJlc3VsdFtdIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzKSByZXR1cm4gW107XG4gICAgc3dpdGNoICh0aGlzLnZlcmlmaWNhdGlvbkZpbHRlcikge1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGJUZXN0UmVzdWx0LmFzc2VydGlvblJlc3VsdHMuZmlsdGVyKGEgPT4gIWEucGFzc2VkKTtcbiAgICAgIGNhc2UgJ3Bhc3NlZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZpbHRlcihhID0+IGEucGFzc2VkKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzO1xuICAgIH1cbiAgfVxuXG4gIHNldFZlcmlmaWNhdGlvbkZpbHRlcihmaWx0ZXI6ICdhbGwnIHwgJ2ZhaWxlZCcgfCAncGFzc2VkJykge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uRmlsdGVyID0gZmlsdGVyO1xuICB9XG5cbiAgb25GaWx0ZXJDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uRmlsdGVyID0gdmFsdWUgYXMgJ2FsbCcgfCAnZmFpbGVkJyB8ICdwYXNzZWQnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFRhYmxlQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLnZlcmlmaWNhdGlvblRhYmxlQ29sdW1ucyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ2pzb25QYXRoJyxcbiAgICAgICAgZmllbGROYW1lOiAnSlNPTiBwYXRoJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ2pzb25QYXRoJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDIsXG4gICAgICAgIHJlbmRlcjogKHJvdzogRGJBc3NlcnRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzRCNTU2M10gY3FhLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbChyb3cuanNvblBhdGgpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3ZlcmlmaWNhdGlvblR5cGUnLFxuICAgICAgICBmaWVsZE5hbWU6ICdWZXJpZmljYXRpb24gdHlwZScsXG4gICAgICAgIGZpZWxkVmFsdWU6ICd2ZXJpZmljYXRpb25UeXBlJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDEuNSxcbiAgICAgICAgcmVuZGVyOiAocm93OiBEYkFzc2VydGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbCh0aGlzLmZvcm1hdFZlcmlmaWNhdGlvblR5cGUocm93LnZlcmlmaWNhdGlvblR5cGUpKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGZpZWxkSWQ6ICdhY3R1YWxWYWx1ZScsXG4gICAgICAgIGZpZWxkTmFtZTogJ0FjdHVhbCB2YWx1ZScsXG4gICAgICAgIGZpZWxkVmFsdWU6ICdhY3R1YWxWYWx1ZScsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAxLjUsXG4gICAgICAgIHJlbmRlcjogKHJvdzogRGJBc3NlcnRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiByb3cuYWN0dWFsVmFsdWUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkocm93LmFjdHVhbFZhbHVlKSA6IFN0cmluZyhyb3cuYWN0dWFsVmFsdWUpO1xuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbCh2YWx1ZSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWVsZElkOiAnZXhwZWN0ZWRWYWx1ZScsXG4gICAgICAgIGZpZWxkTmFtZTogJ0V4cGVjdGVkIHZhbHVlJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ2V4cGVjdGVkVmFsdWUnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMS41LFxuICAgICAgICByZW5kZXI6IChyb3c6IERiQXNzZXJ0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2Ygcm93LmV4cGVjdGVkVmFsdWUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkocm93LmV4cGVjdGVkVmFsdWUpIDogU3RyaW5nKHJvdy5leHBlY3RlZFZhbHVlKTtcbiAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzRCNTU2M11cIj5cbiAgICAgICAgICAgICAgJHt0aGlzLmVzY2FwZUh0bWwodmFsdWUpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3Jlc3VsdCcsXG4gICAgICAgIGZpZWxkTmFtZTogJ1Jlc3VsdCcsXG4gICAgICAgIGZpZWxkVmFsdWU6ICdwYXNzZWQnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgcmVuZGVyOiAocm93OiBEYkFzc2VydGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyb3cucGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtYmxvY2sgY3FhLXRleHQtY2VudGVyIGNxYS13LTExIGNxYS1weC0yIGNxYS1weS0xIGNxYS1yb3VuZGVkLVs1cHhdIGNxYS10ZXh0LVsxMnB4XSBjcWEtYmctWyMyRTdEMzJdIGNxYS10ZXh0LVsjRkZGRkZGXVwiPlxuICAgICAgICAgICAgICAgIFBhc3NcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgYDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaW5saW5lLWJsb2NrIGNxYS10ZXh0LWNlbnRlciBjcWEtdy0xMSBjcWEtcHgtMiBjcWEtcHktMSBjcWEtcm91bmRlZC1bNXB4XSBjcWEtdGV4dC1bMTJweF0gY3FhLWJnLVsjREMyNjI2XSBjcWEtdGV4dC1bI0ZGRkZGRl1cIj5cbiAgICAgICAgICAgICAgICBGYWlsXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIGA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZUh0bWwodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYudGV4dENvbnRlbnQgPSB0ZXh0O1xuICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICB9XG5cbiAgZ2V0VGFibGVEYXRhKCk6IERiQXNzZXJ0aW9uUmVzdWx0W10ge1xuICAgIHJldHVybiB0aGlzLmdldEZpbHRlcmVkQXNzZXJ0aW9ucygpO1xuICB9XG5cbiAgZ2V0IGlzRW1wdHlUYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUYWJsZURhdGEoKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSk6IHZvaWQge1xuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcbiAgfVxuXG4gIGNvcHlRdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQocXVlcnkpLnRoZW4oKCkgPT4ge1xuICAgIH0pO1xuICB9XG5cbiAgY29weVJlc3BvbnNlKHF1ZXJ5UmVzdWx0OiBEYlF1ZXJ5UmVzdWx0KSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBKU09OLnN0cmluZ2lmeShxdWVyeVJlc3VsdC5kYXRhLCBudWxsLCAyKTtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChyZXNwb25zZSkudGhlbigoKSA9PiB7XG4gICAgfSk7XG4gIH1cblxuICBjb3B5RW52aXJvbm1lbnQoKSB7XG4gICAgaWYgKHRoaXMuZGJDb25maWc/Lm5hbWUpIHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMuZGJDb25maWcubmFtZSkudGhlbigoKSA9PiB7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRGYWlsdXJlTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0IHx8IHRoaXMuZGJUZXN0UmVzdWx0Py5hbGxBc3NlcnRpb25zUGFzc2VkKSByZXR1cm4gbnVsbDtcbiAgICBcbiAgICBjb25zdCBmYWlsZWRBc3NlcnRpb24gPSB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzPy5maW5kKGEgPT4gIWEucGFzc2VkKTtcbiAgICBpZiAoZmFpbGVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBxdWVyeUtleSA9IGZhaWxlZEFzc2VydGlvbi52YXJpYWJsZU5hbWU7XG4gICAgICBjb25zdCBxdWVyeUluZGV4ID0gdGhpcy5nZXRRdWVyeVJlc3VsdHMoKS5maW5kSW5kZXgocSA9PiBxLmtleSA9PT0gcXVlcnlLZXkpICsgMTtcbiAgICAgIHJldHVybiBgQXNzZXJ0aW9uIGZhaWxlZCBpbiBRdWVyeSAke3F1ZXJ5SW5kZXh9LiBFeHBlY3RlZCB2YWx1ZSBcIiR7ZmFpbGVkQXNzZXJ0aW9uLmV4cGVjdGVkVmFsdWV9XCIgYnV0IGdvdCBcIiR7ZmFpbGVkQXNzZXJ0aW9uLmFjdHVhbFZhbHVlfVwiLmA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9ybWF0VmVyaWZpY2F0aW9uVHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAnZXF1YWxzJzogJ0VxdWFscycsXG4gICAgICAnbm90X2VxdWFscyc6ICdOb3QgRXF1YWxzJyxcbiAgICAgICdjb250YWlucyc6ICdDb250YWlucycsXG4gICAgICAnbm90X2NvbnRhaW5zJzogJ05vdCBDb250YWlucycsXG4gICAgICAnZ3JlYXRlcl90aGFuJzogJ0dyZWF0ZXIgVGhhbicsXG4gICAgICAnbGVzc190aGFuJzogJ0xlc3MgVGhhbicsXG4gICAgICAnZ3JlYXRlcl90aGFuX29yX2VxdWFscyc6ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWxzJyxcbiAgICAgICdsZXNzX3RoYW5fb3JfZXF1YWxzJzogJ0xlc3MgVGhhbiBPciBFcXVhbHMnLFxuICAgICAgJ2V4aXN0cyc6ICdFeGlzdHMnLFxuICAgICAgJ25vdF9leGlzdHMnOiAnTm90IEV4aXN0cycsXG4gICAgfTtcbiAgICByZXR1cm4gdHlwZU1hcFt0eXBlXSB8fCB0eXBlO1xuICB9XG5cbiAgb25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljayhleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZXhwYW5kZWQ7XG4gIH1cblxuICBnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKTogU3ViU3RlcFtdIHtcbiAgICAvLyBDb252ZXJ0IERCIHZlcmlmaWNhdGlvbiBxdWVyeSByZXN1bHRzIHRvIFN1YlN0ZXBbXSBmb3IgdGhlIGZhaWxlZCBzdGVwIGNvbXBvbmVudFxuICAgIGNvbnN0IHN1YlN0ZXBzOiBTdWJTdGVwW10gPSBbXTtcbiAgICBcbiAgICBpZiAodGhpcy5kYlRlc3RSZXN1bHQ/LnJlc3VsdHMpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZGJUZXN0UmVzdWx0LnJlc3VsdHMpLmZvckVhY2goKFtrZXksIHJlc3VsdF0sIGluZGV4KSA9PiB7XG4gICAgICAgIHN1YlN0ZXBzLnB1c2goe1xuICAgICAgICAgIGlkOiBgcXVlcnktJHtpbmRleH1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgUXVlcnkgJHtpbmRleCArIDF9OiAke2tleX1gLFxuICAgICAgICAgIHN0YXR1czogdGhpcy5nZXRRdWVyeVN0YXR1cyhrZXkpID09PSAncGFzc2VkJyA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnLFxuICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24gfHwgMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYXNzZXJ0aW9uIHJlc3VsdHMgYXMgc3ViLXN0ZXBzXG4gICAgaWYgKHRoaXMuZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzKSB7XG4gICAgICB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZvckVhY2goKGFzc2VydGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgc3ViU3RlcHMucHVzaCh7XG4gICAgICAgICAgaWQ6IGBhc3NlcnRpb24tJHtpbmRleH1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQXNzZXJ0aW9uOiAke2Fzc2VydGlvbi5qc29uUGF0aH0gLSAke3RoaXMuZm9ybWF0VmVyaWZpY2F0aW9uVHlwZShhc3NlcnRpb24udmVyaWZpY2F0aW9uVHlwZSl9YCxcbiAgICAgICAgICBzdGF0dXM6IGFzc2VydGlvbi5wYXNzZWQgPyAnc3VjY2VzcycgOiAnZmFpbGVkJyxcbiAgICAgICAgICBkdXJhdGlvbjogMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ViU3RlcHM7XG4gIH1cblxuICBnZXQgc2hvd1ZpZXdNb3JlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRXhwYW5kZWQgJiYgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzKSAmJlxuICAgICAgKFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5leHBlY3RlZCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5hY3R1YWwpKSB8fFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uY3VycmVudCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uYmFzZWxpbmUgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmRpZmZlcmVuY2UpXG4gICAgICAgICAgfHwgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5sb2dzPy5sZW5ndGgpKSB8fCBcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhBcHBsaWVkICYmICh0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeE1lc3NhZ2UgfHwgdGhpcy5jb25maWRlbmNlIHx8IHRoaXMucmVhc29uaW5nPy5sZW5ndGgpKSlcbiAgICAgIClcbiAgfVxuXG4gIG9uTWFrZUN1cnJlbnRCYXNlbGluZShldmVudDogbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tYWtlQ3VycmVudEJhc2VsaW5lLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25VcGxvYWRCYXNlbGluZShldmVudDogdXBsb2FkQmFzZWxpbmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkQmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkFuYWx5emUoKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXplLmVtaXQoKTtcbiAgfVxuXG4gIG9uVmlld0Z1bGxMb2dzKCk6IHZvaWQge1xuICAgIHRoaXMudmlld0Z1bGxMb2dzLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2VsZkhlYWxBY3Rpb24oZXZlbnQ6IHsgdHlwZTogU2VsZkhlYWxBY3Rpb247IGhlYWxlZExvY2F0b3I6IHN0cmluZzsgfSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZkhlYWxBY3Rpb24uZW1pdCh7XG4gICAgICB0eXBlOiBldmVudC50eXBlLFxuICAgICAgaGVhbGVkTG9jYXRvcjogZXZlbnQuaGVhbGVkTG9jYXRvcixcbiAgICAgIHRlc3RTdGVwSWQ6IHRoaXMuc3RlcD8udGVzdFN0ZXBJZCB8fCB1bmRlZmluZWRcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS1mb250LWludGVyXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXAtMiBjcWEtY3Vyc29yLXBvaW50ZXJcIlxuICAgIChjbGljayk9XCJ0b2dnbGVIZWFkZXIoJGV2ZW50KVwiXG4gICAgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI0YzRjRGNlwiPlxuICAgIFxuICAgIDwhLS0gU3RhdHVzIEljb24gLS0+XG4gICAgPCEtLSBTdWNjZXNzIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAnc3VjY2VzcydcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gRmFpbHVyZSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWx1cmUnIHx8IGdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsZWQnXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTcuNSA0LjVMNC41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNC41TDcuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gUGVuZGluZyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBSdW5uaW5nIC0gU2hvdyBzcGlubmVyIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJjcWEtYW5pbWF0ZS1zcGluIGNxYS10ZXh0LVsjM0I4MkY2XVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNNiAxQTUgNSAwIDAgMSAxMSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3NraXBwZWQnXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY3FhLXRleHQtWyM5Q0EzQUZdIGNxYS10ZXh0LVsxMnB4XVwiPlxuICAgICAgICBza2lwX25leHRcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXY+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiByeD1cIjRcIiBmaWxsPVwiI0YwRjBGMVwiLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTMuNSAzLjVINi41QzUuOTUgMy41IDUuNSAzLjk1IDUuNSA0LjVWMTEuNUM1LjUgMTIuMDUgNS45NSAxMi41IDYuNSAxMi41SDEzLjVDMTQuMDUgMTIuNSAxNC41IDEyLjA1IDE0LjUgMTEuNVY0LjVDMTQuNSAzLjk1IDE0LjA1IDMuNSAxMy41IDMuNVpNMTMuNSA0LjVWNkg2LjVWNC41SDEzLjVaTTEzLjUgN1Y5SDYuNVY3SDEzLjVaTTYuNSAxMS41VjEwSDEzLjVWMTEuNUg2LjVaXCIgZmlsbD1cIiMyMTIxMjJcIi8+XG4gICAgICA8L3N2Zz48L2Rpdj5cblxuICAgIDwhLS0gU3RlcCBOdW1iZXIgYW5kIFRpdGxlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZm9udC1ib2xkIGNxYS1mbGV4LTEgY3FhLXRleHQtWyMzMzQxNTVdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtaW50ZXIgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgIDxzcGFuPnt7IHN0ZXBOdW1iZXIgfX0uIDxzcGFuIFtpbm5lckhUTUxdPVwidGl0bGVcIj48L3NwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbWwtMSBjcWEtcHgtMS41IGNxYS1weS0wLjUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMyMTIxMjJdIGNxYS1iZy1bI0YwRjBGMV0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtbWluLXctbWF4XCI+XG4gICAgICAgIERhdGFiYXNlXG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZy5zdGVwRGVsZXRlZFwiIGNsYXNzPVwiY3FhLXB4LTEuNSBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtWzRweF0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyNCNDIzMThdIGNxYS1iZy1bI0ZFRjNGMl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRkVFNEUyXVwiPlxuICAgICAgICBEZWxldGVkXG4gICAgICA8L3NwYW4+XG5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLWZvbnQtaW50ZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM5Q0EzQUZdXCI+XG4gICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKGR1cmF0aW9uKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHN2ZyAqbmdJZj1cIiFpc0xpdmVcIiBbY2xhc3MuY3FhLXJvdGF0ZS0xODBdPVwiaXNFeHBhbmRlZFwiIGNsYXNzPVwiY3FhLXRyYW5zaXRpb24tdHJhbnNmb3JtXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMy41IDVMNyA4LjVMMTAuNSA1XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS13aWR0aD1cIjAuODMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc0V4cGFuZGVkICYmICFpc0xpdmVcIiBjbGFzcz1cImNxYS1wLTIgIWNxYS1wbC05ICFjcWEtcHItNiBjcWEtYmctd2hpdGVcIj5cbiAgICA8IS0tIFN1bW1hcnkgQmFyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbWItMS41IGNxYS1wLTMgY3FhLWJnLVsjRkNGQ0ZDXSBjcWEtcm91bmRlZC1bNnB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjRTVFN0VCO1wiICpuZ0lmPVwiZ2V0U3RhdHVzKCkgfHwgZHVyYXRpb24gfHwgY2FjaGVkUXVlcnlSZXN1bHRzPy5sZW5ndGggPiAwIHx8IGRiVGVzdFJlc3VsdD8uYXNzZXJ0aW9uUmVzdWx0cz8ubGVuZ3RoID4gMCB8fCBnZXRUb3RhbFJvd3NSZXR1cm5lZCgpID4gMCB8fCBnZXRGYWlsdXJlTWVzc2FnZSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTRcIj5cbiAgICAgICAgPCEtLSBTdGF0dXMgQmFkZ2UgLS0+XG4gICAgICAgIDxjcWEtYmFkZ2VcbiAgICAgICAgICAqbmdJZj1cImdldFN0YXR1cygpPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgZ2V0U3RhdHVzKCk/LnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICBsYWJlbD1cIkZBSUxcIlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcj1cIiNEQzI2MjZcIlxuICAgICAgICAgIHRleHRDb2xvcj1cIiNGRkZGRkZcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICA8L2NxYS1iYWRnZT5cbiAgICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiZ2V0U3RhdHVzKCk/LnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJ1wiXG4gICAgICAgICAgbGFiZWw9XCJQQVNTXCJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCIjMjJDNTVFXCJcbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjRkZGRkZGXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIj5cbiAgICAgICAgPC9jcWEtYmFkZ2U+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1oLVsxOXB4XSBjcWEtdy1bMXB4XSBjcWEtYmctWyNFNUU3RUJdXCI+PC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8IS0tIFN1bW1hcnkgU3RhdHMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtNCBjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZHVyYXRpb25cIiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+VG90YWwgVGltZTogPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzRCNTU2M11cIj57eyBmb3JtYXREdXJhdGlvbihkdXJhdGlvbikgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2FjaGVkUXVlcnlSZXN1bHRzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS10ZXh0LVsjMTExODI3XVwiPlF1ZXJpZXM6IDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM0QjU1NjNdXCI+e3sgY2FjaGVkUXVlcnlSZXN1bHRzPy5sZW5ndGggfHwgMCB9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+QXNzZXJ0aW9uczogPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzRCNTU2M11cIj57eyBkYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHM/Lmxlbmd0aCB8fCAwIH19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldFRvdGFsUm93c1JldHVybmVkKCkgPiAwXCIgY2xhc3M9XCJjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS10ZXh0LVsjMTExODI3XVwiPlJvd3MgUmV0dXJuZWQ6IDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM0QjU1NjNdXCI+e3sgZ2V0VG90YWxSb3dzUmV0dXJuZWQoKSB9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRmFpbHVyZSBCYW5uZXIgLS0+XG4gICAgICA8ZGl2IFxuICAgICAgICAqbmdJZj1cImdldEZhaWx1cmVNZXNzYWdlKClcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1weC0yIGNxYS1weS0xIGNxYS1iZy1bI0ZFRjJGMl0gY3FhLXJvdW5kZWQtWzRweF1cIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNGRUUyRTI7XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyNCOTFDMUNdXCI+XG4gICAgICAgICAge3sgZ2V0RmFpbHVyZU1lc3NhZ2UoKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRGF0YWJhc2UgRW52aXJvbm1lbnQgU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZGJDb25maWdcIiBjbGFzcz1cImNxYS1tYi0xLjVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1tYi0yXCI+RGF0YWJhc2UgZW52aXJvbm1lbnQ8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYmctd2hpdGUgY3FhLXJvdW5kZWQtbGcgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS1weC00IGNxYS1weS0yIGNxYS1yZWxhdGl2ZSBjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1nYXAtM1wiPlxuICAgICAgICA8IS0tIEVudmlyb25tZW50IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNDU1NTZDXSBjcWEtbWItMVwiPkVudmlyb25tZW50PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC00XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLXRleHQtWyMwRjE3MkJdXCI+e3sgZGJDb25maWcubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJjb3B5RW52aXJvbm1lbnQoKVwiIGNsYXNzPVwiY3FhLWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNS4zMzMzMiAxMC42NjY3SDMuOTk5OTlDMy42NDYzNyAxMC42NjY3IDMuMzA3MjMgMTAuNTI2MyAzLjA1NzE4IDEwLjI3NjJDMi44MDcxMyAxMC4wMjYyIDIuNjY2NjYgOS42ODcwNCAyLjY2NjY2IDkuMzMzNDFWNC4wMDAwOEMyLjY2NjY2IDMuNjQ2NDYgMi44MDcxMyAzLjMwNzMyIDMuMDU3MTggMy4wNTcyN0MzLjMwNzIzIDIuODA3MjIgMy42NDYzNyAyLjY2Njc1IDMuOTk5OTkgMi42NjY3NUg5LjMzMzMyQzkuNjg2OTUgMi42NjY3NSAxMC4wMjYxIDIuODA3MjIgMTAuMjc2MSAzLjA1NzI3QzEwLjUyNjIgMy4zMDczMiAxMC42NjY3IDMuNjQ2NDYgMTAuNjY2NyA0LjAwMDA4VjUuMzMzNDFNNi42NjY2NiAxMy4zMzM0SDEyQzEyLjM1MzYgMTMuMzMzNCAxMi42OTI4IDEzLjE5MjkgMTIuOTQyOCAxMi45NDI5QzEzLjE5MjggMTIuNjkyOCAxMy4zMzMzIDEyLjM1MzcgMTMuMzMzMyAxMi4wMDAxVjYuNjY2NzVDMTMuMzMzMyA2LjMxMzEzIDEzLjE5MjggNS45NzM5OSAxMi45NDI4IDUuNzIzOTRDMTIuNjkyOCA1LjQ3Mzg5IDEyLjM1MzYgNS4zMzM0MSAxMiA1LjMzMzQxSDYuNjY2NjZDNi4zMTMwMyA1LjMzMzQxIDUuOTczOSA1LjQ3Mzg5IDUuNzIzODUgNS43MjM5NEM1LjQ3MzggNS45NzM5OSA1LjMzMzMyIDYuMzEzMTMgNS4zMzMzMiA2LjY2Njc1VjEyLjAwMDFDNS4zMzMzMiAxMi4zNTM3IDUuNDczOCAxMi42OTI4IDUuNzIzODUgMTIuOTQyOUM1Ljk3MzkgMTMuMTkyOSA2LjMxMzAzIDEzLjMzMzQgNi42NjY2NiAxMy4zMzM0WlwiIHN0cm9rZT1cIiM2MzYzNjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM0NTU1NkNdIGNxYS1tYi0xXCI+VHlwZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS10ZXh0LVsjMEYxNzJCXVwiPnt7IGRiQ29uZmlnLmRiVHlwZSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1tYi0xLjVcIiAqbmdJZj1cImNhY2hlZFF1ZXJ5UmVzdWx0cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLW1iLTJcIj5RdWVyeSBFeGVjdXRpb248L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1weC00IGNxYS1weS0yIGNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bMTBweF1cIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjA7XCI+XG4gICAgICAgIDxjcWEtZGItcXVlcnktZXhlY3V0aW9uLWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlcnlJdGVtIG9mIGNhY2hlZFF1ZXJ5UmVzdWx0czsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVF1ZXJ5S2V5XCJcbiAgICAgICAgICBbcXVlcnlOdW1iZXJdPVwiaSArIDFcIlxuICAgICAgICAgIFtxdWVyeUtleV09XCJxdWVyeUl0ZW0ua2V5XCJcbiAgICAgICAgICBbcXVlcnlSZXN1bHRdPVwicXVlcnlJdGVtLnJlc3VsdFwiXG4gICAgICAgICAgW3N0YXR1c109XCJnZXRRdWVyeVN0YXR1cyhxdWVyeUl0ZW0ua2V5KVwiXG4gICAgICAgICAgW3ZhcmlhYmxlTmFtZV09XCJxdWVyeUl0ZW0ua2V5XCI+XG4gICAgICAgIDwvY3FhLWRiLXF1ZXJ5LWV4ZWN1dGlvbi1pdGVtPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFZlcmlmaWNhdGlvbiBTZWN0aW9uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJkYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHMgJiYgZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzPy5sZW5ndGggPiAwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMEIwQjBCXSBjcWEtbWItMlwiPlZlcmlmaWNhdGlvbjwvZGl2PiAgICAgIFxuICAgICAgPCEtLSBWZXJpZmljYXRpb24gVGFibGUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcHgtNCBjcWEtcHktMiBjcWEtb3ZlcmZsb3ctaGlkZGVuXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjRTJFOEYwO1wiPlxuICAgICAgICA8IS0tIFNlZ21lbnQgQ29udHJvbCBmb3IgRmlsdGVycyAtLT5cbiAgICAgICAgPGNxYS1zZWdtZW50LWNvbnRyb2xcbiAgICAgICAgICBbc2VnbWVudHNdPVwiZmlsdGVyU2VnbWVudHNcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2ZXJpZmljYXRpb25GaWx0ZXJcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLXNlZ21lbnQtY29udHJvbD5cbiAgICAgICAgPGNxYS10YWJsZS10ZW1wbGF0ZVxuICAgICAgICAgIFtjb2x1bW5zXT1cInZlcmlmaWNhdGlvblRhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgW2RhdGFdPVwiZ2V0VGFibGVEYXRhKClcIlxuICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcbiAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgIFtpc0VtcHR5U3RhdGVdPVwiaXNFbXB0eVRhYmxlXCJcbiAgICAgICAgICBbZW1wdHlTdGF0ZUNvbmZpZ109XCJlbXB0eVN0YXRlQ29uZmlnXCJcbiAgICAgICAgICBbc2hvd1NlYXJjaEJhcl09XCJmYWxzZVwiXG4gICAgICAgICAgW3Nob3dGaWx0ZXJCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgIFtzaG93U2V0dGluZ3NCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgIFtzaG93QXV0b1JlZnJlc2hCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgIFtzaG93T3RoZXJCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgIFtzaG93RmlsdGVyUGFuZWxdPVwiZmFsc2VcIlxuICAgICAgICAgIFtzZXJ2ZXJTaWRlUGFnaW5hdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9jcWEtdGFibGUtdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VsZiBIZWFsIEFuYWx5c2lzIC0tPlxuICAgIDxjcWEtc2VsZi1oZWFsLWFuYWx5c2lzIFxuICAgICAgKm5nSWY9XCJzZWxmSGVhbEFuYWx5c2lzXCIgXG4gICAgICBbb3JpZ2luYWxMb2NhdG9yXT1cInNlbGZIZWFsQW5hbHlzaXMub3JpZ2luYWxMb2NhdG9yXCJcbiAgICAgIFtoZWFsZWRMb2NhdG9yXT1cInNlbGZIZWFsQW5hbHlzaXMuaGVhbGVkTG9jYXRvclwiXG4gICAgICBbY29uZmlkZW5jZV09XCJzZWxmSGVhbEFuYWx5c2lzLmNvbmZpZGVuY2VcIlxuICAgICAgW2hlYWxNZXRob2RdPVwic2VsZkhlYWxBbmFseXNpcy5oZWFsTWV0aG9kXCJcbiAgICAgIFtpc0xvYWRpbmdBY2NlcHRdPVwiZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlciA/IGdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIoKS5pc0xvYWRpbmdBY2NlcHQgOiBmYWxzZVwiXG4gICAgICBbaXNMb2FkaW5nTW9kaWZ5QWNjZXB0XT1cImdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIgPyBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyKCkuaXNMb2FkaW5nTW9kaWZ5QWNjZXB0IDogZmFsc2VcIlxuICAgICAgKGFjdGlvbik9XCJvblNlbGZIZWFsQWN0aW9uKCRldmVudClcIj5cbiAgICA8L2NxYS1zZWxmLWhlYWwtYW5hbHlzaXM+XG5cbiAgICA8IS0tIFRpbWluZyBCcmVha2Rvd24gLS0+XG4gICAgPGRpdiAqbmdJZj1cInRpbWluZ0JyZWFrZG93blwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1lbmQgY3FhLWdhcC01IGNxYS1wdC00IGNxYS1weC00IGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8c3Bhbj5UaW1pbmcgYnJlYWtkb3duPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWRpYWxvZy1tdXRlZCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIEFwcCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMzc0MTUxXVwiPnt7IGZvcm1hdER1cmF0aW9uKHRpbWluZ0JyZWFrZG93bi5hcHApIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMVwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxIDExXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0tMy44MTQ3ZS0wNiAxMC4zMlYtNy4xNTI1NmUtMDdIMC45NTk5OTZWMTAuMzJILTMuODE0N2UtMDZaXCIgZmlsbD1cIiNFNUU3RUJcIi8+PC9zdmc+PC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgVG9vbCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMzc0MTUxXVwiPnt7IGZvcm1hdER1cmF0aW9uKHRpbWluZ0JyZWFrZG93bi50b29sKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFZpZXcgTW9yZSBGYWlsZWQgU3RlcCBCdXR0b24gLSBzaG93biB3aGVuIGV4cGFuZGVkIGFuZCBmYWlsdXJlIGRldGFpbHMgZXhpc3QgLS0+XG4gICAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvblwiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICAgIDxjcWEtdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvblxuICAgICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICAgIFtzdWJTdGVwc109XCJnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKVwiXG4gICAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICAgIFtpc0V4cGFuZGVkXT1cInNob3dGYWlsZWRTdGVwRGV0YWlsc1wiXG4gICAgICAgICh2aWV3TW9yZUNsaWNrKT1cIm9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgPC9jcWEtdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVXBkYXRlZCBGYWlsZWQgU3RlcCBDb21wb25lbnQgLSBzaG93biB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93Vmlld01vcmVCdXR0b24gJiYgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzICYmIGZhaWx1cmVEZXRhaWxzXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgICAgPGNxYS11cGRhdGVkLWZhaWxlZC1zdGVwXG4gICAgICAgIFt0ZXN0U3RlcFJlc3VsdElkXT1cInRlc3RTdGVwUmVzdWx0SWRcIlxuICAgICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICAgIFtleHBhbmRlZF09XCJ0cnVlXCJcbiAgICAgICAgW3N1YlN0ZXBzXT1cImdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpXCJcbiAgICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgICAgW3JlYXNvbmluZ109XCJyZWFzb25pbmdcIlxuICAgICAgICBbY29uZmlkZW5jZV09XCJjb25maWRlbmNlXCJcbiAgICAgICAgW2lzVXBsb2FkaW5nQmFzZWxpbmVdPVwiaXNVcGxvYWRpbmdCYXNlbGluZVwiXG4gICAgICAgIFtpc01ha2luZ0N1cnJlbnRCYXNlbGluZV09XCJpc01ha2luZ0N1cnJlbnRCYXNlbGluZVwiXG4gICAgICAgIFtpc0xpdmVdPVwiaXNMaXZlXCJcbiAgICAgICAgKG1ha2VDdXJyZW50QmFzZWxpbmUpPVwib25NYWtlQ3VycmVudEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgICAodXBsb2FkQmFzZWxpbmUpPVwib25VcGxvYWRCYXNlbGluZSgkZXZlbnQpXCJcbiAgICAgICAgKGFuYWx5emUpPVwib25BbmFseXplKClcIlxuICAgICAgICAodmlld0Z1bGxMb2dzKT1cIm9uVmlld0Z1bGxMb2dzKClcIj5cbiAgICAgIDwvY3FhLXVwZGF0ZWQtZmFpbGVkLXN0ZXA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
@@ -2,4 +2,4 @@
2
2
  * Models and interfaces for execution screen step components
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXN0ZXAubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2V4ZWN1dGlvbi1zdGVwLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kZWxzIGFuZCBpbnRlcmZhY2VzIGZvciBleGVjdXRpb24gc2NyZWVuIHN0ZXAgY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCB0eXBlIFN0ZXBTdGF0dXMgPSAnc3VjY2VzcycgfCAnZmFpbGVkJyB8ICdwZW5kaW5nJyB8ICdydW5uaW5nJyB8ICdza2lwcGVkJyB8ICdTVUNDRVNTJyB8ICdGQUlMRUQnIHwgJ1BFTkRJTkcnIHwgJ1JVTk5JTkcnIHwgJ1NLSVBQRUQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWluZ0JyZWFrZG93biB7XG4gIGFwcDogbnVtYmVyOyAvLyBpbiBzZWNvbmRzXG4gIHRvb2w6IG51bWJlcjsgLy8gaW4gc2Vjb25kc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YlN0ZXAge1xuICBpZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6IFN0ZXBTdGF0dXM7XG4gIGR1cmF0aW9uOiBudW1iZXI7IC8vIGluIHNlY29uZHNcbiAgdGltZXN0YW1wPzogc3RyaW5nOyAvLyBvcHRpb25hbCB0aW1lc3RhbXAgbGlrZSBcIjAwOjEyXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb29wSXRlcmF0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZzsgLy8gZS5nLiwgXCJJdGVyIDIgKHByb2R1Y3Rpb24pXCJcbiAgc3RhdHVzOiBTdGVwU3RhdHVzO1xuICBzdWJTdGVwcz86IFN1YlN0ZXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25CcmFuY2gge1xuICB0eXBlOiAnaWYnIHwgJ2Vsc2UnIHwgJ2Vsc2UgaWYnO1xuICBsYWJlbDogc3RyaW5nOyAvLyBlLmcuLCBcIlByZW1pdW0gdXNlclwiIG9yIFwiRnJlZSB1c2VyXCJcbiAgZXhlY3V0ZWQ6IGJvb2xlYW47XG4gIHN1YlN0ZXBzPzogU3ViU3RlcFtdO1xuICBicmFuY2hTdGVwSWQ/OiBzdHJpbmcgfCBudW1iZXI7IC8vIElEIG9mIHRoZSBicmFuY2ggc3RlcCB0byBsb2FkIGNoaWxkcmVuIGZyb21cbiAgaXNJZkJyYW5jaD86IGJvb2xlYW47IC8vIFdoZXRoZXIgdGhpcyBpcyB0aGUgbWFpbiBJRiBicmFuY2hcbiAgYnJhbmNoU3RlcDogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbnNob3REYXRhIHtcbiAgYmFzZWxpbmU/OiBzdHJpbmc7IC8vIFVSTCBvciBiYXNlNjRcbiAgY3VycmVudD86IHN0cmluZzsgLy8gVVJMIG9yIGJhc2U2NFxuICBkaWZmZXJlbmNlPzogc3RyaW5nOyAvLyBVUkwgb3IgYmFzZTY0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nRW50cnkge1xuICBsZXZlbDogJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0aW1lc3RhbXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbHVyZURldGFpbHMge1xuICB0ZXN0U3RlcElkOiBzdHJpbmc7XG4gIGV4cGVjdGVkOiBzdHJpbmc7XG4gIGFjdHVhbDogc3RyaW5nO1xuICBmYWlsZWRBY3Rpb24/OiBzdHJpbmc7IC8vIFRoZSBhY3Rpb24gdGhhdCBmYWlsZWRcbiAgYWlGaXhBcHBsaWVkPzogYm9vbGVhbjtcbiAgYWlGaXhNZXNzYWdlPzogc3RyaW5nO1xuICBzY3JlZW5zaG90cz86IFNjcmVlbnNob3REYXRhO1xuICBsb2dzPzogTG9nRW50cnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlU3RlcENvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZztcbiAgc3RlcE51bWJlcjogc3RyaW5nOyAvLyBlLmcuLCBcIjFcIiwgXCIyLjFcIiwgXCIzLjIuMVwiXG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXR1czogU3RlcFN0YXR1cztcbiAgZHVyYXRpb246IG51bWJlcjsgLy8gdG90YWwgZHVyYXRpb24gaW4gc2Vjb25kc1xuICB0aW1pbmdCcmVha2Rvd24/OiBUaW1pbmdCcmVha2Rvd247XG4gIGV4cGFuZGVkPzogYm9vbGVhbjsgLy8gd2hldGhlciB0aGUgc3RlcCBpcyBleHBhbmRlZCBieSBkZWZhdWx0XG4gIGZhaWx1cmVEZXRhaWxzPzogRmFpbHVyZURldGFpbHM7XG4gIHJlYXNvbmluZz86IHN0cmluZ1tdO1xuICBjb25maWRlbmNlPzogc3RyaW5nO1xuICBzdGVwRGVsZXRlZD86IGJvb2xlYW47XG4gIC8vIEFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgbGl2ZSBleGVjdXRpb24gYW5kIHJ1bnRpbWUgdXNlXG4gIHNlbGVjdGVkSXRlcmF0aW9uSWQ/OiBzdHJpbmc7IC8vIHdoaWNoIGl0ZXJhdGlvbiB0byBkaXNwbGF5XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZkhlYWxBbmFseXNpc0RhdGEge1xuICBvcmlnaW5hbExvY2F0b3I6IHN0cmluZztcbiAgaGVhbGVkTG9jYXRvcjogc3RyaW5nO1xuICBjb25maWRlbmNlOiBudW1iZXI7IC8vIDAtMTAwXG4gIGhlYWxNZXRob2Q6IHN0cmluZzsgLy8gZS5nLiwgXCJTZW1hbnRpYyBBdHRyaWJ1dGUgTWF0Y2hpbmdcIlxufVxuXG5leHBvcnQgdHlwZSBTZWxmSGVhbEFjdGlvbiA9ICdhY2NlcHQnIHwgJ3JlamVjdCcgfCAnbW9kaWZ5LWFjY2VwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnYmFzaWMnO1xuICBzdWJTdGVwczogU3ViU3RlcFtdO1xuICBzZWxmSGVhbEFuYWx5c2lzPzogU2VsZkhlYWxBbmFseXNpc0RhdGE7XG4gIHNlbGZIZWFsZWQ/OiBib29sZWFuOyAvLyBJbmRpY2F0ZXMgaWYgc2VsZi1oZWFsaW5nIHdhcyBhcHBsaWVkXG4gIHNlbGZIZWFsRHVyYXRpb24/OiBudW1iZXI7IC8vIER1cmF0aW9uIG9mIHNlbGYtaGVhbGluZyBwcm9jZXNzXG4gIG5lc3RlZFN0ZXBzPzogRXhlY3V0aW9uU3RlcENvbmZpZ1tdOyAvLyBuZXN0ZWQgY2hpbGQgc3RlcHMgZm9yIHJlY3Vyc2l2ZSByZW5kZXJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGVwR3JvdXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdzdGVwLWdyb3VwJztcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7IC8vIGUuZy4sIFwiTmF2aWdhdGlvblwiLCBcIkNoZWNrb3V0IGZsb3dcIlxuICBzdGVwczogRXhlY3V0aW9uU3RlcENvbmZpZ1tdOyAvLyBuZXN0ZWQgc3RlcHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb29wU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2xvb3AnO1xuICBsb29wVHlwZT86ICdmb3InIHwgJ3doaWxlJztcbiAgaXRlcmF0aW9uczogTG9vcEl0ZXJhdGlvbltdO1xuICBzZWxlY3RlZEl0ZXJhdGlvbklkPzogc3RyaW5nOyAvLyB3aGljaCBpdGVyYXRpb24gdG8gZGlzcGxheVxuICBkZWZhdWx0SXRlcmF0aW9uPzogJ2ZpcnN0JyB8ICdsYXN0JzsgLy8gZGVmYXVsdCBpdGVyYXRpb24gdG8gc2hvd1xuICBuZXN0ZWRTdGVwcz86IEV4ZWN1dGlvblN0ZXBDb25maWdbXTsgLy8gc3RlcHMgbmVzdGVkIHdpdGhpbiB0aGUgbG9vcFxuICBzaG93Vmlld0FsbEl0ZXJhdGlvbnM/OiBib29sZWFuO1xuICBzdWJTdGVwcz86IFN1YlN0ZXBbXTtcbiAgaXRlcmF0aW9uRGF0YT86IGFueTsgLy8gZGF0YSBmb3IgZWFjaCBpdGVyYXRpb24gaW4gbGl2ZSBleGVjdXRpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25TdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnY29uZGl0aW9uJztcbiAgY29uZGl0aW9uVGV4dDogc3RyaW5nOyAvLyBlLmcuLCBcImlmIHVzZXIgdHlwZSBpcyAnUHJlbWl1bSdcIlxuICBicmFuY2hlczogQ29uZGl0aW9uQnJhbmNoW107XG4gIG5lc3RlZFN0ZXBzPzogRXhlY3V0aW9uU3RlcENvbmZpZ1tdOyAvLyBuZXN0ZWQgY2hpbGQgc3RlcHMgZm9yIHJlY3Vyc2l2ZSByZW5kZXJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsZWRTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnZmFpbGVkJztcbiAgc3ViU3RlcHM6IFN1YlN0ZXBbXTtcbiAgZmFpbHVyZURldGFpbHM6IEZhaWx1cmVEZXRhaWxzO1xuICByZWFzb25pbmc/OiBzdHJpbmdbXTtcbiAgY29uZmlkZW5jZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBSUFnZW50QWN0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdHlwZTogJ2V4dHJhY3QnIHwgJ3ZhbGlkYXRlJyB8ICdBSV9BR0VOVF9BQ1RJT04nIHwgJ1RZUEUnIHwgJ0NMSUNLJztcbiAgc3RhdHVzOiBTdGVwU3RhdHVzO1xuICBjb25maWRlbmNlPzogbnVtYmVyOyAvLyAwLTEwMFxuICBkdXJhdGlvbjogbnVtYmVyO1xuICByZWFzb25pbmc/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQUlBZ2VudFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdhaS1hZ2VudCc7XG4gIHByb21wdDogc3RyaW5nO1xuICBvcHRpbWl6ZWRSdW4/OiBib29sZWFuO1xuICBhY3Rpb25Db3VudD86IG51bWJlcjtcbiAgYWN0aW9uczogQUlBZ2VudEFjdGlvbltdO1xuICBzZWxlY3RlZFRhYj86ICdhY3Rpb24tdHJhY2UnIHwgJ3BsYW5uZXItdGltZWxpbmUnIHwgJ2FpLXJlYXNvbmluZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQXNzZXJ0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzOiAncGFzc2VkJyB8ICdmYWlsZWQnO1xuICBleHBlY3RlZDogc3RyaW5nO1xuICBhY3R1YWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnYXBpJztcbiAgbWV0aG9kOiBzdHJpbmc7IC8vIEdFVCwgUE9TVCwgUFVULCBERUxFVEUsIGV0Yy5cbiAgZW5kcG9pbnQ6IHN0cmluZztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICByZXNwb25zZVRpbWU6IG51bWJlcjsgLy8gaW4gbWlsbGlzZWNvbmRzXG4gIHJlcXVlc3RCb2R5PzogYW55O1xuICByZXNwb25zZUJvZHk/OiBhbnk7XG4gIHJlcXVlc3RIZWFkZXJzPzogYW55O1xuICByZXNwb25zZUhlYWRlcnM/OiBhbnk7XG4gIGFzc2VydGlvbnM/OiBBcGlBc3NlcnRpb25bXTtcbiAgaW5pdGlhbEFjdGlvbnM/OiBTdWJTdGVwW107IC8vIEFjdGlvbnMgYmVmb3JlIHRoZSBBUEkgY2FsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVEb3dubG9hZFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdmaWxlLWRvd25sb2FkJztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgZmlsZVR5cGU6IHN0cmluZzsgLy8gUERGLCBDU1YsIGV0Yy5cbiAgZmlsZVNpemU/OiBzdHJpbmc7IC8vIGUuZy4sIFwiMi40IE1CXCJcbiAgZmlsZVBhdGg/OiBzdHJpbmc7XG4gIGRvd25sb2FkZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdGVkRmllbGQge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBjb25maWRlbmNlOiBudW1iZXI7IC8vIDAtMTAwXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZpY2F0aW9uQ2hlY2sge1xuICBpZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6ICdwYXNzJyB8ICdmYWlsJztcbiAgZXhwZWN0ZWQ6IHN0cmluZztcbiAgYWN0dWFsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRWZXJpZmljYXRpb25TdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnZG9jdW1lbnQtdmVyaWZpY2F0aW9uJztcbiAgZG9jdW1lbnRTY3JlZW5zaG90Pzogc3RyaW5nOyAvLyBVUkwgb3IgYmFzZTY0XG4gIGV4dHJhY3RlZEZpZWxkczogRXh0cmFjdGVkRmllbGRbXTtcbiAgdmVyaWZpY2F0aW9uQ2hlY2tzOiBWZXJpZmljYXRpb25DaGVja1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVTdWJTdGVwIHtcbiAgaWQ6IHN0cmluZztcbiAgdGV4dDogc3RyaW5nOyAvLyBUZXh0IGZyb20gc29ja2V0XG4gIGlzUnVubmluZzogYm9vbGVhbjsgLy8gdHJ1ZSA9IHNob3cgbG9hZGVyLCBmYWxzZSA9IHNob3cgaWNvblxuICBkdXJhdGlvbj86IG51bWJlcjsgLy8gaW4gc2Vjb25kc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVFeGVjdXRpb25TdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnbGl2ZS1leGVjdXRpb24nO1xuICBzdWJTdGVwczogTGl2ZVN1YlN0ZXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYlF1ZXJ5UmVzdWx0IHtcbiAgZGF0YTogYW55W107XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGV4ZWN1dGVkQXQ/OiBzdHJpbmc7XG4gIGR1cmF0aW9uPzogbnVtYmVyOyAvLyBpbiBzZWNvbmRzXG4gIFtrZXk6IHN0cmluZ106IGFueTsgLy8gRm9yIGR5bmFtaWMga2V5cyBsaWtlIFwiRGVtb191c2VyXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYkFzc2VydGlvblJlc3VsdCB7XG4gIHZhcmlhYmxlTmFtZTogc3RyaW5nO1xuICBqc29uUGF0aDogc3RyaW5nO1xuICBleHBlY3RlZFZhbHVlOiBhbnk7XG4gIGFjdHVhbFZhbHVlOiBhbnk7XG4gIHZlcmlmaWNhdGlvblR5cGU6IHN0cmluZztcbiAgZXhwZWN0ZWRUeXBlOiBzdHJpbmc7XG4gIHBhc3NlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYlRlc3RSZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICByZXN1bHRzOiB7IFtrZXk6IHN0cmluZ106IERiUXVlcnlSZXN1bHQgfTtcbiAgYXNzZXJ0aW9uUmVzdWx0czogRGJBc3NlcnRpb25SZXN1bHRbXTtcbiAgYWxsQXNzZXJ0aW9uc1Bhc3NlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYlZlcmlmaWNhdGlvblN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdkYi12ZXJpZmljYXRpb24nO1xuICBkYlRlc3RSZXN1bHQ6IERiVGVzdFJlc3VsdDtcbiAgZGJDb25maWc/OiB7XG4gICAgbmFtZTogc3RyaW5nOyAvLyBFbnZpcm9ubWVudCBuYW1lXG4gICAgZGJUeXBlOiBzdHJpbmc7IC8vIERhdGFiYXNlIHR5cGUgKE15U1FMLCBTUUxTZXJ2ZXIsIGV0Yy4pXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcmVxdWlzaXRlSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7IC8vIGUuZy4sIFwiUHJlcmVxdWlzaXRlIDE6IExvZ2luIGZsb3dcIlxuICBzdGF0dXM6IFN0ZXBTdGF0dXM7XG4gIGR1cmF0aW9uOiBudW1iZXI7IC8vIGluIHNlY29uZHNcbiAgc3RlcENvbmZpZz86IEV4ZWN1dGlvblN0ZXBDb25maWc7IC8vIE9wdGlvbmFsOiBmdWxsIHN0ZXAgY29uZmlnIHRvIHZpZXcgZGV0YWlsc1xufVxuXG5leHBvcnQgdHlwZSBFeGVjdXRpb25TdGVwQ29uZmlnID1cbiAgfCBCYXNpY1N0ZXBDb25maWdcbiAgfCBTdGVwR3JvdXBDb25maWdcbiAgfCBMb29wU3RlcENvbmZpZ1xuICB8IENvbmRpdGlvblN0ZXBDb25maWdcbiAgfCBGYWlsZWRTdGVwQ29uZmlnXG4gIHwgQUlBZ2VudFN0ZXBDb25maWdcbiAgfCBBcGlTdGVwQ29uZmlnXG4gIHwgRmlsZURvd25sb2FkU3RlcENvbmZpZ1xuICB8IERvY3VtZW50VmVyaWZpY2F0aW9uU3RlcENvbmZpZ1xuICB8IExpdmVFeGVjdXRpb25TdGVwQ29uZmlnXG4gIHwgRGJWZXJpZmljYXRpb25TdGVwQ29uZmlnO1xuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXN0ZXAubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2V4ZWN1dGlvbi1zdGVwLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kZWxzIGFuZCBpbnRlcmZhY2VzIGZvciBleGVjdXRpb24gc2NyZWVuIHN0ZXAgY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCB0eXBlIFN0ZXBTdGF0dXMgPSAnc3VjY2VzcycgfCAnZmFpbGVkJyB8ICdwZW5kaW5nJyB8ICdydW5uaW5nJyB8ICdza2lwcGVkJyB8ICdTVUNDRVNTJyB8ICdGQUlMRUQnIHwgJ1BFTkRJTkcnIHwgJ1JVTk5JTkcnIHwgJ1NLSVBQRUQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWluZ0JyZWFrZG93biB7XG4gIGFwcDogbnVtYmVyOyAvLyBpbiBzZWNvbmRzXG4gIHRvb2w6IG51bWJlcjsgLy8gaW4gc2Vjb25kc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YlN0ZXAge1xuICBpZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6IFN0ZXBTdGF0dXM7XG4gIGR1cmF0aW9uOiBudW1iZXI7IC8vIGluIHNlY29uZHNcbiAgdGltZXN0YW1wPzogc3RyaW5nOyAvLyBvcHRpb25hbCB0aW1lc3RhbXAgbGlrZSBcIjAwOjEyXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb29wSXRlcmF0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZzsgLy8gZS5nLiwgXCJJdGVyIDIgKHByb2R1Y3Rpb24pXCJcbiAgc3RhdHVzOiBTdGVwU3RhdHVzO1xuICBzdWJTdGVwcz86IFN1YlN0ZXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25CcmFuY2gge1xuICB0eXBlOiAnaWYnIHwgJ2Vsc2UnIHwgJ2Vsc2UgaWYnO1xuICBsYWJlbDogc3RyaW5nOyAvLyBlLmcuLCBcIlByZW1pdW0gdXNlclwiIG9yIFwiRnJlZSB1c2VyXCJcbiAgZXhlY3V0ZWQ6IGJvb2xlYW47XG4gIHN1YlN0ZXBzPzogU3ViU3RlcFtdO1xuICBicmFuY2hTdGVwSWQ/OiBzdHJpbmcgfCBudW1iZXI7IC8vIElEIG9mIHRoZSBicmFuY2ggc3RlcCB0byBsb2FkIGNoaWxkcmVuIGZyb21cbiAgaXNJZkJyYW5jaD86IGJvb2xlYW47IC8vIFdoZXRoZXIgdGhpcyBpcyB0aGUgbWFpbiBJRiBicmFuY2hcbiAgYnJhbmNoU3RlcDogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbnNob3REYXRhIHtcbiAgYmFzZWxpbmU/OiBzdHJpbmc7IC8vIFVSTCBvciBiYXNlNjRcbiAgY3VycmVudD86IHN0cmluZzsgLy8gVVJMIG9yIGJhc2U2NFxuICBkaWZmZXJlbmNlPzogc3RyaW5nOyAvLyBVUkwgb3IgYmFzZTY0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nRW50cnkge1xuICBsZXZlbDogJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0aW1lc3RhbXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbHVyZURldGFpbHMge1xuICB0ZXN0U3RlcElkOiBzdHJpbmc7XG4gIGV4cGVjdGVkOiBzdHJpbmc7XG4gIGFjdHVhbDogc3RyaW5nO1xuICBmYWlsZWRBY3Rpb24/OiBzdHJpbmc7IC8vIFRoZSBhY3Rpb24gdGhhdCBmYWlsZWRcbiAgYWlGaXhBcHBsaWVkPzogYm9vbGVhbjtcbiAgYWlGaXhNZXNzYWdlPzogc3RyaW5nO1xuICBzY3JlZW5zaG90cz86IFNjcmVlbnNob3REYXRhO1xuICBsb2dzPzogTG9nRW50cnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlU3RlcENvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG4gIHRlc3RTdGVwSWQ6IG51bWJlciB8IHVuZGVmaW5lZDsgLy8gdGVzdCBzdGVwIGlkIGZyb20gdGhlIHRlc3QgY2FzZVxuICB0ZXN0U3RlcFJlc3VsdElkOiBzdHJpbmc7XG4gIHN0ZXBOdW1iZXI6IHN0cmluZzsgLy8gZS5nLiwgXCIxXCIsIFwiMi4xXCIsIFwiMy4yLjFcIlxuICB0aXRsZTogc3RyaW5nO1xuICBzdGF0dXM6IFN0ZXBTdGF0dXM7XG4gIGR1cmF0aW9uOiBudW1iZXI7IC8vIHRvdGFsIGR1cmF0aW9uIGluIHNlY29uZHNcbiAgdGltaW5nQnJlYWtkb3duPzogVGltaW5nQnJlYWtkb3duO1xuICBleHBhbmRlZD86IGJvb2xlYW47IC8vIHdoZXRoZXIgdGhlIHN0ZXAgaXMgZXhwYW5kZWQgYnkgZGVmYXVsdFxuICBmYWlsdXJlRGV0YWlscz86IEZhaWx1cmVEZXRhaWxzO1xuICByZWFzb25pbmc/OiBzdHJpbmdbXTtcbiAgY29uZmlkZW5jZT86IHN0cmluZztcbiAgc3RlcERlbGV0ZWQ/OiBib29sZWFuO1xuICAvLyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGxpdmUgZXhlY3V0aW9uIGFuZCBydW50aW1lIHVzZVxuICBzZWxlY3RlZEl0ZXJhdGlvbklkPzogc3RyaW5nOyAvLyB3aGljaCBpdGVyYXRpb24gdG8gZGlzcGxheVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGZIZWFsQW5hbHlzaXNEYXRhIHtcbiAgb3JpZ2luYWxMb2NhdG9yOiBzdHJpbmc7XG4gIGhlYWxlZExvY2F0b3I6IHN0cmluZztcbiAgY29uZmlkZW5jZTogbnVtYmVyOyAvLyAwLTEwMFxuICBoZWFsTWV0aG9kOiBzdHJpbmc7IC8vIGUuZy4sIFwiU2VtYW50aWMgQXR0cmlidXRlIE1hdGNoaW5nXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxmSGVhbEFjdGlvbkV2ZW50IHtcbiAgdHlwZTogU2VsZkhlYWxBY3Rpb247XG4gIGhlYWxlZExvY2F0b3I6IHN0cmluZztcbiAgdGVzdFN0ZXBJZDogbnVtYmVyIHwgdW5kZWZpbmVkOyAvLyB0ZXN0IHN0ZXAgaWQgZnJvbSB0aGUgdGVzdCBjYXNlXG59XG5cbmV4cG9ydCB0eXBlIFNlbGZIZWFsQWN0aW9uID0gJ2FjY2VwdCcgfCAncmVqZWN0JyB8ICdtb2RpZnktYWNjZXB0JztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNpY1N0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdiYXNpYyc7XG4gIHN1YlN0ZXBzOiBTdWJTdGVwW107XG4gIHNlbGZIZWFsQW5hbHlzaXM/OiBTZWxmSGVhbEFuYWx5c2lzRGF0YTtcbiAgc2VsZkhlYWxlZD86IGJvb2xlYW47IC8vIEluZGljYXRlcyBpZiBzZWxmLWhlYWxpbmcgd2FzIGFwcGxpZWRcbiAgc2VsZkhlYWxEdXJhdGlvbj86IG51bWJlcjsgLy8gRHVyYXRpb24gb2Ygc2VsZi1oZWFsaW5nIHByb2Nlc3NcbiAgbmVzdGVkU3RlcHM/OiBFeGVjdXRpb25TdGVwQ29uZmlnW107IC8vIG5lc3RlZCBjaGlsZCBzdGVwcyBmb3IgcmVjdXJzaXZlIHJlbmRlcmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBHcm91cENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ3N0ZXAtZ3JvdXAnO1xuICBncm91cE5hbWU6IHN0cmluZzsgLy8gZS5nLiwgXCJOYXZpZ2F0aW9uXCIsIFwiQ2hlY2tvdXQgZmxvd1wiXG4gIHN0ZXBzOiBFeGVjdXRpb25TdGVwQ29uZmlnW107IC8vIG5lc3RlZCBzdGVwc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvb3BTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnbG9vcCc7XG4gIGxvb3BUeXBlPzogJ2ZvcicgfCAnd2hpbGUnO1xuICBpdGVyYXRpb25zOiBMb29wSXRlcmF0aW9uW107XG4gIHNlbGVjdGVkSXRlcmF0aW9uSWQ/OiBzdHJpbmc7IC8vIHdoaWNoIGl0ZXJhdGlvbiB0byBkaXNwbGF5XG4gIGRlZmF1bHRJdGVyYXRpb24/OiAnZmlyc3QnIHwgJ2xhc3QnOyAvLyBkZWZhdWx0IGl0ZXJhdGlvbiB0byBzaG93XG4gIG5lc3RlZFN0ZXBzPzogRXhlY3V0aW9uU3RlcENvbmZpZ1tdOyAvLyBzdGVwcyBuZXN0ZWQgd2l0aGluIHRoZSBsb29wXG4gIHNob3dWaWV3QWxsSXRlcmF0aW9ucz86IGJvb2xlYW47XG4gIHN1YlN0ZXBzPzogU3ViU3RlcFtdO1xuICBpdGVyYXRpb25EYXRhPzogYW55OyAvLyBkYXRhIGZvciBlYWNoIGl0ZXJhdGlvbiBpbiBsaXZlIGV4ZWN1dGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvblN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdjb25kaXRpb24nO1xuICBjb25kaXRpb25UZXh0OiBzdHJpbmc7IC8vIGUuZy4sIFwiaWYgdXNlciB0eXBlIGlzICdQcmVtaXVtJ1wiXG4gIGJyYW5jaGVzOiBDb25kaXRpb25CcmFuY2hbXTtcbiAgbmVzdGVkU3RlcHM/OiBFeGVjdXRpb25TdGVwQ29uZmlnW107IC8vIG5lc3RlZCBjaGlsZCBzdGVwcyBmb3IgcmVjdXJzaXZlIHJlbmRlcmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhaWxlZFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdmYWlsZWQnO1xuICBzdWJTdGVwczogU3ViU3RlcFtdO1xuICBmYWlsdXJlRGV0YWlsczogRmFpbHVyZURldGFpbHM7XG4gIHJlYXNvbmluZz86IHN0cmluZ1tdO1xuICBjb25maWRlbmNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFJQWdlbnRBY3Rpb24ge1xuICBpZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0eXBlOiAnZXh0cmFjdCcgfCAndmFsaWRhdGUnIHwgJ0FJX0FHRU5UX0FDVElPTicgfCAnVFlQRScgfCAnQ0xJQ0snO1xuICBzdGF0dXM6IFN0ZXBTdGF0dXM7XG4gIGNvbmZpZGVuY2U/OiBudW1iZXI7IC8vIDAtMTAwXG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIHJlYXNvbmluZz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBSUFnZW50U3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2FpLWFnZW50JztcbiAgcHJvbXB0OiBzdHJpbmc7XG4gIG9wdGltaXplZFJ1bj86IGJvb2xlYW47XG4gIGFjdGlvbkNvdW50PzogbnVtYmVyO1xuICBhY3Rpb25zOiBBSUFnZW50QWN0aW9uW107XG4gIHNlbGVjdGVkVGFiPzogJ2FjdGlvbi10cmFjZScgfCAncGxhbm5lci10aW1lbGluZScgfCAnYWktcmVhc29uaW5nJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlBc3NlcnRpb24ge1xuICBpZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6ICdwYXNzZWQnIHwgJ2ZhaWxlZCc7XG4gIGV4cGVjdGVkOiBzdHJpbmc7XG4gIGFjdHVhbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdhcGknO1xuICBtZXRob2Q6IHN0cmluZzsgLy8gR0VULCBQT1NULCBQVVQsIERFTEVURSwgZXRjLlxuICBlbmRwb2ludDogc3RyaW5nO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIHJlc3BvbnNlVGltZTogbnVtYmVyOyAvLyBpbiBtaWxsaXNlY29uZHNcbiAgcmVxdWVzdEJvZHk/OiBhbnk7XG4gIHJlc3BvbnNlQm9keT86IGFueTtcbiAgcmVxdWVzdEhlYWRlcnM/OiBhbnk7XG4gIHJlc3BvbnNlSGVhZGVycz86IGFueTtcbiAgYXNzZXJ0aW9ucz86IEFwaUFzc2VydGlvbltdO1xuICBpbml0aWFsQWN0aW9ucz86IFN1YlN0ZXBbXTsgLy8gQWN0aW9ucyBiZWZvcmUgdGhlIEFQSSBjYWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZURvd25sb2FkU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2ZpbGUtZG93bmxvYWQnO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlVHlwZTogc3RyaW5nOyAvLyBQREYsIENTViwgZXRjLlxuICBmaWxlU2l6ZT86IHN0cmluZzsgLy8gZS5nLiwgXCIyLjQgTUJcIlxuICBmaWxlUGF0aD86IHN0cmluZztcbiAgZG93bmxvYWRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0ZWRGaWVsZCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjsgLy8gMC0xMDBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJpZmljYXRpb25DaGVjayB7XG4gIGlkOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXR1czogJ3Bhc3MnIHwgJ2ZhaWwnO1xuICBleHBlY3RlZDogc3RyaW5nO1xuICBhY3R1YWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFZlcmlmaWNhdGlvblN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdkb2N1bWVudC12ZXJpZmljYXRpb24nO1xuICBkb2N1bWVudFNjcmVlbnNob3Q/OiBzdHJpbmc7IC8vIFVSTCBvciBiYXNlNjRcbiAgZXh0cmFjdGVkRmllbGRzOiBFeHRyYWN0ZWRGaWVsZFtdO1xuICB2ZXJpZmljYXRpb25DaGVja3M6IFZlcmlmaWNhdGlvbkNoZWNrW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVN1YlN0ZXAge1xuICBpZDogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7IC8vIFRleHQgZnJvbSBzb2NrZXRcbiAgaXNSdW5uaW5nOiBib29sZWFuOyAvLyB0cnVlID0gc2hvdyBsb2FkZXIsIGZhbHNlID0gc2hvdyBpY29uXG4gIGR1cmF0aW9uPzogbnVtYmVyOyAvLyBpbiBzZWNvbmRzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZUV4ZWN1dGlvblN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdsaXZlLWV4ZWN1dGlvbic7XG4gIHN1YlN0ZXBzOiBMaXZlU3ViU3RlcFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERiUXVlcnlSZXN1bHQge1xuICBkYXRhOiBhbnlbXTtcbiAgcXVlcnk6IHN0cmluZztcbiAgZXhlY3V0ZWRBdD86IHN0cmluZztcbiAgZHVyYXRpb24/OiBudW1iZXI7IC8vIGluIHNlY29uZHNcbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBGb3IgZHluYW1pYyBrZXlzIGxpa2UgXCJEZW1vX3VzZXJcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERiQXNzZXJ0aW9uUmVzdWx0IHtcbiAgdmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gIGpzb25QYXRoOiBzdHJpbmc7XG4gIGV4cGVjdGVkVmFsdWU6IGFueTtcbiAgYWN0dWFsVmFsdWU6IGFueTtcbiAgdmVyaWZpY2F0aW9uVHlwZTogc3RyaW5nO1xuICBleHBlY3RlZFR5cGU6IHN0cmluZztcbiAgcGFzc2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERiVGVzdFJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHJlc3VsdHM6IHsgW2tleTogc3RyaW5nXTogRGJRdWVyeVJlc3VsdCB9O1xuICBhc3NlcnRpb25SZXN1bHRzOiBEYkFzc2VydGlvblJlc3VsdFtdO1xuICBhbGxBc3NlcnRpb25zUGFzc2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERiVmVyaWZpY2F0aW9uU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2RiLXZlcmlmaWNhdGlvbic7XG4gIGRiVGVzdFJlc3VsdDogRGJUZXN0UmVzdWx0O1xuICBkYkNvbmZpZz86IHtcbiAgICBuYW1lOiBzdHJpbmc7IC8vIEVudmlyb25tZW50IG5hbWVcbiAgICBkYlR5cGU6IHN0cmluZzsgLy8gRGF0YWJhc2UgdHlwZSAoTXlTUUwsIFNRTFNlcnZlciwgZXRjLilcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVyZXF1aXNpdGVJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZzsgLy8gZS5nLiwgXCJQcmVyZXF1aXNpdGUgMTogTG9naW4gZmxvd1wiXG4gIHN0YXR1czogU3RlcFN0YXR1cztcbiAgZHVyYXRpb246IG51bWJlcjsgLy8gaW4gc2Vjb25kc1xuICBzdGVwQ29uZmlnPzogRXhlY3V0aW9uU3RlcENvbmZpZzsgLy8gT3B0aW9uYWw6IGZ1bGwgc3RlcCBjb25maWcgdG8gdmlldyBkZXRhaWxzXG59XG5cbmV4cG9ydCB0eXBlIEV4ZWN1dGlvblN0ZXBDb25maWcgPVxuICB8IEJhc2ljU3RlcENvbmZpZ1xuICB8IFN0ZXBHcm91cENvbmZpZ1xuICB8IExvb3BTdGVwQ29uZmlnXG4gIHwgQ29uZGl0aW9uU3RlcENvbmZpZ1xuICB8IEZhaWxlZFN0ZXBDb25maWdcbiAgfCBBSUFnZW50U3RlcENvbmZpZ1xuICB8IEFwaVN0ZXBDb25maWdcbiAgfCBGaWxlRG93bmxvYWRTdGVwQ29uZmlnXG4gIHwgRG9jdW1lbnRWZXJpZmljYXRpb25TdGVwQ29uZmlnXG4gIHwgTGl2ZUV4ZWN1dGlvblN0ZXBDb25maWdcbiAgfCBEYlZlcmlmaWNhdGlvblN0ZXBDb25maWc7XG4iXX0=