stream-chat-angular 4.65.3 → 4.66.0

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.
@@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild, } fr
2
2
  import { filter, map, tap } from 'rxjs/operators';
3
3
  import { getGroupStyles } from './group-styles';
4
4
  import { listUsers } from '../list-users';
5
+ import { isOnSeparateDate } from '../is-on-separate-date';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../channel.service";
7
8
  import * as i2 from "../chat-client.service";
@@ -677,15 +678,7 @@ export class MessageListComponent {
677
678
  if (!message || !nextMessage) {
678
679
  return false;
679
680
  }
680
- if (message.created_at.getDate() !== nextMessage.created_at.getDate()) {
681
- return true;
682
- }
683
- else if (message.created_at.getFullYear() !==
684
- nextMessage.created_at.getFullYear() ||
685
- message.created_at.getMonth() !== nextMessage.created_at.getMonth()) {
686
- return true;
687
- }
688
- return false;
681
+ return isOnSeparateDate(message.created_at, nextMessage.created_at);
689
682
  }
690
683
  }
691
684
  MessageListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageListComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChatClientService }, { token: i3.CustomTemplatesService }, { token: i4.DateParserService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i5.MessageActionsService }], target: i0.ɵɵFactoryTarget.Component });
@@ -730,4 +723,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
730
723
  type: HostBinding,
731
724
  args: ['class']
732
725
  }] } });
