@fovestta2/web-angular 1.0.14 → 1.0.17

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.
@@ -48,6 +48,11 @@ export class AddUpdateFormComponent {
48
48
  ngOnInit() {
49
49
  this.initializeForm();
50
50
  }
51
+ ngOnChanges(changes) {
52
+ if (changes['config'] && !changes['config'].firstChange) {
53
+ this.initializeForm();
54
+ }
55
+ }
51
56
  ngAfterViewInit() {
52
57
  // Lifecycle hook - can be used for datepicker initialization if needed
53
58
  }
@@ -630,7 +635,7 @@ export class AddUpdateFormComponent {
630
635
  return 'Invalid field';
631
636
  }
632
637
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AddUpdateFormComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
633
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AddUpdateFormComponent, isStandalone: true, selector: "lib-add-update-form", inputs: { config: "config" }, outputs: { validationError: "validationError" }, ngImport: i0, template: `
638
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AddUpdateFormComponent, isStandalone: true, selector: "lib-add-update-form", inputs: { config: "config" }, outputs: { validationError: "validationError" }, usesOnChanges: true, ngImport: i0, template: `
634
639
  <div class="form-container">
635
640
  <div class="form-header" *ngIf="config.formTitle">
636
641
  <h2>{{ config.formTitle }}</h2>
@@ -1277,4 +1282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1277
1282
  }], validationError: [{
1278
1283
  type: Output
1279
1284
  }] } });