733
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBT0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBWWxELE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBSTFDOztHQUVHO0FBT0gsTUFBTSxPQUFPLG9CQUFvQjtJQW9IL0IsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLFVBQTZCLEVBQzdCLE1BQWMsRUFDZCxLQUF3QixFQUN4QixxQkFBNEM7UUFONUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXhIdEQ7O1dBRUc7UUFDTSxTQUFJLEdBQXNCLE1BQU0sQ0FBQztRQUMx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QUFvQjtzQkFEM0IsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBeUJyQixLQUFLO3NCQURoQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTWVzc2FnZUNvbnRleHQsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIFN0cmVhbU1lc3NhZ2UsXG4gIFR5cGluZ0luZGljYXRvckNvbnRleHQsXG4gIEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtLFxuICBEYXRlU2VwYXJhdG9yQ29udGV4dCxcbiAgVW5yZWFkTWVzc2FnZXNOb3RpZmljYXRpb25Db250ZXh0LFxuICBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRHcm91cFN0eWxlcywgR3JvdXBTdHlsZSB9IGZyb20gJy4vZ3JvdXAtc3R5bGVzJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgbGlzdFVzZXJzIH0gZnJvbSAnLi4vbGlzdC11c2Vycyc7XG5pbXBvcnQgeyBEYXRlUGFyc2VyU2VydmljZSB9IGZyb20gJy4uL2RhdGUtcGFyc2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBgTWVzc2FnZUxpc3RgIGNvbXBvbmVudCByZW5kZXJzIGEgc2Nyb2xsYWJsZSBsaXN0IG9mIG1lc3NhZ2VzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlTGlzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIG1lc3NhZ2UgbGlzdCBzaG91bGQgZGlzcGxheSBjaGFubmVsIG1lc3NhZ2VzIG9yIFt0aHJlYWQgbWVzc2FnZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3RocmVhZHMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ21haW4nIHwgJ3RocmVhZCcgPSAnbWFpbic7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0aW9uIG9mIHRoZSBtZXNzYWdlcyBpbiB0aGUgbGlzdCwgYGJvdHRvbS10by10b3BgIG1lYW5zIG5ld2VzdCBtZXNzYWdlIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIG1lc3NhZ2UgbGlzdCBhbmQgdXNlcnMgc2Nyb2xsIHVwd2FyZHMgdG8gbG9hZCBvbGRlciBtZXNzYWdlc1xuICAgKi9cbiAgQElucHV0KCkgZGlyZWN0aW9uOiAnYm90dG9tLXRvLXRvcCcgfCAndG9wLXRvLWJvdHRvbScgPSAnYm90dG9tLXRvLXRvcCc7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoYXQgdHJpZ2dlcnMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIG1lc3NhZ2Ugb3B0aW9uczogYnkgZGVmYXVsdCB5b3UgY2FuIGhvdmVyIChjbGljayBvbiBtb2JpbGUpIGFueXdoZXJlIGluIHRoZSByb3cgb2YgdGhlIG1lc3NhZ2UgKGBtZXNzYWdlLXJvd2Agb3B0aW9uKSwgb3IgeW91IGNhbiBzZXQgYG1lc3NhZ2UtYnViYmxlYCwgaW4gdGhhdCBjYXNlIG9ubHkgYSBob3ZlciAoY2xpY2sgb24gbW9iaWxlKSBpbiB0aGUgbWVzc2FnZSBidWJibGUgd2lsbCB0cmlnZ2VyIHRoZSBvcHRpb25zIHRvIGFwcGVhci5cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VPcHRpb25zVHJpZ2dlcjogJ21lc3NhZ2Utcm93JyB8ICdtZXNzYWdlLWJ1YmJsZScgPVxuICAgICdtZXNzYWdlLXJvdyc7XG4gIC8qKlxuICAgKiBZb3UgY2FuIGhpZGUgdGhlIFwianVtcCB0byBsYXRlc3RcIiBidXR0b24gd2hpbGUgc2Nyb2xsaW5nLiBBIHBvdGVudGlhbCB1c2UtY2FzZSBmb3IgdGhpcyBpbnB1dCB3b3VsZCBiZSB0byBbd29ya2Fyb3VuZCBhIGtub3duIGlzc3VlIG9uIGlPUyBTYWZhciB3ZWJ2aWV3XShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWFuZ3VsYXIvaXNzdWVzLzQxOClcbiAgICpcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVKdW1wVG9MYXRlc3RCdXR0b25EdXJpbmdTY3JvbGwgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBjdXN0b20gbWVzc2FnZSBhY3Rpb25zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgbWVzc2FnZSBhY3Rpb24gYm94XG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgdGhlIFtgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlYF0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL3Nkay9hbmd1bGFyL3NlcnZpY2VzL01lc3NhZ2VBY3Rpb25zU2VydmljZSkgdG8gc2V0IHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21NZXNzYWdlQWN0aW9uczogQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW08YW55PltdID0gW107XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgZGF0ZSBzZXBhcmF0b3JzIHdpbGwgYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBkaXNwbGF5RGF0ZVNlcGFyYXRvciA9IHRydWU7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgdW5yZWFkIGluZGljYXRvciB3aWxsIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheVVucmVhZFNlcGFyYXRvciA9IHRydWU7XG4gIC8qKlxuICAgKiBJZiBkYXRlIHNlcGFyYXRvcnMgYXJlIGRpc3BsYXllZCwgeW91IGNhbiBzZXQgdGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIGRhdGUgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVTZXBhcmF0b3JUZXh0UG9zOiAnY2VudGVyJyB8ICdyaWdodCcgfCAnbGVmdCcgPSAnY2VudGVyJztcbiAgLyoqXG4gICAqIGBsYXN0LW1lc3NhZ2VgIG9wdGlvbiB3aWxsIG9wZW4gdGhlIG1lc3NhZ2UgbGlzdCBhdCB0aGUgbGFzdCBtZXNzYWdlLCBgbGFzdC1yZWFkLW1lc3NhZ2VgIHdpbGwgb3BlbiB0aGUgbGlzdCBhdCB0aGUgbGFzdCB1bnJlYWQgbWVzc2FnZS4gVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBtb2RlIGlzIGBtYWluYC5cbiAgICovXG4gIEBJbnB1dCgpIG9wZW5NZXNzYWdlTGlzdEF0OiAnbGFzdC1tZXNzYWdlJyB8ICdsYXN0LXJlYWQtbWVzc2FnZScgPVxuICAgICdsYXN0LW1lc3NhZ2UnO1xuICAvKipcbiAgICogSWYgdGhlIHVzZXIgaGFzIHVucmVhZCBtZXNzYWdlcyB3aGVuIHRoZXkgb3BlbiB0aGUgY2hhbm5lbCB0aGUgVUkgc2hvd3MgdGhlIHVucmVhZCBpbmRpY2F0b3IgLyBub3RpZmljYXRpb24gd2hpY2ggZmVhdHVyZXMgdGhlIHVucmVhZCBjb3VudCBieSBkZWZhdWx0LiBUaGlzIGNvdW50IHdpbGwgYmUgaW5jcmVhc2VkIGV2ZXJ5IHRpbWUgYSB1c2VyIHJlY2VpdmVzIGEgbmV3IG1lc3NhZ2UuIElmIHlvdSBkb24ndCB3YW50IHRvIHNob3cgdGhlIHVucmVhZCBjb3VudCwgeW91IGNhbiB0dXJuIHRoYXQgb2ZmLlxuICAgKlxuICAgKiBUaGlzIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgYG1haW5gIG1vZGUsIGFzIHRocmVhZHMgZG9lc24ndCBoYXZlIHJlYWQgaW5mcm9tYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBoaWRlVW5yZWFkQ291bnRGb3JOb3RpZmljYXRpb25BbmRJbmRpY2F0b3IgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFlvdSBjYW4gdHVybiBvbiBhbmQgb2ZmIHRoZSBsb2FkaW5nIGluZGljYXRvciB0aGF0IHNpZ25hbHMgdG8gdXNlcnMgdGhhdCBtb3JlIG1lc3NhZ2VzIGFyZSBiZWluZyBsb2FkZWQgdG8gdGhlIG1lc3NhZ2UgbGlzdFxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheUxvYWRpbmdJbmRpY2F0b3IgPSB0cnVlO1xuICB0eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8VHlwaW5nSW5kaWNhdG9yQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8TWVzc2FnZUNvbnRleHQ+IHwgdW5kZWZpbmVkO1xuICBjdXN0b21EYXRlU2VwYXJhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPERhdGVTZXBhcmF0b3JDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgY3VzdG9tbmV3TWVzc2FnZXNJbmRpY2F0b3JUZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPFVucmVhZE1lc3NhZ2VzSW5kaWNhdG9yQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgY3VzdG9tbmV3TWVzc2FnZXNOb3RpZmljYXRpb25UZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPFVucmVhZE1lc3NhZ2VzTm90aWZpY2F0aW9uQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgZW1wdHlNYWluTWVzc2FnZUxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgZW1wdHlUaHJlYWRNZXNzYWdlTGlzdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBtZXNzYWdlcyQhOiBPYnNlcnZhYmxlPFN0cmVhbU1lc3NhZ2VbXT47XG4gIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgaXNFbXB0eSA9IHRydWU7XG4gIG5ld01lc3NhZ2VDb3VudFdoaWxlQmVpbmdTY3JvbGxlZCA9IDA7XG4gIGlzVXNlclNjcm9sbGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBncm91cFN0eWxlczogR3JvdXBTdHlsZVtdID0gW107XG4gIGlzTmV4dE1lc3NhZ2VPblNlcGFyYXRlRGF0ZTogYm9vbGVhbltdID0gW107XG4gIGxhc3RTZW50TWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBhcmVudE1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGhpZ2hsaWdodGVkTWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBzY3JvbGxFbmRUaW1lb3V0OiBhbnk7XG4gIGxhc3RSZWFkTWVzc2FnZUlkPzogc3RyaW5nO1xuICBpc1VucmVhZE5vdGlmaWNhdGlvblZpc2libGUgPSB0cnVlO1xuICBmaXJzdFVucmVhZE1lc3NhZ2VJZD86IHN0cmluZztcbiAgdW5yZWFkQ291bnQ/OiBudW1iZXI7XG4gIGlzSnVtcGluZ1RvTGF0ZXN0VW5yZWFkTWVzc2FnZSA9IGZhbHNlO1xuICBpc0p1bXBUb0xhdGVzdEJ1dHRvblZpc2libGUgPSB0cnVlO1xuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKVxuICBwcml2YXRlIHNjcm9sbENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdwYXJlbnRNZXNzYWdlRWxlbWVudCcpXG4gIHByaXZhdGUgcGFyZW50TWVzc2FnZUVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgcHJpdmF0ZSBsYXRlc3RNZXNzYWdlOiB7IGlkOiBzdHJpbmc7IGNyZWF0ZWRfYXQ6IERhdGUgfSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoYXNOZXdNZXNzYWdlczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjb250YWluZXJIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvbGRlc3RNZXNzYWdlOiB7IGlkOiBzdHJpbmc7IGNyZWF0ZWRfYXQ6IERhdGUgfSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvbGRlck1hc3NhZ2VzTG9hZGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzTmV3TWVzc2FnZVNlbnRCeVVzZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBuZXdNZXNzYWdlU3Vic2NyaXB0aW9uOiB7IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkIH0gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcHJldlNjcm9sbFRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHVzZXJzVHlwaW5nSW5DaGFubmVsJCE6IE9ic2VydmFibGU8XG4gICAgVXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W11cbiAgPjtcbiAgcHJpdmF0ZSB1c2Vyc1R5cGluZ0luVGhyZWFkJCE6IE9ic2VydmFibGU8XG4gICAgVXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W11cbiAgPjtcbiAgcHJpdmF0ZSBpc0xhdGVzdE1lc3NhZ2VJbkxpc3QgPSB0cnVlO1xuICBwcml2YXRlIGNoYW5uZWxJZD86IHN0cmluZztcbiAgcHJpdmF0ZSBwYXJzZWREYXRlcyA9IG5ldyBNYXA8RGF0ZSwgc3RyaW5nPigpO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGNoZWNrSWZVbnJlYWROb3RpZmljYXRpb25Jc1Zpc2libGVUaW1lb3V0PzogYW55O1xuICBwcml2YXRlIGp1bXBUb0xhdGVzdEJ1dHRvblZpc2liaWxpdHlUaW1lb3V0PzogYW55O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBjbGFzcygpIHtcbiAgICByZXR1cm4gYHN0ci1jaGF0LWFuZ3VsYXJfX21haW4tcGFuZWwtaW5uZXIgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1saXN0LWhvc3Qgc3RyLWNoYXRfX21haW4tcGFuZWwtaW5uZXIgJHtcbiAgICAgIHRoaXMuaXNFbXB0eSA/ICdzdHItY2hhdC1hbmd1bGFyX19tZXNzYWdlLWxpc3QtaG9zdC0tZW1wdHknIDogJydcbiAgICB9YDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQYXJzZXI6IERhdGVQYXJzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBtZXNzYWdlQWN0aW9uc1NlcnZpY2U6IE1lc3NhZ2VBY3Rpb25zU2VydmljZVxuICApIHtcbiAgICB0aGlzLnVzZXJzVHlwaW5nSW5DaGFubmVsJCA9IHRoaXMuY2hhbm5lbFNlcnZpY2UudXNlcnNUeXBpbmdJbkNoYW5uZWwkO1xuICAgIHRoaXMudXNlcnNUeXBpbmdJblRocmVhZCQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLnVzZXJzVHlwaW5nSW5UaHJlYWQkO1xuICB9XG5cbiAgbWVzc2FnZU5vdGlmaWNhdGlvbkp1bXBDbGlja2VkID0gKCkgPT4ge1xuICAgIHRoaXMuanVtcFRvRmlyc3RVbnJlYWRNZXNzYWdlKCk7XG4gICAgdGhpcy5pc1VucmVhZE5vdGlmaWNhdGlvblZpc2libGUgPSBmYWxzZTtcbiAgfTtcblxuICBtZXNzYWdlTm90aWZpY2F0aW9uRGlzbWlzc0NsaWNrZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5pc1VucmVhZE5vdGlmaWNhdGlvblZpc2libGUgPSBmYWxzZTtcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQuc3Vic2NyaWJlKChjaGFubmVsKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAgICAgJ2luZm8nLFxuICAgICAgICAgIGAke2NoYW5uZWw/LmNpZCB8fCAndW5kZWZpbmVkJ30gc2VsZWN0ZWRgLFxuICAgICAgICAgIHsgdGFnczogYG1lc3NhZ2UgbGlzdCAke3RoaXMubW9kZX1gIH1cbiAgICAgICAgKTtcbiAgICAgICAgbGV0IGlzTmV3Q2hhbm5lbCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5jaGFubmVsSWQgIT09IGNoYW5uZWw/LmlkKSB7XG4gICAgICAgICAgaXNOZXdDaGFubmVsID0gdHJ1ZTtcbiAgICAgICAgICBpZiAodGhpcy5jaGVja0lmVW5yZWFkTm90aWZpY2F0aW9uSXNWaXNpYmxlVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2hlY2tJZlVucmVhZE5vdGlmaWNhdGlvbklzVmlzaWJsZVRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzVW5yZWFkTm90aWZpY2F0aW9uVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2U/LmNoYXRDbGllbnQ/LmxvZ2dlcj8uKFxuICAgICAgICAgICAgJ2luZm8nLFxuICAgICAgICAgICAgYG5ldyBjaGFubmVsIGlzIGRpZmZlcmVudCBmcm9tIHByZXYgY2hhbm5lbCwgcmVzZXRpbmcgc2Nyb2xsIHN0YXRlYCxcbiAgICAgICAgICAgIHsgdGFnczogYG1lc3NhZ2UgbGlzdCAke3RoaXMubW9kZX1gIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMucGFyc2VkRGF0ZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgdGhpcy5yZXNldFNjcm9sbFN0YXRlKCk7XG4gICAgICAgICAgdGhpcy5jaGFubmVsSWQgPSBjaGFubmVsPy5pZDtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnbWFpbicpIHtcbiAgICAgICAgICBjb25zdCBsYXN0UmVhZE1lc3NhZ2VJZCA9XG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWxMYXN0UmVhZE1lc3NhZ2VJZDtcbiAgICAgICAgICBjb25zdCB1bnJlYWRDb3VudCA9IHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbFVucmVhZENvdW50O1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGxhc3RSZWFkTWVzc2FnZUlkICE9PSB0aGlzLmxhc3RSZWFkTWVzc2FnZUlkIHx8XG4gICAgICAgICAgICB1bnJlYWRDb3VudCAhPT0gdGhpcy51bnJlYWRDb3VudFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5sYXN0UmVhZE1lc3NhZ2VJZCA9IGxhc3RSZWFkTWVzc2FnZUlkO1xuICAgICAgICAgICAgdGhpcy51bnJlYWRDb3VudCA9IHVucmVhZENvdW50IHx8IDA7XG4gICAgICAgICAgICBpZiAoaXNOZXdDaGFubmVsICYmIHRoaXMubGFzdFJlYWRNZXNzYWdlSWQpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMub3Blbk1lc3NhZ2VMaXN0QXQgPT09ICdsYXN0LXJlYWQtbWVzc2FnZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmp1bXBUb0ZpcnN0VW5yZWFkTWVzc2FnZSgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFdhaXQgdGlsbCBtZXNzYWdlcyBhbmQgdGhlIHVucmVhZCBiYW5uZXIgaXMgcmVuZGVyZWRcbiAgICAgICAgICAgICAgICAvLyBJZiB1bnJlYWQgYmFubmVyIGlzbid0IHZpc2libGUgb24gdGhlIHNjcmVlbiwgd2UgZGlzcGxheSB0aGUgdW5yZWFkIG5vdGlmaWNhaW9uXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBiYW5uZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICAgICAgICAgICdzdHJlYW0tY2hhdC1uZXctbWVzc2FnZS1pbmRpY2F0b3InXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhYmFubmVyRWxlbWVudCB8fFxuICAgICAgICAgICAgICAgICAgICBiYW5uZXJFbGVtZW50Py5vZmZzZXRUb3AgPFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxIZWlnaHQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNVbnJlYWROb3RpZmljYXRpb25WaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGFzdFJlYWRNZXNzYWdlSWQpIHtcbiAgICAgICAgICB0aGlzLmxhc3RSZWFkTWVzc2FnZUlkID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMudW5yZWFkQ291bnQgPSAwO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhcGFiaWxpdGVzID0gY2hhbm5lbD8uZGF0YT8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXTtcbiAgICAgICAgY29uc3QgY2FwYWJpbGl0ZXNTdHJpbmcgPSBbLi4uKGNhcGFiaWxpdGVzIHx8IFtdKV0uc29ydCgpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBlbmFibGVkQWN0aW9uc1N0cmluZyA9IFsuLi4odGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMgfHwgW10pXVxuICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAuam9pbignJyk7XG4gICAgICAgIGlmIChjYXBhYmlsaXRlc1N0cmluZyAhPT0gZW5hYmxlZEFjdGlvbnNTdHJpbmcpIHtcbiAgICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyA9IGNhcGFiaWxpdGVzIHx8IFtdO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubmV3TWVzc2FnZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKGNoYW5uZWwpIHtcbiAgICAgICAgICB0aGlzLm5ld01lc3NhZ2VTdWJzY3JpcHRpb24gPSBjaGFubmVsLm9uKCdtZXNzYWdlLm5ldycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gSWYgd2UgZGlzcGxheSBtYWluIGNoYW5uZWwgbWVzc2FnZXMgYW5kIHdlJ3JlIHN3aXRjaGVkIHRvIGFuIG9sZGVyIG1lc3NhZ2Ugc2V0IC0+IHVzZSBtZXNzYWdlLm5ldyBldmVudCB0byB1cGRhdGUgdW5yZWFkIGNvdW50IGFuZCBkZXRlY3QgbmV3IG1lc3NhZ2VzIHNlbnQgYnkgY3VycmVudCB1c2VyXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFldmVudC5tZXNzYWdlIHx8XG4gICAgICAgICAgICAgIGNoYW5uZWwuc3RhdGUubWVzc2FnZXMgPT09IGNoYW5uZWwuc3RhdGUubGF0ZXN0TWVzc2FnZXMgfHxcbiAgICAgICAgICAgICAgdGhpcy5tb2RlID09PSAndGhyZWFkJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubmV3TWVzc2FnZVJlY2VpdmVkKHtcbiAgICAgICAgICAgICAgaWQ6IGV2ZW50Lm1lc3NhZ2UuaWQsXG4gICAgICAgICAgICAgIHVzZXI6IGV2ZW50Lm1lc3NhZ2UudXNlcixcbiAgICAgICAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoZXZlbnQubWVzc2FnZS5jcmVhdGVkX2F0IHx8ICcnKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5jdXN0b21BY3Rpb25zJC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbnMgIT09IHRoaXMuY3VzdG9tTWVzc2FnZUFjdGlvbnMpIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbU1lc3NhZ2VBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlJC5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1lc3NhZ2UgJiZcbiAgICAgICAgICB0aGlzLnBhcmVudE1lc3NhZ2UgJiZcbiAgICAgICAgICBtZXNzYWdlLmlkICE9PSB0aGlzLnBhcmVudE1lc3NhZ2UuaWQgJiZcbiAgICAgICAgICB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE1lc3NhZ2UgPT09IG1lc3NhZ2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYXJlbnRNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlVGVtcGxhdGUkLnN1YnNjcmliZSgodGVtcGxhdGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVRlbXBsYXRlID09PSB0ZW1wbGF0ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lc3NhZ2VUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmRhdGVTZXBhcmF0b3JUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21EYXRlU2VwYXJhdG9yVGVtcGxhdGUgPT09IHRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VzdG9tRGF0ZVNlcGFyYXRvclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm5ld01lc3NhZ2VzSW5kaWNhdG9yVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VzdG9tbmV3TWVzc2FnZXNJbmRpY2F0b3JUZW1wbGF0ZSA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jdXN0b21uZXdNZXNzYWdlc0luZGljYXRvclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm5ld01lc3NhZ2VzTm90aWZpY2F0aW9uVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VzdG9tbmV3TWVzc2FnZXNOb3RpZmljYXRpb25UZW1wbGF0ZSA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jdXN0b21uZXdNZXNzYWdlc05vdGlmaWNhdGlvblRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLnR5cGluZ0luZGljYXRvclRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnR5cGluZ0luZGljYXRvclRlbXBsYXRlID09PSB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnR5cGluZ0luZGljYXRvclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5qdW1wVG9NZXNzYWdlJFxuICAgICAgICAucGlwZShmaWx0ZXIoKGNvbmZpZykgPT4gISFjb25maWcuaWQpKVxuICAgICAgICAuc3Vic2NyaWJlKChjb25maWcpID0+IHtcbiAgICAgICAgICBsZXQgbWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ21haW4nKSB7XG4gICAgICAgICAgICBtZXNzYWdlSWQgPSBjb25maWcucGFyZW50SWQgfHwgY29uZmlnLmlkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnBhcmVudElkKSB7XG4gICAgICAgICAgICBtZXNzYWdlSWQgPSBjb25maWcuaWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgICBgSnVtcGluZyB0byAke21lc3NhZ2VJZCB8fCAnJ31gLFxuICAgICAgICAgICAgeyB0YWdzOiBgbWVzc2FnZSBsaXN0ICR7dGhpcy5tb2RlfWAgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VJZCkge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2VJZCA9PT0gJ2xhdGVzdCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0xhdGVzdE1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzSnVtcGluZ1RvTGF0ZXN0VW5yZWFkTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsTWVzc2FnZUludG9WaWV3KFxuICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdFVucmVhZE1lc3NhZ2VJZCB8fCBtZXNzYWdlSWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRNZXNzYWdlSWQgPVxuICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdFVucmVhZE1lc3NhZ2VJZCB8fCBtZXNzYWdlSWQ7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxNZXNzYWdlSW50b1ZpZXcobWVzc2FnZUlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodGVkTWVzc2FnZUlkID0gbWVzc2FnZUlkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuZW1wdHlNYWluTWVzc2FnZUxpc3RQbGFjZWhvbGRlciQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0NoYW5nZWQgPSB0aGlzLmVtcHR5TWFpbk1lc3NhZ2VMaXN0VGVtcGxhdGUgIT09IHRlbXBsYXRlO1xuICAgICAgICAgIHRoaXMuZW1wdHlNYWluTWVzc2FnZUxpc3RUZW1wbGF0ZSA9IHRlbXBsYXRlIHx8IG51bGw7XG4gICAgICAgICAgaWYgKGlzQ2hhbmdlZCAmJiB0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5lbXB0eVRocmVhZE1lc3NhZ2VMaXN0UGxhY2Vob2xkZXIkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNDaGFuZ2VkID0gdGhpcy5lbXB0eVRocmVhZE1lc3NhZ2VMaXN0VGVtcGxhdGUgIT09IHRlbXBsYXRlO1xuICAgICAgICAgIHRoaXMuZW1wdHlUaHJlYWRNZXNzYWdlTGlzdFRlbXBsYXRlID0gdGVtcGxhdGUgfHwgbnVsbDtcbiAgICAgICAgICBpZiAoaXNDaGFuZ2VkICYmIHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc2V0TWVzc2FnZXMkKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMubW9kZSB8fCBjaGFuZ2VzLmRpcmVjdGlvbikge1xuICAgICAgdGhpcy5zZXRNZXNzYWdlcyQoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZGlyZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5qdW1wVG9MYXRlc3RNZXNzYWdlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmN1c3RvbU1lc3NhZ2VBY3Rpb25zKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5jdXN0b21BY3Rpb25zJC5uZXh0KHRoaXMuY3VzdG9tTWVzc2FnZUFjdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PlxuICAgICAgICB0aGlzLnNjcm9sbGVkKClcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRNZXNzYWdlSWQpIHtcbiAgICAgIC8vIFR1cm4gb2ZmIHByb2dyYW1hdGljIHNjcm9sbCBhZGp1c3RtZW50cyB3aGlsZSBqdW1wIHRvIG1lc3NhZ2UgaXMgaW4gcHJvZ3Jlc3NcbiAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICd0b3AtdG8tYm90dG9tJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmhhc05ld01lc3NhZ2VzICYmXG4gICAgICAgICh0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIgfHwgIXRoaXMuaXNVc2VyU2Nyb2xsZWQpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3RcbiAgICAgICAgICA/IHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgICAgIDogdGhpcy5qdW1wVG9MYXRlc3RNZXNzYWdlKCk7XG4gICAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaGFzTmV3TWVzc2FnZXMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXNlclNjcm9sbGVkIHx8IHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlcikge1xuICAgICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgICBgVXNlciBoYXMgbmV3IG1lc3NhZ2VzLCBhbmQgbm90IHNjcm9sbGVkIG9yIHNlbnQgbmV3IG1lc3NhZ2VzLCB0aGVyZWZvcmUgd2UgJHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3QgPyAnc2Nyb2xsJyA6ICdqdW1wJ1xuICAgICAgICAgICAgfSB0byBsYXRlc3QgbWVzc2FnZWAsXG4gICAgICAgICAgICB7IHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmlzTGF0ZXN0TWVzc2FnZUluTGlzdFxuICAgICAgICAgICAgPyB0aGlzLnNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgICAgIDogdGhpcy5qdW1wVG9MYXRlc3RNZXNzYWdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQpIHtcbiAgICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py5sb2dnZXI/LihcbiAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgYE9sZGVyIG1lc3NhZ2VzIGFyZSBsb2FkZWQsIHdlIHByZXNlcnZlIHRoZSBzY3JvbGwgcG9zaXRpb25gLFxuICAgICAgICAgIHsgdGFnczogYG1lc3NhZ2UgbGlzdCAke3RoaXMubW9kZX1gIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcmVzZXJ2ZVNjcm9sbGJhclBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpICE9PSAnYm90dG9tJyAmJlxuICAgICAgICAhdGhpcy5pc1VzZXJTY3JvbGxlZCAmJlxuICAgICAgICAhdGhpcy5oaWdobGlnaHRlZE1lc3NhZ2VJZFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAgICAgJ2luZm8nLFxuICAgICAgICAgIGBDb250YWluZXIgZ3JldyBhbmQgdXNlciBkaWRuJ3Qgc2Nyb2xsIHRoZXJlZm9yZSB3ZSAke1xuICAgICAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3QgPyAnc2Nyb2xsJyA6ICdqdW1wJ1xuICAgICAgICAgIH0gdG8gbGF0ZXN0IG1lc3NhZ2VgLFxuICAgICAgICAgIHsgdGFnczogYG1lc3NhZ2UgbGlzdCAke3RoaXMubW9kZX1gIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3RcbiAgICAgICAgICA/IHRoaXMuc2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICAgIDogdGhpcy5qdW1wVG9MYXRlc3RNZXNzYWdlKCk7XG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5uZXdNZXNzYWdlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLnNjcm9sbEVuZFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbEVuZFRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jaGVja0lmVW5yZWFkTm90aWZpY2F0aW9uSXNWaXNpYmxlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2hlY2tJZlVucmVhZE5vdGlmaWNhdGlvbklzVmlzaWJsZVRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5qdW1wVG9MYXRlc3RCdXR0b25WaXNpYmlsaXR5VGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuanVtcFRvTGF0ZXN0QnV0dG9uVmlzaWJpbGl0eVRpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlNZXNzYWdlSWQoaW5kZXg6IG51bWJlciwgaXRlbTogU3RyZWFtTWVzc2FnZSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgdHJhY2tCeVVzZXJJZChpbmRleDogbnVtYmVyLCB1c2VyOiBVc2VyUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gdXNlci5pZDtcbiAgfVxuXG4gIGp1bXBUb0xhdGVzdE1lc3NhZ2UoKSB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmp1bXBUb01lc3NhZ2UoXG4gICAgICAnbGF0ZXN0JyxcbiAgICAgIHRoaXMubW9kZSA9PT0gJ3RocmVhZCcgPyB0aGlzLnBhcmVudE1lc3NhZ2U/LmlkIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIHNjcm9sbFRvQm90dG9tKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICsgMC4xO1xuICAgIHRoaXMuZm9yY2VSZXBhaW50KCk7XG4gIH1cblxuICBzY3JvbGxUb1RvcCgpIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gIH1cblxuICBzY3JvbGxlZCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA9PT1cbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpO1xuICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAnaW5mbycsXG4gICAgICBgU2Nyb2xsZWQgLSBzY3JvbGwgcG9zaXRpb246ICR7c2Nyb2xsUG9zaXRpb259LCBjb250YWluZXIgaGVpZ2h0OiAke3RoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0fWAsXG4gICAgICB7IHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCB9XG4gICAgKTtcblxuICAgIGNvbnN0IGlzVXNlclNjcm9sbGVkID1cbiAgICAgICh0aGlzLmRpcmVjdGlvbiA9PT0gJ2JvdHRvbS10by10b3AnXG4gICAgICAgID8gc2Nyb2xsUG9zaXRpb24gIT09ICdib3R0b20nXG4gICAgICAgIDogc2Nyb2xsUG9zaXRpb24gIT09ICd0b3AnKSB8fCAhdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3Q7XG4gICAgaWYgKHRoaXMuaXNVc2VyU2Nyb2xsZWQgIT09IGlzVXNlclNjcm9sbGVkKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzVXNlclNjcm9sbGVkID0gaXNVc2VyU2Nyb2xsZWQ7XG4gICAgICAgIGlmICghdGhpcy5pc1VzZXJTY3JvbGxlZCkge1xuICAgICAgICAgIHRoaXMubmV3TWVzc2FnZUNvdW50V2hpbGVCZWluZ1Njcm9sbGVkID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhpZGVKdW1wVG9MYXRlc3RCdXR0b25EdXJpbmdTY3JvbGwpIHtcbiAgICAgIGlmICh0aGlzLmlzSnVtcFRvTGF0ZXN0QnV0dG9uVmlzaWJsZSkge1xuICAgICAgICB0aGlzLmlzSnVtcFRvTGF0ZXN0QnV0dG9uVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmp1bXBUb0xhdGVzdEJ1dHRvblZpc2liaWxpdHlUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmp1bXBUb0xhdGVzdEJ1dHRvblZpc2liaWxpdHlUaW1lb3V0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuanVtcFRvTGF0ZXN0QnV0dG9uVmlzaWJpbGl0eVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNVc2VyU2Nyb2xsZWQpIHtcbiAgICAgICAgICB0aGlzLmlzSnVtcFRvTGF0ZXN0QnV0dG9uVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5qdW1wVG9MYXRlc3RCdXR0b25WaXNpYmlsaXR5VGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG91bGRMb2FkTW9yZU1lc3NhZ2VzKHNjcm9sbFBvc2l0aW9uKSkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgICAgbGV0IGRpcmVjdGlvbjogJ25ld2VyJyB8ICdvbGRlcic7XG4gICAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3RvcC10by1ib3R0b20nKSB7XG4gICAgICAgICAgZGlyZWN0aW9uID0gc2Nyb2xsUG9zaXRpb24gPT09ICd0b3AnID8gJ25ld2VyJyA6ICdvbGRlcic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlyZWN0aW9uID0gc2Nyb2xsUG9zaXRpb24gPT09ICd0b3AnID8gJ29sZGVyJyA6ICduZXdlcic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgICB0aGlzLm1vZGUgPT09ICdtYWluJ1xuICAgICAgICAgICAgPyB0aGlzLmNoYW5uZWxTZXJ2aWNlLmxvYWRNb3JlTWVzc2FnZXMoZGlyZWN0aW9uKVxuICAgICAgICAgICAgOiB0aGlzLmNoYW5uZWxTZXJ2aWNlLmxvYWRNb3JlVGhyZWFkUmVwbGllcyhkaXJlY3Rpb24pO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py5sb2dnZXI/LihcbiAgICAgICAgICAgICdpbmZvJyxcbiAgICAgICAgICAgIGBEaXNwbGF5aW5nIGxvYWRpbmcgaW5kaWNhdG9yYCxcbiAgICAgICAgICAgIHsgdGFnczogYG1lc3NhZ2UgbGlzdCAke3RoaXMubW9kZX1gIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByZXZTY3JvbGxUb3AgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcbiAgfVxuXG4gIGp1bXBUb0ZpcnN0VW5yZWFkTWVzc2FnZSgpIHtcbiAgICBpZiAoIXRoaXMubGFzdFJlYWRNZXNzYWdlSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0p1bXBpbmdUb0xhdGVzdFVucmVhZE1lc3NhZ2UgPSB0cnVlO1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5qdW1wVG9NZXNzYWdlKHRoaXMubGFzdFJlYWRNZXNzYWdlSWQpO1xuICB9XG5cbiAgZ2V0VHlwaW5nSW5kaWNhdG9yQ29udGV4dCgpOiBUeXBpbmdJbmRpY2F0b3JDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlcnNUeXBpbmckOiB0aGlzLnVzZXJzVHlwaW5nJCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0VHlwaW5nSW5kaWNhdG9yVGV4dCh1c2VyczogVXNlclJlc3BvbnNlW10pIHtcbiAgICBjb25zdCB0ZXh0ID0gbGlzdFVzZXJzKHVzZXJzKTtcblxuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgaXNTZW50QnlDdXJyZW50VXNlcihtZXNzYWdlPzogU3RyZWFtTWVzc2FnZSkge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50LnVzZXI/LmlkO1xuICB9XG5cbiAgcGFyc2VEYXRlKGRhdGU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5wYXJzZWREYXRlcy5oYXMoZGF0ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlZERhdGVzLmdldChkYXRlKTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IHRoaXMuZGF0ZVBhcnNlci5wYXJzZURhdGUoZGF0ZSk7XG4gICAgdGhpcy5wYXJzZWREYXRlcy5zZXQoZGF0ZSwgcGFyc2VkRGF0ZSk7XG4gICAgcmV0dXJuIHBhcnNlZERhdGU7XG4gIH1cblxuICBnZXQgcmVwbHlDb3VudFBhcmFtKCkge1xuICAgIHJldHVybiB7IHJlcGx5Q291bnQ6IHRoaXMucGFyZW50TWVzc2FnZT8ucmVwbHlfY291bnQgfTtcbiAgfVxuXG4gIGdldCBlbXB0eUxpc3RUZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnbWFpbidcbiAgICAgID8gdGhpcy5lbXB0eU1haW5NZXNzYWdlTGlzdFRlbXBsYXRlXG4gICAgICA6IHRoaXMuZW1wdHlUaHJlYWRNZXNzYWdlTGlzdFRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVzZXJ2ZVNjcm9sbGJhclBvc2l0aW9uKCkge1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICh0aGlzLnByZXZTY3JvbGxUb3AgfHwgMCkgK1xuICAgICAgKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5jb250YWluZXJIZWlnaHQhKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VSZXBhaW50KCkge1xuICAgIC8vIFNvbHZlcyB0aGUgaXNzdWUgb2YgZW1wdHkgc2NyZWVuIG9uIFNhZmFyaSB3aGVuIHNjcm9sbGluZ1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDsgLy8gbm8gbmVlZCB0byBzdG9yZSB0aGlzIGFueXdoZXJlLCB0aGUgcmVmZXJlbmNlIGlzIGVub3VnaFxuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY3JvbGxQb3NpdGlvbigpOiAndG9wJyB8ICdib3R0b20nIHwgJ21pZGRsZScge1xuICAgIGxldCBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnID0gJ21pZGRsZSc7XG4gICAgaWYgKFxuICAgICAgTWF0aC5mbG9vcih0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCkgPD1cbiAgICAgICAgKHRoaXMucGFyZW50TWVzc2FnZUVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDApICYmXG4gICAgICAodGhpcy5wcmV2U2Nyb2xsVG9wID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdGhpcy5wcmV2U2Nyb2xsVG9wID5cbiAgICAgICAgICAodGhpcy5wYXJlbnRNZXNzYWdlRWxlbWVudD8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMCkpXG4gICAgKSB7XG4gICAgICBwb3NpdGlvbiA9ICd0b3AnO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBNYXRoLmNlaWwodGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3ApICtcbiAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPj1cbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgKSB7XG4gICAgICBwb3NpdGlvbiA9ICdib3R0b20nO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTG9hZE1vcmVNZXNzYWdlcyhzY3JvbGxQb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnKSB7XG4gICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICE9PSAnbWlkZGxlJyAmJiAhdGhpcy5oaWdobGlnaHRlZE1lc3NhZ2VJZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVzc2FnZXMkKCkge1xuICAgIHRoaXMubWVzc2FnZXMkID0gKFxuICAgICAgdGhpcy5tb2RlID09PSAnbWFpbidcbiAgICAgICAgPyB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWxNZXNzYWdlcyRcbiAgICAgICAgOiB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZVRocmVhZE1lc3NhZ2VzJFxuICAgICkucGlwZShcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgICBgRW1wdHkgbWVzc2FnZXMgYXJyYXksIHJlc2V0aW5nIHNjcm9sbCBzdGF0ZWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KSB7XG4gICAgICAgICAgLy8gY2RSZWYuZGV0ZWN0Q2hhbmdlcygpIGlzbid0IGVub3VnaCBoZXJlLCB0ZXN0IHdpbGwgZmFpbFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuaXNFbXB0eSA9IGZhbHNlKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py5sb2dnZXI/LihcbiAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgYFJlY2VpdmVkIG9uZSBvciBtb3JlIG1lc3NhZ2VzYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0YWdzOiBgbWVzc2FnZSBsaXN0ICR7dGhpcy5tb2RlfWAsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjdXJyZW50TGF0ZXN0TWVzc2FnZUluU3RhdGUgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgdGhpcy5uZXdNZXNzYWdlUmVjZWl2ZWQoY3VycmVudExhdGVzdE1lc3NhZ2VJblN0YXRlKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9sZGVzdE1lc3NhZ2UgPSBtZXNzYWdlc1swXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLm9sZGVzdE1lc3NhZ2UgfHxcbiAgICAgICAgICAhbWVzc2FnZXMuZmluZCgobSkgPT4gbS5pZCA9PT0gdGhpcy5vbGRlc3RNZXNzYWdlIS5pZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlID0gY3VycmVudE9sZGVzdE1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0VGltZSgpID5cbiAgICAgICAgICBjdXJyZW50T2xkZXN0TWVzc2FnZS5jcmVhdGVkX2F0LmdldFRpbWUoKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2UgPSBjdXJyZW50T2xkZXN0TWVzc2FnZTtcbiAgICAgICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuaXNKdW1waW5nVG9MYXRlc3RVbnJlYWRNZXNzYWdlICYmXG4gICAgICAgICAgIXRoaXMuZmlyc3RVbnJlYWRNZXNzYWdlSWQgJiZcbiAgICAgICAgICB0aGlzLmxhc3RSZWFkTWVzc2FnZUlkXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGxhc3RSZWFkSW5kZXggPSBtZXNzYWdlcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAobSkgPT4gbS5pZCA9PT0gdGhpcy5sYXN0UmVhZE1lc3NhZ2VJZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5maXJzdFVucmVhZE1lc3NhZ2VJZCA9XG4gICAgICAgICAgICBtZXNzYWdlc1tsYXN0UmVhZEluZGV4ICsgMV0/LmlkIHx8IHRoaXMubGFzdFJlYWRNZXNzYWdlSWQ7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFwKFxuICAgICAgICAobWVzc2FnZXMpID0+XG4gICAgICAgICAgKHRoaXMubGFzdFNlbnRNZXNzYWdlSWQgPSBbLi4ubWVzc2FnZXNdXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgICAgKG0pID0+XG4gICAgICAgICAgICAgICAgbS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZCAmJlxuICAgICAgICAgICAgICAgIG0uc3RhdHVzICE9PSAnc2VuZGluZydcbiAgICAgICAgICAgICk/LmlkKVxuICAgICAgKSxcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3QgPVxuICAgICAgICAgICF0aGlzLmxhdGVzdE1lc3NhZ2UgfHxcbiAgICAgICAgICBtZXNzYWdlcy5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXS5pZCA9PT0gdGhpcy5sYXRlc3RNZXNzYWdlLmlkIHx8XG4gICAgICAgICAgdGhpcy5tb2RlID09PSAndGhyZWFkJztcbiAgICAgICAgaWYgKCF0aGlzLmlzTGF0ZXN0TWVzc2FnZUluTGlzdCkge1xuICAgICAgICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG1hcCgobWVzc2FnZXMpID0+XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID09PSAnYm90dG9tLXRvLXRvcCcgPyBtZXNzYWdlcyA6IFsuLi5tZXNzYWdlc10ucmV2ZXJzZSgpXG4gICAgICApLFxuICAgICAgdGFwKChtZXNzYWdlcykgPT4ge1xuICAgICAgICB0aGlzLmdyb3VwU3R5bGVzID0gbWVzc2FnZXMubWFwKChtLCBpKSA9PlxuICAgICAgICAgIGdldEdyb3VwU3R5bGVzKG0sIG1lc3NhZ2VzW2kgLSAxXSwgbWVzc2FnZXNbaSArIDFdLCB7XG4gICAgICAgICAgICBsYXN0UmVhZE1lc3NhZ2VJZDogdGhpcy5sYXN0UmVhZE1lc3NhZ2VJZCxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmlzTmV4dE1lc3NhZ2VPblNlcGFyYXRlRGF0ZSA9IG1lc3NhZ2VzLm1hcCgobSwgaSkgPT5cbiAgICAgICAgICB0aGlzLmNoZWNrSWZPblNlcGFyYXRlRGF0ZXMobSwgbWVzc2FnZXNbaSArIDFdKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFNjcm9sbFN0YXRlKCkge1xuICAgIHRoaXMuaXNFbXB0eSA9IHRydWU7XG4gICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSB0cnVlO1xuICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9sZGVzdE1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5uZXdNZXNzYWdlQ291bnRXaGlsZUJlaW5nU2Nyb2xsZWQgPSAwO1xuICAgIHRoaXMucHJldlNjcm9sbFRvcCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3QgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdXNlcnNUeXBpbmckKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICA/IHRoaXMudXNlcnNUeXBpbmdJblRocmVhZCRcbiAgICAgIDogdGhpcy51c2Vyc1R5cGluZ0luQ2hhbm5lbCQ7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbE1lc3NhZ2VJbnRvVmlldyhtZXNzYWdlSWQ6IHN0cmluZywgd2l0aFJldHJ5ID0gdHJ1ZSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtZXNzYWdlSWQpO1xuICAgIGlmICghZWxlbWVudCAmJiB3aXRoUmV0cnkpIHtcbiAgICAgIC8vIElmIHRoZSBtZXNzYWdlIHdhcyBuZXdseSBpbnNlcnRlZCBpbnRvIGFjdGl2ZUNoYW5uZWxNZXNzYWdlcyQsIHRoZSBtZXNzYWdlIHdpbGwgYmUgcmVuZGVyZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSAtPiB3YWl0IGZvciB0aGlzIGN5Y2xlIHRvIGNvbXBsZXRlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsTWVzc2FnZUludG9WaWV3KG1lc3NhZ2VJZCwgZmFsc2UpKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBibG9jazogJ2NlbnRlcicsXG4gICAgICB9KTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkTWVzc2FnZUlkID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmZpcnN0VW5yZWFkTWVzc2FnZUlkID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmlzSnVtcGluZ1RvTGF0ZXN0VW5yZWFkTWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9MYXRlc3RNZXNzYWdlKHdpdGhSZXRyeSA9IHRydWUpIHtcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5sYXRlc3RNZXNzYWdlIS5pZCkpIHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID09PSAnYm90dG9tLXRvLXRvcCdcbiAgICAgICAgPyB0aGlzLnNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgOiB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgfSBlbHNlIGlmICh3aXRoUmV0cnkpIHtcbiAgICAgIC8vIElmIHRoZSBtZXNzYWdlIHdhcyBuZXdseSBpbnNlcnRlZCBpbnRvIGFjdGl2ZUNoYW5uZWxNZXNzYWdlcyQsIHRoZSBtZXNzYWdlIHdpbGwgYmUgcmVuZGVyZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSAtPiB3YWl0IGZvciB0aGlzIGN5Y2xlIHRvIGNvbXBsZXRlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsVG9MYXRlc3RNZXNzYWdlKGZhbHNlKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXdNZXNzYWdlUmVjZWl2ZWQobWVzc2FnZToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY3JlYXRlZF9hdDogRGF0ZTtcbiAgICB1c2VyPzogeyBpZDogc3RyaW5nIH0gfCBudWxsO1xuICB9KSB7XG4gICAgY29uc3QgbGF0ZXN0TWVzc2FnZXMgPVxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsPy5zdGF0ZT8ubGF0ZXN0TWVzc2FnZXM7XG4gICAgaWYgKFxuICAgICAgIXRoaXMubGF0ZXN0TWVzc2FnZSB8fFxuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlLmNyZWF0ZWRfYXQ/LmdldFRpbWUoKSA8IG1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRUaW1lKCkgfHxcbiAgICAgICh0aGlzLm1vZGUgPT09ICdtYWluJyAmJlxuICAgICAgICBsYXRlc3RNZXNzYWdlcyAmJlxuICAgICAgICB0aGlzLmxhdGVzdE1lc3NhZ2UgJiZcbiAgICAgICAgbGF0ZXN0TWVzc2FnZXNbbGF0ZXN0TWVzc2FnZXMubGVuZ3RoIC0gMV0/LmlkICE9PSB0aGlzLmxhdGVzdE1lc3NhZ2UuaWQpXG4gICAgKSB7XG4gICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LmxvZ2dlcj8uKFxuICAgICAgICAnaW5mbycsXG4gICAgICAgIGBSZWNlaXZlZCBuZXcgbWVzc2FnZWAsXG4gICAgICAgIHsgdGFnczogYG1lc3NhZ2UgbGlzdCAke3RoaXMubW9kZX1gIH1cbiAgICAgICk7XG4gICAgICBjb25zdCBpc05ld0NoYW5uZWwgPSAhdGhpcy5sYXRlc3RNZXNzYWdlO1xuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSB0cnVlO1xuICAgICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID1cbiAgICAgICAgbWVzc2FnZS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZDtcbiAgICAgIGlmICh0aGlzLmlzVXNlclNjcm9sbGVkKSB7XG4gICAgICAgIHRoaXMubmV3TWVzc2FnZUNvdW50V2hpbGVCZWluZ1Njcm9sbGVkKys7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIgJiZcbiAgICAgICAgdGhpcy51bnJlYWRDb3VudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc05ld0NoYW5uZWxcbiAgICAgICkge1xuICAgICAgICB0aGlzLnVucmVhZENvdW50Kys7XG4gICAgICB9XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZPblNlcGFyYXRlRGF0ZXMoXG4gICAgbWVzc2FnZT86IFN0cmVhbU1lc3NhZ2UsXG4gICAgbmV4dE1lc3NhZ2U/OiBTdHJlYW1NZXNzYWdlXG4gICkge1xuICAgIGlmICghbWVzc2FnZSB8fCAhbmV4dE1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY3JlYXRlZF9hdC5nZXREYXRlKCkgIT09IG5leHRNZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0RGF0ZSgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbWVzc2FnZS5jcmVhdGVkX2F0LmdldEZ1bGxZZWFyKCkgIT09XG4gICAgICAgIG5leHRNZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0RnVsbFllYXIoKSB8fFxuICAgICAgbWVzc2FnZS5jcmVhdGVkX2F0LmdldE1vbnRoKCkgIT09IG5leHRNZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0TW9udGgoKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIlxuICAgIGxhc3RSZWFkTWVzc2FnZUlkICYmXG4gICAgaXNVbnJlYWROb3RpZmljYXRpb25WaXNpYmxlICYmXG4gICAgb3Blbk1lc3NhZ2VMaXN0QXQgPT09ICdsYXN0LW1lc3NhZ2UnICYmXG4gICAgZGlzcGxheVVucmVhZFNlcGFyYXRvclxuICBcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIGN1c3RvbW5ld01lc3NhZ2VzTm90aWZpY2F0aW9uVGVtcGxhdGUgfHxcbiAgICAgICAgZGVmYXVsdFVucmVhZE1lc3NhZ2VzTm90aWZpY2F0aW9uO1xuICAgICAgY29udGV4dDoge1xuICAgICAgICB1bnJlYWRDb3VudDogdW5yZWFkQ291bnQsXG4gICAgICAgIG9uRGlzbWlzczogbWVzc2FnZU5vdGlmaWNhdGlvbkRpc21pc3NDbGlja2VkLFxuICAgICAgICBvbkp1bXA6IG1lc3NhZ2VOb3RpZmljYXRpb25KdW1wQ2xpY2tlZFxuICAgICAgfVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0VW5yZWFkTWVzc2FnZXNOb3RpZmljYXRpb25cbiAgbGV0LXVucmVhZENvdW50PVwidW5yZWFkQ291bnRcIlxuICBsZXQtb25EaXNtaXNzPVwib25EaXNtaXNzXCJcbiAgbGV0LW9uSnVtcD1cIm9uSnVtcFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInN0ci1jaGF0X191bnJlYWQtbWVzc2FnZXMtbm90aWZpY2F0aW9uXCJcbiAgICBkYXRhLXRlc3RpZD1cInVucmVhZC1tZXNzYWdlcy1ub3RpZmljYXRpb25cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgZGF0YS10ZXN0aWQ9XCJ1bnJlYWQtbWVzc2FnZXMtbm90aWZpY2F0aW9uLWp1bXAtdG8tbWVzc2FnZVwiXG4gICAgICAoY2xpY2spPVwib25KdW1wKClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICB1bnJlYWRDb3VudCA+IDAgJiYgIWhpZGVVbnJlYWRDb3VudEZvck5vdGlmaWNhdGlvbkFuZEluZGljYXRvcjtcbiAgICAgICAgICBlbHNlIG5vVW5yZWFkQ291bnRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICAodW5yZWFkQ291bnQgPT09IDFcbiAgICAgICAgICAgID8gXCJzdHJlYW1DaGF0Llxce1xce2NvdW50XFx9XFx9IHVucmVhZCBtZXNzYWdlXCJcbiAgICAgICAgICAgIDogXCJzdHJlYW1DaGF0Llxce1xce2NvdW50XFx9XFx9IHVucmVhZCBtZXNzYWdlc1wiXG4gICAgICAgICAgKSB8IHRyYW5zbGF0ZTogeyBjb3VudDogdW5yZWFkQ291bnQgfVxuICAgICAgICB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI25vVW5yZWFkQ291bnQ+XG4gICAgICAgIHt7IFwic3RyZWFtQ2hhdC5VbnJlYWQgbWVzc2FnZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBkYXRhLXRlc3RpZD1cInVucmVhZC1tZXNzYWdlcy1ub3RpZmljYXRpb24tZGlzbWlzc1wiXG4gICAgICAoY2xpY2spPVwib25EaXNtaXNzKClcIlxuICAgID5cbiAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwiY2xvc2VcIj48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48ZGl2ICNzY3JvbGxDb250YWluZXIgZGF0YS10ZXN0aWQ9XCJzY3JvbGwtY29udGFpbmVyXCIgY2xhc3M9XCJzdHItY2hhdF9fbGlzdFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ21haW4nICYmIGlzRW1wdHkgJiYgZW1wdHlMaXN0VGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlMaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcmV2ZXJzZS1pbmZpbml0ZS1zY3JvbGwgc3RyLWNoYXRfX21lc3NhZ2UtbGlzdC1zY3JvbGxcIj5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3VsXCJcbiAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1vcHRpb25zLWluLWJ1YmJsZV09XCJcbiAgICAgICAgbWVzc2FnZU9wdGlvbnNUcmlnZ2VyID09PSAnbWVzc2FnZS1idWJibGUnXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxsaVxuICAgICAgICAjcGFyZW50TWVzc2FnZUVsZW1lbnRcbiAgICAgICAgKm5nSWY9XCJtb2RlID09PSAndGhyZWFkJyAmJiBwYXJlbnRNZXNzYWdlXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJwYXJlbnQtbWVzc2FnZVwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BhcmVudC1tZXNzYWdlLWxpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBtZXNzYWdlVGVtcGxhdGVDb250YWluZXI7XG4gICAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IHBhcmVudE1lc3NhZ2UsIGluZGV4OiAncGFyZW50JyB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGRhdGEtdGVzdGlkPVwicmVwbHktY291bnRcIiBjbGFzcz1cInN0ci1jaGF0X190aHJlYWQtc3RhcnRcIj5cbiAgICAgICAgICB7e3BhcmVudE1lc3NhZ2U/LnJlcGx5X2NvdW50ID09PSAxID8gKCdzdHJlYW1DaGF0LjEgcmVwbHknIHwgdHJhbnNsYXRlKSA6ICgnc3RyZWFtQ2hhdC57eyByZXBseUNvdW50IH19XG4gICAgICAgICAgcmVwbGllcycgfCB0cmFuc2xhdGU6cmVwbHlDb3VudFBhcmFtKX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09PSAndGhyZWFkJyAmJiBpc0VtcHR5ICYmIGVtcHR5TGlzdFRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eUxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8c3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yXG4gICAgICAgIGRhdGEtdGVzdGlkPVwidG9wLWxvYWRpbmctaW5kaWNhdG9yXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBpc0xvYWRpbmcgJiYgZGlyZWN0aW9uID09PSAnYm90dG9tLXRvLXRvcCcgJiYgZGlzcGxheUxvYWRpbmdJbmRpY2F0b3JcbiAgICAgICAgXCJcbiAgICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlcyQgfCBhc3luYyBhcyBtZXNzYWdlc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSBvZiBtZXNzYWdlcztcbiAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICBsZXQgaXNGaXJzdCA9IGZpcnN0O1xuICAgICAgICAgICAgbGV0IGlzTGFzdCA9IGxhc3Q7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZUlkXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgZGF0ZVNlcGFyYXRvcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICBkYXRlOiBtZXNzYWdlLmNyZWF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgICBwYXJzZWREYXRlOiBwYXJzZURhdGUobWVzc2FnZS5jcmVhdGVkX2F0KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RjbGFzcz1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbGkgc3RyLWNoYXRfX2xpLS17eyBncm91cFN0eWxlc1tpXSB9fVwiXG4gICAgICAgICAgICBpZD1cInt7IG1lc3NhZ2UuaWQgfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBtZXNzYWdlVGVtcGxhdGVDb250YWluZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyBtZXNzYWdlOiBtZXNzYWdlLCBpbmRleDogaSB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAobGFzdFJlYWRNZXNzYWdlSWQgPT09IG1lc3NhZ2U/LmlkICYmXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID09PSAnYm90dG9tLXRvLXRvcCcpIHx8XG4gICAgICAgICAgICAgIChkaXJlY3Rpb24gPT09ICd0b3AtdG8tYm90dG9tJyAmJlxuICAgICAgICAgICAgICAgIGxhc3RSZWFkTWVzc2FnZUlkID09PSBtZXNzYWdlc1tpICsgMV0/LmlkKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nSWY9XCJkaXNwbGF5VW5yZWFkU2VwYXJhdG9yXCJcbiAgICAgICAgICAgICAgaWQ9XCJzdHJlYW0tY2hhdC1uZXctbWVzc2FnZS1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm5ldy1tZXNzYWdlcy1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19saSBzdHItY2hhdF9fdW5yZWFkLW1lc3NhZ2VzLXNlcGFyYXRvci13cmFwcGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBjdXN0b21uZXdNZXNzYWdlc0luZGljYXRvclRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHROZXdNZXNzYWdlc0luZGljYXRvcjtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgdW5yZWFkQ291bnQ6IHVucmVhZENvdW50IH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc05leHRNZXNzYWdlT25TZXBhcmF0ZURhdGVbaV1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBkYXRlU2VwYXJhdG9yO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgIGRhdGU6IG1lc3NhZ2VzW2kgKyAxXS5jcmVhdGVkX2F0LFxuICAgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZTogcGFyc2VEYXRlKG1lc3NhZ2VzW2kgKyAxXS5jcmVhdGVkX2F0KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzdHJlYW0tbG9hZGluZy1pbmRpY2F0b3JcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJib3R0b20tbG9hZGluZy1pbmRpY2F0b3JcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGlzTG9hZGluZyAmJiBkaXJlY3Rpb24gPT09ICd0b3AtdG8tYm90dG9tJyAmJiBkaXNwbGF5TG9hZGluZ0luZGljYXRvclxuICAgICAgICBcIlxuICAgICAgPjwvc3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yPlxuICAgIDwvdWw+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VHlwaW5nSW5kaWNhdG9yIGxldC11c2Vyc1R5cGluZyQ9XCJ1c2Vyc1R5cGluZyRcIj5cbiAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9uby1hbnkgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiJGFueSh1c2Vyc1R5cGluZyQgfCBhc3luYykgYXMgdXNlcnNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwidXNlcnMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0eXBpbmctaW5kaWNhdG9yXCJcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yIHN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yLS10eXBpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yX19kb3RzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yX19kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yX19kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yX19kb3RcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0eXBpbmctdXNlcnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fdXNlcnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIHVzZXJzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICAgID8gKFwic3RyZWFtQ2hhdC51c2VyIGlzIHR5cGluZ1wiXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyB1c2VyOiBnZXRUeXBpbmdJbmRpY2F0b3JUZXh0KHVzZXJzKSB9KVxuICAgICAgICAgICAgICAgIDogKFwic3RyZWFtQ2hhdC51c2VycyBhcmUgdHlwaW5nXCJcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IHVzZXJzOiBnZXRUeXBpbmdJbmRpY2F0b3JUZXh0KHVzZXJzKSB9KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIHR5cGluZ0luZGljYXRvclRlbXBsYXRlIHx8IGRlZmF1bHRUeXBpbmdJbmRpY2F0b3I7XG4gICAgICAgIGNvbnRleHQ6IGdldFR5cGluZ0luZGljYXRvckNvbnRleHQoKVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2p1bXAtdG8tbGF0ZXN0LW1lc3NhZ2VcIj5cbiAgPGJ1dHRvblxuICAgIGRhdGEtdGVzdGlkPVwic2Nyb2xsLXRvLWxhdGVzdFwiXG4gICAgKm5nSWY9XCJpc1VzZXJTY3JvbGxlZCAmJiBpc0p1bXBUb0xhdGVzdEJ1dHRvblZpc2libGVcIlxuICAgIGNsYXNzPVwiXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tc2Nyb2xsLXRvLWxhdGVzdFxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC10by1sYXRlc3QtcmlnaHRcbiAgICAgIHN0ci1jaGF0X19jaXJjbGUtZmFiXG4gICAgXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwianVtcFRvTGF0ZXN0TWVzc2FnZSgpXCJcbiAgICAoY2xpY2spPVwianVtcFRvTGF0ZXN0TWVzc2FnZSgpXCJcbiAgPlxuICAgIDxzdHJlYW0taWNvblxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fanVtcC10by1sYXRlc3QtaWNvbiBzdHItY2hhdF9fY2lyY2xlLWZhYi1pY29uXCJcbiAgICAgIFtpY29uXT1cImRpcmVjdGlvbiA9PT0gJ2JvdHRvbS10by10b3AnID8gJ2Fycm93LWRvd24nIDogJ2Fycm93LXVwJ1wiXG4gICAgPjwvc3RyZWFtLWljb24+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJuZXdNZXNzYWdlQ291bnRXaGlsZUJlaW5nU2Nyb2xsZWQgPiAwXCJcbiAgICAgIGNsYXNzPVwiXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvblxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tc2Nyb2xsLXRvLWxhdGVzdC11bnJlYWQtY291bnRcbiAgICAgICAgc3RyLWNoYXRfX2p1bXAtdG8tbGF0ZXN0LXVucmVhZC1jb3VudFxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyBuZXdNZXNzYWdlQ291bnRXaGlsZUJlaW5nU2Nyb2xsZWQgfX1cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlVGVtcGxhdGVDb250YWluZXIgbGV0LW1lc3NhZ2U9XCJtZXNzYWdlXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2RlZmF1bHRNZXNzYWdlVGVtcGxhdGVcbiAgICBsZXQtbWVzc2FnZUlucHV0PVwibWVzc2FnZVwiXG4gICAgbGV0LWlzTGFzdFNlbnRNZXNzYWdlPVwiaXNMYXN0U2VudE1lc3NhZ2VcIlxuICAgIGxldC1lbmFibGVkTWVzc2FnZUFjdGlvbnM9XCJlbmFibGVkTWVzc2FnZUFjdGlvbnNcIlxuICAgIGxldC1tb2RlPVwibW9kZVwiXG4gICAgbGV0LWlzSGlnaGxpZ2h0ZWQ9XCJpc0hpZ2hsaWdodGVkXCJcbiAgICBsZXQtY3VzdG9tQWN0aW9ucz1cImN1c3RvbUFjdGlvbnNcIlxuICA+XG4gICAgPHN0cmVhbS1tZXNzYWdlXG4gICAgICBbbWVzc2FnZV09XCJtZXNzYWdlSW5wdXRcIlxuICAgICAgW2lzTGFzdFNlbnRNZXNzYWdlXT1cImlzTGFzdFNlbnRNZXNzYWdlXCJcbiAgICAgIFtlbmFibGVkTWVzc2FnZUFjdGlvbnNdPVwiZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXCJcbiAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgW2lzSGlnaGxpZ2h0ZWRdPVwiaXNIaWdobGlnaHRlZFwiXG4gICAgICBbY3VzdG9tQWN0aW9uc109XCJjdXN0b21BY3Rpb25zXCJcbiAgICA+PC9zdHJlYW0tbWVzc2FnZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICBtZXNzYWdlVGVtcGxhdGUgfHwgZGVmYXVsdE1lc3NhZ2VUZW1wbGF0ZTtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgaXNMYXN0U2VudE1lc3NhZ2U6ICEhKFxuICAgICAgICAgIGxhc3RTZW50TWVzc2FnZUlkICYmIG1lc3NhZ2U/LmlkID09PSBsYXN0U2VudE1lc3NhZ2VJZFxuICAgICAgICApLFxuICAgICAgICBlbmFibGVkTWVzc2FnZUFjdGlvbnM6IGVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgICAgbW9kZTogbW9kZSxcbiAgICAgICAgaXNIaWdobGlnaHRlZDogbWVzc2FnZT8uaWQgPT09IGhpZ2hsaWdodGVkTWVzc2FnZUlkLFxuICAgICAgICBjdXN0b21BY3Rpb25zOiBjdXN0b21NZXNzYWdlQWN0aW9uc1xuICAgICAgfVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGF0ZVNlcGFyYXRvciBsZXQtZGF0ZT1cImRhdGVcIiBsZXQtcGFyc2VkRGF0ZT1cInBhcnNlZERhdGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlEYXRlU2VwYXJhdG9yXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgY3VzdG9tRGF0ZVNlcGFyYXRvclRlbXBsYXRlIHx8IGRlZmF1bHREYXRlU2VwYXJhdG9yO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICBwYXJzZWREYXRlOiBwYXJzZWREYXRlXG4gICAgICAgIH1cbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGVcbiAgICAjZGVmYXVsdERhdGVTZXBhcmF0b3JcbiAgICBsZXQtZGF0ZT1cImRhdGVcIlxuICAgIGxldC1wYXJzZWREYXRlPVwicGFyc2VkRGF0ZVwiXG4gID5cbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiZGF0ZS1zZXBhcmF0b3JcIiBjbGFzcz1cInN0ci1jaGF0X19kYXRlLXNlcGFyYXRvclwiPlxuICAgICAgPGhyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgZGF0ZVNlcGFyYXRvclRleHRQb3MgPT09ICdyaWdodCcgfHwgZGF0ZVNlcGFyYXRvclRleHRQb3MgPT09ICdjZW50ZXInXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2RhdGUtc2VwYXJhdG9yLWxpbmVcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGF0ZS1zZXBhcmF0b3ItZGF0ZVwiPlxuICAgICAgICB7eyBwYXJzZWREYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGRhdGVTZXBhcmF0b3JUZXh0UG9zID09PSAnbGVmdCcgfHwgZGF0ZVNlcGFyYXRvclRleHRQb3MgPT09ICdjZW50ZXInXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2RhdGUtc2VwYXJhdG9yLWxpbmVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5ld01lc3NhZ2VzSW5kaWNhdG9yIGxldC11bnJlYWRDb3VudD1cInVucmVhZENvdW50XCI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdW5yZWFkLW1lc3NhZ2VzLXNlcGFyYXRvclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIHVucmVhZENvdW50ID4gMCAmJiAhaGlkZVVucmVhZENvdW50Rm9yTm90aWZpY2F0aW9uQW5kSW5kaWNhdG9yO1xuICAgICAgICBlbHNlIG5vVW5yZWFkQ291bnRcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3tcbiAgICAgICAgKHVucmVhZENvdW50ID09PSAxXG4gICAgICAgICAgPyBcInN0cmVhbUNoYXQuXFx7XFx7Y291bnRcXH1cXH0gdW5yZWFkIG1lc3NhZ2VcIlxuICAgICAgICAgIDogXCJzdHJlYW1DaGF0Llxce1xce2NvdW50XFx9XFx9IHVucmVhZCBtZXNzYWdlc1wiXG4gICAgICAgICkgfCB0cmFuc2xhdGU6IHsgY291bnQ6IHVucmVhZENvdW50IH1cbiAgICAgIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNub1VucmVhZENvdW50PlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlVucmVhZCBtZXNzYWdlc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
726
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBT0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBWWxELE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7O0FBRTFEOztHQUVHO0FBT0gsTUFBTSxPQUFPLG9CQUFvQjtJQW9IL0IsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLFVBQTZCLEVBQzdCLE1BQWMsRUFDZCxLQUF3QixFQUN4QixxQkFBNEM7UUFONUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1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QUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FDNUIsT0FBdUIsRUFDdkIsV0FBMkI7UUFFM0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUM1QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RSxDQUFDOztpSEFqMkJVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGs0QkNoRGpDLDQ2VkE0VUE7MkZENVJhLG9CQUFvQjtrQkFOaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxNQUFNLEVBQUUsRUFBRTtvQkFDVixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7bVNBT1UsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQU1HLGtDQUFrQztzQkFBMUMsS0FBSztnQkFNRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBSUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUlHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFJRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQU9HLDBDQUEwQztzQkFBbEQsS0FBSztnQkFJRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBK0JFLGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUdwQixvQkFBb0I7c0JBRDNCLFNBQVM7dUJBQUMsc0JBQXNCO2dCQXlCckIsS0FBSztzQkFEaEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE1lc3NhZ2VDb250ZXh0LFxuICBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzLFxuICBTdHJlYW1NZXNzYWdlLFxuICBUeXBpbmdJbmRpY2F0b3JDb250ZXh0LFxuICBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbSxcbiAgRGF0ZVNlcGFyYXRvckNvbnRleHQsXG4gIFVucmVhZE1lc3NhZ2VzTm90aWZpY2F0aW9uQ29udGV4dCxcbiAgVW5yZWFkTWVzc2FnZXNJbmRpY2F0b3JDb250ZXh0LFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0R3JvdXBTdHlsZXMsIEdyb3VwU3R5bGUgfSBmcm9tICcuL2dyb3VwLXN0eWxlcyc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGxpc3RVc2VycyB9IGZyb20gJy4uL2xpc3QtdXNlcnMnO1xuaW1wb3J0IHsgRGF0ZVBhcnNlclNlcnZpY2UgfSBmcm9tICcuLi9kYXRlLXBhcnNlci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VBY3Rpb25zU2VydmljZSB9IGZyb20gJy4uL21lc3NhZ2UtYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IGlzT25TZXBhcmF0ZURhdGUgfSBmcm9tICcuLi9pcy1vbi1zZXBhcmF0ZS1kYXRlJztcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VMaXN0YCBjb21wb25lbnQgcmVuZGVycyBhIHNjcm9sbGFibGUgbGlzdCBvZiBtZXNzYWdlcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUxpc3RDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBtZXNzYWdlIGxpc3Qgc2hvdWxkIGRpc3BsYXkgY2hhbm5lbCBtZXNzYWdlcyBvciBbdGhyZWFkIG1lc3NhZ2VzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC90aHJlYWRzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICdtYWluJyB8ICd0aHJlYWQnID0gJ21haW4nO1xuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiBvZiB0aGUgbWVzc2FnZXMgaW4gdGhlIGxpc3QsIGBib3R0b20tdG8tdG9wYCBtZWFucyBuZXdlc3QgbWVzc2FnZSBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBtZXNzYWdlIGxpc3QgYW5kIHVzZXJzIHNjcm9sbCB1cHdhcmRzIHRvIGxvYWQgb2xkZXIgbWVzc2FnZXNcbiAgICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogJ2JvdHRvbS10by10b3AnIHwgJ3RvcC10by1ib3R0b20nID0gJ2JvdHRvbS10by10b3AnO1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGF0IHRyaWdnZXJzIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBtZXNzYWdlIG9wdGlvbnM6IGJ5IGRlZmF1bHQgeW91IGNhbiBob3ZlciAoY2xpY2sgb24gbW9iaWxlKSBhbnl3aGVyZSBpbiB0aGUgcm93IG9mIHRoZSBtZXNzYWdlIChgbWVzc2FnZS1yb3dgIG9wdGlvbiksIG9yIHlvdSBjYW4gc2V0IGBtZXNzYWdlLWJ1YmJsZWAsIGluIHRoYXQgY2FzZSBvbmx5IGEgaG92ZXIgKGNsaWNrIG9uIG1vYmlsZSkgaW4gdGhlIG1lc3NhZ2UgYnViYmxlIHdpbGwgdHJpZ2dlciB0aGUgb3B0aW9ucyB0byBhcHBlYXIuXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlT3B0aW9uc1RyaWdnZXI6ICdtZXNzYWdlLXJvdycgfCAnbWVzc2FnZS1idWJibGUnID1cbiAgICAnbWVzc2FnZS1yb3cnO1xuICAvKipcbiAgICogWW91IGNhbiBoaWRlIHRoZSBcImp1bXAgdG8gbGF0ZXN0XCIgYnV0dG9uIHdoaWxlIHNjcm9sbGluZy4gQSBwb3RlbnRpYWwgdXNlLWNhc2UgZm9yIHRoaXMgaW5wdXQgd291bGQgYmUgdG8gW3dvcmthcm91bmQgYSBrbm93biBpc3N1ZSBvbiBpT1MgU2FmYXIgd2Vidmlld10oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1hbmd1bGFyL2lzc3Vlcy80MTgpXG4gICAqXG4gICAqL1xuICBASW5wdXQoKSBoaWRlSnVtcFRvTGF0ZXN0QnV0dG9uRHVyaW5nU2Nyb2xsID0gZmFsc2U7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgY3VzdG9tIG1lc3NhZ2UgYWN0aW9ucyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIG1lc3NhZ2UgYWN0aW9uIGJveFxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIHRoZSBbYE1lc3NhZ2VBY3Rpb25zU2VydmljZWBdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9zZXJ2aWNlcy9NZXNzYWdlQWN0aW9uc1NlcnZpY2UpIHRvIHNldCB0aGlzIHByb3BlcnR5LlxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tTWVzc2FnZUFjdGlvbnM6IEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtPGFueT5bXSA9IFtdO1xuICAvKipcbiAgICogSWYgYHRydWVgIGRhdGUgc2VwYXJhdG9ycyB3aWxsIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheURhdGVTZXBhcmF0b3IgPSB0cnVlO1xuICAvKipcbiAgICogSWYgYHRydWVgIHVucmVhZCBpbmRpY2F0b3Igd2lsbCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlVbnJlYWRTZXBhcmF0b3IgPSB0cnVlO1xuICAvKipcbiAgICogSWYgZGF0ZSBzZXBhcmF0b3JzIGFyZSBkaXNwbGF5ZWQsIHlvdSBjYW4gc2V0IHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBkYXRlIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSBkYXRlU2VwYXJhdG9yVGV4dFBvczogJ2NlbnRlcicgfCAncmlnaHQnIHwgJ2xlZnQnID0gJ2NlbnRlcic7XG4gIC8qKlxuICAgKiBgbGFzdC1tZXNzYWdlYCBvcHRpb24gd2lsbCBvcGVuIHRoZSBtZXNzYWdlIGxpc3QgYXQgdGhlIGxhc3QgbWVzc2FnZSwgYGxhc3QtcmVhZC1tZXNzYWdlYCB3aWxsIG9wZW4gdGhlIGxpc3QgYXQgdGhlIGxhc3QgdW5yZWFkIG1lc3NhZ2UuIFRoaXMgb3B0aW9uIG9ubHkgd29ya3MgaWYgbW9kZSBpcyBgbWFpbmAuXG4gICAqL1xuICBASW5wdXQoKSBvcGVuTWVzc2FnZUxpc3RBdDogJ2xhc3QtbWVzc2FnZScgfCAnbGFzdC1yZWFkLW1lc3NhZ2UnID1cbiAgICAnbGFzdC1tZXNzYWdlJztcbiAgLyoqXG4gICAqIElmIHRoZSB1c2VyIGhhcyB1bnJlYWQgbWVzc2FnZXMgd2hlbiB0aGV5IG9wZW4gdGhlIGNoYW5uZWwgdGhlIFVJIHNob3dzIHRoZSB1bnJlYWQgaW5kaWNhdG9yIC8gbm90aWZpY2F0aW9uIHdoaWNoIGZlYXR1cmVzIHRoZSB1bnJlYWQgY291bnQgYnkgZGVmYXVsdC4gVGhpcyBjb3VudCB3aWxsIGJlIGluY3JlYXNlZCBldmVyeSB0aW1lIGEgdXNlciByZWNlaXZlcyBhIG5ldyBtZXNzYWdlLiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSB1bnJlYWQgY291bnQsIHlvdSBjYW4gdHVybiB0aGF0IG9mZi5cbiAgICpcbiAgICogVGhpcyBpcyBvbmx5IGFwcGxpY2FibGUgZm9yIGBtYWluYCBtb2RlLCBhcyB0aHJlYWRzIGRvZXNuJ3QgaGF2ZSByZWFkIGluZnJvbWF0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgaGlkZVVucmVhZENvdW50Rm9yTm90aWZpY2F0aW9uQW5kSW5kaWNhdG9yID0gZmFsc2U7XG4gIC8qKlxuICAgKiBZb3UgY2FuIHR1cm4gb24gYW5kIG9mZiB0aGUgbG9hZGluZyBpbmRpY2F0b3IgdGhhdCBzaWduYWxzIHRvIHVzZXJzIHRoYXQgbW9yZSBtZXNzYWdlcyBhcmUgYmVpbmcgbG9hZGVkIHRvIHRoZSBtZXNzYWdlIGxpc3RcbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlMb2FkaW5nSW5kaWNhdG9yID0gdHJ1ZTtcbiAgdHlwaW5nSW5kaWNhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFR5cGluZ0luZGljYXRvckNvbnRleHQ+IHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPE1lc3NhZ2VDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgY3VzdG9tRGF0ZVNlcGFyYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxEYXRlU2VwYXJhdG9yQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIGN1c3RvbW5ld01lc3NhZ2VzSW5kaWNhdG9yVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGN1c3RvbW5ld01lc3NhZ2VzTm90aWZpY2F0aW9uVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxVbnJlYWRNZXNzYWdlc05vdGlmaWNhdGlvbkNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGVtcHR5TWFpbk1lc3NhZ2VMaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gIGVtcHR5VGhyZWFkTWVzc2FnZUxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgbWVzc2FnZXMkITogT2JzZXJ2YWJsZTxTdHJlYW1NZXNzYWdlW10+O1xuICBlbmFibGVkTWVzc2FnZUFjdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIGlzRW1wdHkgPSB0cnVlO1xuICBuZXdNZXNzYWdlQ291bnRXaGlsZUJlaW5nU2Nyb2xsZWQgPSAwO1xuICBpc1VzZXJTY3JvbGxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZ3JvdXBTdHlsZXM6IEdyb3VwU3R5bGVbXSA9IFtdO1xuICBpc05leHRNZXNzYWdlT25TZXBhcmF0ZURhdGU6IGJvb2xlYW5bXSA9IFtdO1xuICBsYXN0U2VudE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwYXJlbnRNZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBoaWdobGlnaHRlZE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgc2Nyb2xsRW5kVGltZW91dDogYW55O1xuICBsYXN0UmVhZE1lc3NhZ2VJZD86IHN0cmluZztcbiAgaXNVbnJlYWROb3RpZmljYXRpb25WaXNpYmxlID0gdHJ1ZTtcbiAgZmlyc3RVbnJlYWRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIHVucmVhZENvdW50PzogbnVtYmVyO1xuICBpc0p1bXBpbmdUb0xhdGVzdFVucmVhZE1lc3NhZ2UgPSBmYWxzZTtcbiAgaXNKdW1wVG9MYXRlc3RCdXR0b25WaXNpYmxlID0gdHJ1ZTtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJylcbiAgcHJpdmF0ZSBzY3JvbGxDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncGFyZW50TWVzc2FnZUVsZW1lbnQnKVxuICBwcml2YXRlIHBhcmVudE1lc3NhZ2VFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgbGF0ZXN0TWVzc2FnZTogeyBpZDogc3RyaW5nOyBjcmVhdGVkX2F0OiBEYXRlIH0gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGFzTmV3TWVzc2FnZXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY29udGFpbmVySGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb2xkZXN0TWVzc2FnZTogeyBpZDogc3RyaW5nOyBjcmVhdGVkX2F0OiBEYXRlIH0gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb2xkZXJNYXNzYWdlc0xvYWRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc05ld01lc3NhZ2VTZW50QnlVc2VyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgbmV3TWVzc2FnZVN1YnNjcmlwdGlvbjogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHByZXZTY3JvbGxUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSB1c2Vyc1R5cGluZ0luQ2hhbm5lbCQhOiBPYnNlcnZhYmxlPFxuICAgIFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdXG4gID47XG4gIHByaXZhdGUgdXNlcnNUeXBpbmdJblRocmVhZCQhOiBPYnNlcnZhYmxlPFxuICAgIFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdXG4gID47XG4gIHByaXZhdGUgaXNMYXRlc3RNZXNzYWdlSW5MaXN0ID0gdHJ1ZTtcbiAgcHJpdmF0ZSBjaGFubmVsSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcGFyc2VkRGF0ZXMgPSBuZXcgTWFwPERhdGUsIHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjaGVja0lmVW5yZWFkTm90aWZpY2F0aW9uSXNWaXNpYmxlVGltZW91dD86IGFueTtcbiAgcHJpdmF0ZSBqdW1wVG9MYXRlc3RCdXR0b25WaXNpYmlsaXR5VGltZW91dD86IGFueTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgY2xhc3MoKSB7XG4gICAgcmV0dXJuIGBzdHItY2hhdC1hbmd1bGFyX19tYWluLXBhbmVsLWlubmVyIHN0ci1jaGF0LWFuZ3VsYXJfX21lc3NhZ2UtbGlzdC1ob3N0IHN0ci1jaGF0X19tYWluLXBhbmVsLWlubmVyICR7XG4gICAgICB0aGlzLmlzRW1wdHkgPyAnc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1saXN0LWhvc3QtLWVtcHR5JyA6ICcnXG4gICAgfWA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlUGFyc2VyOiBEYXRlUGFyc2VyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVzc2FnZUFjdGlvbnNTZXJ2aWNlOiBNZXNzYWdlQWN0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy51c2Vyc1R5cGluZ0luQ2hhbm5lbCQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLnVzZXJzVHlwaW5nSW5DaGFubmVsJDtcbiAgICB0aGlzLnVzZXJzVHlwaW5nSW5UaHJlYWQkID0gdGhpcy5jaGFubmVsU2VydmljZS51c2Vyc1R5cGluZ0luVGhyZWFkJDtcbiAgfVxuXG4gIG1lc3NhZ2VOb3RpZmljYXRpb25KdW1wQ2xpY2tlZCA9ICgpID0+IHtcbiAgICB0aGlzLmp1bXBUb0ZpcnN0VW5yZWFkTWVzc2FnZSgpO1xuICAgIHRoaXMuaXNVbnJlYWROb3RpZmljYXRpb25WaXNpYmxlID0gZmFsc2U7XG4gIH07XG5cbiAgbWVzc2FnZU5vdGlmaWNhdGlvbkRpc21pc3NDbGlja2VkID0gKCkgPT4ge1xuICAgIHRoaXMuaXNVbnJlYWROb3RpZmljYXRpb25WaXNpYmxlID0gZmFsc2U7XG4gIH07XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LmxvZ2dlcj8uKFxuICAgICAgICAgICdpbmZvJyxcbiAgICAgICAgICBgJHtjaGFubmVsPy5jaWQgfHwgJ3VuZGVmaW5lZCd9IHNlbGVjdGVkYCxcbiAgICAgICAgICB7IHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCB9XG4gICAgICAgICk7XG4gICAgICAgIGxldCBpc05ld0NoYW5uZWwgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY2hhbm5lbElkICE9PSBjaGFubmVsPy5pZCkge1xuICAgICAgICAgIGlzTmV3Q2hhbm5lbCA9IHRydWU7XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tJZlVucmVhZE5vdGlmaWNhdGlvbklzVmlzaWJsZVRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNoZWNrSWZVbnJlYWROb3RpZmljYXRpb25Jc1Zpc2libGVUaW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc1VucmVhZE5vdGlmaWNhdGlvblZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlPy5jaGF0Q2xpZW50Py5sb2dnZXI/LihcbiAgICAgICAgICAgICdpbmZvJyxcbiAgICAgICAgICAgIGBuZXcgY2hhbm5lbCBpcyBkaWZmZXJlbnQgZnJvbSBwcmV2IGNoYW5uZWwsIHJlc2V0aW5nIHNjcm9sbCBzdGF0ZWAsXG4gICAgICAgICAgICB7IHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnBhcnNlZERhdGVzID0gbmV3IE1hcCgpO1xuICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICAgIHRoaXMuY2hhbm5lbElkID0gY2hhbm5lbD8uaWQ7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ21haW4nKSB7XG4gICAgICAgICAgY29uc3QgbGFzdFJlYWRNZXNzYWdlSWQgPVxuICAgICAgICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsTGFzdFJlYWRNZXNzYWdlSWQ7XG4gICAgICAgICAgY29uc3QgdW5yZWFkQ291bnQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWxVbnJlYWRDb3VudDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBsYXN0UmVhZE1lc3NhZ2VJZCAhPT0gdGhpcy5sYXN0UmVhZE1lc3NhZ2VJZCB8fFxuICAgICAgICAgICAgdW5yZWFkQ291bnQgIT09IHRoaXMudW5yZWFkQ291bnRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFJlYWRNZXNzYWdlSWQgPSBsYXN0UmVhZE1lc3NhZ2VJZDtcbiAgICAgICAgICAgIHRoaXMudW5yZWFkQ291bnQgPSB1bnJlYWRDb3VudCB8fCAwO1xuICAgICAgICAgICAgaWYgKGlzTmV3Q2hhbm5lbCAmJiB0aGlzLmxhc3RSZWFkTWVzc2FnZUlkKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wZW5NZXNzYWdlTGlzdEF0ID09PSAnbGFzdC1yZWFkLW1lc3NhZ2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5qdW1wVG9GaXJzdFVucmVhZE1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBXYWl0IHRpbGwgbWVzc2FnZXMgYW5kIHRoZSB1bnJlYWQgYmFubmVyIGlzIHJlbmRlcmVkXG4gICAgICAgICAgICAgICAgLy8gSWYgdW5yZWFkIGJhbm5lciBpc24ndCB2aXNpYmxlIG9uIHRoZSBzY3JlZW4sIHdlIGRpc3BsYXkgdGhlIHVucmVhZCBub3RpZmljYWlvblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgYmFubmVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgICAgICAgICAnc3RyZWFtLWNoYXQtbmV3LW1lc3NhZ2UtaW5kaWNhdG9yJ1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIWJhbm5lckVsZW1lbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgYmFubmVyRWxlbWVudD8ub2Zmc2V0VG9wIDxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsSGVpZ2h0IC1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVW5yZWFkTm90aWZpY2F0aW9uVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxhc3RSZWFkTWVzc2FnZUlkKSB7XG4gICAgICAgICAgdGhpcy5sYXN0UmVhZE1lc3NhZ2VJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLnVucmVhZENvdW50ID0gMDtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYXBhYmlsaXRlcyA9IGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICAgIGNvbnN0IGNhcGFiaWxpdGVzU3RyaW5nID0gWy4uLihjYXBhYmlsaXRlcyB8fCBbXSldLnNvcnQoKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgZW5hYmxlZEFjdGlvbnNTdHJpbmcgPSBbLi4uKHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zIHx8IFtdKV1cbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmpvaW4oJycpO1xuICAgICAgICBpZiAoY2FwYWJpbGl0ZXNTdHJpbmcgIT09IGVuYWJsZWRBY3Rpb25zU3RyaW5nKSB7XG4gICAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMgPSBjYXBhYmlsaXRlcyB8fCBbXTtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5ld01lc3NhZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmIChjaGFubmVsKSB7XG4gICAgICAgICAgdGhpcy5uZXdNZXNzYWdlU3Vic2NyaXB0aW9uID0gY2hhbm5lbC5vbignbWVzc2FnZS5uZXcnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIElmIHdlIGRpc3BsYXkgbWFpbiBjaGFubmVsIG1lc3NhZ2VzIGFuZCB3ZSdyZSBzd2l0Y2hlZCB0byBhbiBvbGRlciBtZXNzYWdlIHNldCAtPiB1c2UgbWVzc2FnZS5uZXcgZXZlbnQgdG8gdXBkYXRlIHVucmVhZCBjb3VudCBhbmQgZGV0ZWN0IG5ldyBtZXNzYWdlcyBzZW50IGJ5IGN1cnJlbnQgdXNlclxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhZXZlbnQubWVzc2FnZSB8fFxuICAgICAgICAgICAgICBjaGFubmVsLnN0YXRlLm1lc3NhZ2VzID09PSBjaGFubmVsLnN0YXRlLmxhdGVzdE1lc3NhZ2VzIHx8XG4gICAgICAgICAgICAgIHRoaXMubW9kZSA9PT0gJ3RocmVhZCdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm5ld01lc3NhZ2VSZWNlaXZlZCh7XG4gICAgICAgICAgICAgIGlkOiBldmVudC5tZXNzYWdlLmlkLFxuICAgICAgICAgICAgICB1c2VyOiBldmVudC5tZXNzYWdlLnVzZXIsXG4gICAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKGV2ZW50Lm1lc3NhZ2UuY3JlYXRlZF9hdCB8fCAnJyksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyQuc3Vic2NyaWJlKChhY3Rpb25zKSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb25zICE9PSB0aGlzLmN1c3RvbU1lc3NhZ2VBY3Rpb25zKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21NZXNzYWdlQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlUGFyZW50TWVzc2FnZSQuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBtZXNzYWdlICYmXG4gICAgICAgICAgdGhpcy5wYXJlbnRNZXNzYWdlICYmXG4gICAgICAgICAgbWVzc2FnZS5pZCAhPT0gdGhpcy5wYXJlbnRNZXNzYWdlLmlkICYmXG4gICAgICAgICAgdGhpcy5tb2RlID09PSAndGhyZWFkJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnRNZXNzYWdlID09PSBtZXNzYWdlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVzc2FnZVRlbXBsYXRlJC5zdWJzY3JpYmUoKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VUZW1wbGF0ZSA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZXNzYWdlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5kYXRlU2VwYXJhdG9yVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VzdG9tRGF0ZVNlcGFyYXRvclRlbXBsYXRlID09PSB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmN1c3RvbURhdGVTZXBhcmF0b3JUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5uZXdNZXNzYWdlc0luZGljYXRvclRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmN1c3RvbW5ld01lc3NhZ2VzSW5kaWNhdG9yVGVtcGxhdGUgPT09IHRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VzdG9tbmV3TWVzc2FnZXNJbmRpY2F0b3JUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5uZXdNZXNzYWdlc05vdGlmaWNhdGlvblRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmN1c3RvbW5ld01lc3NhZ2VzTm90aWZpY2F0aW9uVGVtcGxhdGUgPT09IHRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VzdG9tbmV3TWVzc2FnZXNOb3RpZmljYXRpb25UZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS50eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy50eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZSA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy50eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuanVtcFRvTWVzc2FnZSRcbiAgICAgICAgLnBpcGUoZmlsdGVyKChjb25maWcpID0+ICEhY29uZmlnLmlkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgbGV0IG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdtYWluJykge1xuICAgICAgICAgICAgbWVzc2FnZUlkID0gY29uZmlnLnBhcmVudElkIHx8IGNvbmZpZy5pZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5wYXJlbnRJZCkge1xuICAgICAgICAgICAgbWVzc2FnZUlkID0gY29uZmlnLmlkO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LmxvZ2dlcj8uKFxuICAgICAgICAgICAgJ2luZm8nLFxuICAgICAgICAgICAgYEp1bXBpbmcgdG8gJHttZXNzYWdlSWQgfHwgJyd9YCxcbiAgICAgICAgICAgIHsgdGFnczogYG1lc3NhZ2UgbGlzdCAke3RoaXMubW9kZX1gIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChtZXNzYWdlSWQpIHtcbiAgICAgICAgICAgIGlmIChtZXNzYWdlSWQgPT09ICdsYXRlc3QnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9MYXRlc3RNZXNzYWdlKCk7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAodGhpcy5pc0p1bXBpbmdUb0xhdGVzdFVucmVhZE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbE1lc3NhZ2VJbnRvVmlldyhcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RVbnJlYWRNZXNzYWdlSWQgfHwgbWVzc2FnZUlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodGVkTWVzc2FnZUlkID1cbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RVbnJlYWRNZXNzYWdlSWQgfHwgbWVzc2FnZUlkO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsTWVzc2FnZUludG9WaWV3KG1lc3NhZ2VJZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRlZE1lc3NhZ2VJZCA9IG1lc3NhZ2VJZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmVtcHR5TWFpbk1lc3NhZ2VMaXN0UGxhY2Vob2xkZXIkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNDaGFuZ2VkID0gdGhpcy5lbXB0eU1haW5NZXNzYWdlTGlzdFRlbXBsYXRlICE9PSB0ZW1wbGF0ZTtcbiAgICAgICAgICB0aGlzLmVtcHR5TWFpbk1lc3NhZ2VMaXN0VGVtcGxhdGUgPSB0ZW1wbGF0ZSB8fCBudWxsO1xuICAgICAgICAgIGlmIChpc0NoYW5nZWQgJiYgdGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuZW1wdHlUaHJlYWRNZXNzYWdlTGlzdFBsYWNlaG9sZGVyJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQ2hhbmdlZCA9IHRoaXMuZW1wdHlUaHJlYWRNZXNzYWdlTGlzdFRlbXBsYXRlICE9PSB0ZW1wbGF0ZTtcbiAgICAgICAgICB0aGlzLmVtcHR5VGhyZWFkTWVzc2FnZUxpc3RUZW1wbGF0ZSA9IHRlbXBsYXRlIHx8IG51bGw7XG4gICAgICAgICAgaWYgKGlzQ2hhbmdlZCAmJiB0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnNldE1lc3NhZ2VzJCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm1vZGUgfHwgY2hhbmdlcy5kaXJlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2V0TWVzc2FnZXMkKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRpcmVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuanVtcFRvTGF0ZXN0TWVzc2FnZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5jdXN0b21NZXNzYWdlQWN0aW9ucykge1xuICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyQubmV4dCh0aGlzLmN1c3RvbU1lc3NhZ2VBY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1ZpZXdJbml0ZWQgPSB0cnVlO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT5cbiAgICAgICAgdGhpcy5zY3JvbGxlZCgpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVkTWVzc2FnZUlkKSB7XG4gICAgICAvLyBUdXJuIG9mZiBwcm9ncmFtYXRpYyBzY3JvbGwgYWRqdXN0bWVudHMgd2hpbGUganVtcCB0byBtZXNzYWdlIGlzIGluIHByb2dyZXNzXG4gICAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gZmFsc2U7XG4gICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAndG9wLXRvLWJvdHRvbScpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyAmJlxuICAgICAgICAodGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyIHx8ICF0aGlzLmlzVXNlclNjcm9sbGVkKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0XG4gICAgICAgICAgPyB0aGlzLnNjcm9sbFRvVG9wKClcbiAgICAgICAgICA6IHRoaXMuanVtcFRvTGF0ZXN0TWVzc2FnZSgpO1xuICAgICAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmhhc05ld01lc3NhZ2VzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1VzZXJTY3JvbGxlZCB8fCB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIpIHtcbiAgICAgICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LmxvZ2dlcj8uKFxuICAgICAgICAgICAgJ2luZm8nLFxuICAgICAgICAgICAgYFVzZXIgaGFzIG5ldyBtZXNzYWdlcywgYW5kIG5vdCBzY3JvbGxlZCBvciBzZW50IG5ldyBtZXNzYWdlcywgdGhlcmVmb3JlIHdlICR7XG4gICAgICAgICAgICAgIHRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0ID8gJ3Njcm9sbCcgOiAnanVtcCdcbiAgICAgICAgICAgIH0gdG8gbGF0ZXN0IG1lc3NhZ2VgLFxuICAgICAgICAgICAgeyB0YWdzOiBgbWVzc2FnZSBsaXN0ICR7dGhpcy5tb2RlfWAgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3RcbiAgICAgICAgICAgID8gdGhpcy5zY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgICAgICA6IHRoaXMuanVtcFRvTGF0ZXN0TWVzc2FnZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkKSB7XG4gICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAgICAgJ2luZm8nLFxuICAgICAgICAgIGBPbGRlciBtZXNzYWdlcyBhcmUgbG9hZGVkLCB3ZSBwcmVzZXJ2ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uYCxcbiAgICAgICAgICB7IHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJlc2VydmVTY3JvbGxiYXJQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKSAhPT0gJ2JvdHRvbScgJiZcbiAgICAgICAgIXRoaXMuaXNVc2VyU2Nyb2xsZWQgJiZcbiAgICAgICAgIXRoaXMuaGlnaGxpZ2h0ZWRNZXNzYWdlSWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LmxvZ2dlcj8uKFxuICAgICAgICAgICdpbmZvJyxcbiAgICAgICAgICBgQ29udGFpbmVyIGdyZXcgYW5kIHVzZXIgZGlkbid0IHNjcm9sbCB0aGVyZWZvcmUgd2UgJHtcbiAgICAgICAgICAgIHRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0ID8gJ3Njcm9sbCcgOiAnanVtcCdcbiAgICAgICAgICB9IHRvIGxhdGVzdCBtZXNzYWdlYCxcbiAgICAgICAgICB7IHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0XG4gICAgICAgICAgPyB0aGlzLnNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgICA6IHRoaXMuanVtcFRvTGF0ZXN0TWVzc2FnZSgpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMubmV3TWVzc2FnZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5zY3JvbGxFbmRUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxFbmRUaW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2hlY2tJZlVucmVhZE5vdGlmaWNhdGlvbklzVmlzaWJsZVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNoZWNrSWZVbnJlYWROb3RpZmljYXRpb25Jc1Zpc2libGVUaW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuanVtcFRvTGF0ZXN0QnV0dG9uVmlzaWJpbGl0eVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmp1bXBUb0xhdGVzdEJ1dHRvblZpc2liaWxpdHlUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxuICB0cmFja0J5TWVzc2FnZUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuXG4gIHRyYWNrQnlVc2VySWQoaW5kZXg6IG51bWJlciwgdXNlcjogVXNlclJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHVzZXIuaWQ7XG4gIH1cblxuICBqdW1wVG9MYXRlc3RNZXNzYWdlKCkge1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5qdW1wVG9NZXNzYWdlKFxuICAgICAgJ2xhdGVzdCcsXG4gICAgICB0aGlzLm1vZGUgPT09ICd0aHJlYWQnID8gdGhpcy5wYXJlbnRNZXNzYWdlPy5pZCA6IHVuZGVmaW5lZFxuICAgICk7XG4gIH1cblxuICBzY3JvbGxUb0JvdHRvbSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCArIDAuMTtcbiAgICB0aGlzLmZvcmNlUmVwYWludCgpO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICB9XG5cbiAgc2Nyb2xsZWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPT09XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LmxvZ2dlcj8uKFxuICAgICAgJ2luZm8nLFxuICAgICAgYFNjcm9sbGVkIC0gc2Nyb2xsIHBvc2l0aW9uOiAke3Njcm9sbFBvc2l0aW9ufSwgY29udGFpbmVyIGhlaWdodDogJHt0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodH1gLFxuICAgICAgeyB0YWdzOiBgbWVzc2FnZSBsaXN0ICR7dGhpcy5tb2RlfWAgfVxuICAgICk7XG5cbiAgICBjb25zdCBpc1VzZXJTY3JvbGxlZCA9XG4gICAgICAodGhpcy5kaXJlY3Rpb24gPT09ICdib3R0b20tdG8tdG9wJ1xuICAgICAgICA/IHNjcm9sbFBvc2l0aW9uICE9PSAnYm90dG9tJ1xuICAgICAgICA6IHNjcm9sbFBvc2l0aW9uICE9PSAndG9wJykgfHwgIXRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0O1xuICAgIGlmICh0aGlzLmlzVXNlclNjcm9sbGVkICE9PSBpc1VzZXJTY3JvbGxlZCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc1VzZXJTY3JvbGxlZCA9IGlzVXNlclNjcm9sbGVkO1xuICAgICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWQpIHtcbiAgICAgICAgICB0aGlzLm5ld01lc3NhZ2VDb3VudFdoaWxlQmVpbmdTY3JvbGxlZCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaWRlSnVtcFRvTGF0ZXN0QnV0dG9uRHVyaW5nU2Nyb2xsKSB7XG4gICAgICBpZiAodGhpcy5pc0p1bXBUb0xhdGVzdEJ1dHRvblZpc2libGUpIHtcbiAgICAgICAgdGhpcy5pc0p1bXBUb0xhdGVzdEJ1dHRvblZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5qdW1wVG9MYXRlc3RCdXR0b25WaXNpYmlsaXR5VGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5qdW1wVG9MYXRlc3RCdXR0b25WaXNpYmlsaXR5VGltZW91dCk7XG4gICAgICB9XG4gICAgICB0aGlzLmp1bXBUb0xhdGVzdEJ1dHRvblZpc2liaWxpdHlUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzVXNlclNjcm9sbGVkKSB7XG4gICAgICAgICAgdGhpcy5pc0p1bXBUb0xhdGVzdEJ1dHRvblZpc2libGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuanVtcFRvTGF0ZXN0QnV0dG9uVmlzaWJpbGl0eVRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkTG9hZE1vcmVNZXNzYWdlcyhzY3JvbGxQb3NpdGlvbikpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIGxldCBkaXJlY3Rpb246ICduZXdlcicgfCAnb2xkZXInO1xuICAgICAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICd0b3AtdG8tYm90dG9tJykge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IHNjcm9sbFBvc2l0aW9uID09PSAndG9wJyA/ICduZXdlcicgOiAnb2xkZXInO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IHNjcm9sbFBvc2l0aW9uID09PSAndG9wJyA/ICdvbGRlcicgOiAnbmV3ZXInO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgICAgdGhpcy5tb2RlID09PSAnbWFpbidcbiAgICAgICAgICAgID8gdGhpcy5jaGFubmVsU2VydmljZS5sb2FkTW9yZU1lc3NhZ2VzKGRpcmVjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5jaGFubmVsU2VydmljZS5sb2FkTW9yZVRocmVhZFJlcGxpZXMoZGlyZWN0aW9uKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgICBgRGlzcGxheWluZyBsb2FkaW5nIGluZGljYXRvcmAsXG4gICAgICAgICAgICB7IHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5wcmV2U2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A7XG4gIH1cblxuICBqdW1wVG9GaXJzdFVucmVhZE1lc3NhZ2UoKSB7XG4gICAgaWYgKCF0aGlzLmxhc3RSZWFkTWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNKdW1waW5nVG9MYXRlc3RVbnJlYWRNZXNzYWdlID0gdHJ1ZTtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UuanVtcFRvTWVzc2FnZSh0aGlzLmxhc3RSZWFkTWVzc2FnZUlkKTtcbiAgfVxuXG4gIGdldFR5cGluZ0luZGljYXRvckNvbnRleHQoKTogVHlwaW5nSW5kaWNhdG9yQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJzVHlwaW5nJDogdGhpcy51c2Vyc1R5cGluZyQsXG4gICAgfTtcbiAgfVxuXG4gIGdldFR5cGluZ0luZGljYXRvclRleHQodXNlcnM6IFVzZXJSZXNwb25zZVtdKSB7XG4gICAgY29uc3QgdGV4dCA9IGxpc3RVc2Vycyh1c2Vycyk7XG5cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGlzU2VudEJ5Q3VycmVudFVzZXIobWVzc2FnZT86IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2UudXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyPy5pZDtcbiAgfVxuXG4gIHBhcnNlRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMucGFyc2VkRGF0ZXMuaGFzKGRhdGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZWREYXRlcy5nZXQoZGF0ZSk7XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZERhdGUgPSB0aGlzLmRhdGVQYXJzZXIucGFyc2VEYXRlKGRhdGUpO1xuICAgIHRoaXMucGFyc2VkRGF0ZXMuc2V0KGRhdGUsIHBhcnNlZERhdGUpO1xuICAgIHJldHVybiBwYXJzZWREYXRlO1xuICB9XG5cbiAgZ2V0IHJlcGx5Q291bnRQYXJhbSgpIHtcbiAgICByZXR1cm4geyByZXBseUNvdW50OiB0aGlzLnBhcmVudE1lc3NhZ2U/LnJlcGx5X2NvdW50IH07XG4gIH1cblxuICBnZXQgZW1wdHlMaXN0VGVtcGxhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ21haW4nXG4gICAgICA/IHRoaXMuZW1wdHlNYWluTWVzc2FnZUxpc3RUZW1wbGF0ZVxuICAgICAgOiB0aGlzLmVtcHR5VGhyZWFkTWVzc2FnZUxpc3RUZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlc2VydmVTY3JvbGxiYXJQb3NpdGlvbigpIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAodGhpcy5wcmV2U2Nyb2xsVG9wIHx8IDApICtcbiAgICAgICh0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAtIHRoaXMuY29udGFpbmVySGVpZ2h0ISk7XG4gIH1cblxuICBwcml2YXRlIGZvcmNlUmVwYWludCgpIHtcbiAgICAvLyBTb2x2ZXMgdGhlIGlzc3VlIG9mIGVtcHR5IHNjcmVlbiBvbiBTYWZhcmkgd2hlbiBzY3JvbGxpbmdcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7IC8vIG5vIG5lZWQgdG8gc3RvcmUgdGhpcyBhbnl3aGVyZSwgdGhlIHJlZmVyZW5jZSBpcyBlbm91Z2hcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Nyb2xsUG9zaXRpb24oKTogJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnIHtcbiAgICBsZXQgcG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgfCAnbWlkZGxlJyA9ICdtaWRkbGUnO1xuICAgIGlmIChcbiAgICAgIE1hdGguZmxvb3IodGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3ApIDw9XG4gICAgICAgICh0aGlzLnBhcmVudE1lc3NhZ2VFbGVtZW50Py5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCB8fCAwKSAmJlxuICAgICAgKHRoaXMucHJldlNjcm9sbFRvcCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHRoaXMucHJldlNjcm9sbFRvcCA+XG4gICAgICAgICAgKHRoaXMucGFyZW50TWVzc2FnZUVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDApKVxuICAgICkge1xuICAgICAgcG9zaXRpb24gPSAndG9wJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgTWF0aC5jZWlsKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wKSArXG4gICAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ID49XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICkge1xuICAgICAgcG9zaXRpb24gPSAnYm90dG9tJztcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBwcml2YXRlIHNob3VsZExvYWRNb3JlTWVzc2FnZXMoc2Nyb2xsUG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgfCAnbWlkZGxlJykge1xuICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiAhPT0gJ21pZGRsZScgJiYgIXRoaXMuaGlnaGxpZ2h0ZWRNZXNzYWdlSWQ7XG4gIH1cblxuICBwcml2YXRlIHNldE1lc3NhZ2VzJCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VzJCA9IChcbiAgICAgIHRoaXMubW9kZSA9PT0gJ21haW4nXG4gICAgICAgID8gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsTWVzc2FnZXMkXG4gICAgICAgIDogdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVUaHJlYWRNZXNzYWdlcyRcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LmxvZ2dlcj8uKFxuICAgICAgICAgICAgJ2luZm8nLFxuICAgICAgICAgICAgYEVtcHR5IG1lc3NhZ2VzIGFycmF5LCByZXNldGluZyBzY3JvbGwgc3RhdGVgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0YWdzOiBgbWVzc2FnZSBsaXN0ICR7dGhpcy5tb2RlfWAsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSkge1xuICAgICAgICAgIC8vIGNkUmVmLmRldGVjdENoYW5nZXMoKSBpc24ndCBlbm91Z2ggaGVyZSwgdGVzdCB3aWxsIGZhaWxcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmlzRW1wdHkgPSBmYWxzZSksIDApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyPy4oXG4gICAgICAgICAgJ2luZm8nLFxuICAgICAgICAgIGBSZWNlaXZlZCBvbmUgb3IgbW9yZSBtZXNzYWdlc2AsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGFnczogYG1lc3NhZ2UgbGlzdCAke3RoaXMubW9kZX1gLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY3VycmVudExhdGVzdE1lc3NhZ2VJblN0YXRlID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHRoaXMubmV3TWVzc2FnZVJlY2VpdmVkKGN1cnJlbnRMYXRlc3RNZXNzYWdlSW5TdGF0ZSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPbGRlc3RNZXNzYWdlID0gbWVzc2FnZXNbMF07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5vbGRlc3RNZXNzYWdlIHx8XG4gICAgICAgICAgIW1lc3NhZ2VzLmZpbmQoKG0pID0+IG0uaWQgPT09IHRoaXMub2xkZXN0TWVzc2FnZSEuaWQpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZSA9IGN1cnJlbnRPbGRlc3RNZXNzYWdlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZS5jcmVhdGVkX2F0LmdldFRpbWUoKSA+XG4gICAgICAgICAgY3VycmVudE9sZGVzdE1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRUaW1lKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlID0gY3VycmVudE9sZGVzdE1lc3NhZ2U7XG4gICAgICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmlzSnVtcGluZ1RvTGF0ZXN0VW5yZWFkTWVzc2FnZSAmJlxuICAgICAgICAgICF0aGlzLmZpcnN0VW5yZWFkTWVzc2FnZUlkICYmXG4gICAgICAgICAgdGhpcy5sYXN0UmVhZE1lc3NhZ2VJZFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBsYXN0UmVhZEluZGV4ID0gbWVzc2FnZXMuZmluZEluZGV4KFxuICAgICAgICAgICAgKG0pID0+IG0uaWQgPT09IHRoaXMubGFzdFJlYWRNZXNzYWdlSWRcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZmlyc3RVbnJlYWRNZXNzYWdlSWQgPVxuICAgICAgICAgICAgbWVzc2FnZXNbbGFzdFJlYWRJbmRleCArIDFdPy5pZCB8fCB0aGlzLmxhc3RSZWFkTWVzc2FnZUlkO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcChcbiAgICAgICAgKG1lc3NhZ2VzKSA9PlxuICAgICAgICAgICh0aGlzLmxhc3RTZW50TWVzc2FnZUlkID0gWy4uLm1lc3NhZ2VzXVxuICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgLmZpbmQoXG4gICAgICAgICAgICAgIChtKSA9PlxuICAgICAgICAgICAgICAgIG0udXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8udXNlcj8uaWQgJiZcbiAgICAgICAgICAgICAgICBtLnN0YXR1cyAhPT0gJ3NlbmRpbmcnXG4gICAgICAgICAgICApPy5pZClcbiAgICAgICksXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0ID1cbiAgICAgICAgICAhdGhpcy5sYXRlc3RNZXNzYWdlIHx8XG4gICAgICAgICAgbWVzc2FnZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV0uaWQgPT09IHRoaXMubGF0ZXN0TWVzc2FnZS5pZCB8fFxuICAgICAgICAgIHRoaXMubW9kZSA9PT0gJ3RocmVhZCc7XG4gICAgICAgIGlmICghdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3QpIHtcbiAgICAgICAgICB0aGlzLmlzVXNlclNjcm9sbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAoKG1lc3NhZ2VzKSA9PlxuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9PT0gJ2JvdHRvbS10by10b3AnID8gbWVzc2FnZXMgOiBbLi4ubWVzc2FnZXNdLnJldmVyc2UoKVxuICAgICAgKSxcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5ncm91cFN0eWxlcyA9IG1lc3NhZ2VzLm1hcCgobSwgaSkgPT5cbiAgICAgICAgICBnZXRHcm91cFN0eWxlcyhtLCBtZXNzYWdlc1tpIC0gMV0sIG1lc3NhZ2VzW2kgKyAxXSwge1xuICAgICAgICAgICAgbGFzdFJlYWRNZXNzYWdlSWQ6IHRoaXMubGFzdFJlYWRNZXNzYWdlSWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pc05leHRNZXNzYWdlT25TZXBhcmF0ZURhdGUgPSBtZXNzYWdlcy5tYXAoKG0sIGkpID0+XG4gICAgICAgICAgdGhpcy5jaGVja0lmT25TZXBhcmF0ZURhdGVzKG0sIG1lc3NhZ2VzW2kgKyAxXSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTY3JvbGxTdGF0ZSgpIHtcbiAgICB0aGlzLmlzRW1wdHkgPSB0cnVlO1xuICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gdHJ1ZTtcbiAgICB0aGlzLmlzVXNlclNjcm9sbGVkID0gZmFsc2U7XG4gICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5vbGRlc3RNZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubmV3TWVzc2FnZUNvdW50V2hpbGVCZWluZ1Njcm9sbGVkID0gMDtcbiAgICB0aGlzLnByZXZTY3JvbGxUb3AgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0ID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHVzZXJzVHlwaW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAndGhyZWFkJ1xuICAgICAgPyB0aGlzLnVzZXJzVHlwaW5nSW5UaHJlYWQkXG4gICAgICA6IHRoaXMudXNlcnNUeXBpbmdJbkNoYW5uZWwkO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxNZXNzYWdlSW50b1ZpZXcobWVzc2FnZUlkOiBzdHJpbmcsIHdpdGhSZXRyeSA9IHRydWUpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobWVzc2FnZUlkKTtcbiAgICBpZiAoIWVsZW1lbnQgJiYgd2l0aFJldHJ5KSB7XG4gICAgICAvLyBJZiB0aGUgbWVzc2FnZSB3YXMgbmV3bHkgaW5zZXJ0ZWQgaW50byBhY3RpdmVDaGFubmVsTWVzc2FnZXMkLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHJlbmRlcmVkIGFmdGVyIHRoZSBjdXJyZW50IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgLT4gd2FpdCBmb3IgdGhpcyBjeWNsZSB0byBjb21wbGV0ZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjcm9sbE1lc3NhZ2VJbnRvVmlldyhtZXNzYWdlSWQsIGZhbHNlKSk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50KSB7XG4gICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgICAgfSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZE1lc3NhZ2VJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5maXJzdFVucmVhZE1lc3NhZ2VJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pc0p1bXBpbmdUb0xhdGVzdFVucmVhZE1lc3NhZ2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvTGF0ZXN0TWVzc2FnZSh3aXRoUmV0cnkgPSB0cnVlKSB7XG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubGF0ZXN0TWVzc2FnZSEuaWQpKSB7XG4gICAgICB0aGlzLmRpcmVjdGlvbiA9PT0gJ2JvdHRvbS10by10b3AnXG4gICAgICAgID8gdGhpcy5zY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgIDogdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgIH0gZWxzZSBpZiAod2l0aFJldHJ5KSB7XG4gICAgICAvLyBJZiB0aGUgbWVzc2FnZSB3YXMgbmV3bHkgaW5zZXJ0ZWQgaW50byBhY3RpdmVDaGFubmVsTWVzc2FnZXMkLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHJlbmRlcmVkIGFmdGVyIHRoZSBjdXJyZW50IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgLT4gd2FpdCBmb3IgdGhpcyBjeWNsZSB0byBjb21wbGV0ZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjcm9sbFRvTGF0ZXN0TWVzc2FnZShmYWxzZSksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmV3TWVzc2FnZVJlY2VpdmVkKG1lc3NhZ2U6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGNyZWF0ZWRfYXQ6IERhdGU7XG4gICAgdXNlcj86IHsgaWQ6IHN0cmluZyB9IHwgbnVsbDtcbiAgfSkge1xuICAgIGNvbnN0IGxhdGVzdE1lc3NhZ2VzID1cbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbD8uc3RhdGU/LmxhdGVzdE1lc3NhZ2VzO1xuICAgIGlmIChcbiAgICAgICF0aGlzLmxhdGVzdE1lc3NhZ2UgfHxcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZS5jcmVhdGVkX2F0Py5nZXRUaW1lKCkgPCBtZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0VGltZSgpIHx8XG4gICAgICAodGhpcy5tb2RlID09PSAnbWFpbicgJiZcbiAgICAgICAgbGF0ZXN0TWVzc2FnZXMgJiZcbiAgICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlICYmXG4gICAgICAgIGxhdGVzdE1lc3NhZ2VzW2xhdGVzdE1lc3NhZ2VzLmxlbmd0aCAtIDFdPy5pZCAhPT0gdGhpcy5sYXRlc3RNZXNzYWdlLmlkKVxuICAgICkge1xuICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py5sb2dnZXI/LihcbiAgICAgICAgJ2luZm8nLFxuICAgICAgICBgUmVjZWl2ZWQgbmV3IG1lc3NhZ2VgLFxuICAgICAgICB7IHRhZ3M6IGBtZXNzYWdlIGxpc3QgJHt0aGlzLm1vZGV9YCB9XG4gICAgICApO1xuICAgICAgY29uc3QgaXNOZXdDaGFubmVsID0gIXRoaXMubGF0ZXN0TWVzc2FnZTtcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlciA9XG4gICAgICAgIG1lc3NhZ2UudXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8udXNlcj8uaWQ7XG4gICAgICBpZiAodGhpcy5pc1VzZXJTY3JvbGxlZCkge1xuICAgICAgICB0aGlzLm5ld01lc3NhZ2VDb3VudFdoaWxlQmVpbmdTY3JvbGxlZCsrO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyICYmXG4gICAgICAgIHRoaXMudW5yZWFkQ291bnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAhaXNOZXdDaGFubmVsXG4gICAgICApIHtcbiAgICAgICAgdGhpcy51bnJlYWRDb3VudCsrO1xuICAgICAgfVxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0lmT25TZXBhcmF0ZURhdGVzKFxuICAgIG1lc3NhZ2U/OiBTdHJlYW1NZXNzYWdlLFxuICAgIG5leHRNZXNzYWdlPzogU3RyZWFtTWVzc2FnZVxuICApIHtcbiAgICBpZiAoIW1lc3NhZ2UgfHwgIW5leHRNZXNzYWdlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc09uU2VwYXJhdGVEYXRlKG1lc3NhZ2UuY3JlYXRlZF9hdCwgbmV4dE1lc3NhZ2UuY3JlYXRlZF9hdCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJcbiAgICBsYXN0UmVhZE1lc3NhZ2VJZCAmJlxuICAgIGlzVW5yZWFkTm90aWZpY2F0aW9uVmlzaWJsZSAmJlxuICAgIG9wZW5NZXNzYWdlTGlzdEF0ID09PSAnbGFzdC1tZXNzYWdlJyAmJlxuICAgIGRpc3BsYXlVbnJlYWRTZXBhcmF0b3JcbiAgXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICBjdXN0b21uZXdNZXNzYWdlc05vdGlmaWNhdGlvblRlbXBsYXRlIHx8XG4gICAgICAgIGRlZmF1bHRVbnJlYWRNZXNzYWdlc05vdGlmaWNhdGlvbjtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgdW5yZWFkQ291bnQ6IHVucmVhZENvdW50LFxuICAgICAgICBvbkRpc21pc3M6IG1lc3NhZ2VOb3RpZmljYXRpb25EaXNtaXNzQ2xpY2tlZCxcbiAgICAgICAgb25KdW1wOiBtZXNzYWdlTm90aWZpY2F0aW9uSnVtcENsaWNrZWRcbiAgICAgIH1cbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdFVucmVhZE1lc3NhZ2VzTm90aWZpY2F0aW9uXG4gIGxldC11bnJlYWRDb3VudD1cInVucmVhZENvdW50XCJcbiAgbGV0LW9uRGlzbWlzcz1cIm9uRGlzbWlzc1wiXG4gIGxldC1vbkp1bXA9XCJvbkp1bXBcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzdHItY2hhdF9fdW5yZWFkLW1lc3NhZ2VzLW5vdGlmaWNhdGlvblwiXG4gICAgZGF0YS10ZXN0aWQ9XCJ1bnJlYWQtbWVzc2FnZXMtbm90aWZpY2F0aW9uXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGRhdGEtdGVzdGlkPVwidW5yZWFkLW1lc3NhZ2VzLW5vdGlmaWNhdGlvbi1qdW1wLXRvLW1lc3NhZ2VcIlxuICAgICAgKGNsaWNrKT1cIm9uSnVtcCgpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgdW5yZWFkQ291bnQgPiAwICYmICFoaWRlVW5yZWFkQ291bnRGb3JOb3RpZmljYXRpb25BbmRJbmRpY2F0b3I7XG4gICAgICAgICAgZWxzZSBub1VucmVhZENvdW50XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgKHVucmVhZENvdW50ID09PSAxXG4gICAgICAgICAgICA/IFwic3RyZWFtQ2hhdC5cXHtcXHtjb3VudFxcfVxcfSB1bnJlYWQgbWVzc2FnZVwiXG4gICAgICAgICAgICA6IFwic3RyZWFtQ2hhdC5cXHtcXHtjb3VudFxcfVxcfSB1bnJlYWQgbWVzc2FnZXNcIlxuICAgICAgICAgICkgfCB0cmFuc2xhdGU6IHsgY291bnQ6IHVucmVhZENvdW50IH1cbiAgICAgICAgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub1VucmVhZENvdW50PlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuVW5yZWFkIG1lc3NhZ2VzXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgZGF0YS10ZXN0aWQ9XCJ1bnJlYWQtbWVzc2FnZXMtbm90aWZpY2F0aW9uLWRpc21pc3NcIlxuICAgICAgKGNsaWNrKT1cIm9uRGlzbWlzcygpXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXIgaWNvbj1cImNsb3NlXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPGRpdiAjc2Nyb2xsQ29udGFpbmVyIGRhdGEtdGVzdGlkPVwic2Nyb2xsLWNvbnRhaW5lclwiIGNsYXNzPVwic3RyLWNoYXRfX2xpc3RcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICdtYWluJyAmJiBpc0VtcHR5ICYmIGVtcHR5TGlzdFRlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5TGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3JldmVyc2UtaW5maW5pdGUtc2Nyb2xsIHN0ci1jaGF0X19tZXNzYWdlLWxpc3Qtc2Nyb2xsXCI+XG4gICAgPHVsXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X191bFwiXG4gICAgICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2Utb3B0aW9ucy1pbi1idWJibGVdPVwiXG4gICAgICAgIG1lc3NhZ2VPcHRpb25zVHJpZ2dlciA9PT0gJ21lc3NhZ2UtYnViYmxlJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8bGlcbiAgICAgICAgI3BhcmVudE1lc3NhZ2VFbGVtZW50XG4gICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3RocmVhZCcgJiYgcGFyZW50TWVzc2FnZVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicGFyZW50LW1lc3NhZ2VcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19wYXJlbnQtbWVzc2FnZS1saVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgbWVzc2FnZVRlbXBsYXRlQ29udGFpbmVyO1xuICAgICAgICAgICAgY29udGV4dDogeyBtZXNzYWdlOiBwYXJlbnRNZXNzYWdlLCBpbmRleDogJ3BhcmVudCcgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBkYXRhLXRlc3RpZD1cInJlcGx5LWNvdW50XCIgY2xhc3M9XCJzdHItY2hhdF9fdGhyZWFkLXN0YXJ0XCI+XG4gICAgICAgICAge3twYXJlbnRNZXNzYWdlPy5yZXBseV9jb3VudCA9PT0gMSA/ICgnc3RyZWFtQ2hhdC4xIHJlcGx5JyB8IHRyYW5zbGF0ZSkgOiAoJ3N0cmVhbUNoYXQue3sgcmVwbHlDb3VudCB9fVxuICAgICAgICAgIHJlcGxpZXMnIHwgdHJhbnNsYXRlOnJlcGx5Q291bnRQYXJhbSl9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ3RocmVhZCcgJiYgaXNFbXB0eSAmJiBlbXB0eUxpc3RUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlMaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHN0cmVhbS1sb2FkaW5nLWluZGljYXRvclxuICAgICAgICBkYXRhLXRlc3RpZD1cInRvcC1sb2FkaW5nLWluZGljYXRvclwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgaXNMb2FkaW5nICYmIGRpcmVjdGlvbiA9PT0gJ2JvdHRvbS10by10b3AnICYmIGRpc3BsYXlMb2FkaW5nSW5kaWNhdG9yXG4gICAgICAgIFwiXG4gICAgICA+PC9zdHJlYW0tbG9hZGluZy1pbmRpY2F0b3I+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZXMkIHwgYXN5bmMgYXMgbWVzc2FnZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXM7XG4gICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgbGV0IGlzRmlyc3QgPSBmaXJzdDtcbiAgICAgICAgICAgIGxldCBpc0xhc3QgPSBsYXN0O1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VJZFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGaXJzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIGRhdGVTZXBhcmF0b3I7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgZGF0ZTogbWVzc2FnZS5jcmVhdGVkX2F0LFxuICAgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZTogcGFyc2VEYXRlKG1lc3NhZ2UuY3JlYXRlZF9hdClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2xpIHN0ci1jaGF0X19saS0te3sgZ3JvdXBTdHlsZXNbaV0gfX1cIlxuICAgICAgICAgICAgaWQ9XCJ7eyBtZXNzYWdlLmlkIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgbWVzc2FnZVRlbXBsYXRlQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgbWVzc2FnZTogbWVzc2FnZSwgaW5kZXg6IGkgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKGxhc3RSZWFkTWVzc2FnZUlkID09PSBtZXNzYWdlPy5pZCAmJlxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ2JvdHRvbS10by10b3AnKSB8fFxuICAgICAgICAgICAgICAoZGlyZWN0aW9uID09PSAndG9wLXRvLWJvdHRvbScgJiZcbiAgICAgICAgICAgICAgICBsYXN0UmVhZE1lc3NhZ2VJZCA9PT0gbWVzc2FnZXNbaSArIDFdPy5pZClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGlzcGxheVVucmVhZFNlcGFyYXRvclwiXG4gICAgICAgICAgICAgIGlkPVwic3RyZWFtLWNoYXQtbmV3LW1lc3NhZ2UtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJuZXctbWVzc2FnZXMtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbGkgc3RyLWNoYXRfX3VucmVhZC1tZXNzYWdlcy1zZXBhcmF0b3Itd3JhcHBlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgY3VzdG9tbmV3TWVzc2FnZXNJbmRpY2F0b3JUZW1wbGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TmV3TWVzc2FnZXNJbmRpY2F0b3I7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHVucmVhZENvdW50OiB1bnJlYWRDb3VudCB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNOZXh0TWVzc2FnZU9uU2VwYXJhdGVEYXRlW2ldXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgZGF0ZVNlcGFyYXRvcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICBkYXRlOiBtZXNzYWdlc1tpICsgMV0uY3JlYXRlZF9hdCxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZERhdGU6IHBhcnNlRGF0ZShtZXNzYWdlc1tpICsgMV0uY3JlYXRlZF9hdClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8c3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYm90dG9tLWxvYWRpbmctaW5kaWNhdG9yXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBpc0xvYWRpbmcgJiYgZGlyZWN0aW9uID09PSAndG9wLXRvLWJvdHRvbScgJiYgZGlzcGxheUxvYWRpbmdJbmRpY2F0b3JcbiAgICAgICAgXCJcbiAgICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvcj5cbiAgICA8L3VsPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFR5cGluZ0luZGljYXRvciBsZXQtdXNlcnNUeXBpbmckPVwidXNlcnNUeXBpbmckXCI+XG4gICAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvbm8tYW55IC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiRhbnkodXNlcnNUeXBpbmckIHwgYXN5bmMpIGFzIHVzZXJzXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInVzZXJzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwidHlwaW5nLWluZGljYXRvclwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvciBzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvci0tdHlwaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90c1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwidHlwaW5nLXVzZXJzXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX3VzZXJzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICB1c2Vycy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgICA/IChcInN0cmVhbUNoYXQudXNlciBpcyB0eXBpbmdcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgdXNlcjogZ2V0VHlwaW5nSW5kaWNhdG9yVGV4dCh1c2VycykgfSlcbiAgICAgICAgICAgICAgICA6IChcInN0cmVhbUNoYXQudXNlcnMgYXJlIHR5cGluZ1wiXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyB1c2VyczogZ2V0VHlwaW5nSW5kaWNhdG9yVGV4dCh1c2VycykgfSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZSB8fCBkZWZhdWx0VHlwaW5nSW5kaWNhdG9yO1xuICAgICAgICBjb250ZXh0OiBnZXRUeXBpbmdJbmRpY2F0b3JDb250ZXh0KClcbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInN0ci1jaGF0X19qdW1wLXRvLWxhdGVzdC1tZXNzYWdlXCI+XG4gIDxidXR0b25cbiAgICBkYXRhLXRlc3RpZD1cInNjcm9sbC10by1sYXRlc3RcIlxuICAgICpuZ0lmPVwiaXNVc2VyU2Nyb2xsZWQgJiYgaXNKdW1wVG9MYXRlc3RCdXR0b25WaXNpYmxlXCJcbiAgICBjbGFzcz1cIlxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC10by1sYXRlc3RcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1zY3JvbGwtdG8tbGF0ZXN0LXJpZ2h0XG4gICAgICBzdHItY2hhdF9fY2lyY2xlLWZhYlxuICAgIFwiXG4gICAgKGtleXVwLmVudGVyKT1cImp1bXBUb0xhdGVzdE1lc3NhZ2UoKVwiXG4gICAgKGNsaWNrKT1cImp1bXBUb0xhdGVzdE1lc3NhZ2UoKVwiXG4gID5cbiAgICA8c3RyZWFtLWljb25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2p1bXAtdG8tbGF0ZXN0LWljb24gc3RyLWNoYXRfX2NpcmNsZS1mYWItaWNvblwiXG4gICAgICBbaWNvbl09XCJkaXJlY3Rpb24gPT09ICdib3R0b20tdG8tdG9wJyA/ICdhcnJvdy1kb3duJyA6ICdhcnJvdy11cCdcIlxuICAgID48L3N0cmVhbS1pY29uPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwibmV3TWVzc2FnZUNvdW50V2hpbGVCZWluZ1Njcm9sbGVkID4gMFwiXG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb25cbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC10by1sYXRlc3QtdW5yZWFkLWNvdW50XG4gICAgICAgIHN0ci1jaGF0X19qdW1wLXRvLWxhdGVzdC11bnJlYWQtY291bnRcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgbmV3TWVzc2FnZUNvdW50V2hpbGVCZWluZ1Njcm9sbGVkIH19XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZVRlbXBsYXRlQ29udGFpbmVyIGxldC1tZXNzYWdlPVwibWVzc2FnZVwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gIDxuZy10ZW1wbGF0ZVxuICAgICNkZWZhdWx0TWVzc2FnZVRlbXBsYXRlXG4gICAgbGV0LW1lc3NhZ2VJbnB1dD1cIm1lc3NhZ2VcIlxuICAgIGxldC1pc0xhc3RTZW50TWVzc2FnZT1cImlzTGFzdFNlbnRNZXNzYWdlXCJcbiAgICBsZXQtZW5hYmxlZE1lc3NhZ2VBY3Rpb25zPVwiZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXCJcbiAgICBsZXQtbW9kZT1cIm1vZGVcIlxuICAgIGxldC1pc0hpZ2hsaWdodGVkPVwiaXNIaWdobGlnaHRlZFwiXG4gICAgbGV0LWN1c3RvbUFjdGlvbnM9XCJjdXN0b21BY3Rpb25zXCJcbiAgPlxuICAgIDxzdHJlYW0tbWVzc2FnZVxuICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZUlucHV0XCJcbiAgICAgIFtpc0xhc3RTZW50TWVzc2FnZV09XCJpc0xhc3RTZW50TWVzc2FnZVwiXG4gICAgICBbZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXT1cImVuYWJsZWRNZXNzYWdlQWN0aW9uc1wiXG4gICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICAgIFtpc0hpZ2hsaWdodGVkXT1cImlzSGlnaGxpZ2h0ZWRcIlxuICAgICAgW2N1c3RvbUFjdGlvbnNdPVwiY3VzdG9tQWN0aW9uc1wiXG4gICAgPjwvc3RyZWFtLW1lc3NhZ2U+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgbWVzc2FnZVRlbXBsYXRlIHx8IGRlZmF1bHRNZXNzYWdlVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIGlzTGFzdFNlbnRNZXNzYWdlOiAhIShcbiAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZCAmJiBtZXNzYWdlPy5pZCA9PT0gbGFzdFNlbnRNZXNzYWdlSWRcbiAgICAgICAgKSxcbiAgICAgICAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiBlbmFibGVkTWVzc2FnZUFjdGlvbnMsXG4gICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgIGlzSGlnaGxpZ2h0ZWQ6IG1lc3NhZ2U/LmlkID09PSBoaWdobGlnaHRlZE1lc3NhZ2VJZCxcbiAgICAgICAgY3VzdG9tQWN0aW9uczogY3VzdG9tTWVzc2FnZUFjdGlvbnNcbiAgICAgIH1cbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RhdGVTZXBhcmF0b3IgbGV0LWRhdGU9XCJkYXRlXCIgbGV0LXBhcnNlZERhdGU9XCJwYXJzZWREYXRlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5RGF0ZVNlcGFyYXRvclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIGN1c3RvbURhdGVTZXBhcmF0b3JUZW1wbGF0ZSB8fCBkZWZhdWx0RGF0ZVNlcGFyYXRvcjtcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIGRhdGU6IGRhdGUsXG4gICAgICAgICAgcGFyc2VkRGF0ZTogcGFyc2VkRGF0ZVxuICAgICAgICB9XG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2RlZmF1bHREYXRlU2VwYXJhdG9yXG4gICAgbGV0LWRhdGU9XCJkYXRlXCJcbiAgICBsZXQtcGFyc2VkRGF0ZT1cInBhcnNlZERhdGVcIlxuICA+XG4gICAgPGRpdiBkYXRhLXRlc3RpZD1cImRhdGUtc2VwYXJhdG9yXCIgY2xhc3M9XCJzdHItY2hhdF9fZGF0ZS1zZXBhcmF0b3JcIj5cbiAgICAgIDxoclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGRhdGVTZXBhcmF0b3JUZXh0UG9zID09PSAncmlnaHQnIHx8IGRhdGVTZXBhcmF0b3JUZXh0UG9zID09PSAnY2VudGVyJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kYXRlLXNlcGFyYXRvci1saW5lXCJcbiAgICAgIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RhdGUtc2VwYXJhdG9yLWRhdGVcIj5cbiAgICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8aHJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBkYXRlU2VwYXJhdG9yVGV4dFBvcyA9PT0gJ2xlZnQnIHx8IGRhdGVTZXBhcmF0b3JUZXh0UG9zID09PSAnY2VudGVyJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kYXRlLXNlcGFyYXRvci1saW5lXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHROZXdNZXNzYWdlc0luZGljYXRvciBsZXQtdW5yZWFkQ291bnQ9XCJ1bnJlYWRDb3VudFwiPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3VucmVhZC1tZXNzYWdlcy1zZXBhcmF0b3JcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIlxuICAgICAgICB1bnJlYWRDb3VudCA+IDAgJiYgIWhpZGVVbnJlYWRDb3VudEZvck5vdGlmaWNhdGlvbkFuZEluZGljYXRvcjtcbiAgICAgICAgZWxzZSBub1VucmVhZENvdW50XG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7XG4gICAgICAgICh1bnJlYWRDb3VudCA9PT0gMVxuICAgICAgICAgID8gXCJzdHJlYW1DaGF0Llxce1xce2NvdW50XFx9XFx9IHVucmVhZCBtZXNzYWdlXCJcbiAgICAgICAgICA6IFwic3RyZWFtQ2hhdC5cXHtcXHtjb3VudFxcfVxcfSB1bnJlYWQgbWVzc2FnZXNcIlxuICAgICAgICApIHwgdHJhbnNsYXRlOiB7IGNvdW50OiB1bnJlYWRDb3VudCB9XG4gICAgICB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9VbnJlYWRDb3VudD5cbiAgICAgIHt7IFwic3RyZWFtQ2hhdC5VbnJlYWQgbWVzc2FnZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -5,15 +5,23 @@ Dayjs.extend(calendar);
5
5
  Dayjs.extend(relativeTime);