1280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z2LWNvbnRyb2xzL3NyYy9saWIvYWRkLXVwZGF0ZS1mb3JtL2FkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEZBLCtCQUErQjtBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBTUwsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrVFQ7eUdBOHJCUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9XHJcbiAgfCAndGV4dCdcclxuICB8ICdlbWFpbCdcclxuICB8ICdudW1iZXInXHJcbiAgfCAnc2VsZWN0J1xyXG4gIHwgJ25hbWUtY29kZSdcclxuICB8ICdjaGVja2JveCdcclxuICB8ICd0ZXh0YXJlYSdcclxuICB8ICdkYXRlJ1xyXG4gIHwgJ3Bhc3N3b3JkJ1xyXG4gIHwgJ3JhZGlvJ1xyXG4gIHwgJ2ZpbGUnXHJcbiAgfCAnbW9udGgteWVhcidcclxuICB8ICdwaG9uZSdcclxuICB8ICd1YW4nXHJcbiAgfCAncGYnXHJcbiAgfCAnZXNpJ1xyXG4gIHwgJ2lmc2MnXHJcbiAgfCAnbWljcidcclxuICB8ICdpYmFuJ1xyXG4gIHwgJ3NlcnZpY2UtcGVyaW9kJ1xyXG4gIHwgJ2RvY3VtZW50JztcclxuXHJcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25UeXBlID1cclxuICB8ICdyZXF1aXJlZCdcclxuICB8ICdlbWFpbCdcclxuICB8ICdtaW5MZW5ndGgnXHJcbiAgfCAnbWF4TGVuZ3RoJ1xyXG4gIHwgJ3BhdHRlcm4nXHJcbiAgfCAnbWluJ1xyXG4gIHwgJ21heCdcclxuICB8ICdjdXN0b20nXHJcbiAgfCAncGFzc3dvcmRDb21wbGV4aXR5JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRWYWxpZGF0aW9uIHtcclxuICB0eXBlOiBWYWxpZGF0aW9uVHlwZTtcclxuICB2YWx1ZT86IGFueTsgLy8gRm9yIG1pbkxlbmd0aCwgbWF4TGVuZ3RoLCBtaW4sIG1heCwgcGF0dGVyblxyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7IC8vIEN1c3RvbSBlcnJvciBtZXNzYWdlXHJcbiAgdmFsaWRhdG9yPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cD86IEZvcm1Hcm91cCkgPT4gYm9vbGVhbjsgLy8gRm9yIGN1c3RvbSB2YWxpZGF0aW9uXHJcbiAgcGFyYW1zPzogYW55OyAvLyBGb3IgY29tcGxleCB2YWxpZGF0aW9uIHJ1bGVzIGxpa2UgcGFzc3dvcmRDb21wbGV4aXR5XHJcbiAgZXJyb3JLZXk/OiBzdHJpbmc7IC8vIFNwZWNpZmljIGVycm9yIGtleSB0byByZXR1cm5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29sdW1uIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB0eXBlOiBGaWVsZFR5cGU7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdOyAvLyBGb3Igc2VsZWN0IGZpZWxkc1xyXG4gIHZhbGlkYXRpb25zPzogRmllbGRWYWxpZGF0aW9uW107XHJcbiAgdmFsdWU/OiBhbnk7IC8vIERlZmF1bHQgdmFsdWVcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgaGludD86IHN0cmluZztcclxuICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiB2b2lkO1xyXG4gIGFjY2VwdD86IHN0cmluZzsgLy8gRm9yIGZpbGUgaW5wdXQgKGUuZy4sICdpbWFnZS8qJylcclxuICBmaWxlUHJldmlldz86IGJvb2xlYW47IC8vIFNob3cgaW1hZ2UgcHJldmlld1xyXG4gIHNob3dUaW1lUGlja2VyPzogYm9vbGVhbjsgLy8gU2hvdyB0aW1lIHBpY2tlciBmb3IgdGV4dCBmaWVsZHNcclxuICBhbGxvd0FscGhhYmV0c09ubHk/OiBib29sZWFuO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxuICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnOyAvLyBGb3IgcmFkaW8gZ3JvdXBcclxuICBzZXJ2aWNlUGVyaW9kQ29uZmlnPzogeyBzdGFydEZpZWxkOiBzdHJpbmc7IGVuZEZpZWxkOiBzdHJpbmcgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VjdGlvbiB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7IC8vIFNlY3Rpb24gaGVhZGluZyAoZS5nLiwgXCJQRVJTT05BTCBJTkZPUk1BVElPTlwiKVxyXG4gIGZpZWxkczogRm9ybUNvbHVtbltdO1xyXG4gIGlzUmVwZWF0YWJsZT86IGJvb2xlYW47XHJcbiAgc2VjdGlvbktleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29uZmlnIHtcclxuICBzZWN0aW9uczogRm9ybVNlY3Rpb25bXTtcclxuICBzdWJtaXRMYWJlbD86IHN0cmluZztcclxuICByZXNldExhYmVsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0OiAoZGF0YTogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xyXG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xyXG4gIGZvcm1UaXRsZT86IHN0cmluZztcclxuICBtYXhDb2xzUGVyUm93PzogbnVtYmVyO1xyXG4gIGRpc2FibGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGRpc2FibGVDYW5jZWw/OiBib29sZWFuO1xyXG4gIGhpZGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGhpZGVDYW5jZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyBhZGQtdXBkYXRlLWZvcm0uY29tcG9uZW50LnRzXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBGb3JtQXJyYXksXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG4vLyBJbXBvcnQgeW91ciBsaWJyYXJ5IG1vZHVsZXNcclxuaW1wb3J0IHsgRnZFbnRyeUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW50cnktZmllbGQvZnYtZW50cnktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW51bWJlci1maWVsZC9mdi1udW1iZXItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXJhZGlvLWdyb3VwL2Z2LXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9mdi1jaGVja2JveC9mdi1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkRhdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRhdGUtZmllbGQvZnYtZGF0ZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbW9udGgteWVhci1maWVsZC9mdi1tb250aC15ZWFyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZmlsZS1zZWxlY3Rvci9mdi1maWxlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWltYWdlLXNlbGVjdG9yL2Z2LWltYWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1yaWNoLXRleHQtZWRpdG9yL2Z2LXJpY2gtdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOYW1lQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW5hbWUtY29kZS9mdi1uYW1lLWNvZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGhvbmUtZmllbGQvZnYtcGhvbmUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZVYW5GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXVhbi1maWVsZC9mdi11YW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQZkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGYtZmllbGQvZnYtcGYtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFc2lGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVzaS1maWVsZC9mdi1lc2ktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJZnNjRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pZnNjLWZpZWxkL2Z2LWlmc2MtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNaWNyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1taWNyLWZpZWxkL2Z2LW1pY3ItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJYmFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pYmFuLWZpZWxkL2Z2LWliYW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW1haWwtZmllbGQvZnYtZW1haWwtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGFzc3dvcmQtZmllbGQvZnYtcGFzc3dvcmQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZTZXJ2aWNlUGVyaW9kQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtc2VydmljZS1wZXJpb2QvZnYtc2VydmljZS1wZXJpb2QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEb2N1bWVudEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZG9jdW1lbnQtZmllbGQvZnYtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50JztcclxuXHJcblxyXG4vLyBJbXBvcnQgVmFsaWRhdGlvbiBUeXBlc1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2NoZW1hLCBWYWxpZGF0aW9uUnVsZSB9IGZyb20gJ0Bmb3Zlc3R0YTIvdmFsaWRhdGlvbi1lbmdpbmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hZGQtdXBkYXRlLWZvcm0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZ2RW50cnlGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TnVtYmVyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkRyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgRnZSYWRpb0dyb3VwQ29tcG9uZW50LFxyXG4gICAgRnZDaGVja2JveENvbXBvbmVudCxcclxuICAgIEZ2RGF0ZUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZNb250aFllYXJGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgRnZJbWFnZVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgRnZSaWNoVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICAgIEZ2TmFtZUNvZGVDb21wb25lbnQsXHJcbiAgICBGdlBob25lRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlVhbkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZQZkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZFc2lGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2SWZzY0ZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZNaWNyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkliYW5GaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RW1haWxGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2UGFzc3dvcmRGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2U2VydmljZVBlcmlvZENvbXBvbmVudCxcclxuICAgIEZ2RG9jdW1lbnRGaWVsZENvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oZWFkZXJcIiAqbmdJZj1cImNvbmZpZy5mb3JtVGl0bGVcIj5cclxuICAgICAgICA8aDI+e3sgY29uZmlnLmZvcm1UaXRsZSB9fTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCIgY2xhc3M9XCJkeW5hbWljLWZvcm1cIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbmZpZy5zZWN0aW9uc1wiIGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCIgKm5nSWY9XCJzZWN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cclxuICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24uaXNSZXBlYXRhYmxlICYmIHNlY3Rpb24uc2VjdGlvbktleTsgZWxzZSBmbGF0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiBnZXRTZWN0aW9uQXJyYXkoc2VjdGlvbikuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInJlcGVhdGFibGUtZ3JvdXAtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwZWF0YWJsZS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLWFkZFwiIChjbGljayk9XCJhZGRTZWN0aW9uSXRlbShzZWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjMmVjYzcxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVTZWN0aW9uSXRlbShzZWN0aW9uLCBpKVwiICpuZ0lmPVwiZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pLmNvbnRyb2xzLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI2U3NGMzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1yb3dcIj5cclxuICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc2VjdGlvbi5maWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFJlbmRlcmVyOyBjb250ZXh0OiB7IGNvbHVtbjogY29sdW1uLCBjb250cm9sOiBncm91cC5nZXQoY29sdW1uLm5hbWUpLCBncm91cDogZ3JvdXAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdFNlY3Rpb24+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHNlY3Rpb24uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRSZW5kZXJlcjsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbiwgY29udHJvbDogZ2V0Q29udHJvbChjb2x1bW4ubmFtZSksIGdyb3VwOiBmb3JtIH1cIj5cclxuICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZmllbGRSZW5kZXJlciBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWdyb3VwPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCInZmllbGQtJyArIGNvbHVtbi50eXBlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbHVtbi5oaWRkZW4gPyB7IGRpc3BsYXk6ICdub25lJyB9IDoge31cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyAoY29sdW1uLmNvbFNwYW4gfHwgMSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVudHJ5LWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93QWxwaGFiZXRzT25seV09XCJjb2x1bW4uYWxsb3dBbHBoYWJldHNPbmx5IHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cImNvbHVtbi5tYXhMZW5ndGggfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWVudHJ5LWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZW1haWwnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVtYWlsLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWVtYWlsLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGFzc3dvcmQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBhc3N3b3JkLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXBhc3N3b3JkLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbnVtYmVyJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1udW1iZXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtbnVtYmVyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnc2VsZWN0JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBvcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnY2hlY2tib3gnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncmFkaW8nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1yYWRpby1ncm91cFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cImNvbHVtbi5sYXlvdXQgfHwgJ3ZlcnRpY2FsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZGF0ZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRhdGUtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZGF0ZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1vbnRoLXllYXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlTW9udGhZZWFyQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LW1vbnRoLXllYXItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0ZXh0YXJlYScgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcmljaC10ZXh0LWVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1yaWNoLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZmlsZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2VGaWVsZChjb2x1bW4pOyBlbHNlIHN0YW5kYXJkRmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1pbWFnZS1zZWxlY3RvclxyXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QgaW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWltYWdlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRGaWxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1maWxlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImNvbHVtbi5hY2NlcHQgfHwgJyovKidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsIGNvbHVtbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZnYtZmlsZS1zZWxlY3Rvcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZScgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbmFtZS1jb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VhcmNoIGJ5IENvZGUgb3IgTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zID8gbWFwU2VhcmNoT3B0aW9ucyhjb2x1bW4ub3B0aW9ucykgOiBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1uYW1lLWNvZGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdwaG9uZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBob25lLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LXBob25lLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndWFuJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtdWFuLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LXVhbi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3BmJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcGYtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtcGYtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdlc2knICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1lc2ktZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtZXNpLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnaWZzYycgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWlmc2MtZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtaWZzYy1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ21pY3InICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1taWNyLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LW1pY3ItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdpYmFuJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtaWJhbi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1pYmFuLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnc2VydmljZS1wZXJpb2QnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8ZnYtc2VydmljZS1wZXJpb2RcclxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzdGFydEZpZWxkXT1cImNvbHVtbi5zZXJ2aWNlUGVyaW9kQ29uZmlnPy5zdGFydEZpZWxkIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtlbmRGaWVsZF09XCJjb2x1bW4uc2VydmljZVBlcmlvZENvbmZpZz8uZW5kRmllbGQgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICA+PC9mdi1zZXJ2aWNlLXBlcmlvZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RvY3VtZW50JyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZG9jdW1lbnQtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICdVcGxvYWQnXCJcclxuICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImNvbHVtbi5hY2NlcHQgfHwgJ2FwcGxpY2F0aW9uL3BkZixpbWFnZS8qJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWRvY3VtZW50LWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbmZpZy5oaWRlU3VibWl0XCJcclxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZy5kaXNhYmxlU3VibWl0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29uZmlnLnN1Ym1pdExhYmVsIHx8ICdTYXZlJyB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbmZpZy5oaWRlQ2FuY2VsXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpZy5vbkNhbmNlbCgpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZy5kaXNhYmxlQ2FuY2VsXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29uZmlnLmNhbmNlbExhYmVsIHx8ICdDYW5jZWwnIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IGBcclxuXHJcbiAgQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UG9wcGluczp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwJyk7XHJcbiAgQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnMnKTtcclxuICAgICp7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBcIlBvcHBpbnNcIiAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgLmZvcm0tY29udGFpbmVyIHtcclxuICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcclxuICAgICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBtYXJnaW46IDAgYXV0bztcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgfVxyXG5cclxuICAgIC5lcnJvci1ib3JkZXIge1xyXG4gICAgIGJvcmRlci1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmhpZGRlbntcclxuICAgICAgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0taGVhZGVyIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWhlYWRlciBoMiB7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICBjb2xvcjogIzMwMzAzMDtcclxuICAgIH1cclxuXHJcbiAgICAuZHluYW1pYy1mb3JtIHtcclxuICAgICAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcclxuICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLXNlY3Rpb24ge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOjEwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlY3Rpb24tdGl0bGUge1xyXG4gICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgICBtYXJnaW46IDAgMCAxNnB4IDA7XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcclxuICAgIH1cclxuXHJcbiAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsMWZyKTtcclxuICAgICAgZ2FwOiAxNnB4O1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tZmllbGQtd3JhcHBlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgbWluLXdpZHRoOiAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgLnBhc3N3b3JkLXRvZ2dsZS1idG4ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICByaWdodDogMTBweDtcclxuICB0b3A6IDMycHg7XHJcbiAgYmFja2dyb3VuZDogbm9uZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHBhZGRpbmc6IDRweDtcclxuICBjb2xvcjogIzY2NjtcclxufVxyXG5cclxuLnBhc3N3b3JkLXRvZ2dsZS1idG46aG92ZXIge1xyXG4gIGNvbG9yOiAjMzMzO1xyXG59XHJcblxyXG4ucGFzc3dvcmQtdG9nZ2xlLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gIGZvbnQtc2l6ZTogMjBweDtcclxuICB3aWR0aDogYXV0bztcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMDtcclxufVxyXG5cclxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIGFuZCAobWF4LXdpZHRoOiAxNDAwcHgpIHtcclxuICAgICAgLmZpZWxkcy1yb3cge1xyXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsMWZyKTtcclxuICAgICAgfVxyXG4gICAgICAuZm9ybS1jb250cm9sIHtcclxuICAgICAgICB3aWR0aDogMTgwcHg7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxODBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcclxuICAgICAgLmZpZWxkcy1yb3cge1xyXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsMWZyKTtcclxuICAgICAgfVxyXG4gICAgICAuZm9ybS1jb250cm9sIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcclxuICAgICAgLmZpZWxkcy1yb3cge1xyXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsMWZyKTtcclxuICAgICAgICBnYXA6IDEycHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAgICAgLmZpZWxkcy1yb3cge1xyXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsMWZyKTtcclxuICAgICAgICBnYXA6IDEwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcclxuICAgICAgLmZpZWxkcy1yb3cge1xyXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgfVxyXG4gICAgICAuZm9ybS1maWVsZC13cmFwcGVyIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxhYmVsIHtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogNnB4O1xyXG4gICAgICBjb2xvcjogIzE1MUQ0ODtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5yZXF1aXJlZCB7XHJcbiAgICAgIGNvbG9yOiAjZTc0YzNjO1xyXG4gICAgICBtYXJnaW4tbGVmdDogMnB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICBwYWRkaW5nOiA1cHggMTBweDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAzNHB4O1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjOENCQkE4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiAgICAgIGNvbG9yOiAjMWYyYjQxO1xyXG4gICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycywgYm94LXNoYWRvdyAwLjJzO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xyXG4gICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICBib3JkZXItY29sb3I6ICMzNDk4ZGI7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLCAxNTIsIDIxOSwgMC4xKTtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1jb250cm9sOmRpc2FibGVkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjBmMTtcclxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgIH1cclxuXHJcbiAgICB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wge1xyXG4gICAgICByZXNpemU6IHZlcnRpY2FsO1xyXG4gICAgICBtaW4taGVpZ2h0OiAxMDBweDtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QuZm9ybS1jb250cm9sIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBhcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyB2aWV3Qm94PScwIDAgMTIgMTInJTNFJTNDcGF0aCBmaWxsPSclMjMzMzMnIGQ9J002IDlMMSA0aDEweicvJTNFJTNDL3N2ZyUzRVwiKTtcclxuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgOHB4IGNlbnRlcjtcclxuICAgICAgcGFkZGluZy1yaWdodDogNDBweDtcclxuICAgIH1cclxuXHJcbiAgICAuY2hlY2tib3gtd3JhcHBlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGdhcDogOHB4O1xyXG4gICAgfVxyXG5cclxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XHJcbiAgICAgIHdpZHRoOiAxOHB4O1xyXG4gICAgICBoZWlnaHQ6IDE4cHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuY2hlY2tib3gtbGFiZWwge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgIH1cclxuXHJcbiAgICAuZmlsZS11cGxvYWQtY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAyMHB4O1xyXG4gIHBhZGRpbmc6IDIwcHg7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG59XHJcblxyXG4ubWF0ZXJpYWwtaWNvbnMge1xyXG4gIGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB3aWR0aDogNDBweDtcclxuICBwYWRkaW5nOiA4cHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG59XHJcblxyXG4uZmlsZS1maWVsZC13cmFwcGVyIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXJnaW4tdG9wOiAxNnB4O1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG4ucGhvdG8tcHJldmlldy1jaXJjbGUge1xyXG4gIHdpZHRoOiAxMDBweDtcclxuICBoZWlnaHQ6IDEwMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICNkZGQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzO1xyXG59XHJcblxyXG4ucGhvdG8tcHJldmlldy1jaXJjbGU6aG92ZXIge1xyXG4gIGJvcmRlci1jb2xvcjogIzM0OThkYjtcclxufVxyXG5cclxuLnByZXZpZXctaW1hZ2UsIC5kZWZhdWx0LXBob3RvIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcblxyXG4ucHJldmlldy1pbWFnZSBpbWcge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBvYmplY3QtZml0OiBjb3ZlcjtcclxufVxyXG5cclxuLmRlZmF1bHQtcGhvdG8ge1xyXG4gIGJhY2tncm91bmQ6ICNmMGYwZjA7XHJcbiAgY29sb3I6ICM5OTk7XHJcbiAgZm9udC1zaXplOiA0MHB4O1xyXG59XHJcblxyXG4uZmlsZS1pbmZvIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiA4cHg7XHJcbn1cclxuLmJ0bi1kZWxldGUge1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBwYWRkaW5nOiAwcHg7XHJcbn1cclxuXHJcbi51cGxvYWQtYnRuLWdyb3VwIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2QzZDNkMztcclxuICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHdpZHRoOiBmaXQtY29udGVudDtcclxufVxyXG5cclxuLmJ0bi11cGxvYWQge1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgY29sb3I6ICMyMjI7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIHBhZGRpbmc6IDAgMThweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiA4cHggMCAwIDhweDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGhlaWdodDogNDBweDtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XHJcbn1cclxuXHJcbi5idG4tdXBsb2FkLWljb24ge1xyXG4gIGJhY2tncm91bmQ6ICNmNWY1ZjU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgOHB4IDhweCAwO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICB3aWR0aDogNDhweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycztcclxufVxyXG5cclxuLmJ0bi11cGxvYWQtaWNvbiBpLm1hdGVyaWFsLWljb25zIHtcclxuICBmb250LXNpemU6IDIycHg7XHJcbiAgY29sb3I6ICMyMjI7XHJcbn1cclxuXHJcbi5idG4tdXBsb2FkOmhvdmVyLCAuYnRuLXVwbG9hZC1pY29uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xyXG59XHJcblxyXG4uYnRuLWRlbGV0ZSB7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgY29sb3I6IHJlZDtcclxufVxyXG5cclxuLmJ0bi1kZWxldGU6aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6ICNmMGYwZjA7XHJcbn1cclxuXHJcbi5maWxlLW5hbWUge1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBjb2xvcjogIzY2NjtcclxuICBtYXJnaW46IDhweDtcclxuICBtYXJnaW4tdG9wOiAxMHB4O1xyXG59XHJcblxyXG4uZmlsZS1sYWJlbCB7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNnB4O1xyXG4gICAgY29sb3I6ICMxNTFkNDg7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbiAgICAucmFkaW8tbGFiZWwge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcclxuICBjb2xvcjogIzE1MUQ0ODtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi5yYWRpby1ncm91cCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDIwcHg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuLnJhZGlvLWl0ZW0ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDZweDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcclxuICB3aWR0aDogMThweDtcclxuICBoZWlnaHQ6IDE4cHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGFjY2VudC1jb2xvcjogIzM0OThkYjtcclxufVxyXG5cclxuLnJhZGlvLW9wdGlvbi1sYWJlbCB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIG1hcmdpbjogMDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG59XHJcblxyXG4gICAgLmhpbnQge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGNvbG9yOiAjN2Y4YzhkO1xyXG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmVycm9yLW1lc3NhZ2Uge1xyXG4gICAgICBjb2xvcjogI2U3NGMzYztcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tYWN0aW9ucyB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGdhcDogOHB4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgIGdhcDogMTJweDtcclxuICAgICAgcGFkZGluZy10b3A6IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuIHtcclxuICAgICAgcGFkZGluZzogOHB4IDIwcHg7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogN3B4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1wcmltYXJ5IHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNkFGRjtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyOTgwYjk7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1wcmltYXJ5OmRpc2FibGVkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2JkYzNjNztcclxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXNlY29uZGFyeSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5NWE1YTY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXNlY29uZGFyeTpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM3ZjhjOGQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1vdXRsaW5lIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzAzMDtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tb3V0bGluZTpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYjJiMmJmZjtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC15ZWFyLXdyYXBwZXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC15ZWFyLXdyYXBwZXIgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQ1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1oaWRkZW4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgICB3aWR0aDogMDtcclxuICAgICAgaGVpZ2h0OiAwO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0biB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgcmlnaHQ6IDVweDtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBwYWRkaW5nOiA1cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjb2xvcjogIzY2NjtcclxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcclxuICAgICAgei1pbmRleDogMTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItYnRuOmRpc2FibGVkIHtcclxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItYnRuIC5tYXRlcmlhbC1pY29ucyB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1pbnB1dCB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3QtZHJvcGRvd24ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogY2FsYygxMDAlICsgNHB4KTtcclxuICAgICAgbGVmdDogMDtcclxuICAgICAgcmlnaHQ6IGF1dG87XHJcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMTZweCk7XHJcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDNkM2QzO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIG1heC1oZWlnaHQ6IDIyMHB4O1xyXG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDRweCAxMHB4IHJnYmEoMCwwLDAsMC4wOCk7XHJcbiAgICAgIHotaW5kZXg6IDU7XHJcbiAgICAgIHBhZGRpbmc6IDZweCAwO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XHJcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2Utb3V0O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LW9wdGlvbiB7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGdhcDogOHB4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YyZjJmMjtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1vcHRpb246bGFzdC1jaGlsZCB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtb3B0aW9uOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZDogI2Y1ZjlmZjtcclxuICAgIH1cclxuXHJcbiAgICAucmVwZWF0YWJsZS1ncm91cC13cmFwcGVyIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZWVlO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgICBwYWRkaW5nOiAyMHB4IDEwMHB4IDIwcHggMjBweDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMDUpO1xyXG4gICAgfVxyXG4gICAgLnJlcGVhdGFibGUtYWN0aW9ucyB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNDVweDtcclxuICAgICAgICByaWdodDogMTVweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGdhcDogOHB4O1xyXG4gICAgICAgIHotaW5kZXg6IDEwO1xyXG4gICAgfVxyXG4gICAgLmJ0bi1pY29uIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgcGFkZGluZzogNHB4O1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG4gICAgfVxyXG4gICAgLmJ0bi1pY29uOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb24tY29kZSB7XHJcbiAgICAgIGNvbG9yOiAjMDA1MmNjO1xyXG4gICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICBtaW4td2lkdGg6IDkwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLm9wdGlvbi1uYW1lIHtcclxuICAgICAgY29sb3I6ICMxNTFkNDg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLXdyYXBwZXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLWlucHV0IHtcclxuICAgICAgcGFkZGluZy1yaWdodDogNDVweDtcclxuICAgICAgZmxleDogMTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItYnRuIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogNXB4O1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDVweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGNvbG9yOiAjNjY2O1xyXG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xyXG4gICAgICB6LWluZGV4OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBjb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItYnRuOmRpc2FibGVkIHtcclxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci1idG4gLm1hdGVyaWFsLWljb25zIHtcclxuICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy1mb3JtLWZpZWxkIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy10ZXh0LWZpZWxkLXdyYXBwZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX3RyYWlsaW5nIHtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjOENCQkE4O1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZDpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQ6bm90KC5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQpIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZDpub3QoLm1kYy10ZXh0LWZpZWxkLS1kaXNhYmxlZCkgLm1kYy1ub3RjaGVkLW91dGxpbmVfX3RyYWlsaW5nIHtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjOENCQkE4O1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZC5tZGMtdGV4dC1maWVsZC0tZm9jdXNlZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbGVhZGluZyxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZC5tZGMtdGV4dC1maWVsZC0tZm9jdXNlZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQubWRjLXRleHQtZmllbGQtLWZvY3VzZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX3RyYWlsaW5nIHtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZC5lcnJvci1ib3JkZXIgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQuZXJyb3ItYm9yZGVyIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcclxuICAgIC5kYXRlLXBpY2tlci1maWVsZC5lcnJvci1ib3JkZXIgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX3RyYWlsaW5nIHtcclxuICAgICAgYm9yZGVyLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtZm9ybS1maWVsZC1pbnB1dC1jb250cm9sIGlucHV0IHtcclxuICAgICAgZm9udC1mYW1pbHk6IFwiUG9wcGluc1wiICFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgICAgY29sb3I6ICMxZjJiNDE7XHJcbiAgICB9XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZFVwZGF0ZUZvcm1Db21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBjb25maWchOiBGb3JtQ29uZmlnO1xyXG4gIEBPdXRwdXQoKSB2YWxpZGF0aW9uRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgZmlsZVByZXZpZXdzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgZmlsZU5hbWVzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgdmFsdWVDaGFuZ2VTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgcGFzc3dvcmRWaXNpYmlsaXR5OiBNYXA8c3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIHNlYXJjaFF1ZXJpZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGhvc3RSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAvLyBMaWZlY3ljbGUgaG9vayAtIGNhbiBiZSB1c2VkIGZvciBkYXRlcGlja2VyIGluaXRpYWxpemF0aW9uIGlmIG5lZWRlZFxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1uV2lkdGgoY29sdW1uOiBGb3JtQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1heENvbHMgPSB0aGlzLmNvbmZpZy5tYXhDb2xzUGVyUm93IHx8IDU7XHJcbiAgICBjb25zdCBjb2xTcGFuID0gTWF0aC5taW4oY29sdW1uLmNvbFNwYW4gfHwgMSwgbWF4Q29scyk7XHJcbiAgICByZXR1cm4gYGNhbGMoJHsoY29sU3BhbiAvIG1heENvbHMpICogMTAwfSUgLSAxNnB4KWA7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgLy8gMi4gSEVMUEVSOiBDb252ZXJ0IHlvdXIgRmllbGRWYWxpZGF0aW9uW10gdG8gdGhlIGxpYnJhcnkncyBWYWxpZGF0aW9uU2NoZW1hXHJcbiAgZ2V0U2NoZW1hKGNvbHVtbjogRm9ybUNvbHVtbik6IFZhbGlkYXRpb25TY2hlbWEge1xyXG4gICAgY29uc3QgcnVsZXM6IFZhbGlkYXRpb25SdWxlW10gPSBbXTtcclxuICAgIGNvbnN0IGVycm9yUHJpb3JpdHk6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgaWYgKGNvbHVtbi52YWxpZGF0aW9ucykge1xyXG4gICAgICBjb2x1bW4udmFsaWRhdGlvbnMuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAodi50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IGVuYWJsZWQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRVFVSVJFRCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlcXVpcmVkJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnZW1haWwnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAncmVnZXgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgcGF0dGVybjogJ15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcXFwuW2EtekEtWl17Mix9JCcsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRUdFWF9NSVNNQVRDSCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlZ2V4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWluTGVuZ3RoJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21pbkxlbmd0aCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUlOX0xFTkdUSCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ21pbkxlbmd0aCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21heExlbmd0aCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtYXhMZW5ndGgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01BWF9MRU5HVEgnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtYXhMZW5ndGgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdwYXR0ZXJuJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3JlZ2V4JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgcGF0dGVybjogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX1JFR0VYX01JU01BVENIJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncmVnZXgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdwYXNzd29yZENvbXBsZXhpdHknOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmRDb21wbGV4aXR5JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHYucGFyYW1zIHx8IHtcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVVcHBlcmNhc2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlTG93ZXJjYXNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZU51bWJlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVTcGVjaWFsQ2hhcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1pbkxlbmd0aDogOFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6IHYuZXJyb3JLZXkgfHwgJ0VSUl9QQVNTV09SRF9DT01QTEVYSVRZX0lOVkFMSUQnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdwYXNzd29yZENvbXBsZXhpdHknKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtaW4nOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWluJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NSU5fVkFMVUUnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtaW4nKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtYXgnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWF4JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NQVhfVkFMVUUnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtYXgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNYXAgJ25hbWUtY29kZScgdG8gJ0Ryb3Bkb3duJyBvciBzaW1pbGFyIGZvciB2YWxpZGF0aW9uIHNjaGVtYSBwdXJwb3NlcyBpZiBuZWVkZWRcclxuICAgIGxldCBjb250cm9sVHlwZSA9IGNvbHVtbi50eXBlO1xyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbmFtZS1jb2RlJykge1xyXG4gICAgICBjb250cm9sVHlwZSA9ICdzZWxlY3QnOyAvLyBUcmVhdCBhcyBzZWxlY3QgZm9yIHNjaGVtYSBsb29rdXAgaWYgbGlicmFyeSBleHBlY3RzICdzZWxlY3QnIG9yICdEcm9wZG93bidcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb250cm9sVHlwZTogY29udHJvbFR5cGUsXHJcbiAgICAgIGVycm9yUHJpb3JpdHk6IGVycm9yUHJpb3JpdHksXHJcbiAgICAgIHJ1bGVzOiBydWxlcyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBpc0ltYWdlRmllbGQoY29sdW1uOiBGb3JtQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnICYmXHJcbiAgICAgIChjb2x1bW4uYWNjZXB0Py5zdGFydHNXaXRoKCdpbWFnZScpIHx8IGNvbHVtbi5maWxlUHJldmlldyA9PT0gdHJ1ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBIZWxwZXJzIGZvciBSZXBlYXRhYmxlIFNlY3Rpb25zXHJcbiAgZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb246IEZvcm1TZWN0aW9uKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KHNlY3Rpb24uc2VjdGlvbktleSEpIGFzIEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVNlY3Rpb25Hcm91cChzZWN0aW9uOiBGb3JtU2VjdGlvbik6IEZvcm1Hcm91cCB7XHJcbiAgICBjb25zdCBncm91cENvbmZpZzogYW55ID0ge307XHJcbiAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IGNvbHVtbi52YWx1ZSB8fCAnJztcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnbW9udGgteWVhcicgJiYgaW5pdGlhbFZhbHVlKSB7XHJcbiAgICAgICAgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShpbml0aWFsVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGdyb3VwQ29uZmlnW2NvbHVtbi5uYW1lXSA9IFtcclxuICAgICAgICB7IHZhbHVlOiBpbml0aWFsVmFsdWUsIGRpc2FibGVkOiBjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2UgfSxcclxuICAgICAgXTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGdyb3VwID0gdGhpcy5mYi5ncm91cChncm91cENvbmZpZyk7XHJcblxyXG4gICAgLy8gQXBwbHkgVmFsaWRhdG9yc1xyXG4gICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmJ1aWxkVmFsaWRhdG9ycyhjb2x1bW4udmFsaWRhdGlvbnMsIGdyb3VwKTtcclxuICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGdyb3VwLmdldChjb2x1bW4ubmFtZSk/LnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgZ3JvdXAuZ2V0KGNvbHVtbi5uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZ3JvdXA7XHJcbiAgfVxyXG5cclxuICBhZGRTZWN0aW9uSXRlbShzZWN0aW9uOiBGb3JtU2VjdGlvbikge1xyXG4gICAgY29uc3QgYXJyYXkgPSB0aGlzLmdldFNlY3Rpb25BcnJheShzZWN0aW9uKTtcclxuICAgIGFycmF5LnB1c2godGhpcy5jcmVhdGVTZWN0aW9uR3JvdXAoc2VjdGlvbikpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2VjdGlvbkl0ZW0oc2VjdGlvbjogRm9ybVNlY3Rpb24sIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGFycmF5ID0gdGhpcy5nZXRTZWN0aW9uQXJyYXkoc2VjdGlvbik7XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoID4gMSkge1xyXG4gICAgICBhcnJheS5yZW1vdmVBdChpbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0NvbnRyb2xJbnZhbGlkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiAoY29udHJvbC50b3VjaGVkIHx8IHRoaXMuc3VibWl0dGVkKSk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2VGb3JDb250cm9sKFxyXG4gICAgY29sdW1uOiBGb3JtQ29sdW1uLFxyXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbFxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWNvbnRyb2w/LmVycm9ycykgcmV0dXJuICcnO1xyXG4gICAgY29uc3QgZmllbGQgPSBjb250cm9sO1xyXG4gICAgY29uc3QgZXJyb3JzID0gZmllbGQuZXJyb3JzITtcclxuXHJcbiAgICBpZiAoZXJyb3JzWydjdXN0b20nXSkge1xyXG4gICAgICBjb25zdCBjdXN0b21WYWxpZGF0aW9uID0gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZChcclxuICAgICAgICAodikgPT4gdi50eXBlID09PSAnY3VzdG9tJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdGlvbj8ubWVzc2FnZSB8fCAnSW52YWxpZCBmaWVsZCc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGVycm9yS2V5cykge1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi50eXBlID09PSBrZXkpO1xyXG4gICAgICBpZiAodmFsaWRhdGlvbiAmJiB2YWxpZGF0aW9uLm1lc3NhZ2UpIHtcclxuICAgICAgICByZXR1cm4gdmFsaWRhdGlvbi5tZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVycm9yc1sncmVxdWlyZWQnXSkgcmV0dXJuIGAke2NvbHVtbj8ubGFiZWx9IGlzIHJlcXVpcmVkYDtcclxuICAgIGlmIChlcnJvcnNbJ2VtYWlsJ10pIHJldHVybiAnSW52YWxpZCBlbWFpbCBmb3JtYXQnO1xyXG4gICAgaWYgKGVycm9yc1snbWlubGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSBsZW5ndGggaXMgJHtlcnJvcnNbJ21pbmxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZXJyb3JzWydtYXhsZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIGxlbmd0aCBpcyAke2Vycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChlcnJvcnNbJ21pbiddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gdmFsdWUgaXMgJHtlcnJvcnNbJ21pbiddLm1pbn1gO1xyXG4gICAgaWYgKGVycm9yc1snbWF4J10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSB2YWx1ZSBpcyAke2Vycm9yc1snbWF4J10ubWF4fWA7XHJcbiAgICBpZiAoZXJyb3JzWydwYXR0ZXJuJ10pIHJldHVybiAnSW52YWxpZCBmb3JtYXQnO1xyXG5cclxuICAgIHJldHVybiAnSW52YWxpZCBmaWVsZCc7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBpbml0aWFsaXplRm9ybSgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICBjb25zdCBmb3JtR3JvdXBDb25maWc6IGFueSA9IHt9O1xyXG5cclxuICAgIHRoaXMuY29uZmlnLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHNlY3Rpb24uaXNSZXBlYXRhYmxlICYmIHNlY3Rpb24uc2VjdGlvbktleSkge1xyXG4gICAgICAgIGZvcm1Hcm91cENvbmZpZ1tzZWN0aW9uLnNlY3Rpb25LZXldID0gdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVNlY3Rpb25Hcm91cChzZWN0aW9uKSxcclxuICAgICAgICBdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcblxyXG4gICAgICAgICAgLy8gRm9ybWF0IG1vbnRoLXllYXIgZmllbGRzIHRvIFlZWVktTU0gZm9ybWF0XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdtb250aC15ZWFyJyAmJiBpbml0aWFsVmFsdWUpIHtcclxuICAgICAgICAgICAgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZvcm1Hcm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IGluaXRpYWxWYWx1ZSwgZGlzYWJsZWQ6IGNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZSB9LFxyXG4gICAgICAgICAgICBudWxsLCAvLyBXZSdsbCBzZXQgdmFsaWRhdG9ycyBhZnRlciBmb3JtIGNyZWF0aW9uXHJcbiAgICAgICAgICBdO1xyXG5cclxuICAgICAgICAgIC8vIElmIGl0J3MgYSBmaWxlIGZpZWxkIHdpdGggYW4gZXhpc3RpbmcgdmFsdWUsIHNldCB0aGUgcHJldmlld1xyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZmlsZScgJiYgY29sdW1uLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVByZXZpZXdzLnNldChjb2x1bW4ubmFtZSwgY29sdW1uLnZhbHVlKTtcclxuICAgICAgICAgICAgLy8gRXh0cmFjdCBmaWxlbmFtZSBmcm9tIFVSTCBvciBiYXNlNjRcclxuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmV4dHJhY3RGaWxlTmFtZShjb2x1bW4udmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVOYW1lcy5zZXQoY29sdW1uLm5hbWUsIGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Hcm91cENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uaXNSZXBlYXRhYmxlKSB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICAgIGNvbHVtbi52YWxpZGF0aW9ucyxcclxuICAgICAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGNvbHVtbi5uYW1lKT8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZhbHVlIGNoYW5nZXMgZm9yIGFsbCBmaWVsZHMgdG8gdHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyc1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcclxuICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGtleSk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uLm9uQ2hhbmdlKHZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCBhbGwgc3Vic2NyaXB0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmllbGRDaGFuZ2UoXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIGV2ZW50VmFsdWU/OiBhbnksXHJcbiAgICBjb250cm9sPzogQWJzdHJhY3RDb250cm9sXHJcbiAgKSB7XHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSBjb250cm9sIHx8IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuXHJcbiAgICAvLyBGb3JtYXQgbW9udGgteWVhciBmaWVsZHMgKGVzcGVjaWFsbHkgZXhwaXJ5RGF0ZSkgdG8gWVlZWS1NTVxyXG4gICAgaWYgKGNvbHVtbj8udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGV2ZW50VmFsdWUpIHtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKGV2ZW50VmFsdWUpO1xyXG4gICAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IGV2ZW50VmFsdWUpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIGV2ZW50VmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgIC8vIFVzZSB0aGUgZXZlbnQgdmFsdWUgZGlyZWN0bHkgKHdoYXQgdGhlIHVzZXIganVzdCBzZWxlY3RlZC90eXBlZClcclxuICAgICAgLy8gVGhpcyBlbnN1cmVzIHdlIGhhdmUgdGhlIGNvcnJlY3QgdmFsdWUgZXZlbiBpZiBmb3JtIGNvbnRyb2wgaGFzbid0IHVwZGF0ZWQgeWV0XHJcbiAgICAgIGNvbnN0IHZhbHVlVG9QYXNzID1cclxuICAgICAgICBldmVudFZhbHVlICE9PSB1bmRlZmluZWQgPyBldmVudFZhbHVlIDogZm9ybUNvbnRyb2w/LnZhbHVlO1xyXG4gICAgICBjb25zdCBvbkNoYW5nZUZuID0gY29sdW1uLm9uQ2hhbmdlOyAvLyBTdG9yZSB0aGUgZnVuY3Rpb24gcmVmZXJlbmNlXHJcblxyXG4gICAgICAvLyBTdG9yZSB0aGUgc2VsZWN0ZWQgdmFsdWUgLSB0aGlzIGlzIHdoYXQgdGhlIHVzZXIgY2hvc2VcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlVG9QYXNzO1xyXG5cclxuICAgICAgLy8gRW5zdXJlIHRoZSBmb3JtIGNvbnRyb2wgaGFzIHRoZSBzZWxlY3RlZCB2YWx1ZSBiZWZvcmUgY2FsbGluZyBvbkNoYW5nZVxyXG4gICAgICBpZiAoZm9ybUNvbnRyb2wgJiYgc2VsZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sLnZhbHVlICE9PSBzZWxlY3RlZFZhbHVlKSB7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDYWxsIG9uQ2hhbmdlIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlXHJcbiAgICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgICAgb25DaGFuZ2VGbihzZWxlY3RlZFZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXN0b3JlIHRoZSB2YWx1ZSBmb3IgdGhlIGZpZWxkIHRoYXQgdHJpZ2dlcmVkIHRoZSBjaGFuZ2UgaWYgaXQgd2FzIGNsZWFyZWQgYnkgb25DaGFuZ2VcclxuICAgICAgLy8gVGhpcyBpcyBjcml0aWNhbDogaWYgb25DaGFuZ2UgY2xlYXJzIHRoZSBmaWVsZCB0aGF0IHdhcyBqdXN0IGNoYW5nZWQsIHdlIHJlc3RvcmUgaXRcclxuICAgICAgLy8gT25seSByZXN0b3JlIGlmIHdlIGhhZCBhIG5vbi1lbXB0eSB2YWx1ZSAoZW1wdHkgc3RyaW5nLCBudWxsLCB1bmRlZmluZWQgYXJlIG5vdCByZXN0b3JlZClcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGZvcm1Db250cm9sICYmXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09ICcnXHJcbiAgICAgICkge1xyXG4gICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHdpdGggMCBkZWxheSB0byBydW4gYWZ0ZXIgYW55IHN5bmNocm9ub3VzIG9wZXJhdGlvbnMgaW4gb25DaGFuZ2VcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSB3YXMgY2xlYXJlZCBvciBjaGFuZ2VkXHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBmb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIC8vIElmIHRoZSB2YWx1ZSBkb2Vzbid0IG1hdGNoIHdoYXQgd2FzIHNlbGVjdGVkLCByZXN0b3JlIGl0XHJcbiAgICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgb25DaGFuZ2UgY2xlYXJlZCB0aGUgZmllbGQgdW5pbnRlbnRpb25hbGx5XHJcbiAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9PSBzZWxlY3RlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcbiAgICAvLyBOb3JtYWxpemUgdG8gWVlZWS1NTVxyXG4gICAgaWYgKHZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gdmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGFscmVhZHkgaW4gWVlZWS1NTSBmb3JtYXQsIHJldHVybiBhcyBpc1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VNb250aFllYXJWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcclxuICAgIC8vIERpc3BsYXkgYW5kIHBpY2tlciBib3RoIHVzZSBZWVlZLU1NOyBub3JtYWxpemUgTU0tWVlZWSBpZiBwcmVzZW50XHJcbiAgICBpZiAodmFsdWUubWF0Y2goL15cXGR7Mn0tXFxkezR9JC8pKSB7XHJcbiAgICAgIGNvbnN0IFttb250aCwgeWVhcl0gPSB2YWx1ZS5zcGxpdCgnLScpO1xyXG4gICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlTW9udGhZZWFyQ2hhbmdlKFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICB2YWx1ZTogc3RyaW5nLFxyXG4gICAgY29udHJvbD86IEFic3RyYWN0Q29udHJvbFxyXG4gICkge1xyXG4gICAgLy8gRm9ybWF0IHRoZSBpbnB1dCB2YWx1ZSB0byBZWVlZLU1NIGZvcm1hdFxyXG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgLy8gSWYgaXQncyBpbiBNTS1ZWVlZIGZvcm1hdCwgY29udmVydCB0byBZWVlZLU1NXHJcbiAgICBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7Mn0tXFxkezR9JC8pKSB7XHJcbiAgICAgIGNvbnN0IFttb250aCwgeWVhcl0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLScpO1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3MgaW4gWVlZWU1NIGZvcm1hdCAobm8gZGFzaCksIGNvbnZlcnQgdG8gWVlZWS1NTVxyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7Nn0kLykpIHtcclxuICAgICAgY29uc3QgeWVhciA9IGZvcm1hdHRlZFZhbHVlLnN1YnN0cmluZygwLCA0KTtcclxuICAgICAgY29uc3QgbW9udGggPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoNCwgNik7XHJcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgaXQncyBhbHJlYWR5IGluIFlZWVktTU0gZm9ybWF0LCBsZWF2ZSBhcyBpc1xyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7NH0tXFxkezJ9JC8pKSB7XHJcbiAgICAgIC8vIEFscmVhZHkgaW4gY29ycmVjdCBmb3JtYXRcclxuICAgIH1cclxuICAgIC8vIElmIHVzZXIgaXMgdHlwaW5nLCBhbGxvdyBwYXJ0aWFsIGlucHV0XHJcbiAgICBlbHNlIGlmIChmb3JtYXR0ZWRWYWx1ZS5tYXRjaCgvXlxcZHsxLDZ9JC8pKSB7XHJcbiAgICAgIC8vIEFsbG93IHBhcnRpYWwgaW5wdXQgd2hpbGUgdHlwaW5nXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSBjb250cm9sIHx8IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmIChmb3JtQ29udHJvbCAmJiBmb3JtYXR0ZWRWYWx1ZSAhPT0gdmFsdWUpIHtcclxuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUZpZWxkQ2hhbmdlKGZpZWxkTmFtZSwgZm9ybWF0dGVkVmFsdWUsIGNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlTW9udGhZZWFyQmx1cihmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoIWZvcm1Db250cm9sKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSBmb3JtQ29udHJvbC52YWx1ZSB8fCAnJztcclxuICAgIC8vIEVuc3VyZSB0aGUgdmFsdWUgaXMgaW4gWVlZWS1NTSBmb3JtYXQgb24gYmx1clxyXG4gICAgaWYgKHZhbHVlICYmICF2YWx1ZS5tYXRjaCgvXlxcZHs0fS1cXGR7Mn0kLykpIHtcclxuICAgICAgLy8gVHJ5IHRvIHBhcnNlIGFuZCBmb3JtYXRcclxuICAgICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIGlmIChmb3JtYXR0ZWQgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhclBpY2tlckNoYW5nZShmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgLy8gTW9udGggcGlja2VyIG91dHB1dHMgWVlZWS1NTTsganVzdCBub3JtYWxpemVcclxuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZSh2YWx1ZSk7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmIChmb3JtQ29udHJvbCkge1xyXG4gICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB0aGlzLmhhbmRsZUZpZWxkQ2hhbmdlKGZpZWxkTmFtZSwgZm9ybWF0dGVkVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGhZZWFyUGlja2VyVmFsdWUoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoIWZvcm1Db250cm9sKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGZvcm1Db250cm9sLnZhbHVlIHx8ICcnO1xyXG4gICAgLy8gRGlzcGxheSBhbmQgcGlja2VyIGJvdGggZXhwZWN0IFlZWVktTU1cclxuICAgIHJldHVybiB0aGlzLnBhcnNlTW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1vbnRoUGlja2VyKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBtb250aElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgIGZpZWxkTmFtZSArICdfcGlja2VyJ1xyXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKG1vbnRoSW5wdXQgJiYgbW9udGhJbnB1dC50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgcGlja2VyIHZhbHVlIGJlZm9yZSBvcGVuaW5nXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0TW9udGhZZWFyUGlja2VyVmFsdWUoZmllbGROYW1lKTtcclxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIG1vbnRoSW5wdXQudmFsdWUgPSBjdXJyZW50VmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgLy8gVHJ5IG1vZGVybiBzaG93UGlja2VyIEFQSSBmaXJzdCwgZmFsbGJhY2sgdG8gY2xpY2tcclxuICAgICAgaWYgKG1vbnRoSW5wdXQuc2hvd1BpY2tlcikge1xyXG4gICAgICAgIG1vbnRoSW5wdXQuc2hvd1BpY2tlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1vbnRoSW5wdXQuZm9jdXMoKTtcclxuICAgICAgICBtb250aElucHV0LmNsaWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbHVtbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBGb3JtQ29sdW1uIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5zZWN0aW9uc1xyXG4gICAgICAuZmxhdE1hcCgocykgPT4gcy5maWVsZHMpXHJcbiAgICAgIC5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZUZpZWxkcyhmaWVsZHM6IEZvcm1Db2x1bW5bXSk6IEZvcm1Db2x1bW5bXSB7XHJcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcigoZikgPT4gZi50eXBlID09PSAnZmlsZScpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9uRmlsZUZpZWxkcyhmaWVsZHM6IEZvcm1Db2x1bW5bXSk6IEZvcm1Db2x1bW5bXSB7XHJcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcigoZikgPT4gZi50eXBlICE9PSAnZmlsZScpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUGFzc3dvcmRWaXNpYmlsaXR5KGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5wYXNzd29yZFZpc2liaWxpdHkuZ2V0KGZpZWxkTmFtZSkgfHwgZmFsc2U7XHJcbiAgICB0aGlzLnBhc3N3b3JkVmlzaWJpbGl0eS5zZXQoZmllbGROYW1lLCAhY3VycmVudCk7XHJcbiAgfVxyXG4gIGhhc1JlcXVpcmVkVmFsaWRhdGlvbihjb2x1bW46IEZvcm1Db2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb2x1bW4udmFsaWRhdGlvbnM/LnNvbWUoKHYpID0+IHYudHlwZSA9PT0gJ3JlcXVpcmVkJykgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc1Bhc3N3b3JkVmlzaWJsZShmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFzc3dvcmRWaXNpYmlsaXR5LmdldChmaWVsZE5hbWUpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRWYWxpZGF0b3JzKFxyXG4gICAgdmFsaWRhdGlvbnM/OiBGaWVsZFZhbGlkYXRpb25bXSxcclxuICAgIGZvcm1Hcm91cD86IEZvcm1Hcm91cFxyXG4gICk6IGFueVtdIHtcclxuICAgIGlmICghdmFsaWRhdGlvbnMpIHJldHVybiBbXTtcclxuXHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBhbnlbXSA9IFtdO1xyXG4gICAgdmFsaWRhdGlvbnMuZm9yRWFjaCgodmFsaWRhdGlvbikgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRpb24udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWF4TGVuZ3RoJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtaW4nOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21heCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncGF0dGVybic6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgICAgICBpZiAodmFsaWRhdGlvbi52YWxpZGF0b3IpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsaWRhdGlvbi52YWxpZGF0b3IhKGNvbnRyb2wudmFsdWUsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyBjdXN0b206IHRydWUgfTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIHRyaWdnZXJGaWxlVXBsb2FkKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0XycgKyBmaWVsZE5hbWUpPy5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb3BlblRpbWVQaWNrZXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRpbWVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpZWxkTmFtZSkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICh0aW1lSW5wdXQgJiYgdGltZUlucHV0LnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAvLyBUcnkgbW9kZXJuIHNob3dQaWNrZXIgQVBJIGZpcnN0LCBmYWxsYmFjayB0byBjbGlja1xyXG4gICAgICBpZiAodGltZUlucHV0LnNob3dQaWNrZXIpIHtcclxuICAgICAgICB0aW1lSW5wdXQuc2hvd1BpY2tlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRpbWVJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIHRpbWVJbnB1dC5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICB0aGlzLmZpbGVOYW1lcy5zZXQoZmllbGROYW1lLCBmaWxlLm5hbWUpO1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBiYXNlNjRTdHJpbmcgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3cy5zZXQoZmllbGROYW1lLCBiYXNlNjRTdHJpbmcpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKT8uc2V0VmFsdWUoYmFzZTY0U3RyaW5nKTtcclxuXHJcbiAgICAgICAgLy8gVHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyIGZvciBmaWxlIGZpZWxkc1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbj8ub25DaGFuZ2UpIHtcclxuICAgICAgICAgIGNvbHVtbi5vbkNoYW5nZShiYXNlNjRTdHJpbmcsIHRoaXMuZm9ybSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXh0cmFjdEZpbGVOYW1lKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIElmIGl0J3MgYSBVUkwsIGV4dHJhY3QgZmlsZW5hbWUgZnJvbSBVUkxcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdodHRwJykpIHtcclxuICAgICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgaXQncyBiYXNlNjQsIHJldHVybiBhIGdlbmVyaWMgbmFtZVxyXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoYGRhdGE6aW1hZ2VgKSkge1xyXG4gICAgICByZXR1cm4gJ3VwbG9hZGVkLWltYWdlLmpwZyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICdleGlzdGluZy1waG90by5qcGcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZVByZXZpZXcoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVQcmV2aWV3cy5nZXQoZmllbGROYW1lKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZU5hbWUoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVOYW1lcy5nZXQoZmllbGROYW1lKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgbWFwU2VhcmNoT3B0aW9ucyhvcHRpb25zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBvcHRpb25zLm1hcChvcHQgPT4gKHtcclxuICAgICAgY29kZTogb3B0LmNvZGUgfHwgb3B0LnZhbHVlLFxyXG4gICAgICBuYW1lOiBvcHQubmFtZSB8fCBvcHQubGFiZWwgfHwgb3B0LnZhbHVlLFxyXG4gICAgICB2YWx1ZTogb3B0LnZhbHVlXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZGVsZXRlRmlsZShmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5maWxlUHJldmlld3MuZGVsZXRlKGZpZWxkTmFtZSk7XHJcbiAgICB0aGlzLmZpbGVOYW1lcy5kZWxldGUoZmllbGROYW1lKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKT8uc2V0VmFsdWUoJycpO1xyXG5cclxuICAgIC8vIFRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlciB3aGVuIGZpbGUgaXMgZGVsZXRlZFxyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUoZmllbGROYW1lKTtcclxuICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgIGNvbHVtbi5vbkNoYW5nZSgnJywgdGhpcy5mb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVN1Ym1pdCgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICAvLyBNYXJrIGFsbCBmaWVsZHMgYXMgdG91Y2hlZCB0byBzaG93IHJlZCBib3JkZXJzIChyZWN1cnNpdmUpXHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcblxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KFxyXG4gICAgICAgICdQbGVhc2UgZmlsbCBhbGwgcmVxdWlyZWQgZmllbGRzIG1hcmtlZCB3aXRoICouJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgIHRoaXMuY29uZmlnLm9uU3VibWl0KGZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2V0KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm9uUmVzZXQpIHtcclxuICAgICAgdGhpcy5jb25maWcub25SZXNldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNGaWVsZEludmFsaWQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgcmV0dXJuICEhKGZpZWxkICYmIGZpZWxkLmludmFsaWQgJiYgKGZpZWxkLnRvdWNoZWQgfHwgdGhpcy5zdWJtaXR0ZWQpKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmICghZmllbGQ/LmVycm9ycykgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXN0b20gbWVzc2FnZSBmcm9tIHZhbGlkYXRpb25zXHJcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5jb25maWcuc2VjdGlvbnMuZmxhdE1hcCgocykgPT4gcy5maWVsZHMpO1xyXG4gICAgY29uc3QgY29sdW1uID0gYWxsQ29sdW1ucy5maW5kKChjKSA9PiBjLm5hbWUgPT09IGZpZWxkTmFtZSk7XHJcbiAgICAvLyBDaGVjayBmb3IgY3VzdG9tIHZhbGlkYXRpb24gZXJyb3JcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ2N1c3RvbSddKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKFxyXG4gICAgICAgICh2KSA9PiB2LnR5cGUgPT09ICdjdXN0b20nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uPy5tZXNzYWdlIHx8ICdJbnZhbGlkIGZpZWxkJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgY3VzdG9tIG1lc3NhZ2UgZnJvbSB2YWxpZGF0aW9uc1xyXG4gICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXMoZmllbGQuZXJyb3JzKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGVycm9yS2V5cykge1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi50eXBlID09PSBrZXkpO1xyXG4gICAgICBpZiAodmFsaWRhdGlvbj8ubWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uLm1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIERlZmF1bHQgZXJyb3IgbWVzc2FnZXNcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ3JlcXVpcmVkJ10pIHtcclxuICAgICAgcmV0dXJuIGAke2NvbHVtbj8ubGFiZWx9IGlzIHJlcXVpcmVkYDtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ2VtYWlsJ10pIHJldHVybiAnSW52YWxpZCBlbWFpbCBmb3JtYXQnO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWlubGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSBsZW5ndGggaXMgJHtmaWVsZC5lcnJvcnNbJ21pbmxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtYXhsZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIGxlbmd0aCBpcyAke2ZpZWxkLmVycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ21pbiddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gdmFsdWUgaXMgJHtmaWVsZC5lcnJvcnNbJ21pbiddLm1pbn1gO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWF4J10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSB2YWx1ZSBpcyAke2ZpZWxkLmVycm9yc1snbWF4J10ubWF4fWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydwYXR0ZXJuJ10pIHJldHVybiAnSW52YWxpZCBmb3JtYXQnO1xyXG4gICAgcmV0dXJuICdJbnZhbGlkIGZpZWxkJztcclxuICB9XHJcbn1cclxuIl19
1285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z2LWNvbnRyb2xzL3NyYy9saWIvYWRkLXVwZGF0ZS1mb3JtL2FkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEZBLCtCQUErQjtBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBTUwsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUs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b0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDekIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa1RUO3lHQThyQlEsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBGaWVsZFR5cGUgPVxyXG4gIHwgJ3RleHQnXHJcbiAgfCAnZW1haWwnXHJcbiAgfCAnbnVtYmVyJ1xyXG4gIHwgJ3NlbGVjdCdcclxuICB8ICduYW1lLWNvZGUnXHJcbiAgfCAnY2hlY2tib3gnXHJcbiAgfCAndGV4dGFyZWEnXHJcbiAgfCAnZGF0ZSdcclxuICB8ICdwYXNzd29yZCdcclxuICB8ICdyYWRpbydcclxuICB8ICdmaWxlJ1xyXG4gIHwgJ21vbnRoLXllYXInXHJcbiAgfCAncGhvbmUnXHJcbiAgfCAndWFuJ1xyXG4gIHwgJ3BmJ1xyXG4gIHwgJ2VzaSdcclxuICB8ICdpZnNjJ1xyXG4gIHwgJ21pY3InXHJcbiAgfCAnaWJhbidcclxuICB8ICdzZXJ2aWNlLXBlcmlvZCdcclxuICB8ICdkb2N1bWVudCc7XHJcblxyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uVHlwZSA9XHJcbiAgfCAncmVxdWlyZWQnXHJcbiAgfCAnZW1haWwnXHJcbiAgfCAnbWluTGVuZ3RoJ1xyXG4gIHwgJ21heExlbmd0aCdcclxuICB8ICdwYXR0ZXJuJ1xyXG4gIHwgJ21pbidcclxuICB8ICdtYXgnXHJcbiAgfCAnY3VzdG9tJ1xyXG4gIHwgJ3Bhc3N3b3JkQ29tcGxleGl0eSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkVmFsaWRhdGlvbiB7XHJcbiAgdHlwZTogVmFsaWRhdGlvblR5cGU7XHJcbiAgdmFsdWU/OiBhbnk7IC8vIEZvciBtaW5MZW5ndGgsIG1heExlbmd0aCwgbWluLCBtYXgsIHBhdHRlcm5cclxuICBtZXNzYWdlPzogc3RyaW5nOyAvLyBDdXN0b20gZXJyb3IgbWVzc2FnZVxyXG4gIHZhbGlkYXRvcj86ICh2YWx1ZTogYW55LCBmb3JtR3JvdXA/OiBGb3JtR3JvdXApID0+IGJvb2xlYW47IC8vIEZvciBjdXN0b20gdmFsaWRhdGlvblxyXG4gIHBhcmFtcz86IGFueTsgLy8gRm9yIGNvbXBsZXggdmFsaWRhdGlvbiBydWxlcyBsaWtlIHBhc3N3b3JkQ29tcGxleGl0eVxyXG4gIGVycm9yS2V5Pzogc3RyaW5nOyAvLyBTcGVjaWZpYyBlcnJvciBrZXkgdG8gcmV0dXJuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUNvbHVtbiB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdHlwZTogRmllbGRUeXBlO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICBvcHRpb25zPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXTsgLy8gRm9yIHNlbGVjdCBmaWVsZHNcclxuICB2YWxpZGF0aW9ucz86IEZpZWxkVmFsaWRhdGlvbltdO1xyXG4gIHZhbHVlPzogYW55OyAvLyBEZWZhdWx0IHZhbHVlXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGNsYXNzTmFtZT86IHN0cmluZztcclxuICBoaWRkZW4/OiBib29sZWFuO1xyXG4gIGhpbnQ/OiBzdHJpbmc7XHJcbiAgY29sU3Bhbj86IG51bWJlcjtcclxuICBvbkNoYW5nZT86ICh2YWx1ZTogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4gdm9pZDtcclxuICBhY2NlcHQ/OiBzdHJpbmc7IC8vIEZvciBmaWxlIGlucHV0IChlLmcuLCAnaW1hZ2UvKicpXHJcbiAgZmlsZVByZXZpZXc/OiBib29sZWFuOyAvLyBTaG93IGltYWdlIHByZXZpZXdcclxuICBzaG93VGltZVBpY2tlcj86IGJvb2xlYW47IC8vIFNob3cgdGltZSBwaWNrZXIgZm9yIHRleHQgZmllbGRzXHJcbiAgYWxsb3dBbHBoYWJldHNPbmx5PzogYm9vbGVhbjtcclxuICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgbGF5b3V0PzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJzsgLy8gRm9yIHJhZGlvIGdyb3VwXHJcbiAgc2VydmljZVBlcmlvZENvbmZpZz86IHsgc3RhcnRGaWVsZDogc3RyaW5nOyBlbmRGaWVsZDogc3RyaW5nIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVNlY3Rpb24ge1xyXG4gIHRpdGxlPzogc3RyaW5nOyAvLyBTZWN0aW9uIGhlYWRpbmcgKGUuZy4sIFwiUEVSU09OQUwgSU5GT1JNQVRJT05cIilcclxuICBmaWVsZHM6IEZvcm1Db2x1bW5bXTtcclxuICBpc1JlcGVhdGFibGU/OiBib29sZWFuO1xyXG4gIHNlY3Rpb25LZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUNvbmZpZyB7XHJcbiAgc2VjdGlvbnM6IEZvcm1TZWN0aW9uW107XHJcbiAgc3VibWl0TGFiZWw/OiBzdHJpbmc7XHJcbiAgcmVzZXRMYWJlbD86IHN0cmluZztcclxuICBvblN1Ym1pdDogKGRhdGE6IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcclxuICBjYW5jZWxMYWJlbD86IHN0cmluZztcclxuICBmb3JtVGl0bGU/OiBzdHJpbmc7XHJcbiAgbWF4Q29sc1BlclJvdz86IG51bWJlcjtcclxuICBkaXNhYmxlU3VibWl0PzogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2FuY2VsPzogYm9vbGVhbjtcclxuICBoaWRlU3VibWl0PzogYm9vbGVhbjtcclxuICBoaWRlQ2FuY2VsPzogYm9vbGVhbjtcclxufVxyXG5cclxuLy8gYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC50c1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgRm9ybUFycmF5LFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuLy8gSW1wb3J0IHlvdXIgbGlicmFyeSBtb2R1bGVzXHJcbmltcG9ydCB7IEZ2RW50cnlGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVudHJ5LWZpZWxkL2Z2LWVudHJ5LWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TnVtYmVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1udW1iZXItZmllbGQvZnYtbnVtYmVyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9mdi1kcm9wZG93bi9mdi1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdlJhZGlvR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9mdi1yYWRpby1ncm91cC9mdi1yYWRpby1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vZnYtY2hlY2tib3gvZnYtY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEYXRlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1kYXRlLWZpZWxkL2Z2LWRhdGUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNb250aFllYXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW1vbnRoLXllYXItZmllbGQvZnYtbW9udGgteWVhci1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkZpbGVTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWZpbGUtc2VsZWN0b3IvZnYtZmlsZS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkltYWdlU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pbWFnZS1zZWxlY3Rvci9mdi1pbWFnZS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdlJpY2hUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcmljaC10ZXh0LWVkaXRvci9mdi1yaWNoLXRleHQtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TmFtZUNvZGVDb21wb25lbnQgfSBmcm9tICcuLi9mdi1uYW1lLWNvZGUvZnYtbmFtZS1jb2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGhvbmVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBob25lLWZpZWxkL2Z2LXBob25lLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2VWFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi11YW4tZmllbGQvZnYtdWFuLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGZGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBmLWZpZWxkL2Z2LXBmLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RXNpRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1lc2ktZmllbGQvZnYtZXNpLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SWZzY0ZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtaWZzYy1maWVsZC9mdi1pZnNjLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2TWljckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbWljci1maWVsZC9mdi1taWNyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SWJhbkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtaWJhbi1maWVsZC9mdi1pYmFuLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RW1haWxGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVtYWlsLWZpZWxkL2Z2LWVtYWlsLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UGFzc3dvcmRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXBhc3N3b3JkLWZpZWxkL2Z2LXBhc3N3b3JkLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2U2VydmljZVBlcmlvZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXNlcnZpY2UtcGVyaW9kL2Z2LXNlcnZpY2UtcGVyaW9kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RG9jdW1lbnRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRvY3VtZW50LWZpZWxkL2Z2LWRvY3VtZW50LWZpZWxkLmNvbXBvbmVudCc7XHJcblxyXG5cclxuLy8gSW1wb3J0IFZhbGlkYXRpb24gVHlwZXNcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNjaGVtYSwgVmFsaWRhdGlvblJ1bGUgfSBmcm9tICdAZm92ZXN0dGEyL3ZhbGlkYXRpb24tZW5naW5lJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWRkLXVwZGF0ZS1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGdkVudHJ5RmllbGRDb21wb25lbnQsXHJcbiAgICBGdk51bWJlckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIEZ2UmFkaW9Hcm91cENvbXBvbmVudCxcclxuICAgIEZ2Q2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBGdkRhdGVGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TW9udGhZZWFyRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkZpbGVTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBGdk5hbWVDb2RlQ29tcG9uZW50LFxyXG4gICAgRnZQaG9uZUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZVYW5GaWVsZENvbXBvbmVudCxcclxuICAgIEZ2UGZGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RXNpRmllbGRDb21wb25lbnQsXHJcbiAgICBGdklmc2NGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2TWljckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZJYmFuRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkVtYWlsRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlBhc3N3b3JkRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlNlcnZpY2VQZXJpb2RDb21wb25lbnQsXHJcbiAgICBGdkRvY3VtZW50RmllbGRDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyXCIgKm5nSWY9XCJjb25maWcuZm9ybVRpdGxlXCI+XHJcbiAgICAgICAgPGgyPnt7IGNvbmZpZy5mb3JtVGl0bGUgfX08L2gyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJoYW5kbGVTdWJtaXQoKVwiIGNsYXNzPVwiZHluYW1pYy1mb3JtXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBjb25maWcuc2VjdGlvbnNcIiBjbGFzcz1cImZvcm0tc2VjdGlvblwiPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiICpuZ0lmPVwic2VjdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBzZWN0aW9uLnRpdGxlIH19XHJcbiAgICAgICAgICA8L2gzPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWN0aW9uLmlzUmVwZWF0YWJsZSAmJiBzZWN0aW9uLnNlY3Rpb25LZXk7IGVsc2UgZmxhdFNlY3Rpb25cIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJyZXBlYXRhYmxlLWdyb3VwLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcGVhdGFibGUtYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1pY29uIGJ0bi1hZGRcIiAoY2xpY2spPVwiYWRkU2VjdGlvbkl0ZW0oc2VjdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiIzJlY2M3MVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1pY29uIGJ0bi1yZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlU2VjdGlvbkl0ZW0oc2VjdGlvbiwgaSlcIiAqbmdJZj1cImdldFNlY3Rpb25BcnJheShzZWN0aW9uKS5jb250cm9scy5sZW5ndGggPiAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNlNzRjM2NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZHMtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHNlY3Rpb24uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRSZW5kZXJlcjsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbiwgY29udHJvbDogZ3JvdXAuZ2V0KGNvbHVtbi5uYW1lKSwgZ3JvdXA6IGdyb3VwIH1cIj5cclxuICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRTZWN0aW9uPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1yb3dcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBzZWN0aW9uLmZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkUmVuZGVyZXI7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4sIGNvbnRyb2w6IGdldENvbnRyb2woY29sdW1uLm5hbWUpLCBncm91cDogZm9ybSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZpZWxkUmVuZGVyZXIgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1jb250cm9sPVwiY29udHJvbFwiIGxldC1ncm91cD1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpZWxkLScgKyBjb2x1bW4udHlwZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJjb2x1bW4uaGlkZGVuID8geyBkaXNwbGF5OiAnbm9uZScgfSA6IHt9XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLWNvbHVtbl09XCInc3BhbiAnICsgKGNvbHVtbi5jb2xTcGFuIHx8IDEpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0ZXh0JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1lbnRyeS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0FscGhhYmV0c09ubHldPVwiY29sdW1uLmFsbG93QWxwaGFiZXRzT25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJjb2x1bW4ubWF4TGVuZ3RoIHx8IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1lbnRyeS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2VtYWlsJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1lbWFpbC1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1lbWFpbC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1wYXNzd29yZC1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1wYXNzd29yZC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbnVtYmVyLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LW51bWJlci1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3NlbGVjdCcgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZHJvcGRvd25cclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3Qgb3B0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sdW1uLm9wdGlvbnMgfHwgW11cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2NoZWNrYm94JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3JhZGlvJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtcmFkaW8tZ3JvdXBcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCJjb2x1bW4ubGF5b3V0IHx8ICd2ZXJ0aWNhbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1yYWRpby1ncm91cD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RhdGUnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kYXRlLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWRhdGUtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdtb250aC15ZWFyJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1tb250aC15ZWFyLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZU1vbnRoWWVhckNoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1tb250aC15ZWFyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndGV4dGFyZWEnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXJpY2gtdGV4dC1lZGl0b3JcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtcmljaC10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlRmllbGQoY29sdW1uKTsgZWxzZSBzdGFuZGFyZEZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZnYtaW1hZ2Utc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VsZWN0IGltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25GaWxlQ2hhbmdlKCRldmVudCwgY29sdW1uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mdi1pbWFnZS1zZWxlY3Rvcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3N0YW5kYXJkRmlsZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZnYtZmlsZS1zZWxlY3RvclxyXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QgZmlsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FjY2VwdF09XCJjb2x1bW4uYWNjZXB0IHx8ICcqLyonXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWZpbGUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICduYW1lLWNvZGUnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW5hbWUtY29kZVxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlYXJjaCBieSBDb2RlIG9yIE5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9ucyA/IG1hcFNlYXJjaE9wdGlvbnMoY29sdW1uLm9wdGlvbnMpIDogW11cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtbmFtZS1jb2RlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGhvbmUnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1waG9uZS1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1waG9uZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3VhbicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXVhbi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi11YW4tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdwZicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBmLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LXBmLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZXNpJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZXNpLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LWVzaS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2lmc2MnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pZnNjLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uKVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIj48L2Z2LWlmc2MtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdtaWNyJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtbWljci1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkIHx8IGZhbHNlXCI+PC9mdi1taWNyLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnaWJhbicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWliYW4tZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZVwiPjwvZnYtaWJhbi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3NlcnZpY2UtcGVyaW9kJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGZ2LXNlcnZpY2UtcGVyaW9kXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRGaWVsZF09XCJjb2x1bW4uc2VydmljZVBlcmlvZENvbmZpZz8uc3RhcnRGaWVsZCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZW5kRmllbGRdPVwiY29sdW1uLnNlcnZpY2VQZXJpb2RDb25maWc/LmVuZEZpZWxkIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgPjwvZnYtc2VydmljZS1wZXJpb2Q+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdkb2N1bWVudCcgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRvY3VtZW50LWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnVXBsb2FkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2VwdF09XCJjb2x1bW4uYWNjZXB0IHx8ICdhcHBsaWNhdGlvbi9wZGYsaW1hZ2UvKidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1kb2N1bWVudC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tYWN0aW9uc1wiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFjb25maWcuaGlkZVN1Ym1pdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maWcuZGlzYWJsZVN1Ym1pdFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbmZpZy5zdWJtaXRMYWJlbCB8fCAnU2F2ZScgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFjb25maWcuaGlkZUNhbmNlbFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjb25maWcub25DYW5jZWwoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maWcuZGlzYWJsZUNhbmNlbFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbmZpZy5jYW5jZWxMYWJlbCB8fCAnQ2FuY2VsJyB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBgXHJcblxyXG4gIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBvcHBpbnM6d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCcpO1xyXG4gIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zJyk7XHJcbiAgICAqe1xyXG4gICAgICBmb250LWZhbWlseTogXCJQb3BwaW5zXCIgIWltcG9ydGFudDtcclxuICAgIH1cclxuICAgIC5mb3JtLWNvbnRhaW5lciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4IDEwcHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZXJyb3ItYm9yZGVyIHtcclxuICAgICBib3JkZXItY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5oaWRkZW57XHJcbiAgICAgIGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWhlYWRlciB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1oZWFkZXIgaDIge1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgY29sb3I6ICMzMDMwMzA7XHJcbiAgICB9XHJcblxyXG4gICAgLmR5bmFtaWMtZm9ybSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1zZWN0aW9uIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbToxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWN0aW9uLXRpdGxlIHtcclxuICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICBjb2xvcjogIzMwMzAzMDtcclxuICAgICAgbWFyZ2luOiAwIDAgMTZweCAwO1xyXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpZWxkcy1yb3cge1xyXG4gICAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LDFmcik7XHJcbiAgICAgIGdhcDogMTZweDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWZpZWxkLXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5wYXNzd29yZC10b2dnbGUtYnRuIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgcmlnaHQ6IDEwcHg7XHJcbiAgdG9wOiAzMnB4O1xyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBwYWRkaW5nOiA0cHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbn1cclxuXHJcbi5wYXNzd29yZC10b2dnbGUtYnRuOmhvdmVyIHtcclxuICBjb2xvcjogIzMzMztcclxufVxyXG5cclxuLnBhc3N3b3JkLXRvZ2dsZS1idG4gLm1hdGVyaWFsLWljb25zIHtcclxuICBmb250LXNpemU6IDIwcHg7XHJcbiAgd2lkdGg6IGF1dG87XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTQwMHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LDFmcik7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgICAgd2lkdGg6IDE4MHB4O1xyXG4gICAgICAgIG1heC13aWR0aDogMTgwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLDFmcik7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tY29udHJvbCB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLDFmcik7XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLDFmcik7XHJcbiAgICAgICAgZ2FwOiAxMHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XHJcbiAgICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcclxuICAgICAgICBnYXA6IDEycHg7XHJcbiAgICAgIH1cclxuICAgICAgLmZvcm0tZmllbGQtd3JhcHBlciB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgICAgY29sb3I6ICMxNTFENDg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAucmVxdWlyZWQge1xyXG4gICAgICBjb2xvcjogI2U3NGMzYztcclxuICAgICAgbWFyZ2luLWxlZnQ6IDJweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1jb250cm9sIHtcclxuICAgICAgcGFkZGluZzogNXB4IDEwcHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMzRweDtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzhDQkJBODtcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gICAgICBjb2xvcjogIzFmMmI0MTtcclxuICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMsIGJveC1zaGFkb3cgMC4ycztcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjMzQ5OGRiO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1MiwgMTUyLCAyMTksIDAuMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tY29udHJvbDpkaXNhYmxlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlY2YwZjE7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGV4dGFyZWEuZm9ybS1jb250cm9sIHtcclxuICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcclxuICAgICAgbWluLWhlaWdodDogMTAwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0LmZvcm0tY29udHJvbCB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgdmlld0JveD0nMCAwIDEyIDEyJyUzRSUzQ3BhdGggZmlsbD0nJTIzMzMzJyBkPSdNNiA5TDEgNGgxMHonLyUzRSUzQy9zdmclM0VcIik7XHJcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDhweCBjZW50ZXI7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmNoZWNrYm94LXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xyXG4gICAgICB3aWR0aDogMThweDtcclxuICAgICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmNoZWNrYm94LWxhYmVsIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLmZpbGUtdXBsb2FkLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMjBweDtcclxuICBwYWRkaW5nOiAyMHB4O1xyXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxufVxyXG5cclxuLm1hdGVyaWFsLWljb25zIHtcclxuICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJyAhaW1wb3J0YW50O1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgcGFkZGluZzogOHB4O1xyXG4gIGhlaWdodDogNDBweDtcclxufVxyXG5cclxuLmZpbGUtZmllbGQtd3JhcHBlciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLXRvcDogMTZweDtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuLnBob3RvLXByZXZpZXctY2lyY2xlIHtcclxuICB3aWR0aDogMTAwcHg7XHJcbiAgaGVpZ2h0OiAxMDBweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBib3JkZXI6IDJweCBzb2xpZCAjZGRkO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycztcclxufVxyXG5cclxuLnBob3RvLXByZXZpZXctY2lyY2xlOmhvdmVyIHtcclxuICBib3JkZXItY29sb3I6ICMzNDk4ZGI7XHJcbn1cclxuXHJcbi5wcmV2aWV3LWltYWdlLCAuZGVmYXVsdC1waG90byB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxufVxyXG5cclxuLnByZXZpZXctaW1hZ2UgaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbn1cclxuXHJcbi5kZWZhdWx0LXBob3RvIHtcclxuICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xyXG4gIGNvbG9yOiAjOTk5O1xyXG4gIGZvbnQtc2l6ZTogNDBweDtcclxufVxyXG5cclxuLmZpbGUtaW5mbyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogOHB4O1xyXG59XHJcbi5idG4tZGVsZXRlIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBmb250LXNpemU6IDE0cHg7XHJcbiAgcGFkZGluZzogMHB4O1xyXG59XHJcblxyXG4udXBsb2FkLWJ0bi1ncm91cCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkM2QzZDM7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB3aWR0aDogZml0LWNvbnRlbnQ7XHJcbn1cclxuXHJcbi5idG4tdXBsb2FkIHtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIGNvbG9yOiAjMjIyO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBwYWRkaW5nOiAwIDE4cHg7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlMGUwZTA7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4IDAgMCA4cHg7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZC1pY29uIHtcclxuICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAwIDhweCA4cHggMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgd2lkdGg6IDQ4cHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XHJcbn1cclxuXHJcbi5idG4tdXBsb2FkLWljb24gaS5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1zaXplOiAyMnB4O1xyXG4gIGNvbG9yOiAjMjIyO1xyXG59XHJcblxyXG4uYnRuLXVwbG9hZDpob3ZlciwgLmJ0bi11cGxvYWQtaWNvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxufVxyXG5cclxuLmJ0bi1kZWxldGUge1xyXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gIGNvbG9yOiByZWQ7XHJcbn1cclxuXHJcbi5idG4tZGVsZXRlOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kOiAjZjBmMGYwO1xyXG59XHJcblxyXG4uZmlsZS1uYW1lIHtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbiAgbWFyZ2luOiA4cHg7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxufVxyXG5cclxuLmZpbGUtbGFiZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgIGNvbG9yOiAjMTUxZDQ4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4gICAgLnJhZGlvLWxhYmVsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgY29sb3I6ICMxNTFENDg7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4ucmFkaW8tZ3JvdXAge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAyMHB4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5yYWRpby1pdGVtIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiA2cHg7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgd2lkdGg6IDE4cHg7XHJcbiAgaGVpZ2h0OiAxOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBhY2NlbnQtY29sb3I6ICMzNDk4ZGI7XHJcbn1cclxuXHJcbi5yYWRpby1vcHRpb24tbGFiZWwge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuICAgIC5oaW50IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBjb2xvcjogIzdmOGM4ZDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5lcnJvci1tZXNzYWdlIHtcclxuICAgICAgY29sb3I6ICNlNzRjM2M7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWFjdGlvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBnYXA6IDEycHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0biB7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAyMHB4O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDZBRkY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk4MGI5O1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGMzYzc7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVhNWE2O1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnk6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2Y4YzhkO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tb3V0bGluZSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLW91dGxpbmU6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmIyYjJiZmY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItaGlkZGVuIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBjb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3QtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LWRyb3Bkb3duIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IGNhbGMoMTAwJSArIDRweCk7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDE2cHgpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2QzZDNkMztcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBtYXgtaGVpZ2h0OiAyMjBweDtcclxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDAsMCwwLDAuMDgpO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICBwYWRkaW5nOiA2cHggMDtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xyXG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlLW91dDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1vcHRpb24ge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmYyZjI7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtb3B0aW9uOmxhc3QtY2hpbGQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LW9wdGlvbjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY5ZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLnJlcGVhdGFibGUtZ3JvdXAtd3JhcHBlciB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgcGFkZGluZzogMjBweCAxMDBweCAyMHB4IDIwcHg7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLDAsMCwwLjA1KTtcclxuICAgIH1cclxuICAgIC5yZXBlYXRhYmxlLWFjdGlvbnMge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDQ1cHg7XHJcbiAgICAgICAgcmlnaHQ6IDE1cHg7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBnYXA6IDhweDtcclxuICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgIH1cclxuICAgIC5idG4taWNvbiB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycztcclxuICAgIH1cclxuICAgIC5idG4taWNvbjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxuICAgIH1cclxuXHJcbiAgICAub3B0aW9uLWNvZGUge1xyXG4gICAgICBjb2xvcjogIzAwNTJjYztcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgbWluLXdpZHRoOiA5MHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb24tbmFtZSB7XHJcbiAgICAgIGNvbG9yOiAjMTUxZDQ4O1xyXG4gICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1pbnB1dCB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQ1cHg7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0biB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgcmlnaHQ6IDVweDtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBwYWRkaW5nOiA1cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjb2xvcjogIzY2NjtcclxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcclxuICAgICAgei1pbmRleDogMTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICAgY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItYnRuIC5tYXRlcmlhbC1pY29ucyB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwidGltZVwiXSB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwidGltZVwiXTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtZm9ybS1maWVsZCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzhDQkJBODtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQ6bm90KC5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQpIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQ6bm90KC5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQpIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzhDQkJBODtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQubWRjLXRleHQtZmllbGQtLWZvY3VzZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQubWRjLXRleHQtZmllbGQtLWZvY3VzZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQuZXJyb3ItYm9yZGVyIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQuZXJyb3ItYm9yZGVyIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLWZvcm0tZmllbGQtaW5wdXQtY29udHJvbCBpbnB1dCB7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBcIlBvcHBpbnNcIiAhaW1wb3J0YW50O1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgIGNvbG9yOiAjMWYyYjQxO1xyXG4gICAgfVxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRVcGRhdGVGb3JtQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogRm9ybUNvbmZpZztcclxuICBAT3V0cHV0KCkgdmFsaWRhdGlvbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIGZpbGVQcmV2aWV3czogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIGZpbGVOYW1lczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIHZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIHBhc3N3b3JkVmlzaWJpbGl0eTogTWFwPHN0cmluZywgYm9vbGVhbj4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBzZWFyY2hRdWVyaWVzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBob3N0UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogaW1wb3J0KCdAYW5ndWxhci9jb3JlJykuU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmICFjaGFuZ2VzWydjb25maWcnXS5maXJzdENoYW5nZSkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAvLyBMaWZlY3ljbGUgaG9vayAtIGNhbiBiZSB1c2VkIGZvciBkYXRlcGlja2VyIGluaXRpYWxpemF0aW9uIGlmIG5lZWRlZFxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1uV2lkdGgoY29sdW1uOiBGb3JtQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1heENvbHMgPSB0aGlzLmNvbmZpZy5tYXhDb2xzUGVyUm93IHx8IDU7XHJcbiAgICBjb25zdCBjb2xTcGFuID0gTWF0aC5taW4oY29sdW1uLmNvbFNwYW4gfHwgMSwgbWF4Q29scyk7XHJcbiAgICByZXR1cm4gYGNhbGMoJHsoY29sU3BhbiAvIG1heENvbHMpICogMTAwfSUgLSAxNnB4KWA7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgLy8gMi4gSEVMUEVSOiBDb252ZXJ0IHlvdXIgRmllbGRWYWxpZGF0aW9uW10gdG8gdGhlIGxpYnJhcnkncyBWYWxpZGF0aW9uU2NoZW1hXHJcbiAgZ2V0U2NoZW1hKGNvbHVtbjogRm9ybUNvbHVtbik6IFZhbGlkYXRpb25TY2hlbWEge1xyXG4gICAgY29uc3QgcnVsZXM6IFZhbGlkYXRpb25SdWxlW10gPSBbXTtcclxuICAgIGNvbnN0IGVycm9yUHJpb3JpdHk6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgaWYgKGNvbHVtbi52YWxpZGF0aW9ucykge1xyXG4gICAgICBjb2x1bW4udmFsaWRhdGlvbnMuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAodi50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IGVuYWJsZWQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRVFVSVJFRCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlcXVpcmVkJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnZW1haWwnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAncmVnZXgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgcGF0dGVybjogJ15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcXFwuW2EtekEtWl17Mix9JCcsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRUdFWF9NSVNNQVRDSCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlZ2V4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWluTGVuZ3RoJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21pbkxlbmd0aCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUlOX0xFTkdUSCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ21pbkxlbmd0aCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21heExlbmd0aCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtYXhMZW5ndGgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01BWF9MRU5HVEgnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtYXhMZW5ndGgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdwYXR0ZXJuJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3JlZ2V4JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgcGF0dGVybjogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX1JFR0VYX01JU01BVENIJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncmVnZXgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdwYXNzd29yZENvbXBsZXhpdHknOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmRDb21wbGV4aXR5JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHYucGFyYW1zIHx8IHtcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVVcHBlcmNhc2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlTG93ZXJjYXNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZU51bWJlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVTcGVjaWFsQ2hhcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1pbkxlbmd0aDogOFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6IHYuZXJyb3JLZXkgfHwgJ0VSUl9QQVNTV09SRF9DT01QTEVYSVRZX0lOVkFMSUQnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdwYXNzd29yZENvbXBsZXhpdHknKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtaW4nOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWluJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NSU5fVkFMVUUnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtaW4nKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtYXgnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWF4JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NQVhfVkFMVUUnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtYXgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNYXAgJ25hbWUtY29kZScgdG8gJ0Ryb3Bkb3duJyBvciBzaW1pbGFyIGZvciB2YWxpZGF0aW9uIHNjaGVtYSBwdXJwb3NlcyBpZiBuZWVkZWRcclxuICAgIGxldCBjb250cm9sVHlwZSA9IGNvbHVtbi50eXBlO1xyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbmFtZS1jb2RlJykge1xyXG4gICAgICBjb250cm9sVHlwZSA9ICdzZWxlY3QnOyAvLyBUcmVhdCBhcyBzZWxlY3QgZm9yIHNjaGVtYSBsb29rdXAgaWYgbGlicmFyeSBleHBlY3RzICdzZWxlY3QnIG9yICdEcm9wZG93bidcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb250cm9sVHlwZTogY29udHJvbFR5cGUsXHJcbiAgICAgIGVycm9yUHJpb3JpdHk6IGVycm9yUHJpb3JpdHksXHJcbiAgICAgIHJ1bGVzOiBydWxlcyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBpc0ltYWdlRmllbGQoY29sdW1uOiBGb3JtQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnICYmXHJcbiAgICAgIChjb2x1bW4uYWNjZXB0Py5zdGFydHNXaXRoKCdpbWFnZScpIHx8IGNvbHVtbi5maWxlUHJldmlldyA9PT0gdHJ1ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBIZWxwZXJzIGZvciBSZXBlYXRhYmxlIFNlY3Rpb25zXHJcbiAgZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb246IEZvcm1TZWN0aW9uKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KHNlY3Rpb24uc2VjdGlvbktleSEpIGFzIEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVNlY3Rpb25Hcm91cChzZWN0aW9uOiBGb3JtU2VjdGlvbik6IEZvcm1Hcm91cCB7XHJcbiAgICBjb25zdCBncm91cENvbmZpZzogYW55ID0ge307XHJcbiAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IGNvbHVtbi52YWx1ZSB8fCAnJztcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnbW9udGgteWVhcicgJiYgaW5pdGlhbFZhbHVlKSB7XHJcbiAgICAgICAgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShpbml0aWFsVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGdyb3VwQ29uZmlnW2NvbHVtbi5uYW1lXSA9IFtcclxuICAgICAgICB7IHZhbHVlOiBpbml0aWFsVmFsdWUsIGRpc2FibGVkOiBjb2x1bW4uZGlzYWJsZWQgfHwgZmFsc2UgfSxcclxuICAgICAgXTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGdyb3VwID0gdGhpcy5mYi5ncm91cChncm91cENvbmZpZyk7XHJcblxyXG4gICAgLy8gQXBwbHkgVmFsaWRhdG9yc1xyXG4gICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmJ1aWxkVmFsaWRhdG9ycyhjb2x1bW4udmFsaWRhdGlvbnMsIGdyb3VwKTtcclxuICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGdyb3VwLmdldChjb2x1bW4ubmFtZSk/LnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgZ3JvdXAuZ2V0KGNvbHVtbi5uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZ3JvdXA7XHJcbiAgfVxyXG5cclxuICBhZGRTZWN0aW9uSXRlbShzZWN0aW9uOiBGb3JtU2VjdGlvbikge1xyXG4gICAgY29uc3QgYXJyYXkgPSB0aGlzLmdldFNlY3Rpb25BcnJheShzZWN0aW9uKTtcclxuICAgIGFycmF5LnB1c2godGhpcy5jcmVhdGVTZWN0aW9uR3JvdXAoc2VjdGlvbikpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2VjdGlvbkl0ZW0oc2VjdGlvbjogRm9ybVNlY3Rpb24sIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGFycmF5ID0gdGhpcy5nZXRTZWN0aW9uQXJyYXkoc2VjdGlvbik7XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoID4gMSkge1xyXG4gICAgICBhcnJheS5yZW1vdmVBdChpbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0NvbnRyb2xJbnZhbGlkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiAoY29udHJvbC50b3VjaGVkIHx8IHRoaXMuc3VibWl0dGVkKSk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2VGb3JDb250cm9sKFxyXG4gICAgY29sdW1uOiBGb3JtQ29sdW1uLFxyXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbFxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWNvbnRyb2w/LmVycm9ycykgcmV0dXJuICcnO1xyXG4gICAgY29uc3QgZmllbGQgPSBjb250cm9sO1xyXG4gICAgY29uc3QgZXJyb3JzID0gZmllbGQuZXJyb3JzITtcclxuXHJcbiAgICBpZiAoZXJyb3JzWydjdXN0b20nXSkge1xyXG4gICAgICBjb25zdCBjdXN0b21WYWxpZGF0aW9uID0gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZChcclxuICAgICAgICAodikgPT4gdi50eXBlID09PSAnY3VzdG9tJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdGlvbj8ubWVzc2FnZSB8fCAnSW52YWxpZCBmaWVsZCc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGVycm9yS2V5cykge1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi50eXBlID09PSBrZXkpO1xyXG4gICAgICBpZiAodmFsaWRhdGlvbiAmJiB2YWxpZGF0aW9uLm1lc3NhZ2UpIHtcclxuICAgICAgICByZXR1cm4gdmFsaWRhdGlvbi5tZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVycm9yc1sncmVxdWlyZWQnXSkgcmV0dXJuIGAke2NvbHVtbj8ubGFiZWx9IGlzIHJlcXVpcmVkYDtcclxuICAgIGlmIChlcnJvcnNbJ2VtYWlsJ10pIHJldHVybiAnSW52YWxpZCBlbWFpbCBmb3JtYXQnO1xyXG4gICAgaWYgKGVycm9yc1snbWlubGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSBsZW5ndGggaXMgJHtlcnJvcnNbJ21pbmxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZXJyb3JzWydtYXhsZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIGxlbmd0aCBpcyAke2Vycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChlcnJvcnNbJ21pbiddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gdmFsdWUgaXMgJHtlcnJvcnNbJ21pbiddLm1pbn1gO1xyXG4gICAgaWYgKGVycm9yc1snbWF4J10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSB2YWx1ZSBpcyAke2Vycm9yc1snbWF4J10ubWF4fWA7XHJcbiAgICBpZiAoZXJyb3JzWydwYXR0ZXJuJ10pIHJldHVybiAnSW52YWxpZCBmb3JtYXQnO1xyXG5cclxuICAgIHJldHVybiAnSW52YWxpZCBmaWVsZCc7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBpbml0aWFsaXplRm9ybSgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICBjb25zdCBmb3JtR3JvdXBDb25maWc6IGFueSA9IHt9O1xyXG5cclxuICAgIHRoaXMuY29uZmlnLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHNlY3Rpb24uaXNSZXBlYXRhYmxlICYmIHNlY3Rpb24uc2VjdGlvbktleSkge1xyXG4gICAgICAgIGZvcm1Hcm91cENvbmZpZ1tzZWN0aW9uLnNlY3Rpb25LZXldID0gdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVNlY3Rpb25Hcm91cChzZWN0aW9uKSxcclxuICAgICAgICBdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcblxyXG4gICAgICAgICAgLy8gRm9ybWF0IG1vbnRoLXllYXIgZmllbGRzIHRvIFlZWVktTU0gZm9ybWF0XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdtb250aC15ZWFyJyAmJiBpbml0aWFsVmFsdWUpIHtcclxuICAgICAgICAgICAgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZvcm1Hcm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IGluaXRpYWxWYWx1ZSwgZGlzYWJsZWQ6IGNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZSB9LFxyXG4gICAgICAgICAgICBudWxsLCAvLyBXZSdsbCBzZXQgdmFsaWRhdG9ycyBhZnRlciBmb3JtIGNyZWF0aW9uXHJcbiAgICAgICAgICBdO1xyXG5cclxuICAgICAgICAgIC8vIElmIGl0J3MgYSBmaWxlIGZpZWxkIHdpdGggYW4gZXhpc3RpbmcgdmFsdWUsIHNldCB0aGUgcHJldmlld1xyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZmlsZScgJiYgY29sdW1uLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVByZXZpZXdzLnNldChjb2x1bW4ubmFtZSwgY29sdW1uLnZhbHVlKTtcclxuICAgICAgICAgICAgLy8gRXh0cmFjdCBmaWxlbmFtZSBmcm9tIFVSTCBvciBiYXNlNjRcclxuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmV4dHJhY3RGaWxlTmFtZShjb2x1bW4udmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVOYW1lcy5zZXQoY29sdW1uLm5hbWUsIGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Hcm91cENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uaXNSZXBlYXRhYmxlKSB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICAgIGNvbHVtbi52YWxpZGF0aW9ucyxcclxuICAgICAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGNvbHVtbi5uYW1lKT8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZhbHVlIGNoYW5nZXMgZm9yIGFsbCBmaWVsZHMgdG8gdHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyc1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcclxuICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGtleSk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uLm9uQ2hhbmdlKHZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCBhbGwgc3Vic2NyaXB0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmllbGRDaGFuZ2UoXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIGV2ZW50VmFsdWU/OiBhbnksXHJcbiAgICBjb250cm9sPzogQWJzdHJhY3RDb250cm9sXHJcbiAgKSB7XHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSBjb250cm9sIHx8IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuXHJcbiAgICAvLyBGb3JtYXQgbW9udGgteWVhciBmaWVsZHMgKGVzcGVjaWFsbHkgZXhwaXJ5RGF0ZSkgdG8gWVlZWS1NTVxyXG4gICAgaWYgKGNvbHVtbj8udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGV2ZW50VmFsdWUpIHtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKGV2ZW50VmFsdWUpO1xyXG4gICAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IGV2ZW50VmFsdWUpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIGV2ZW50VmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgIC8vIFVzZSB0aGUgZXZlbnQgdmFsdWUgZGlyZWN0bHkgKHdoYXQgdGhlIHVzZXIganVzdCBzZWxlY3RlZC90eXBlZClcclxuICAgICAgLy8gVGhpcyBlbnN1cmVzIHdlIGhhdmUgdGhlIGNvcnJlY3QgdmFsdWUgZXZlbiBpZiBmb3JtIGNvbnRyb2wgaGFzbid0IHVwZGF0ZWQgeWV0XHJcbiAgICAgIGNvbnN0IHZhbHVlVG9QYXNzID1cclxuICAgICAgICBldmVudFZhbHVlICE9PSB1bmRlZmluZWQgPyBldmVudFZhbHVlIDogZm9ybUNvbnRyb2w/LnZhbHVlO1xyXG4gICAgICBjb25zdCBvbkNoYW5nZUZuID0gY29sdW1uLm9uQ2hhbmdlOyAvLyBTdG9yZSB0aGUgZnVuY3Rpb24gcmVmZXJlbmNlXHJcblxyXG4gICAgICAvLyBTdG9yZSB0aGUgc2VsZWN0ZWQgdmFsdWUgLSB0aGlzIGlzIHdoYXQgdGhlIHVzZXIgY2hvc2VcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlVG9QYXNzO1xyXG5cclxuICAgICAgLy8gRW5zdXJlIHRoZSBmb3JtIGNvbnRyb2wgaGFzIHRoZSBzZWxlY3RlZCB2YWx1ZSBiZWZvcmUgY2FsbGluZyBvbkNoYW5nZVxyXG4gICAgICBpZiAoZm9ybUNvbnRyb2wgJiYgc2VsZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sLnZhbHVlICE9PSBzZWxlY3RlZFZhbHVlKSB7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDYWxsIG9uQ2hhbmdlIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlXHJcbiAgICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgICAgb25DaGFuZ2VGbihzZWxlY3RlZFZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXN0b3JlIHRoZSB2YWx1ZSBmb3IgdGhlIGZpZWxkIHRoYXQgdHJpZ2dlcmVkIHRoZSBjaGFuZ2UgaWYgaXQgd2FzIGNsZWFyZWQgYnkgb25DaGFuZ2VcclxuICAgICAgLy8gVGhpcyBpcyBjcml0aWNhbDogaWYgb25DaGFuZ2UgY2xlYXJzIHRoZSBmaWVsZCB0aGF0IHdhcyBqdXN0IGNoYW5nZWQsIHdlIHJlc3RvcmUgaXRcclxuICAgICAgLy8gT25seSByZXN0b3JlIGlmIHdlIGhhZCBhIG5vbi1lbXB0eSB2YWx1ZSAoZW1wdHkgc3RyaW5nLCBudWxsLCB1bmRlZmluZWQgYXJlIG5vdCByZXN0b3JlZClcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGZvcm1Db250cm9sICYmXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgIHNlbGVjdGVkVmFsdWUgIT09ICcnXHJcbiAgICAgICkge1xyXG4gICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHdpdGggMCBkZWxheSB0byBydW4gYWZ0ZXIgYW55IHN5bmNocm9ub3VzIG9wZXJhdGlvbnMgaW4gb25DaGFuZ2VcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSB3YXMgY2xlYXJlZCBvciBjaGFuZ2VkXHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBmb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIC8vIElmIHRoZSB2YWx1ZSBkb2Vzbid0IG1hdGNoIHdoYXQgd2FzIHNlbGVjdGVkLCByZXN0b3JlIGl0XHJcbiAgICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgb25DaGFuZ2UgY2xlYXJlZCB0aGUgZmllbGQgdW5pbnRlbnRpb25hbGx5XHJcbiAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9PSBzZWxlY3RlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0TW9udGhZZWFyVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcbiAgICAvLyBOb3JtYWxpemUgdG8gWVlZWS1NTVxyXG4gICAgaWYgKHZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gdmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGFscmVhZHkgaW4gWVlZWS1NTSBmb3JtYXQsIHJldHVybiBhcyBpc1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VNb250aFllYXJWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcclxuICAgIC8vIERpc3BsYXkgYW5kIHBpY2tlciBib3RoIHVzZSBZWVlZLU1NOyBub3JtYWxpemUgTU0tWVlZWSBpZiBwcmVzZW50XHJcbiAgICBpZiAodmFsdWUubWF0Y2goL15cXGR7Mn0tXFxkezR9JC8pKSB7XHJcbiAgICAgIGNvbnN0IFttb250aCwgeWVhcl0gPSB2YWx1ZS5zcGxpdCgnLScpO1xyXG4gICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlTW9udGhZZWFyQ2hhbmdlKFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICB2YWx1ZTogc3RyaW5nLFxyXG4gICAgY29udHJvbD86IEFic3RyYWN0Q29udHJvbFxyXG4gICkge1xyXG4gICAgLy8gRm9ybWF0IHRoZSBpbnB1dCB2YWx1ZSB0byBZWVlZLU1NIGZvcm1hdFxyXG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgLy8gSWYgaXQncyBpbiBNTS1ZWVlZIGZvcm1hdCwgY29udmVydCB0byBZWVlZLU1NXHJcbiAgICBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7Mn0tXFxkezR9JC8pKSB7XHJcbiAgICAgIGNvbnN0IFttb250aCwgeWVhcl0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLScpO1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3MgaW4gWVlZWU1NIGZvcm1hdCAobm8gZGFzaCksIGNvbnZlcnQgdG8gWVlZWS1NTVxyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7Nn0kLykpIHtcclxuICAgICAgY29uc3QgeWVhciA9IGZvcm1hdHRlZFZhbHVlLnN1YnN0cmluZygwLCA0KTtcclxuICAgICAgY29uc3QgbW9udGggPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoNCwgNik7XHJcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgaXQncyBhbHJlYWR5IGluIFlZWVktTU0gZm9ybWF0LCBsZWF2ZSBhcyBpc1xyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7NH0tXFxkezJ9JC8pKSB7XHJcbiAgICAgIC8vIEFscmVhZHkgaW4gY29ycmVjdCBmb3JtYXRcclxuICAgIH1cclxuICAgIC8vIElmIHVzZXIgaXMgdHlwaW5nLCBhbGxvdyBwYXJ0aWFsIGlucHV0XHJcbiAgICBlbHNlIGlmIChmb3JtYXR0ZWRWYWx1ZS5tYXRjaCgvXlxcZHsxLDZ9JC8pKSB7XHJcbiAgICAgIC8vIEFsbG93IHBhcnRpYWwgaW5wdXQgd2hpbGUgdHlwaW5nXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSBjb250cm9sIHx8IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmIChmb3JtQ29udHJvbCAmJiBmb3JtYXR0ZWRWYWx1ZSAhPT0gdmFsdWUpIHtcclxuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUZpZWxkQ2hhbmdlKGZpZWxkTmFtZSwgZm9ybWF0dGVkVmFsdWUsIGNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlTW9udGhZZWFyQmx1cihmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoIWZvcm1Db250cm9sKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSBmb3JtQ29udHJvbC52YWx1ZSB8fCAnJztcclxuICAgIC8vIEVuc3VyZSB0aGUgdmFsdWUgaXMgaW4gWVlZWS1NTSBmb3JtYXQgb24gYmx1clxyXG4gICAgaWYgKHZhbHVlICYmICF2YWx1ZS5tYXRjaCgvXlxcZHs0fS1cXGR7Mn0kLykpIHtcclxuICAgICAgLy8gVHJ5IHRvIHBhcnNlIGFuZCBmb3JtYXRcclxuICAgICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIGlmIChmb3JtYXR0ZWQgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoWWVhclBpY2tlckNoYW5nZShmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgLy8gTW9udGggcGlja2VyIG91dHB1dHMgWVlZWS1NTTsganVzdCBub3JtYWxpemVcclxuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZSh2YWx1ZSk7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmIChmb3JtQ29udHJvbCkge1xyXG4gICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB0aGlzLmhhbmRsZUZpZWxkQ2hhbmdlKGZpZWxkTmFtZSwgZm9ybWF0dGVkVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGhZZWFyUGlja2VyVmFsdWUoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoIWZvcm1Db250cm9sKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGZvcm1Db250cm9sLnZhbHVlIHx8ICcnO1xyXG4gICAgLy8gRGlzcGxheSBhbmQgcGlja2VyIGJvdGggZXhwZWN0IFlZWVktTU1cclxuICAgIHJldHVybiB0aGlzLnBhcnNlTW9udGhZZWFyVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1vbnRoUGlja2VyKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBtb250aElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgIGZpZWxkTmFtZSArICdfcGlja2VyJ1xyXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKG1vbnRoSW5wdXQgJiYgbW9udGhJbnB1dC50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgcGlja2VyIHZhbHVlIGJlZm9yZSBvcGVuaW5nXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0TW9udGhZZWFyUGlja2VyVmFsdWUoZmllbGROYW1lKTtcclxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIG1vbnRoSW5wdXQudmFsdWUgPSBjdXJyZW50VmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgLy8gVHJ5IG1vZGVybiBzaG93UGlja2VyIEFQSSBmaXJzdCwgZmFsbGJhY2sgdG8gY2xpY2tcclxuICAgICAgaWYgKG1vbnRoSW5wdXQuc2hvd1BpY2tlcikge1xyXG4gICAgICAgIG1vbnRoSW5wdXQuc2hvd1BpY2tlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1vbnRoSW5wdXQuZm9jdXMoKTtcclxuICAgICAgICBtb250aElucHV0LmNsaWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbHVtbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBGb3JtQ29sdW1uIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5zZWN0aW9uc1xyXG4gICAgICAuZmxhdE1hcCgocykgPT4gcy5maWVsZHMpXHJcbiAgICAgIC5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZUZpZWxkcyhmaWVsZHM6IEZvcm1Db2x1bW5bXSk6IEZvcm1Db2x1bW5bXSB7XHJcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcigoZikgPT4gZi50eXBlID09PSAnZmlsZScpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9uRmlsZUZpZWxkcyhmaWVsZHM6IEZvcm1Db2x1bW5bXSk6IEZvcm1Db2x1bW5bXSB7XHJcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcigoZikgPT4gZi50eXBlICE9PSAnZmlsZScpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUGFzc3dvcmRWaXNpYmlsaXR5KGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5wYXNzd29yZFZpc2liaWxpdHkuZ2V0KGZpZWxkTmFtZSkgfHwgZmFsc2U7XHJcbiAgICB0aGlzLnBhc3N3b3JkVmlzaWJpbGl0eS5zZXQoZmllbGROYW1lLCAhY3VycmVudCk7XHJcbiAgfVxyXG4gIGhhc1JlcXVpcmVkVmFsaWRhdGlvbihjb2x1bW46IEZvcm1Db2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb2x1bW4udmFsaWRhdGlvbnM/LnNvbWUoKHYpID0+IHYudHlwZSA9PT0gJ3JlcXVpcmVkJykgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc1Bhc3N3b3JkVmlzaWJsZShmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFzc3dvcmRWaXNpYmlsaXR5LmdldChmaWVsZE5hbWUpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRWYWxpZGF0b3JzKFxyXG4gICAgdmFsaWRhdGlvbnM/OiBGaWVsZFZhbGlkYXRpb25bXSxcclxuICAgIGZvcm1Hcm91cD86IEZvcm1Hcm91cFxyXG4gICk6IGFueVtdIHtcclxuICAgIGlmICghdmFsaWRhdGlvbnMpIHJldHVybiBbXTtcclxuXHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBhbnlbXSA9IFtdO1xyXG4gICAgdmFsaWRhdGlvbnMuZm9yRWFjaCgodmFsaWRhdGlvbikgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRpb24udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWF4TGVuZ3RoJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtaW4nOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21heCc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncGF0dGVybic6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgICAgICBpZiAodmFsaWRhdGlvbi52YWxpZGF0b3IpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsaWRhdGlvbi52YWxpZGF0b3IhKGNvbnRyb2wudmFsdWUsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyBjdXN0b206IHRydWUgfTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIHRyaWdnZXJGaWxlVXBsb2FkKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0XycgKyBmaWVsZE5hbWUpPy5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb3BlblRpbWVQaWNrZXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRpbWVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpZWxkTmFtZSkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICh0aW1lSW5wdXQgJiYgdGltZUlucHV0LnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAvLyBUcnkgbW9kZXJuIHNob3dQaWNrZXIgQVBJIGZpcnN0LCBmYWxsYmFjayB0byBjbGlja1xyXG4gICAgICBpZiAodGltZUlucHV0LnNob3dQaWNrZXIpIHtcclxuICAgICAgICB0aW1lSW5wdXQuc2hvd1BpY2tlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRpbWVJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIHRpbWVJbnB1dC5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICB0aGlzLmZpbGVOYW1lcy5zZXQoZmllbGROYW1lLCBmaWxlLm5hbWUpO1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBiYXNlNjRTdHJpbmcgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3cy5zZXQoZmllbGROYW1lLCBiYXNlNjRTdHJpbmcpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKT8uc2V0VmFsdWUoYmFzZTY0U3RyaW5nKTtcclxuXHJcbiAgICAgICAgLy8gVHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyIGZvciBmaWxlIGZpZWxkc1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbj8ub25DaGFuZ2UpIHtcclxuICAgICAgICAgIGNvbHVtbi5vbkNoYW5nZShiYXNlNjRTdHJpbmcsIHRoaXMuZm9ybSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXh0cmFjdEZpbGVOYW1lKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIElmIGl0J3MgYSBVUkwsIGV4dHJhY3QgZmlsZW5hbWUgZnJvbSBVUkxcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdodHRwJykpIHtcclxuICAgICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCgnLycpO1xyXG4gICAgICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgaXQncyBiYXNlNjQsIHJldHVybiBhIGdlbmVyaWMgbmFtZVxyXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoYGRhdGE6aW1hZ2VgKSkge1xyXG4gICAgICByZXR1cm4gJ3VwbG9hZGVkLWltYWdlLmpwZyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICdleGlzdGluZy1waG90by5qcGcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZVByZXZpZXcoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVQcmV2aWV3cy5nZXQoZmllbGROYW1lKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZU5hbWUoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVOYW1lcy5nZXQoZmllbGROYW1lKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgbWFwU2VhcmNoT3B0aW9ucyhvcHRpb25zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBvcHRpb25zLm1hcChvcHQgPT4gKHtcclxuICAgICAgY29kZTogb3B0LmNvZGUgfHwgb3B0LnZhbHVlLFxyXG4gICAgICBuYW1lOiBvcHQubmFtZSB8fCBvcHQubGFiZWwgfHwgb3B0LnZhbHVlLFxyXG4gICAgICB2YWx1ZTogb3B0LnZhbHVlXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZGVsZXRlRmlsZShmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5maWxlUHJldmlld3MuZGVsZXRlKGZpZWxkTmFtZSk7XHJcbiAgICB0aGlzLmZpbGVOYW1lcy5kZWxldGUoZmllbGROYW1lKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKT8uc2V0VmFsdWUoJycpO1xyXG5cclxuICAgIC8vIFRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlciB3aGVuIGZpbGUgaXMgZGVsZXRlZFxyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUoZmllbGROYW1lKTtcclxuICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgIGNvbHVtbi5vbkNoYW5nZSgnJywgdGhpcy5mb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVN1Ym1pdCgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICAvLyBNYXJrIGFsbCBmaWVsZHMgYXMgdG91Y2hlZCB0byBzaG93IHJlZCBib3JkZXJzIChyZWN1cnNpdmUpXHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcblxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KFxyXG4gICAgICAgICdQbGVhc2UgZmlsbCBhbGwgcmVxdWlyZWQgZmllbGRzIG1hcmtlZCB3aXRoICouJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgIHRoaXMuY29uZmlnLm9uU3VibWl0KGZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2V0KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm9uUmVzZXQpIHtcclxuICAgICAgdGhpcy5jb25maWcub25SZXNldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNGaWVsZEludmFsaWQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgcmV0dXJuICEhKGZpZWxkICYmIGZpZWxkLmludmFsaWQgJiYgKGZpZWxkLnRvdWNoZWQgfHwgdGhpcy5zdWJtaXR0ZWQpKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmICghZmllbGQ/LmVycm9ycykgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXN0b20gbWVzc2FnZSBmcm9tIHZhbGlkYXRpb25zXHJcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5jb25maWcuc2VjdGlvbnMuZmxhdE1hcCgocykgPT4gcy5maWVsZHMpO1xyXG4gICAgY29uc3QgY29sdW1uID0gYWxsQ29sdW1ucy5maW5kKChjKSA9PiBjLm5hbWUgPT09IGZpZWxkTmFtZSk7XHJcbiAgICAvLyBDaGVjayBmb3IgY3VzdG9tIHZhbGlkYXRpb24gZXJyb3JcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ2N1c3RvbSddKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKFxyXG4gICAgICAgICh2KSA9PiB2LnR5cGUgPT09ICdjdXN0b20nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uPy5tZXNzYWdlIHx8ICdJbnZhbGlkIGZpZWxkJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgY3VzdG9tIG1lc3NhZ2UgZnJvbSB2YWxpZGF0aW9uc1xyXG4gICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXMoZmllbGQuZXJyb3JzKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGVycm9yS2V5cykge1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi50eXBlID09PSBrZXkpO1xyXG4gICAgICBpZiAodmFsaWRhdGlvbj8ubWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiB2YWxpZGF0aW9uLm1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIERlZmF1bHQgZXJyb3IgbWVzc2FnZXNcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ3JlcXVpcmVkJ10pIHtcclxuICAgICAgcmV0dXJuIGAke2NvbHVtbj8ubGFiZWx9IGlzIHJlcXVpcmVkYDtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ2VtYWlsJ10pIHJldHVybiAnSW52YWxpZCBlbWFpbCBmb3JtYXQnO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWlubGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSBsZW5ndGggaXMgJHtmaWVsZC5lcnJvcnNbJ21pbmxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtYXhsZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIGxlbmd0aCBpcyAke2ZpZWxkLmVycm9yc1snbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ21pbiddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gdmFsdWUgaXMgJHtmaWVsZC5lcnJvcnNbJ21pbiddLm1pbn1gO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWF4J10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSB2YWx1ZSBpcyAke2ZpZWxkLmVycm9yc1snbWF4J10ubWF4fWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydwYXR0ZXJuJ10pIHJldHVybiAnSW52YWxpZCBmb3JtYXQnO1xyXG4gICAgcmV0dXJuICdJbnZhbGlkIGZpZWxkJztcclxuICB9XHJcbn1cclxuIl19