6
6
  export const parseDate = (date, format = 'date-time') => {
7
7
  const parsedTime = Dayjs(date);
8
- return format === 'date-time'
9
- ? parsedTime.calendar()
10
- : parsedTime.calendar(null, {
11
- sameDay: '[Today]',
12
- nextDay: '[Tomorrow]',
13
- nextWeek: 'dddd',
14
- lastDay: '[Yesterday]',
15
- lastWeek: '[Last] dddd',
16
- sameElse: 'MM/DD/YYYY', // Everything else ( 10/17/2011 )
17
- });
8
+ switch (format) {
9
+ case 'date': {
10
+ return parsedTime.calendar(null, {
11
+ sameDay: '[Today]',
12
+ nextDay: '[Tomorrow]',
13
+ nextWeek: 'dddd',
14
+ lastDay: '[Yesterday]',
15
+ lastWeek: '[Last] dddd',
16
+ sameElse: 'MM/DD/YYYY', // Everything else ( 10/17/2011 )
17
+ });
18
+ }
19
+ case 'date-time': {
20
+ return parsedTime.calendar();
21
+ }
22
+ case 'time': {
23
+ return parsedTime.format('h:mm A');
24
+ }
25
+ }
18
26
  };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wYXJzZS1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLFlBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVyRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFM0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3ZCLElBQVUsRUFDVixTQUErQixXQUFXLEVBQzFDLEVBQUU7SUFDRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFL0IsT0FBTyxNQUFNLEtBQUssV0FBVztRQUMzQixDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtRQUN2QixDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDeEIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsT0FBTyxFQUFFLFlBQVk7WUFDckIsUUFBUSxFQUFFLE1BQU07WUFDaEIsT0FBTyxFQUFFLGFBQWE7WUFDdEIsUUFBUSxFQUFFLGFBQWE7WUFDdkIsUUFBUSxFQUFFLFlBQVksRUFBRSxpQ0FBaUM7U0FDMUQsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBjYWxlbmRhciBmcm9tICdkYXlqcy9wbHVnaW4vY2FsZW5kYXInO1xuaW1wb3J0IHJlbGF0aXZlVGltZSBmcm9tICdkYXlqcy9wbHVnaW4vcmVsYXRpdmVUaW1lJztcblxuRGF5anMuZXh0ZW5kKGNhbGVuZGFyKTtcbkRheWpzLmV4dGVuZChyZWxhdGl2ZVRpbWUpO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEYXRlID0gKFxuICBkYXRlOiBEYXRlLFxuICBmb3JtYXQ6ICdkYXRlJyB8ICdkYXRlLXRpbWUnID0gJ2RhdGUtdGltZSdcbikgPT4ge1xuICBjb25zdCBwYXJzZWRUaW1lID0gRGF5anMoZGF0ZSk7XG5cbiAgcmV0dXJuIGZvcm1hdCA9PT0gJ2RhdGUtdGltZSdcbiAgICA/IHBhcnNlZFRpbWUuY2FsZW5kYXIoKVxuICAgIDogcGFyc2VkVGltZS5jYWxlbmRhcihudWxsLCB7XG4gICAgICAgIHNhbWVEYXk6ICdbVG9kYXldJywgLy8gVGhlIHNhbWUgZGF5ICggVG9kYXkgYXQgMjozMCBBTSApXG4gICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3ddJywgLy8gVGhlIG5leHQgZGF5ICggVG9tb3Jyb3cgYXQgMjozMCBBTSApXG4gICAgICAgIG5leHRXZWVrOiAnZGRkZCcsIC8vIFRoZSBuZXh0IHdlZWsgKCBTdW5kYXkgYXQgMjozMCBBTSApXG4gICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5XScsIC8vIFRoZSBkYXkgYmVmb3JlICggWWVzdGVyZGF5IGF0IDI6MzAgQU0gKVxuICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkJywgLy8gTGFzdCB3ZWVrICggTGFzdCBNb25kYXkgYXQgMjozMCBBTSApXG4gICAgICAgIHNhbWVFbHNlOiAnTU0vREQvWVlZWScsIC8vIEV2ZXJ5dGhpbmcgZWxzZSAoIDEwLzE3LzIwMTEgKVxuICAgICAgfSk7XG59O1xuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wYXJzZS1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLFlBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVyRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFM0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3ZCLElBQVUsRUFDVixTQUF3QyxXQUFXLEVBQ25ELEVBQUU7SUFDRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFL0IsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ1gsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDL0IsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixRQUFRLEVBQUUsWUFBWSxFQUFFLGlDQUFpQzthQUMxRCxDQUFDLENBQUM7U0FDSjtRQUNELEtBQUssV0FBVyxDQUFDLENBQUM7WUFDaEIsT0FBTyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDOUI7UUFDRCxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ1gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3BDO0tBQ0Y7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IGNhbGVuZGFyIGZyb20gJ2RheWpzL3BsdWdpbi9jYWxlbmRhcic7XG5pbXBvcnQgcmVsYXRpdmVUaW1lIGZyb20gJ2RheWpzL3BsdWdpbi9yZWxhdGl2ZVRpbWUnO1xuXG5EYXlqcy5leHRlbmQoY2FsZW5kYXIpO1xuRGF5anMuZXh0ZW5kKHJlbGF0aXZlVGltZSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZURhdGUgPSAoXG4gIGRhdGU6IERhdGUsXG4gIGZvcm1hdDogJ2RhdGUnIHwgJ2RhdGUtdGltZScgfCAndGltZScgPSAnZGF0ZS10aW1lJ1xuKSA9PiB7XG4gIGNvbnN0IHBhcnNlZFRpbWUgPSBEYXlqcyhkYXRlKTtcblxuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ2RhdGUnOiB7XG4gICAgICByZXR1cm4gcGFyc2VkVGltZS5jYWxlbmRhcihudWxsLCB7XG4gICAgICAgIHNhbWVEYXk6ICdbVG9kYXldJywgLy8gVGhlIHNhbWUgZGF5ICggVG9kYXkgYXQgMjozMCBBTSApXG4gICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3ddJywgLy8gVGhlIG5leHQgZGF5ICggVG9tb3Jyb3cgYXQgMjozMCBBTSApXG4gICAgICAgIG5leHRXZWVrOiAnZGRkZCcsIC8vIFRoZSBuZXh0IHdlZWsgKCBTdW5kYXkgYXQgMjozMCBBTSApXG4gICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5XScsIC8vIFRoZSBkYXkgYmVmb3JlICggWWVzdGVyZGF5IGF0IDI6MzAgQU0gKVxuICAgICAgICBsYXN0V2VlazogJ1tMYXN0XSBkZGRkJywgLy8gTGFzdCB3ZWVrICggTGFzdCBNb25kYXkgYXQgMjozMCBBTSApXG4gICAgICAgIHNhbWVFbHNlOiAnTU0vREQvWVlZWScsIC8vIEV2ZXJ5dGhpbmcgZWxzZSAoIDEwLzE3LzIwMTEgKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGNhc2UgJ2RhdGUtdGltZSc6IHtcbiAgICAgIHJldHVybiBwYXJzZWRUaW1lLmNhbGVuZGFyKCk7XG4gICAgfVxuICAgIGNhc2UgJ3RpbWUnOiB7XG4gICAgICByZXR1cm4gcGFyc2VkVGltZS5mb3JtYXQoJ2g6bW0gQScpO1xuICAgIH1cbiAgfVxufTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsTWVtYmVyUmVzcG9uc2UsXG4gIENvbW1hbmRSZXNwb25zZSxcbiAgRXZlbnQsXG4gIEV4dGVuZGFibGVHZW5lcmljcyxcbiAgRm9ybWF0TWVzc2FnZVJlc3BvbnNlLFxuICBMaXRlcmFsU3RyaW5nRm9yVW5pb24sXG4gIE1lc3NhZ2VSZXNwb25zZUJhc2UsXG4gIE11dGUsXG4gIFJlYWN0aW9uUmVzcG9uc2UsXG4gIFVzZXIsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQXR0YWNobWVudFNlcnZpY2UgfSBmcm9tICcuL2F0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVW5rbm93blR5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tVHJpZ2dlciA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIGNvbXBvbmVudFByb3BzOiBVbmtub3duVHlwZTtcbiAgICBkYXRhOiBVbmtub3duVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBFeHRlbmRhYmxlR2VuZXJpY3MgJiB7XG4gIGF0dGFjaG1lbnRUeXBlOiBEZWZhdWx0QXR0YWNobWVudFR5cGU7XG4gIGNoYW5uZWxUeXBlOiBEZWZhdWx0Q2hhbm5lbFR5cGU7XG4gIGNvbW1hbmRUeXBlOiBMaXRlcmFsU3RyaW5nRm9yVW5pb247XG4gIGV2ZW50VHlwZTogVW5rbm93blR5cGU7XG4gIG1lc3NhZ2VUeXBlOiBEZWZhdWx0TWVzc2FnZVR5cGU7XG4gIHJlYWN0aW9uVHlwZTogVW5rbm93blR5cGU7XG4gIHVzZXJUeXBlOiBEZWZhdWx0VXNlclR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0QXR0YWNobWVudFR5cGUgPSBVbmtub3duVHlwZSAmIHtcbiAgYXNzZXRfdXJsPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgaW1hZ2VzPzogQXJyYXk8QXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPj47XG4gIG1pbWVfdHlwZT86IHN0cmluZztcbiAgaXNDdXN0b21BdHRhY2htZW50PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRDaGFubmVsVHlwZSA9IFVua25vd25UeXBlICYge1xuICBpbWFnZT86IHN0cmluZztcbiAgbWVtYmVyX2NvdW50PzogbnVtYmVyO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRDb21tYW5kVHlwZSA9IExpdGVyYWxTdHJpbmdGb3JVbmlvbjtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdE1lc3NhZ2VUeXBlID0gVW5rbm93blR5cGUgJiB7XG4gIGN1c3RvbVR5cGU/OiAnY2hhbm5lbC5pbnRybycgfCAnbWVzc2FnZS5kYXRlJztcbiAgZGF0ZT86IHN0cmluZyB8IERhdGU7XG4gIGVycm9yU3RhdHVzQ29kZT86IG51bWJlcjtcbiAgZXZlbnQ/OiBFdmVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgdW5yZWFkPzogYm9vbGVhbjtcbiAgcmVhZEJ5OiBVc2VyUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXTtcbiAgdHJhbnNsYXRpb24/OiBzdHJpbmc7XG4gIHF1b3RlZF9tZXNzYWdlPzogTWVzc2FnZVJlc3BvbnNlQmFzZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRVc2VyVHlwZUludGVybmFsID0ge1xuICBpbWFnZT86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFVzZXJUeXBlID0gVW5rbm93blR5cGUgJlxuICBEZWZhdWx0VXNlclR5cGVJbnRlcm5hbCAmIHtcbiAgICBtdXRlcz86IEFycmF5PE11dGU8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz4+O1xuICB9O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1NZXNzYWdlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBGb3JtYXRNZXNzYWdlUmVzcG9uc2U8VD47XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRVcGxvYWRFcnJvclJlYXNvbiA9XG4gIHwgJ2ZpbGUtc2l6ZSdcbiAgfCAnZmlsZS1leHRlbnNpb24nXG4gIHwgJ3Vua25vd24nO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50VXBsb2FkPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGZpbGU6IEZpbGU7XG4gIHN0YXRlOiAnZXJyb3InIHwgJ3N1Y2Nlc3MnIHwgJ3VwbG9hZGluZyc7XG4gIGVycm9yUmVhc29uPzogQXR0YWNobWVudFVwbG9hZEVycm9yUmVhc29uO1xuICBlcnJvckV4dHJhSW5mbz86IHsgcGFyYW06IHN0cmluZyB9W107XG4gIHVybD86IHN0cmluZztcbiAgdHlwZTogJ2ltYWdlJyB8ICdmaWxlJyB8ICd2aWRlbyc7XG4gIHByZXZpZXdVcmk/OiBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcbiAgdGh1bWJfdXJsPzogc3RyaW5nO1xuICBmcm9tQXR0YWNobWVudD86IEF0dGFjaG1lbnQ8VD47XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQgPSB7XG4gIGl0ZW06IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtQ29udGV4dCA9IHtcbiAgaXRlbTogQ29tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW07XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbSA9IChcbiAgfCBDaGFubmVsTWVtYmVyUmVzcG9uc2VcbiAgfCBVc2VyUmVzcG9uc2VcbikgJiB7XG4gIGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDb21hbmRBdXRvY29tcGxldGVMaXN0SXRlbSA9IENvbW1hbmRSZXNwb25zZSAmIHtcbiAgYXV0b2NvbXBsZXRlTGFiZWw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblR5cGUgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2luZm8nO1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QYXlsb2FkPFQgPSB7fT4gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IE5vdGlmaWNhdGlvblR5cGU7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIHRyYW5zbGF0ZVBhcmFtcz86IE9iamVjdDtcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUPjtcbiAgdGVtcGxhdGVDb250ZXh0PzogVDtcbiAgZGlzbWlzc0ZuOiBGdW5jdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxQcmV2aWV3Q29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBjaGFubmVsOiBDaGFubmVsPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFByZXZpZXdJbmZvQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gQ2hhbm5lbFByZXZpZXdDb250ZXh0ICYge1xuICBsYXRlc3RNZXNzYWdlPzogU3RyZWFtTWVzc2FnZTxUPjtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IG9mIHRoZSBsYXRlc3QgbWVzc2FnZSwgb3Igc29tZSBtZXRhIGluZm9ybWF0aW9uIChmb3IgZXhhbXBsZTogXCJOb3RoaW5nIHlldFwiKVxuICAgKi9cbiAgbGF0ZXN0TWVzc2FnZVRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgY2hhbm5lbCwgb3IgdGhlIG5hbWUgb2YgdGhlIGNoYW5uZWwgbWVtYmVyc1xuICAgKi9cbiAgY2hhbm5lbERpc3BsYXlUaXRsZTogc3RyaW5nO1xuICB1bnJlYWRDb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUlucHV0Q29udGV4dCA9IHtcbiAgaXNGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtZW50aW9uU2NvcGU6ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbicgfCB1bmRlZmluZWQ7XG4gIG1vZGU6ICd0aHJlYWQnIHwgJ21haW4nIHwgdW5kZWZpbmVkO1xuICBpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2VVcGRhdGVIYW5kbGVyOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgc2VuZE1lc3NhZ2UkOiBPYnNlcnZhYmxlPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvblRlbXBsYXRlQ29udGV4dCA9IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB1c2VyOiBVc2VyUmVzcG9uc2U7XG59O1xuXG5leHBvcnQgdHlwZSBFbW9qaVBpY2tlckNvbnRleHQgPSB7XG4gIGVtb2ppSW5wdXQkOiBTdWJqZWN0PHN0cmluZz47XG59O1xuXG5leHBvcnQgdHlwZSBUeXBpbmdJbmRpY2F0b3JDb250ZXh0ID0ge1xuICB1c2Vyc1R5cGluZyQ6IE9ic2VydmFibGU8VXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W10+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUNvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW107XG4gIGlzTGFzdFNlbnRNZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtb2RlOiAndGhyZWFkJyB8ICdtYWluJztcbiAgaXNIaWdobGlnaHRlZDogYm9vbGVhbjtcbiAgY3VzdG9tQWN0aW9uczogQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxBY3Rpb25zQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0geyBjaGFubmVsOiBDaGFubmVsPFQ+IH07XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRMaXN0Q29udGV4dCA9IHtcbiAgbWVzc2FnZUlkOiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG4gIHBhcmVudE1lc3NhZ2VJZD86IHN0cmluZztcbiAgaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcj86IChzdGF0ZTogJ29wZW5lZCcgfCAnY2xvc2VkJykgPT4ge307XG59O1xuXG5leHBvcnQgdHlwZSBBdmF0YXJUeXBlID0gJ2NoYW5uZWwnIHwgJ3VzZXInO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJMb2NhdGlvbiA9XG4gIHwgJ2NoYW5uZWwtcHJldmlldydcbiAgfCAnY2hhbm5lbC1oZWFkZXInXG4gIHwgJ21lc3NhZ2Utc2VuZGVyJ1xuICB8ICdtZXNzYWdlLXJlYWRlcidcbiAgfCAncXVvdGVkLW1lc3NhZ2Utc2VuZGVyJ1xuICB8ICdhdXRvY29tcGxldGUtaXRlbSdcbiAgfCAndHlwaW5nLWluZGljYXRvcidcbiAgfCAncmVhY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJDb250ZXh0ID0ge1xuICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGltYWdlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgdHlwZTogQXZhdGFyVHlwZSB8IHVuZGVmaW5lZDtcbiAgbG9jYXRpb246IEF2YXRhckxvY2F0aW9uIHwgdW5kZWZpbmVkO1xuICBjaGFubmVsPzogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgdXNlcj86IFVzZXI8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIGluaXRpYWxzVHlwZT86ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCcgfCAnZmlyc3QtbGV0dGVyLW9mLWVhY2gtd29yZCc7XG4gIHNob3dPbmxpbmVJbmRpY2F0b3I/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFByZXZpZXdMaXN0Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudFVwbG9hZHMkOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRVcGxvYWRbXT4gfCB1bmRlZmluZWQ7XG4gIHJldHJ5VXBsb2FkSGFuZGxlcjogKGY6IEZpbGUpID0+IGFueTtcbiAgZGVsZXRlVXBsb2FkSGFuZGxlcjogKHU6IEF0dGFjaG1lbnRVcGxvYWQpID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25Db250ZXh0ID0ge1xuICBpY29uOiBJY29uIHwgdW5kZWZpbmVkO1xuICBzaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSW5kaWNhdG9yQ29udGV4dCA9IHtcbiAgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0ID0ge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSBgbWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyRgXG4gICAqXG4gICAqIE1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9zZXJ2aWNlcy9NZXNzYWdlQWN0aW9uc1NlcnZpY2VcbiAgICovXG4gIGN1c3RvbUFjdGlvbnM6IEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtW107XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBiZWNhdXNlIHRoZSBuYW1lIGNvbnRhaW5zIHR5cG9zLCB1c2UgdGhlIGBkaXNwbGF5ZWRBY3Rpb25zQ291bnRDaGFuZ2VIYW5kbGVyYCBpbnN0ZWFkXG4gICAqL1xuICBkaXNwbGF5ZWRBY3Rpb25zQ291bnRDaGFuZUhhbmxlcjogKGNvdW50OiBudW1iZXIpID0+IGFueTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIGNvbXBvbmVudHMgc2hvdWxkIHVzZSBgbWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UuZ2V0QXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zQ291bnRgIG1ldGhvZFxuICAgKlxuICAgKiBNb3JlIGluZm9ybWF0aW9uOiBodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvc2VydmljZXMvTWVzc2FnZUFjdGlvbnNTZXJ2aWNlXG4gICAqL1xuICBkaXNwbGF5ZWRBY3Rpb25zQ291bnRDaGFuZ2VIYW5kbGVyOiAoY291bnQ6IG51bWJlcikgPT4gYW55O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkJveEl0ZW1Db250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGFjdGlvbk5hbWU6ICdxdW90ZScgfCAncGluJyB8ICdmbGFnJyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgc3RyaW5nO1xuICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICgobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4gc3RyaW5nKSB8IHN0cmluZztcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPjtcbiAgaXNNaW5lOiBib29sZWFuO1xuICBhY3Rpb25IYW5kbGVyOiAobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPiwgaXNNaW5lOiBib29sZWFuKSA9PiBhbnk7XG59O1xuXG50eXBlIE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICgobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4gc3RyaW5nKSB8IHN0cmluZztcbiAgaXNWaXNpYmxlOiAoXG4gICAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGlzTWluZTogYm9vbGVhbixcbiAgICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+XG4gICkgPT4gYm9vbGVhbjtcbiAgYWN0aW9uSGFuZGxlcjogKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4sIGlzTWluZTogYm9vbGVhbikgPT4gYW55O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTogJ3F1b3RlJyB8ICdwaW4nIHwgJ2ZsYWcnIHwgJ2VkaXQnIHwgJ2RlbGV0ZScgfCAnbWFyay11bnJlYWQnO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9O1xuICBpc1NlbGVjdG9yT3BlbjogYm9vbGVhbjtcbiAgbGF0ZXN0UmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG4gIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBpc1NlbGVjdG9yT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE1vZGFsQ29udGV4dCA9IHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBpc09wZW5DaGFuZ2VIYW5kbGVyOiAoaXNPcGVuOiBib29sZWFuKSA9PiBhbnk7XG4gIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uQ29udGV4dCA9IHtcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZSB8IHVuZGVmaW5lZDtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUaHJlYWRIZWFkZXJDb250ZXh0ID0ge1xuICBwYXJlbnRNZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBjbG9zZVRocmVhZEhhbmRsZXI6IEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uVHlwZSA9XG4gIHwgJ2FuZ3J5J1xuICB8ICdoYWhhJ1xuICB8ICdsaWtlJ1xuICB8ICdsb3ZlJ1xuICB8ICdzYWQnXG4gIHwgJ3dvdydcbiAgfCBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRDb25maWdyYXRpb24gPSB7XG4gIHVybDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24gPSBBdHRhY2htZW50Q29uZmlncmF0aW9uICYge1xuICBvcmlnaW5hbEhlaWdodDogbnVtYmVyO1xuICBvcmlnaW5hbFdpZHRoOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uID0gSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbiAmIHtcbiAgdGh1bWJVcmw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWxpdmVyZWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZGluZ1N0YXR1c0NvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21NZXRhZGF0YUNvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlYWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xuICByZWFkQnlUZXh0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsSGVhZGVySW5mb0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBDdXN0b21BdHRhY2htZW50VXBsb2FkQ29udGV4dCA9IHtcbiAgaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2U7XG59O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudDogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIFN5c3RlbU1lc3NhZ2VDb250ZXh0ID0gTWVzc2FnZUNvbnRleHQgJiB7XG4gIHBhcnNlZERhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGVTZXBhcmF0b3JDb250ZXh0ID0ge1xuICBkYXRlOiBEYXRlO1xuICBwYXJzZWREYXRlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgPSB7XG4gIHVucmVhZENvdW50OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc05vdGlmaWNhdGlvbkNvbnRleHQgPVxuICBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgJiB7XG4gICAgb25KdW1wOiBGdW5jdGlvbjtcbiAgICBvbkRpc21pc3M6IEZ1bmN0aW9uO1xuICB9O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUXVlcnlTdGF0ZSA9IHtcbiAgc3RhdGU6ICdpbi1wcm9ncmVzcycgfCAnc3VjY2VzcycgfCAnZXJyb3InO1xuICAvLyBObyB0eXBlIGRlZiBmcm9tIHN0cmVhbS1jaGF0XG4gIGVycm9yPzogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VJbnB1dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50PFQ+W107XG4gIG1lbnRpb25lZFVzZXJzOiBVc2VyUmVzcG9uc2U8VD5bXTtcbiAgcGFyZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcXVvdGVkTWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGN1c3RvbURhdGE6IHVuZGVmaW5lZCB8IFBhcnRpYWw8VFsnbWVzc2FnZVR5cGUnXT47XG59O1xuXG5leHBvcnQgdHlwZSBPZmZzZXROZXh0UGFnZUNvbmZpZ3VyYXRpb24gPSB7XG4gIHR5cGU6ICdvZmZzZXQnO1xuICBvZmZzZXQ6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlcnROZXh0UGFnZUNvbmZpZ3VyYXRpb248XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgdHlwZTogJ2ZpbHRlcic7XG4gIHBhZ2luYXRpb25GaWx0ZXI6IENoYW5uZWxGaWx0ZXJzPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTmV4dFBhZ2VDb25maWd1cmF0aW9uID1cbiAgfCBPZmZzZXROZXh0UGFnZUNvbmZpZ3VyYXRpb25cbiAgfCBGaWx0ZXJ0TmV4dFBhZ2VDb25maWd1cmF0aW9uO1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlUmVhY3Rpb25DbGlja0RldGFpbHMgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICByZWFjdGlvblR5cGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25zQ2xpY2tEZXRhaWxzPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD47XG4gIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXTtcbiAgaXNNaW5lOiBib29sZWFuO1xuICBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdO1xufTtcblxuZXhwb3J0IHR5cGUgR3JvdXBTdHlsZU9wdGlvbnMgPSB7XG4gIG5vR3JvdXBCeVVzZXI/OiBib29sZWFuO1xuICBsYXN0UmVhZE1lc3NhZ2VJZD86IHN0cmluZztcbiAgbm9Hcm91cEJ5UmVhZFN0YXRlPzogYm9vbGVhbjtcbn07XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsTWVtYmVyUmVzcG9uc2UsXG4gIENvbW1hbmRSZXNwb25zZSxcbiAgRXZlbnQsXG4gIEV4dGVuZGFibGVHZW5lcmljcyxcbiAgRm9ybWF0TWVzc2FnZVJlc3BvbnNlLFxuICBMaXRlcmFsU3RyaW5nRm9yVW5pb24sXG4gIE1lc3NhZ2VSZXNwb25zZUJhc2UsXG4gIE11dGUsXG4gIFJlYWN0aW9uUmVzcG9uc2UsXG4gIFVzZXIsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQXR0YWNobWVudFNlcnZpY2UgfSBmcm9tICcuL2F0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVW5rbm93blR5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tVHJpZ2dlciA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIGNvbXBvbmVudFByb3BzOiBVbmtub3duVHlwZTtcbiAgICBkYXRhOiBVbmtub3duVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBFeHRlbmRhYmxlR2VuZXJpY3MgJiB7XG4gIGF0dGFjaG1lbnRUeXBlOiBEZWZhdWx0QXR0YWNobWVudFR5cGU7XG4gIGNoYW5uZWxUeXBlOiBEZWZhdWx0Q2hhbm5lbFR5cGU7XG4gIGNvbW1hbmRUeXBlOiBMaXRlcmFsU3RyaW5nRm9yVW5pb247XG4gIGV2ZW50VHlwZTogVW5rbm93blR5cGU7XG4gIG1lc3NhZ2VUeXBlOiBEZWZhdWx0TWVzc2FnZVR5cGU7XG4gIHJlYWN0aW9uVHlwZTogVW5rbm93blR5cGU7XG4gIHVzZXJUeXBlOiBEZWZhdWx0VXNlclR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0QXR0YWNobWVudFR5cGUgPSBVbmtub3duVHlwZSAmIHtcbiAgYXNzZXRfdXJsPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgaW1hZ2VzPzogQXJyYXk8QXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPj47XG4gIG1pbWVfdHlwZT86IHN0cmluZztcbiAgaXNDdXN0b21BdHRhY2htZW50PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRDaGFubmVsVHlwZSA9IFVua25vd25UeXBlICYge1xuICBpbWFnZT86IHN0cmluZztcbiAgbWVtYmVyX2NvdW50PzogbnVtYmVyO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRDb21tYW5kVHlwZSA9IExpdGVyYWxTdHJpbmdGb3JVbmlvbjtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdE1lc3NhZ2VUeXBlID0gVW5rbm93blR5cGUgJiB7XG4gIGN1c3RvbVR5cGU/OiAnY2hhbm5lbC5pbnRybycgfCAnbWVzc2FnZS5kYXRlJztcbiAgZGF0ZT86IHN0cmluZyB8IERhdGU7XG4gIGVycm9yU3RhdHVzQ29kZT86IG51bWJlcjtcbiAgZXZlbnQ/OiBFdmVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgdW5yZWFkPzogYm9vbGVhbjtcbiAgcmVhZEJ5OiBVc2VyUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXTtcbiAgdHJhbnNsYXRpb24/OiBzdHJpbmc7XG4gIHF1b3RlZF9tZXNzYWdlPzogTWVzc2FnZVJlc3BvbnNlQmFzZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRVc2VyVHlwZUludGVybmFsID0ge1xuICBpbWFnZT86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFVzZXJUeXBlID0gVW5rbm93blR5cGUgJlxuICBEZWZhdWx0VXNlclR5cGVJbnRlcm5hbCAmIHtcbiAgICBtdXRlcz86IEFycmF5PE11dGU8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz4+O1xuICB9O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1NZXNzYWdlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBGb3JtYXRNZXNzYWdlUmVzcG9uc2U8VD47XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRVcGxvYWRFcnJvclJlYXNvbiA9XG4gIHwgJ2ZpbGUtc2l6ZSdcbiAgfCAnZmlsZS1leHRlbnNpb24nXG4gIHwgJ3Vua25vd24nO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50VXBsb2FkPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGZpbGU6IEZpbGU7XG4gIHN0YXRlOiAnZXJyb3InIHwgJ3N1Y2Nlc3MnIHwgJ3VwbG9hZGluZyc7XG4gIGVycm9yUmVhc29uPzogQXR0YWNobWVudFVwbG9hZEVycm9yUmVhc29uO1xuICBlcnJvckV4dHJhSW5mbz86IHsgcGFyYW06IHN0cmluZyB9W107XG4gIHVybD86IHN0cmluZztcbiAgdHlwZTogJ2ltYWdlJyB8ICdmaWxlJyB8ICd2aWRlbyc7XG4gIHByZXZpZXdVcmk/OiBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcbiAgdGh1bWJfdXJsPzogc3RyaW5nO1xuICBmcm9tQXR0YWNobWVudD86IEF0dGFjaG1lbnQ8VD47XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQgPSB7XG4gIGl0ZW06IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtQ29udGV4dCA9IHtcbiAgaXRlbTogQ29tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW07XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbSA9IChcbiAgfCBDaGFubmVsTWVtYmVyUmVzcG9uc2VcbiAgfCBVc2VyUmVzcG9uc2VcbikgJiB7XG4gIGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDb21hbmRBdXRvY29tcGxldGVMaXN0SXRlbSA9IENvbW1hbmRSZXNwb25zZSAmIHtcbiAgYXV0b2NvbXBsZXRlTGFiZWw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblR5cGUgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2luZm8nO1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QYXlsb2FkPFQgPSB7fT4gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IE5vdGlmaWNhdGlvblR5cGU7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIHRyYW5zbGF0ZVBhcmFtcz86IE9iamVjdDtcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUPjtcbiAgdGVtcGxhdGVDb250ZXh0PzogVDtcbiAgZGlzbWlzc0ZuOiBGdW5jdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxQcmV2aWV3Q29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBjaGFubmVsOiBDaGFubmVsPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFByZXZpZXdJbmZvQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gQ2hhbm5lbFByZXZpZXdDb250ZXh0ICYge1xuICBsYXRlc3RNZXNzYWdlPzogU3RyZWFtTWVzc2FnZTxUPjtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IG9mIHRoZSBsYXRlc3QgbWVzc2FnZSwgb3Igc29tZSBtZXRhIGluZm9ybWF0aW9uIChmb3IgZXhhbXBsZTogXCJOb3RoaW5nIHlldFwiKVxuICAgKi9cbiAgbGF0ZXN0TWVzc2FnZVRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgY2hhbm5lbCwgb3IgdGhlIG5hbWUgb2YgdGhlIGNoYW5uZWwgbWVtYmVyc1xuICAgKi9cbiAgY2hhbm5lbERpc3BsYXlUaXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbGFzdCBtZXNzYWdlIChvbmx5IGF2YWlsYWJsZSBpZiB0aGUgbGFzdCBtZXNzYWdlIHdhcyBzZW50IGJ5IHRoZSBjdXJyZW50IHVzZXIpXG4gICAqL1xuICBsYXRlc3RNZXNzYWdlU3RhdHVzPzogJ2RlbGl2ZXJlZCcgfCAncmVhZCc7XG4gIC8qKlxuICAgKiBUaGUgdGltZSBvZiB0aGUgbGFzdCBtZXNzYWdlIChmb3JtYXR0ZWQgdG8gYSB1c2VyLWZyaWVuZGx5IHN0cmluZylcbiAgICovXG4gIGxhdGVzdE1lc3NhZ2VUaW1lPzogc3RyaW5nO1xuICB1bnJlYWRDb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUlucHV0Q29udGV4dCA9IHtcbiAgaXNGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtZW50aW9uU2NvcGU6ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbicgfCB1bmRlZmluZWQ7XG4gIG1vZGU6ICd0aHJlYWQnIHwgJ21haW4nIHwgdW5kZWZpbmVkO1xuICBpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2VVcGRhdGVIYW5kbGVyOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgc2VuZE1lc3NhZ2UkOiBPYnNlcnZhYmxlPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvblRlbXBsYXRlQ29udGV4dCA9IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB1c2VyOiBVc2VyUmVzcG9uc2U7XG59O1xuXG5leHBvcnQgdHlwZSBFbW9qaVBpY2tlckNvbnRleHQgPSB7XG4gIGVtb2ppSW5wdXQkOiBTdWJqZWN0PHN0cmluZz47XG59O1xuXG5leHBvcnQgdHlwZSBUeXBpbmdJbmRpY2F0b3JDb250ZXh0ID0ge1xuICB1c2Vyc1R5cGluZyQ6IE9ic2VydmFibGU8VXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W10+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUNvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW107XG4gIGlzTGFzdFNlbnRNZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtb2RlOiAndGhyZWFkJyB8ICdtYWluJztcbiAgaXNIaWdobGlnaHRlZDogYm9vbGVhbjtcbiAgY3VzdG9tQWN0aW9uczogQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxBY3Rpb25zQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0geyBjaGFubmVsOiBDaGFubmVsPFQ+IH07XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRMaXN0Q29udGV4dCA9IHtcbiAgbWVzc2FnZUlkOiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG4gIHBhcmVudE1lc3NhZ2VJZD86IHN0cmluZztcbiAgaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcj86IChzdGF0ZTogJ29wZW5lZCcgfCAnY2xvc2VkJykgPT4ge307XG59O1xuXG5leHBvcnQgdHlwZSBBdmF0YXJUeXBlID0gJ2NoYW5uZWwnIHwgJ3VzZXInO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJMb2NhdGlvbiA9XG4gIHwgJ2NoYW5uZWwtcHJldmlldydcbiAgfCAnY2hhbm5lbC1oZWFkZXInXG4gIHwgJ21lc3NhZ2Utc2VuZGVyJ1xuICB8ICdtZXNzYWdlLXJlYWRlcidcbiAgfCAncXVvdGVkLW1lc3NhZ2Utc2VuZGVyJ1xuICB8ICdhdXRvY29tcGxldGUtaXRlbSdcbiAgfCAndHlwaW5nLWluZGljYXRvcidcbiAgfCAncmVhY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJDb250ZXh0ID0ge1xuICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGltYWdlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgdHlwZTogQXZhdGFyVHlwZSB8IHVuZGVmaW5lZDtcbiAgbG9jYXRpb246IEF2YXRhckxvY2F0aW9uIHwgdW5kZWZpbmVkO1xuICBjaGFubmVsPzogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgdXNlcj86IFVzZXI8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIGluaXRpYWxzVHlwZT86ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCcgfCAnZmlyc3QtbGV0dGVyLW9mLWVhY2gtd29yZCc7XG4gIHNob3dPbmxpbmVJbmRpY2F0b3I/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFByZXZpZXdMaXN0Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudFVwbG9hZHMkOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRVcGxvYWRbXT4gfCB1bmRlZmluZWQ7XG4gIHJldHJ5VXBsb2FkSGFuZGxlcjogKGY6IEZpbGUpID0+IGFueTtcbiAgZGVsZXRlVXBsb2FkSGFuZGxlcjogKHU6IEF0dGFjaG1lbnRVcGxvYWQpID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25Db250ZXh0ID0ge1xuICBpY29uOiBJY29uIHwgdW5kZWZpbmVkO1xuICBzaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSW5kaWNhdG9yQ29udGV4dCA9IHtcbiAgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0ID0ge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSBgbWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyRgXG4gICAqXG4gICAqIE1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9zZXJ2aWNlcy9NZXNzYWdlQWN0aW9uc1NlcnZpY2VcbiAgICovXG4gIGN1c3RvbUFjdGlvbnM6IEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtW107XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBiZWNhdXNlIHRoZSBuYW1lIGNvbnRhaW5zIHR5cG9zLCB1c2UgdGhlIGBkaXNwbGF5ZWRBY3Rpb25zQ291bnRDaGFuZ2VIYW5kbGVyYCBpbnN0ZWFkXG4gICAqL1xuICBkaXNwbGF5ZWRBY3Rpb25zQ291bnRDaGFuZUhhbmxlcjogKGNvdW50OiBudW1iZXIpID0+IGFueTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIGNvbXBvbmVudHMgc2hvdWxkIHVzZSBgbWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UuZ2V0QXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zQ291bnRgIG1ldGhvZFxuICAgKlxuICAgKiBNb3JlIGluZm9ybWF0aW9uOiBodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvc2VydmljZXMvTWVzc2FnZUFjdGlvbnNTZXJ2aWNlXG4gICAqL1xuICBkaXNwbGF5ZWRBY3Rpb25zQ291bnRDaGFuZ2VIYW5kbGVyOiAoY291bnQ6IG51bWJlcikgPT4gYW55O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkJveEl0ZW1Db250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGFjdGlvbk5hbWU6ICdxdW90ZScgfCAncGluJyB8ICdmbGFnJyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgc3RyaW5nO1xuICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICgobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4gc3RyaW5nKSB8IHN0cmluZztcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPjtcbiAgaXNNaW5lOiBib29sZWFuO1xuICBhY3Rpb25IYW5kbGVyOiAobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPiwgaXNNaW5lOiBib29sZWFuKSA9PiBhbnk7XG59O1xuXG50eXBlIE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICgobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4gc3RyaW5nKSB8IHN0cmluZztcbiAgaXNWaXNpYmxlOiAoXG4gICAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGlzTWluZTogYm9vbGVhbixcbiAgICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+XG4gICkgPT4gYm9vbGVhbjtcbiAgYWN0aW9uSGFuZGxlcjogKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4sIGlzTWluZTogYm9vbGVhbikgPT4gYW55O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTogJ3F1b3RlJyB8ICdwaW4nIHwgJ2ZsYWcnIHwgJ2VkaXQnIHwgJ2RlbGV0ZScgfCAnbWFyay11bnJlYWQnO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9O1xuICBpc1NlbGVjdG9yT3BlbjogYm9vbGVhbjtcbiAgbGF0ZXN0UmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG4gIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBpc1NlbGVjdG9yT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE1vZGFsQ29udGV4dCA9IHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBpc09wZW5DaGFuZ2VIYW5kbGVyOiAoaXNPcGVuOiBib29sZWFuKSA9PiBhbnk7XG4gIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uQ29udGV4dCA9IHtcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZSB8IHVuZGVmaW5lZDtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUaHJlYWRIZWFkZXJDb250ZXh0ID0ge1xuICBwYXJlbnRNZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBjbG9zZVRocmVhZEhhbmRsZXI6IEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uVHlwZSA9XG4gIHwgJ2FuZ3J5J1xuICB8ICdoYWhhJ1xuICB8ICdsaWtlJ1xuICB8ICdsb3ZlJ1xuICB8ICdzYWQnXG4gIHwgJ3dvdydcbiAgfCBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRDb25maWdyYXRpb24gPSB7XG4gIHVybDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24gPSBBdHRhY2htZW50Q29uZmlncmF0aW9uICYge1xuICBvcmlnaW5hbEhlaWdodDogbnVtYmVyO1xuICBvcmlnaW5hbFdpZHRoOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uID0gSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbiAmIHtcbiAgdGh1bWJVcmw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWxpdmVyZWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZGluZ1N0YXR1c0NvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21NZXRhZGF0YUNvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlYWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xuICByZWFkQnlUZXh0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsSGVhZGVySW5mb0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBDdXN0b21BdHRhY2htZW50VXBsb2FkQ29udGV4dCA9IHtcbiAgaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2U7XG59O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudDogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIFN5c3RlbU1lc3NhZ2VDb250ZXh0ID0gTWVzc2FnZUNvbnRleHQgJiB7XG4gIHBhcnNlZERhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGVTZXBhcmF0b3JDb250ZXh0ID0ge1xuICBkYXRlOiBEYXRlO1xuICBwYXJzZWREYXRlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgPSB7XG4gIHVucmVhZENvdW50OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc05vdGlmaWNhdGlvbkNvbnRleHQgPVxuICBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgJiB7XG4gICAgb25KdW1wOiBGdW5jdGlvbjtcbiAgICBvbkRpc21pc3M6IEZ1bmN0aW9uO1xuICB9O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUXVlcnlTdGF0ZSA9IHtcbiAgc3RhdGU6ICdpbi1wcm9ncmVzcycgfCAnc3VjY2VzcycgfCAnZXJyb3InO1xuICAvLyBObyB0eXBlIGRlZiBmcm9tIHN0cmVhbS1jaGF0XG4gIGVycm9yPzogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VJbnB1dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50PFQ+W107XG4gIG1lbnRpb25lZFVzZXJzOiBVc2VyUmVzcG9uc2U8VD5bXTtcbiAgcGFyZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcXVvdGVkTWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGN1c3RvbURhdGE6IHVuZGVmaW5lZCB8IFBhcnRpYWw8VFsnbWVzc2FnZVR5cGUnXT47XG59O1xuXG5leHBvcnQgdHlwZSBPZmZzZXROZXh0UGFnZUNvbmZpZ3VyYXRpb24gPSB7XG4gIHR5cGU6ICdvZmZzZXQnO1xuICBvZmZzZXQ6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlcnROZXh0UGFnZUNvbmZpZ3VyYXRpb248XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgdHlwZTogJ2ZpbHRlcic7XG4gIHBhZ2luYXRpb25GaWx0ZXI6IENoYW5uZWxGaWx0ZXJzPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTmV4dFBhZ2VDb25maWd1cmF0aW9uID1cbiAgfCBPZmZzZXROZXh0UGFnZUNvbmZpZ3VyYXRpb25cbiAgfCBGaWx0ZXJ0TmV4dFBhZ2VDb25maWd1cmF0aW9uO1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlUmVhY3Rpb25DbGlja0RldGFpbHMgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICByZWFjdGlvblR5cGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25zQ2xpY2tEZXRhaWxzPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD47XG4gIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXTtcbiAgaXNNaW5lOiBib29sZWFuO1xuICBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdO1xufTtcblxuZXhwb3J0IHR5cGUgR3JvdXBTdHlsZU9wdGlvbnMgPSB7XG4gIG5vR3JvdXBCeVVzZXI/OiBib29sZWFuO1xuICBsYXN0UmVhZE1lc3NhZ2VJZD86IHN0cmluZztcbiAgbm9Hcm91cEJ5UmVhZFN0YXRlPzogYm9vbGVhbjtcbn07XG4iXX0=