@worktile/gantt 16.0.3 → 16.1.0-next.1

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.
@@ -174,10 +174,6 @@
174
174
  z-index: 3;
175
175
  border-right: 1px solid variables.$gantt-border-color;
176
176
 
177
- .gantt-table-header-container {
178
- display: flex;
179
- }
180
-
181
177
  @include gantt-table-item();
182
178
 
183
179
  .gantt-table-column {
@@ -118,7 +118,9 @@ export class GanttBarDrag {
118
118
  createBarDrag() {
119
119
  const dragRef = this.createDragRef(this.barElement);
120
120
  dragRef.lockAxis = 'x';
121
- dragRef.withBoundaryElement(this.dom.mainItems);
121
+ if (this.ganttUpper.restrictToBounds) {
122
+ dragRef.withBoundaryElement(this.dom.mainItems);
123
+ }
122
124
  dragRef.started.subscribe(() => {
123
125
  this.setDraggingStyles();
124
126
  this.containerScrollLeft = this.dom.mainContainer.scrollLeft;
@@ -471,6 +473,9 @@ export class GanttBarDrag {
471
473
  const itemEnd = end.getUnixTime();
472
474
  const viewStart = this.ganttUpper.view.start.getUnixTime();
473
475
  const viewEnd = this.ganttUpper.view.end.getUnixTime();
476
+ if (!this.ganttUpper.restrictToBounds) {
477
+ return true;
478
+ }
474
479
  if (itemStart < viewStart || itemEnd > viewEnd) {
475
480
  return false;
476
481
  }
@@ -515,4 +520,4 @@ export class GanttBarDrag {
515
520
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: GanttBarDrag, decorators: [{
516
521
  type: Injectable
517
522
  }], ctorParameters: function () { return [{ type: i1.DragDrop }, { type: i2.GanttDomService }, { type: i3.GanttDragContainer }, { type: i0.NgZone }]; } });
518
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWRyYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9iYXIvYmFyLWRyYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFHMUUsT0FBTyxFQUFzQixhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRSxPQUFPLEVBQWEsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBRUgsNEJBQTRCLEVBQzVCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDMUIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFFakM7OztHQUdHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUM7QUFFdEMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDO0FBQ3ZDLE1BQU0sZUFBZSxHQUFHLHVCQUF1QixDQUFDO0FBQ2hELE1BQU0scUJBQXFCLEdBQUcsOEJBQThCLENBQUM7QUFFN0QsU0FBUyxnQkFBZ0IsQ0FBQyxhQUFxQixFQUFFLFNBQWlCO0lBQzlELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdEYsT0FBTyxD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O2dCQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQzthQUNuRDtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDO2FBQ3ZDO1NBQ0o7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQXVCO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7OEdBdmpCUSxZQUFZO2tIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJhZ1JlZiwgRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEdhbnR0RG9tU2VydmljZSB9IGZyb20gJy4uLy4uL2dhbnR0LWRvbS5zZXJ2aWNlJztcbmltcG9ydCB7IEdhbnR0RHJhZ0NvbnRhaW5lciwgSW5CYXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2dhbnR0LWRyYWctY29udGFpbmVyJztcbmltcG9ydCB7IEdhbnR0SXRlbUludGVybmFsIH0gZnJvbSAnLi4vLi4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dERhdGUsIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cywgZGlmZmVyZW5jZUluRGF5cyB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGludGVydmFsLCBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEdhbnR0VXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC11cHBlcic7XG5pbXBvcnQgeyBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi4vLi4vY2xhc3MvbGluayc7XG5pbXBvcnQgeyBwYXNzaXZlTGlzdGVuZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGFzc2l2ZS1saXN0ZW5lcnMnO1xuaW1wb3J0IHtcbiAgICBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbixcbiAgICBnZXRIb3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uLFxuICAgIGlzUG9pbnRlck5lYXJDbGllbnRSZWN0LFxuICAgIGdldEF1dG9TY3JvbGxTcGVlZFJhdGVzXG59IGZyb20gJy4uLy4uL3V0aWxzL2RyYWctc2Nyb2xsJztcblxuLyoqXG4gKiBQcm94aW1pdHksIGFzIGEgcmF0aW8gdG8gd2lkdGgvaGVpZ2h0LCBhdCB3aGljaCBhXG4gKiBkcmFnZ2VkIGl0ZW0gd2lsbCBhZmZlY3QgdGhlIGRyb3AgY29udGFpbmVyLlxuICovXG5jb25zdCBEUk9QX1BST1hJTUlUWV9USFJFU0hPTEQgPSAwLjA1O1xuXG5jb25zdCBkcmFnTWluV2lkdGggPSAxMDtcbmNvbnN0IGF1dG9TY3JvbGxCYXNlU3RlcCA9IDI7XG5jb25zdCBhY3RpdmVDbGFzcyA9ICdnYW50dC1iYXItYWN0aXZlJztcbmNvbnN0IGRyb3BBY3RpdmVDbGFzcyA9ICdnYW50dC1iYXItZHJvcC1hY3RpdmUnO1xuY29uc3Qgc2luZ2xlRHJvcEFjdGl2ZUNsYXNzID0gJ2dhbnR0LWJhci1zaW5nbGUtZHJvcC1hY3RpdmUnO1xuXG5mdW5jdGlvbiBjcmVhdGVTdmdFbGVtZW50KHF1YWxpZmllZE5hbWU6IHN0cmluZywgY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHF1YWxpZmllZE5hbWUpO1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgIHJldHVybiBlbGVtZW50O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR2FudHRCYXJEcmFnIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXI7XG5cbiAgICBwcml2YXRlIGJhckVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbDtcblxuICAgIHByaXZhdGUgZ2V0IGRyYWdEaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLml0ZW0uZHJhZ2dhYmxlIHx8ICF0aGlzLmdhbnR0VXBwZXIuZHJhZ2dhYmxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGxpbmtEcmFnRGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pdGVtLmxpbmthYmxlIHx8ICF0aGlzLmdhbnR0VXBwZXIubGlua2FibGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgYmFySGFuZGxlRHJhZ01vdmVBbmRTY3JvbGxEaXN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFySGFuZGxlRHJhZ01vdmVEaXN0YW5jZSArIHRoaXMuZHJhZ1Njcm9sbERpc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGF1dG9TY3JvbGxTdGVwKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5wb3coYXV0b1Njcm9sbEJhc2VTdGVwLCB0aGlzLmF1dG9TY3JvbGxTcGVlZFJhdGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxpbmtEcmFnZ2luZ0xpbmU6IFNWR0VsZW1lbnQ7XG5cbiAgICBwcml2YXRlIGJhckRyYWdSZWY6IERyYWdSZWY7XG5cbiAgICBwcml2YXRlIGRyYWdSZWZzOiBEcmFnUmVmW10gPSBbXTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIFVzZWQgdG8gc2lnbmFsIHRvIHRoZSBjdXJyZW50IGF1dG8tc2Nyb2xsIHNlcXVlbmNlIHdoZW4gdG8gc3RvcC4gKi9cbiAgICBwcml2YXRlIHN0b3BTY3JvbGxUaW1lcnMkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBjb250YWluZXIgZWxlbWVudCBzY3JvbGxMZWZ0ICovXG4gICAgcHJpdmF0ZSBjb250YWluZXJTY3JvbGxMZWZ0OiBudW1iZXI7XG5cbiAgICAvKiogbW92ZSBkaXN0YW5jZSB3aGVuIGRyYWcgYmFyICovXG4gICAgcHJpdmF0ZSBiYXJEcmFnTW92ZURpc3RhbmNlID0gMDtcblxuICAgIC8qKiBtb3ZlIGRpc3RhbmNlIHdoZW4gZHJhZyBiYXIgaGFuZGxlICovXG4gICAgcHJpdmF0ZSBiYXJIYW5kbGVEcmFnTW92ZURpc3RhbmNlID0gMDtcblxuICAgIC8qKiBzY3JvbGxpbmcgc3RhdGUgd2hlbiBkcmFnICovXG4gICAgcHJpdmF0ZSBkcmFnU2Nyb2xsaW5nID0gZmFsc2U7XG5cbiAgICAvKiogZHJhZ1Njcm9sbERpc3RhbmNlICovXG4gICAgcHJpdmF0ZSBkcmFnU2Nyb2xsRGlzdGFuY2UgPSAwO1xuXG4gICAgLyoqIEhvcml6b250YWwgZGlyZWN0aW9uIGluIHdoaWNoIHRoZSBsaXN0IGlzIGN1cnJlbnRseSBzY3JvbGxpbmcuICovXG4gICAgcHJpdmF0ZSBfaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9IEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLk5PTkU7XG5cbiAgICAvKiogUmVjb3JkIGJhciBkYXlzIHdoZW4gYmFyIGhhbmRsZSBkcmFnIG1vdmUuICovXG4gICAgcHJpdmF0ZSBiYXJIYW5kbGVEcmFnTW92ZVJlY29yZERheXM6IG51bWJlcjtcblxuICAgIC8qKiBTcGVlZCByYXRpbyBmb3IgYXV0byBzY3JvbGwgKi9cbiAgICBwcml2YXRlIGF1dG9TY3JvbGxTcGVlZFJhdGVzID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRyYWdEcm9wOiBEcmFnRHJvcCxcbiAgICAgICAgcHJpdmF0ZSBkb206IEdhbnR0RG9tU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkcmFnQ29udGFpbmVyOiBHYW50dERyYWdDb250YWluZXIsXG4gICAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lXG4gICAgKSB7fVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEcmFnUmVmPFQgPSBhbnk+KGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQpOiBEcmFnUmVmPFQ+IHtcbiAgICAgICAgY29uc3QgZHJhZ1JlZiA9IHRoaXMuZHJhZ0Ryb3AuY3JlYXRlRHJhZyhlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGRyYWdSZWY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEcmFnU2Nyb2xsRXZlbnQoZHJhZ1JlZjogRHJhZ1JlZikge1xuICAgICAgICByZXR1cm4gZnJvbUV2ZW50KHRoaXMuZG9tLm1haW5Db250YWluZXIsICdzY3JvbGwnLCBwYXNzaXZlTGlzdGVuZXJPcHRpb25zKS5waXBlKHRha2VVbnRpbChkcmFnUmVmLmVuZGVkKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNb3VzZUV2ZW50cygpIHtcbiAgICAgICAgY29uc3QgZHJvcENsYXNzID1cbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5jb25maWcubGlua09wdGlvbnM/LmRlcGVuZGVuY3lUeXBlcz8ubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuY29uZmlnLmxpbmtPcHRpb25zPy5kZXBlbmRlbmN5VHlwZXNbMF0gPT09IEdhbnR0TGlua1R5cGUuZnNcbiAgICAgICAgICAgICAgICA/IHNpbmdsZURyb3BBY3RpdmVDbGFzc1xuICAgICAgICAgICAgICAgIDogZHJvcEFjdGl2ZUNsYXNzO1xuXG4gICAgICAgIGZyb21FdmVudCh0aGlzLmJhckVsZW1lbnQsICdtb3VzZWVudGVyJywgcGFzc2l2ZUxpc3RlbmVyT3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdDb250YWluZXIubGlua0RyYWdnaW5nSWQgJiYgdGhpcy5kcmFnQ29udGFpbmVyLmxpbmtEcmFnZ2luZ0lkICE9PSB0aGlzLml0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbS5saW5rYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoZHJvcENsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5lbWl0TGlua0RyYWdFbnRlcmVkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5iYXJFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKGFjdGl2ZUNsYXNzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQodGhpcy5iYXJFbGVtZW50LCAnbW91c2VsZWF2ZScsIHBhc3NpdmVMaXN0ZW5lck9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJhZ0NvbnRhaW5lci5saW5rRHJhZ2dpbmdJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmVtaXRMaW5rRHJhZ0xlYXZlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShkcm9wQ2xhc3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVCYXJEcmFnKCkge1xuICAgICAgICBjb25zdCBkcmFnUmVmID0gdGhpcy5jcmVhdGVEcmFnUmVmKHRoaXMuYmFyRWxlbWVudCk7XG4gICAgICAgIGRyYWdSZWYubG9ja0F4aXMgPSAneCc7XG4gICAgICAgIGRyYWdSZWYud2l0aEJvdW5kYXJ5RWxlbWVudCh0aGlzLmRvbS5tYWluSXRlbXMgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICBkcmFnUmVmLnN0YXJ0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJhZ2dpbmdTdHlsZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyU2Nyb2xsTGVmdCA9IHRoaXMuZG9tLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRHJhZ1Njcm9sbEV2ZW50KGRyYWdSZWYpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRyYWdSZWYuaXNEcmFnZ2luZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdTY3JvbGxEaXN0YW5jZSA9IHRoaXMuZG9tLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCAtIHRoaXMuY29udGFpbmVyU2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnU2Nyb2xsRGlzdGFuY2UgPSBkcmFnU2Nyb2xsRGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgIGRyYWdSZWZbJ19ib3VuZGFyeVJlY3QnXSA9IHRoaXMuZG9tLm1haW5JdGVtcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJEcmFnTW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLmVtaXQoeyBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBkcmFnUmVmLm1vdmVkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTY3JvbGxpbmdJZk5lY2Vzc2FyeShldmVudC5wb2ludGVyUG9zaXRpb24ueCwgZXZlbnQucG9pbnRlclBvc2l0aW9uLnkpO1xuICAgICAgICAgICAgdGhpcy5iYXJEcmFnTW92ZURpc3RhbmNlID0gZXZlbnQuZGlzdGFuY2UueDtcbiAgICAgICAgICAgIGlmICghdGhpcy5kcmFnU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXJEcmFnTW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBkcmFnUmVmLmVuZGVkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJEcmFnZ2luZ1N0eWxlcygpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyYWdCYWNrZHJvcCgpO1xuICAgICAgICAgICAgZXZlbnQuc291cmNlLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnN0b3BTY3JvbGxpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ1Njcm9sbGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kcmFnU2Nyb2xsRGlzdGFuY2UgPSAwO1xuICAgICAgICAgICAgdGhpcy5iYXJEcmFnTW92ZURpc3RhbmNlID0gMDtcbiAgICAgICAgICAgIHRoaXMuaXRlbS51cGRhdGVSZWZzKHtcbiAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZVJhbmdlV2lkdGgodGhpcy5pdGVtLnN0YXJ0LnN0YXJ0T2ZEYXkoKSwgdGhpcy5pdGVtLmVuZC5lbmRPZkRheSgpKSxcbiAgICAgICAgICAgICAgICB4OiB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXRYUG9pbnRCeURhdGUodGhpcy5pdGVtLnN0YXJ0KSxcbiAgICAgICAgICAgICAgICB5OiAodGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0IC0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5iYXJIZWlnaHQpIC8gMiAtIDFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdFbmRlZC5lbWl0KHsgaXRlbTogdGhpcy5pdGVtLm9yaWdpbiB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYmFyRHJhZ1JlZiA9IGRyYWdSZWY7XG5cbiAgICAgICAgcmV0dXJuIGRyYWdSZWY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVCYXJIYW5kbGVEcmFncygpIHtcbiAgICAgICAgY29uc3QgZHJhZ1JlZnMgPSBbXTtcbiAgICAgICAgY29uc3QgaGFuZGxlcyA9IHRoaXMuYmFyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignLmRyYWctaGFuZGxlcyAuaGFuZGxlJyk7XG4gICAgICAgIGhhbmRsZXMuZm9yRWFjaCgoaGFuZGxlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNCZWZvcmUgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgICAgIGNvbnN0IGRyYWdSZWYgPSB0aGlzLmNyZWF0ZURyYWdSZWYoaGFuZGxlKTtcbiAgICAgICAgICAgIGRyYWdSZWYubG9ja0F4aXMgPSAneCc7XG4gICAgICAgICAgICBkcmFnUmVmLndpdGhCb3VuZGFyeUVsZW1lbnQodGhpcy5kb20ubWFpbkl0ZW1zIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGRyYWdSZWYuc3RhcnRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RHJhZ2dpbmdTdHlsZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lclNjcm9sbExlZnQgPSB0aGlzLmRvbS5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEcmFnU2Nyb2xsRXZlbnQoZHJhZ1JlZikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRyYWdSZWYuaXNEcmFnZ2luZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkcmFnU2Nyb2xsRGlzdGFuY2UgPSB0aGlzLmRvbS5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQgLSB0aGlzLmNvbnRhaW5lclNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdTY3JvbGxEaXN0YW5jZSA9IGRyYWdTY3JvbGxEaXN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdSZWZbJ19ib3VuZGFyeVJlY3QnXSA9IHRoaXMuZG9tLm1haW5JdGVtcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ1Njcm9sbGluZyAmJiB0aGlzLmlzU3RhcnRHcmVhdGVyVGhhbkVuZFdoZW5CYXJIYW5kbGVEcmFnTW92ZShpc0JlZm9yZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3BTY3JvbGxpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdTY3JvbGxpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJCZWZvcmVIYW5kbGVEcmFnTW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckFmdGVySGFuZGxlRHJhZ01vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnU3RhcnRlZC5lbWl0KHsgaXRlbTogdGhpcy5pdGVtLm9yaWdpbiB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkcmFnUmVmLm1vdmVkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXJIYW5kbGVEcmFnTW92ZVJlY29yZERheXMgJiYgdGhpcy5iYXJIYW5kbGVEcmFnTW92ZVJlY29yZERheXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRTY3JvbGxpbmdJZk5lY2Vzc2FyeShldmVudC5wb2ludGVyUG9zaXRpb24ueCwgZXZlbnQucG9pbnRlclBvc2l0aW9uLnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmJhckhhbmRsZURyYWdNb3ZlRGlzdGFuY2UgPSBldmVudC5kaXN0YW5jZS54O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0JlZm9yZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJCZWZvcmVIYW5kbGVEcmFnTW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJBZnRlckhhbmRsZURyYWdNb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZHJhZ1JlZi5lbmRlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckRyYWdnaW5nU3R5bGVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyYWdCYWNrZHJvcCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5yZXNldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcFNjcm9sbGluZygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1Njcm9sbGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1Njcm9sbERpc3RhbmNlID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmJhckhhbmRsZURyYWdNb3ZlRGlzdGFuY2UgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbS51cGRhdGVSZWZzKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldERhdGVSYW5nZVdpZHRoKHRoaXMuaXRlbS5zdGFydC5zdGFydE9mRGF5KCksIHRoaXMuaXRlbS5lbmQuZW5kT2ZEYXkoKSksXG4gICAgICAgICAgICAgICAgICAgIHg6IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldFhQb2ludEJ5RGF0ZSh0aGlzLml0ZW0uc3RhcnQpLFxuICAgICAgICAgICAgICAgICAgICB5OiAodGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0IC0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5iYXJIZWlnaHQpIC8gMiAtIDFcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ0VuZGVkLmVtaXQoeyBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkcmFnUmVmcy5wdXNoKGRyYWdSZWYpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGRyYWdSZWZzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGlua0hhbmRsZURyYWdzKCkge1xuICAgICAgICBjb25zdCBkcmFnUmVmcyA9IFtdO1xuICAgICAgICBjb25zdCBoYW5kbGVzID0gdGhpcy5iYXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcubGluay1oYW5kbGVzIC5oYW5kbGUnKTtcbiAgICAgICAgaGFuZGxlcy5mb3JFYWNoKChoYW5kbGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0JlZ2luID0gaW5kZXggPT09IDA7XG4gICAgICAgICAgICBjb25zdCBkcmFnUmVmID0gdGhpcy5kcmFnRHJvcC5jcmVhdGVEcmFnKGhhbmRsZSk7XG4gICAgICAgICAgICBkcmFnUmVmLndpdGhCb3VuZGFyeUVsZW1lbnQodGhpcy5kb20ucm9vdCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICBkcmFnUmVmLmJlZm9yZVN0YXJ0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGUuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXJEcmFnUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRHJhZ1JlZi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTGlua0RyYWdnaW5nTGluZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5lbWl0TGlua0RyYWdTdGFydGVkKHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5iYXJFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIHBvczogaXNCZWdpbiA/IEluQmFyUG9zaXRpb24uc3RhcnQgOiBJbkJhclBvc2l0aW9uLmZpbmlzaFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRyYWdSZWYubW92ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLmNhbGNMaW5rTGluZVBvc2l0aW9ucyhoYW5kbGUsIGlzQmVnaW4pO1xuICAgICAgICAgICAgICAgIHRoaXMubGlua0RyYWdnaW5nTGluZS5zZXRBdHRyaWJ1dGUoJ3gxJywgcG9zaXRpb25zLngxLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlua0RyYWdnaW5nTGluZS5zZXRBdHRyaWJ1dGUoJ3kxJywgcG9zaXRpb25zLnkxLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlua0RyYWdnaW5nTGluZS5zZXRBdHRyaWJ1dGUoJ3gyJywgcG9zaXRpb25zLngyLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlua0RyYWdnaW5nTGluZS5zZXRBdHRyaWJ1dGUoJ3kyJywgcG9zaXRpb25zLnkyLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRyYWdSZWYuZW5kZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYmFyRHJhZ1JlZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckRyYWdSZWYuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g6K6h566XbGluZeaLluWKqOeahOiQveeCueS9jeS6juebruagh0JhcueahOWAvO+8jOWmguaenOWAvOWkp+S6jkJhcuWuveW6pueahOS4gOWNiu+8jOivtOaYjuaYr+aLluWKqOWIsEJlZ2lu5L2N572u77yM5ZCm5YiZ5YiZ5Li65ouW5Yqo5YiwRW5k5L2N572uXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ0NvbnRhaW5lci5saW5rRHJhZ1BhdGgudG8pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2VQb2ludFggPVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc291cmNlLmdldFJvb3RFbGVtZW50KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueCAtXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIubGlua0RyYWdQYXRoLnRvLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZW1pdExpbmtEcmFnRW5kZWQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5kcmFnQ29udGFpbmVyLmxpbmtEcmFnUGF0aC50byxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZVBvaW50WCA8IHRoaXMuZHJhZ0NvbnRhaW5lci5saW5rRHJhZ1BhdGgudG8uaXRlbS5yZWZzLndpZHRoIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEluQmFyUG9zaXRpb24uc3RhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBJbkJhclBvc2l0aW9uLmZpbmlzaFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZW1pdExpbmtEcmFnRW5kZWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXZlbnQuc291cmNlLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYWN0aXZlQ2xhc3MpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUxpbmtEcmFnZ2luZ0xpbmUoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkcmFnUmVmcy5wdXNoKGRyYWdSZWYpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGRyYWdSZWZzO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkRyYWdCYWNrZHJvcChkcmFnRWxlbWVudDogSFRNTEVsZW1lbnQsIHN0YXJ0OiBHYW50dERhdGUsIGVuZDogR2FudHREYXRlKSB7XG4gICAgICAgIGNvbnN0IGRyYWdCYWNrZHJvcEVsZW1lbnQgPSB0aGlzLmRvbS5yb290LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1kcmFnLWJhY2tkcm9wJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRyYWdNYXNrRWxlbWVudCA9IHRoaXMuZG9tLnJvb3QucXVlcnlTZWxlY3RvcignLmdhbnR0LWRyYWctbWFzaycpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCByb290UmVjdCA9IHRoaXMuZG9tLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGRyYWdSZWN0ID0gZHJhZ0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCBsZWZ0ID0gZHJhZ1JlY3QubGVmdCAtIHJvb3RSZWN0LmxlZnQgLSAodGhpcy5kb20uc2lkZS5jbGllbnRXaWR0aCArIDEpO1xuICAgICAgICBpZiAodGhpcy5kcmFnU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9PT0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uTEVGVCkge1xuICAgICAgICAgICAgICAgIGxlZnQgKz0gdGhpcy5hdXRvU2Nyb2xsU3RlcDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9PT0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uUklHSFQpIHtcbiAgICAgICAgICAgICAgICBsZWZ0IC09IHRoaXMuYXV0b1Njcm9sbFN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd2lkdGggPSBkcmFnUmVjdC5yaWdodCAtIGRyYWdSZWN0LmxlZnQ7XG5cbiAgICAgICAgLy8gTm90ZTogdXBkYXRpbmcgc3R5bGVzIHdpbGwgY2F1c2UgcmUtbGF5b3V0IHNvIHdlIGhhdmUgdG8gcGxhY2UgdGhlbSBjb25zaXN0ZW50bHkgb25lIGJ5IG9uZS5cbiAgICAgICAgZHJhZ01hc2tFbGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcbiAgICAgICAgZHJhZ01hc2tFbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICBkcmFnTWFza0VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgIGRyYWdCYWNrZHJvcEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgIC8vIFRoaXMgd2lsbCBpbnZhbGlkYXRlIHRoZSBsYXlvdXQsIGJ1dCB3ZSB3b24ndCBuZWVkIHJlLWxheW91dCwgYmVjYXVzZSB3ZSBzZXQgc3R5bGVzIHByZXZpb3VzbHkuXG4gICAgICAgIGRyYWdNYXNrRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc3RhcnQnKS5pbm5lckhUTUwgPSBzdGFydC5mb3JtYXQoJ01NLWRkJyk7XG4gICAgICAgIGRyYWdNYXNrRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZW5kJykuaW5uZXJIVE1MID0gZW5kLmZvcm1hdCgnTU0tZGQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlRHJhZ0JhY2tkcm9wKCkge1xuICAgICAgICBjb25zdCBkcmFnQmFja2Ryb3BFbGVtZW50ID0gdGhpcy5kb20ucm9vdC5xdWVyeVNlbGVjdG9yKCcuZ2FudHQtZHJhZy1iYWNrZHJvcCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBkcmFnTWFza0VsZW1lbnQgPSB0aGlzLmRvbS5yb290LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1kcmFnLW1hc2snKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgZHJhZ01hc2tFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIGRyYWdCYWNrZHJvcEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERyYWdnaW5nU3R5bGVzKCkge1xuICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZ2FudHQtYmFyLWRyYWdnYWJsZS1kcmFnJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckRyYWdnaW5nU3R5bGVzKCkge1xuICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZ2FudHQtYmFyLWRyYWdnYWJsZS1kcmFnJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiYXJEcmFnTW92ZSgpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFggPSB0aGlzLml0ZW0ucmVmcy54ICsgdGhpcy5iYXJEcmFnTW92ZURpc3RhbmNlICsgdGhpcy5kcmFnU2Nyb2xsRGlzdGFuY2U7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KGN1cnJlbnRYKTtcbiAgICAgICAgY29uc3QgY3VycmVudFN0YXJ0WCA9IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldFhQb2ludEJ5RGF0ZShjdXJyZW50RGF0ZSk7XG4gICAgICAgIGNvbnN0IGRheVdpZHRoID0gdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF5T2NjdXBhbmN5V2lkdGgoY3VycmVudERhdGUpO1xuICAgICAgICBjb25zdCBkaWZmRGF5cyA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyh0aGlzLml0ZW0uZW5kLnZhbHVlLCB0aGlzLml0ZW0uc3RhcnQudmFsdWUpO1xuXG4gICAgICAgIGxldCBzdGFydCA9IGN1cnJlbnREYXRlO1xuICAgICAgICBsZXQgZW5kID0gY3VycmVudERhdGUuYWRkRGF5cyhkaWZmRGF5cyk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRYID4gY3VycmVudFN0YXJ0WCArIGRheVdpZHRoIC8gMikge1xuICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5hZGREYXlzKDEpO1xuICAgICAgICAgICAgZW5kID0gZW5kLmFkZERheXMoMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gY3VycmVudFggLSB0aGlzLmJhckRyYWdNb3ZlRGlzdGFuY2U7XG4gICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuRHJhZ0JhY2tkcm9wKFxuICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KGN1cnJlbnRYKSxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci52aWV3LmdldERhdGVCeVhQb2ludChjdXJyZW50WCArIHRoaXMuaXRlbS5yZWZzLndpZHRoKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghdGhpcy5pc1N0YXJ0T3JFbmRJbnNpZGVWaWV3KHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLml0ZW0udXBkYXRlRGF0ZShzdGFydCwgZW5kKTtcbiAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdNb3ZlZC5lbWl0KHsgaXRlbTogdGhpcy5pdGVtLm9yaWdpbiB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJhckJlZm9yZUhhbmRsZURyYWdNb3ZlKCkge1xuICAgICAgICBjb25zdCB7IHgsIHN0YXJ0LCBvbmVEYXlXaWR0aCB9ID0gdGhpcy5zdGFydE9mQmFySGFuZGxlKCk7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5pdGVtLnJlZnMud2lkdGggKyB0aGlzLmJhckhhbmRsZURyYWdNb3ZlQW5kU2Nyb2xsRGlzdGFuY2UgKiAtMTtcbiAgICAgICAgY29uc3QgZGF5cyA9IGRpZmZlcmVuY2VJbkRheXModGhpcy5pdGVtLmVuZC52YWx1ZSwgc3RhcnQudmFsdWUpO1xuXG4gICAgICAgIGlmICh3aWR0aCA+IGRyYWdNaW5XaWR0aCAmJiBkYXlzID4gMCkge1xuICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLmxlZnQgPSB4ICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMub3BlbkRyYWdCYWNrZHJvcCh0aGlzLmJhckVsZW1lbnQsIHN0YXJ0LCB0aGlzLml0ZW0uZW5kKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU3RhcnRPckVuZEluc2lkZVZpZXcoc3RhcnQsIHRoaXMuaXRlbS5lbmQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLml0ZW0udXBkYXRlRGF0ZShzdGFydCwgdGhpcy5pdGVtLmVuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5iYXJIYW5kbGVEcmFnTW92ZVJlY29yZERheXMgPiAwICYmIGRheXMgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudC5zdHlsZS53aWR0aCA9IG9uZURheVdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICBjb25zdCB4ID0gdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0WFBvaW50QnlEYXRlKHRoaXMuaXRlbS5lbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudC5zdHlsZS5sZWZ0ID0geCArICdweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9wZW5EcmFnQmFja2Ryb3AodGhpcy5iYXJFbGVtZW50LCB0aGlzLml0ZW0uZW5kLnN0YXJ0T2ZEYXkoKSwgdGhpcy5pdGVtLmVuZCk7XG4gICAgICAgICAgICB0aGlzLml0ZW0udXBkYXRlRGF0ZSh0aGlzLml0ZW0uZW5kLnN0YXJ0T2ZEYXkoKSwgdGhpcy5pdGVtLmVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iYXJIYW5kbGVEcmFnTW92ZVJlY29yZERheXMgPSBkYXlzO1xuXG4gICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnTW92ZWQuZW1pdCh7IGl0ZW06IHRoaXMuaXRlbS5vcmlnaW4gfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiYXJBZnRlckhhbmRsZURyYWdNb3ZlKCkge1xuICAgICAgICBjb25zdCB7IHdpZHRoLCBlbmQgfSA9IHRoaXMuZW5kT2ZCYXJIYW5kbGUoKTtcbiAgICAgICAgY29uc3QgZGF5cyA9IGRpZmZlcmVuY2VJbkRheXMoZW5kLnZhbHVlLCB0aGlzLml0ZW0uc3RhcnQudmFsdWUpO1xuXG4gICAgICAgIGlmICh3aWR0aCA+IGRyYWdNaW5XaWR0aCAmJiBkYXlzID4gMCkge1xuICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJhZ0JhY2tkcm9wKHRoaXMuYmFyRWxlbWVudCwgdGhpcy5pdGVtLnN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU3RhcnRPckVuZEluc2lkZVZpZXcodGhpcy5pdGVtLnN0YXJ0LCBlbmQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pdGVtLnVwZGF0ZURhdGUodGhpcy5pdGVtLnN0YXJ0LCBlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuYmFySGFuZGxlRHJhZ01vdmVSZWNvcmREYXlzID4gMCAmJiBkYXlzIDw9IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbmVEYXlXaWR0aCA9IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldERhdGVSYW5nZVdpZHRoKHRoaXMuaXRlbS5zdGFydCwgdGhpcy5pdGVtLnN0YXJ0LmVuZE9mRGF5KCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudC5zdHlsZS53aWR0aCA9IG9uZURheVdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3BlbkRyYWdCYWNrZHJvcCh0aGlzLmJhckVsZW1lbnQsIHRoaXMuaXRlbS5zdGFydCwgdGhpcy5pdGVtLnN0YXJ0LmVuZE9mRGF5KCkpO1xuICAgICAgICAgICAgdGhpcy5pdGVtLnVwZGF0ZURhdGUodGhpcy5pdGVtLnN0YXJ0LCB0aGlzLml0ZW0uc3RhcnQuZW5kT2ZEYXkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iYXJIYW5kbGVEcmFnTW92ZVJlY29yZERheXMgPSBkYXlzO1xuICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ01vdmVkLmVtaXQoeyBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY0xpbmtMaW5lUG9zaXRpb25zKHRhcmdldDogSFRNTEVsZW1lbnQsIGlzQmVmb3JlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHJvb3RSZWN0ID0gdGhpcy5kb20ucm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgbGF5ZXJSZWN0ID0gdGFyZ2V0LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHgxOiBsYXllclJlY3QubGVmdCArIChpc0JlZm9yZSA/IDAgOiBsYXllclJlY3Qud2lkdGgpIC0gcm9vdFJlY3QubGVmdCxcbiAgICAgICAgICAgIHkxOiBsYXllclJlY3QudG9wICsgbGF5ZXJSZWN0LmhlaWdodCAvIDIgLSByb290UmVjdC50b3AsXG4gICAgICAgICAgICB4MjogdGFyZ2V0UmVjdC5sZWZ0IC0gcm9vdFJlY3QubGVmdCArIHRhcmdldFJlY3Qud2lkdGggLyAyLFxuICAgICAgICAgICAgeTI6IHRhcmdldFJlY3QudG9wIC0gcm9vdFJlY3QudG9wICsgdGFyZ2V0UmVjdC5oZWlnaHQgLyAyXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMaW5rRHJhZ2dpbmdMaW5lKCkge1xuICAgICAgICBpZiAoIXRoaXMubGlua0RyYWdnaW5nTGluZSkge1xuICAgICAgICAgICAgY29uc3Qgc3ZnRWxlbWVudCA9IGNyZWF0ZVN2Z0VsZW1lbnQoJ3N2ZycsICdnYW50dC1saW5rLWRyYWctY29udGFpbmVyJyk7XG4gICAgICAgICAgICBjb25zdCBsaW5FbGVtZW50ID0gY3JlYXRlU3ZnRWxlbWVudCgnbGluZScsICdsaW5rLWRyYWdnaW5nLWxpbmUnKTtcbiAgICAgICAgICAgIGxpbkVsZW1lbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgIHN2Z0VsZW1lbnQuYXBwZW5kQ2hpbGQobGluRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHN2Z0VsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lID0gbGluRWxlbWVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveUxpbmtEcmFnZ2luZ0xpbmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxpbmtEcmFnZ2luZ0xpbmUpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0RyYWdnaW5nTGluZS5wYXJlbnRFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRTY3JvbGxJbnRlcnZhbCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zdG9wU2Nyb2xsaW5nKCk7XG4gICAgICAgIGludGVydmFsKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuc3RvcFNjcm9sbFRpbWVycyQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZG9tLm1haW5Db250YWluZXI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsU3RlcCA9IHRoaXMuYXV0b1Njcm9sbFN0ZXA7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPT09IEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLkxFRlQpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zY3JvbGxCeSgtc2Nyb2xsU3RlcCwgMCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID09PSBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbi5SSUdIVCkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnNjcm9sbEJ5KHNjcm9sbFN0ZXAsIDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHN0YXJ0U2Nyb2xsaW5nSWZOZWNlc3NhcnkocG9pbnRlclg6IG51bWJlciwgcG9pbnRlclk6IG51bWJlcikge1xuICAgICAgICBjb25zdCBjbGllbnRSZWN0ID0gdGhpcy5kb20ubWFpbkNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuZG9tLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdDtcbiAgICAgICAgaWYgKGlzUG9pbnRlck5lYXJDbGllbnRSZWN0KGNsaWVudFJlY3QsIERST1BfUFJPWElNSVRZX1RIUkVTSE9MRCwgcG9pbnRlclgsIHBvaW50ZXJZKSkge1xuICAgICAgICAgICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9IGdldEhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24oY2xpZW50UmVjdCwgcG9pbnRlclgpO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPT09IEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLkxFRlQgJiYgc2Nyb2xsTGVmdCA+IDApIHx8XG4gICAgICAgICAgICAgICAgKGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPT09IEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLlJJR0hUICYmXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQgPCB0aGlzLmdhbnR0VXBwZXIudmlldy53aWR0aCAtIGNsaWVudFJlY3Qud2lkdGgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID0gaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbjtcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9TY3JvbGxTcGVlZFJhdGVzID0gZ2V0QXV0b1Njcm9sbFNwZWVkUmF0ZXMoY2xpZW50UmVjdCwgcG9pbnRlclgsIGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1Njcm9sbGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKHRoaXMuc3RhcnRTY3JvbGxJbnRlcnZhbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1Njcm9sbGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcFNjcm9sbGluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29uZGl0aW9ucyB0byBzdG9wIGF1dG8tc2Nyb2xsOiB3aGVuIHRoZSBzdGFydCBpcyBncmVhdGVyIHRoYW4gdGhlIGVuZCBhbmQgdGhlIGJhciBhcHBlYXJzIGluIHRoZSB2aWV3XG4gICAgcHJpdmF0ZSBpc1N0YXJ0R3JlYXRlclRoYW5FbmRXaGVuQmFySGFuZGxlRHJhZ01vdmUoaXNCZWZvcmU6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IGlzU3RhcnRHcmVhdGVyVGhhbkVuZDogYm9vbGVhbjtcbiAgICAgICAgbGV0IGlzQmFyQXBwZWFyc0luVmlldzogYm9vbGVhbjtcblxuICAgICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gdGhpcy5kb20ubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICBjb25zdCBjbGllbnRXaWR0aCA9IHRoaXMuZG9tLm1haW5Db250YWluZXIuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHhUaHJlc2hvbGQgPSBjbGllbnRXaWR0aCAqIERST1BfUFJPWElNSVRZX1RIUkVTSE9MRDtcblxuICAgICAgICBpZiAoaXNCZWZvcmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgc3RhcnQsIG9uZURheVdpZHRoIH0gPSB0aGlzLnN0YXJ0T2ZCYXJIYW5kbGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHhQb2ludGVyQnlFbmREYXRlID0gdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0WFBvaW50QnlEYXRlKHRoaXMuaXRlbS5lbmQpO1xuXG4gICAgICAgICAgICBpc1N0YXJ0R3JlYXRlclRoYW5FbmQgPSBzdGFydC52YWx1ZSA+IHRoaXMuaXRlbS5lbmQudmFsdWU7XG4gICAgICAgICAgICBpc0JhckFwcGVhcnNJblZpZXcgPSB4UG9pbnRlckJ5RW5kRGF0ZSArIG9uZURheVdpZHRoICsgeFRocmVzaG9sZCA8PSBzY3JvbGxMZWZ0ICsgY2xpZW50V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IGVuZCB9ID0gdGhpcy5lbmRPZkJhckhhbmRsZSgpO1xuICAgICAgICAgICAgY29uc3QgeFBvaW50ZXJCeVN0YXJ0RGF0ZSA9IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldFhQb2ludEJ5RGF0ZSh0aGlzLml0ZW0uc3RhcnQpO1xuXG4gICAgICAgICAgICBpc1N0YXJ0R3JlYXRlclRoYW5FbmQgPSBlbmQudmFsdWUgPCB0aGlzLml0ZW0uc3RhcnQudmFsdWU7XG4gICAgICAgICAgICBpc0JhckFwcGVhcnNJblZpZXcgPSBzY3JvbGxMZWZ0ICsgeFRocmVzaG9sZCA8PSB4UG9pbnRlckJ5U3RhcnREYXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzU3RhcnRHcmVhdGVyVGhhbkVuZCAmJiBpc0JhckFwcGVhcnNJblZpZXcgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU29tZSBkYXRhIGluZm9ybWF0aW9uIGFib3V0IGRyYWdnaW5nIHN0YXJ0IHVudGlsIGl0IGlzIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiBlbmRcbiAgICBwcml2YXRlIHN0YXJ0T2ZCYXJIYW5kbGUoKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLml0ZW0ucmVmcy54ICsgdGhpcy5iYXJIYW5kbGVEcmFnTW92ZUFuZFNjcm9sbERpc3RhbmNlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeCxcbiAgICAgICAgICAgIHN0YXJ0OiB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXREYXRlQnlYUG9pbnQoeCksXG4gICAgICAgICAgICBvbmVEYXlXaWR0aDogdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZVJhbmdlV2lkdGgodGhpcy5pdGVtLmVuZC5zdGFydE9mRGF5KCksIHRoaXMuaXRlbS5lbmQpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gU29tZSBkYXRhIGluZm9ybWF0aW9uIGFib3V0IGRyYWdnaW5nIGVuZCBvZiBiYXIgaGFuZGxlXG4gICAgcHJpdmF0ZSBlbmRPZkJhckhhbmRsZSgpIHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLml0ZW0ucmVmcy53aWR0aCArIHRoaXMuYmFySGFuZGxlRHJhZ01vdmVBbmRTY3JvbGxEaXN0YW5jZTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBlbmQ6IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldERhdGVCeVhQb2ludCh0aGlzLml0ZW0ucmVmcy54ICsgd2lkdGgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdG9wU2Nyb2xsaW5nKCkge1xuICAgICAgICB0aGlzLnN0b3BTY3JvbGxUaW1lcnMkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RhcnRPckVuZEluc2lkZVZpZXcoc3RhcnQ6IEdhbnR0RGF0ZSwgZW5kOiBHYW50dERhdGUpIHtcbiAgICAgICAgY29uc3QgaXRlbVN0YXJ0ID0gc3RhcnQuZ2V0VW5peFRpbWUoKTtcbiAgICAgICAgY29uc3QgaXRlbUVuZCA9IGVuZC5nZXRVbml4VGltZSgpO1xuICAgICAgICBjb25zdCB2aWV3U3RhcnQgPSB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydC5nZXRVbml4VGltZSgpO1xuICAgICAgICBjb25zdCB2aWV3RW5kID0gdGhpcy5nYW50dFVwcGVyLnZpZXcuZW5kLmdldFVuaXhUaW1lKCk7XG4gICAgICAgIGlmIChpdGVtU3RhcnQgPCB2aWV3U3RhcnQgfHwgaXRlbUVuZCA+IHZpZXdFbmQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlRHJhZ3MoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgaXRlbTogR2FudHRJdGVtSW50ZXJuYWwsIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIpIHtcbiAgICAgICAgdGhpcy5pdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5iYXJFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHRoaXMuZ2FudHRVcHBlciA9IGdhbnR0VXBwZXI7XG4gICAgICAgIGlmICh0aGlzLmRyYWdEaXNhYmxlZCAmJiB0aGlzLmxpbmtEcmFnRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTW91c2VFdmVudHMoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5kcmFnRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnUmVmID0gdGhpcy5jcmVhdGVCYXJEcmFnKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJhZ0hhbmRsZXNSZWZzID0gdGhpcy5jcmVhdGVCYXJIYW5kbGVEcmFncygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1JlZnMucHVzaChkcmFnUmVmLCAuLi5kcmFnSGFuZGxlc1JlZnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmxpbmtEcmFnRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rRHJhZ1JlZnMgPSB0aGlzLmNyZWF0ZUxpbmtIYW5kbGVEcmFncygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1JlZnMucHVzaCguLi5saW5rRHJhZ1JlZnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlSXRlbShpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbCkge1xuICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNsb3NlRHJhZ0JhY2tkcm9wKCk7XG4gICAgICAgIHRoaXMuZHJhZ1JlZnMuZm9yRWFjaCgoZHJhZ1JlZikgPT4gZHJhZ1JlZi5kaXNwb3NlKCkpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnN0b3BTY3JvbGxpbmcoKTtcbiAgICAgICAgdGhpcy5zdG9wU2Nyb2xsVGltZXJzJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
523
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWRyYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9iYXIvYmFyLWRyYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFHMUUsT0FBTyxFQUFzQixhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRSxPQUFPLEVBQWEsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBRUgsNEJBQTRCLEVBQzVCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDMUIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFFakM7OztHQUdHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUM7QUFFdEMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDO0FBQ3ZDLE1BQU0sZUFBZSxHQUFHLHVCQUF1QixDQUFDO0FBQ2hELE1BQU0scUJBQXFCLEdBQUcsOEJBQThCLENBQUM7QUFFN0QsU0FBUyxnQkFBZ0IsQ0FBQyxhQUFxQixFQUFFLFNBQWlCO0lBQzlELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdEYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUdELE1BQU0sT0FBTyxZQUFZO0lBT3JCLElBQVksWUFBWTtRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBWSxnQkFBZ0I7UUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQVksa0NBQWtDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBWSxjQUFjO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBcUNELFlBQ1ksUUFBa0IsRUFDbEIsR0FBb0IsRUFDcEIsYUFBaUMsRUFDakMsT0FBZTtRQUhmLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsUUFBRyxHQUFILEdBQUcsQ0FBaUI7UUFDcEIsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBQ2pDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFuQ25CLGFBQVEsR0FBYyxFQUFFLENBQUM7UUFFekIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdkMsdUVBQXVFO1FBQy9ELHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFLaEQsa0NBQWtDO1FBQzFCLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUVoQyx5Q0FBeUM7UUFDakMsOEJBQXlCLEdBQUcsQ0FBQyxDQUFDO1FBRXRDLGdDQUFnQztRQUN4QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUU5Qix5QkFBeUI7UUFDakIsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLHFFQUFxRTtRQUM3RCwrQkFBMEIsOENBQXNDO1FBS3hFLGtDQUFrQztRQUMxQix5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUE4WHpCLHdCQUFtQixHQUFHLEdBQUcsRUFBRTtZQUMvQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsUUFBUSxDQUFDLENBQUMsRUFBRSx1QkFBdUIsQ0FBQztpQkFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztpQkFDdkMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztnQkFDcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDdkMsSUFBSSxJQUFJLENBQUMsMEJBQTBCLCtDQUF1QyxFQUFFO29CQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNqQztxQkFBTSxJQUFJLElBQUksQ0FBQywwQkFBMEIsZ0RBQXdDLEVBQUU7b0JBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNoQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDO0lBcFlDLENBQUM7SUFFSSxhQUFhLENBQVUsT0FBOEM7UUFDekUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE9BQWdCO1FBQzFDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixNQUFNLFNBQVMsR0FDWCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sS0FBSyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssYUFBYSxDQUFDLEVBQUU7WUFDdkUsQ0FBQyxDQUFDLHFCQUFxQjtZQUN2QixDQUFDLENBQUMsZUFBZSxDQUFDO1FBRTFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxzQkFBc0IsQ0FBQzthQUMzRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDekYsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDO3dCQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVO3FCQUMzQixDQUFDLENBQUM7aUJBQ047YUFDSjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDOUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVQLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxzQkFBc0IsQ0FBQzthQUMzRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakQ7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLGFBQWE7UUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsT0FBTyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQXdCLENBQUMsQ0FBQztTQUNsRTtRQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQzdELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUMvQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRTtvQkFDdEIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO29CQUN4RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7b0JBQzdDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUN0RSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3RCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN0QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckcsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDeEQsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2FBQ3BGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztRQUUxQixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFjLHVCQUF1QixDQUFDLENBQUM7UUFDdkYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5QixNQUFNLFFBQVEsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsT0FBTyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7WUFDdkIsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBd0IsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7Z0JBQzdELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUMvQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRTt3QkFDdEIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO3dCQUN4RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7d0JBQzdDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO3dCQUV0RSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLDBDQUEwQyxDQUFDLFFBQVEsQ0FBQyxFQUFFOzRCQUNqRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO3lCQUM5Qjt3QkFFRCxJQUFJLFFBQVEsRUFBRTs0QkFDVixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzt5QkFDbEM7NkJBQU07NEJBQ0gsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7eUJBQ2pDO3FCQUNKO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEUsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUM5QixJQUFJLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxFQUFFO29CQUMxRSxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDcEY7Z0JBQ0QsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDckIsSUFBSSxRQUFRLEVBQUU7d0JBQ1YsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7cUJBQ2xDO3lCQUFNO3dCQUNILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO3FCQUNqQztpQkFDSjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNyRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUN4RCxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7aUJBQ3BGLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxxQkFBcUI7UUFDekIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQWMsdUJBQXVCLENBQUMsQ0FBQztRQUN2RixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBbUIsQ0FBQyxDQUFDO1lBQzFELE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO2dCQUNwQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDbkM7Z0JBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNO2lCQUM1RCxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztpQkFDcEM7Z0JBQ0QsZ0VBQWdFO2dCQUNoRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTtvQkFDcEMsTUFBTSxXQUFXLEdBQ2IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7d0JBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRXpFLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7d0JBQ2pDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRTt3QkFDckMsR0FBRyxFQUNDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQzs0QkFDaEUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLOzRCQUNyQixDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU07cUJBQ2pDLENBQUMsQ0FBQztpQkFDTjtxQkFBTTtvQkFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDO2dCQUNELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7WUFFSCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFdBQXdCLEVBQUUsS0FBZ0IsRUFBRSxHQUFjO1FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFnQixDQUFDO1FBQy9GLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBZ0IsQ0FBQztRQUN2RixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JELElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLCtDQUF1QyxFQUFFO2dCQUN4RSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUMvQjtpQkFBTSxJQUFJLElBQUksQ0FBQywwQkFBMEIsZ0RBQXdDLEVBQUU7Z0JBQ2hGLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQy9CO1NBQ0o7UUFDRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFN0MsK0ZBQStGO1FBQy9GLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7UUFDekMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQztRQUMzQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDeEMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDNUMsa0dBQWtHO1FBQ2xHLGVBQWUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFnQixDQUFDO1FBQy9GLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBZ0IsQ0FBQztRQUN2RixlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdkMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxXQUFXO1FBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDdkYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEYsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDO1FBQ3hCLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFeEMsSUFBSSxRQUFRLEdBQUcsYUFBYSxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUU7WUFDekMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEI7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FDakIsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQ3hFLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtZQUMxQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsa0NBQWtDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoRSxJQUFJLEtBQUssR0FBRyxZQUFZLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwRCxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QzthQUFNO1lBQ0gsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNqRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDekM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkU7UUFDRCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO1FBRXhDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLHNCQUFzQjtRQUMxQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhFLElBQUksS0FBSyxHQUFHLFlBQVksSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BELE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDSCxJQUFJLElBQUksQ0FBQywyQkFBMkIsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRTtnQkFDbkQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDeEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDcEQ7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDckU7UUFDRCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQW1CLEVBQUUsUUFBaUI7UUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNsRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdFLE9BQU87WUFDSCxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUk7WUFDckUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUc7WUFDdkQsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUM7WUFDMUQsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7U0FDNUQsQ0FBQztJQUNOLENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztZQUN4RSxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUNsRSxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7WUFDeEMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQWlCTyx5QkFBeUIsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQ3JELElBQUksdUJBQXVCLENBQUMsVUFBVSxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNuRixNQUFNLHlCQUF5QixHQUFHLDRCQUE0QixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUVyRixJQUNJLENBQUMseUJBQXlCLCtDQUF1QyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BGLENBQUMseUJBQXlCLGdEQUF3QztvQkFDOUQsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQ2pFO2dCQUNFLElBQUksQ0FBQywwQkFBMEIsR0FBRyx5QkFBeUIsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUseUJBQXlCLENBQUMsQ0FBQztnQkFDckcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDNUQ7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN4QjtTQUNKO0lBQ0wsQ0FBQztJQUVELHlHQUF5RztJQUNqRywwQ0FBMEMsQ0FBQyxRQUFpQjtRQUNoRSxJQUFJLHFCQUE4QixDQUFDO1FBQ25DLElBQUksa0JBQTJCLENBQUM7UUFFaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUN2RCxNQUFNLFVBQVUsR0FBRyxXQUFXLEdBQUcsd0JBQXdCLENBQUM7UUFFMUQsSUFBSSxRQUFRLEVBQUU7WUFDVixNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFOUUscUJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDMUQsa0JBQWtCLEdBQUcsaUJBQWlCLEdBQUcsV0FBVyxHQUFHLFVBQVUsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDO1NBQ2pHO2FBQU07WUFDSCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFbEYscUJBQXFCLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDMUQsa0JBQWtCLEdBQUcsVUFBVSxHQUFHLFVBQVUsSUFBSSxtQkFBbUIsQ0FBQztTQUN2RTtRQUVELE9BQU8scUJBQXFCLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxzRkFBc0Y7SUFDOUUsZ0JBQWdCO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUM7UUFDckUsT0FBTztZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUM5QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDakcsQ0FBQztJQUNOLENBQUM7SUFFRCx5REFBeUQ7SUFDakQsY0FBYztRQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDO1FBRTdFLE9BQU87WUFDSCxLQUFLO1lBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ3RFLENBQUM7SUFDTixDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsR0FBYztRQUMzRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksU0FBUyxHQUFHLFNBQVMsSUFBSSxPQUFPLEdBQUcsT0FBTyxFQUFFO1lBQzVDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxVQUFzQixFQUFFLElBQXVCLEVBQUUsVUFBc0I7UUFDL0UsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTNDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUMsT0FBTztTQUNWO2FBQU07WUFDSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsZUFBZSxDQUFDLENBQUM7YUFDbkQ7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN4QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQzthQUN2QztTQUNKO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUF1QjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDOzhHQTVqQlEsWUFBWTtrSEFBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyYWdSZWYsIERyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBHYW50dERvbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9nYW50dC1kb20uc2VydmljZSc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIsIEluQmFyUG9zaXRpb24gfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBHYW50dEl0ZW1JbnRlcm5hbCB9IGZyb20gJy4uLy4uL2NsYXNzL2l0ZW0nO1xuaW1wb3J0IHsgR2FudHREYXRlLCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMsIGRpZmZlcmVuY2VJbkRheXMgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlJztcbmltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBpbnRlcnZhbCwgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRMaW5rVHlwZSB9IGZyb20gJy4uLy4uL2NsYXNzL2xpbmsnO1xuaW1wb3J0IHsgcGFzc2l2ZUxpc3RlbmVyT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL3Bhc3NpdmUtbGlzdGVuZXJzJztcbmltcG9ydCB7XG4gICAgQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24sXG4gICAgZ2V0SG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbixcbiAgICBpc1BvaW50ZXJOZWFyQ2xpZW50UmVjdCxcbiAgICBnZXRBdXRvU2Nyb2xsU3BlZWRSYXRlc1xufSBmcm9tICcuLi8uLi91dGlscy9kcmFnLXNjcm9sbCc7XG5cbi8qKlxuICogUHJveGltaXR5LCBhcyBhIHJhdGlvIHRvIHdpZHRoL2hlaWdodCwgYXQgd2hpY2ggYVxuICogZHJhZ2dlZCBpdGVtIHdpbGwgYWZmZWN0IHRoZSBkcm9wIGNvbnRhaW5lci5cbiAqL1xuY29uc3QgRFJPUF9QUk9YSU1JVFlfVEhSRVNIT0xEID0gMC4wNTtcblxuY29uc3QgZHJhZ01pbldpZHRoID0gMTA7XG5jb25zdCBhdXRvU2Nyb2xsQmFzZVN0ZXAgPSAyO1xuY29uc3QgYWN0aXZlQ2xhc3MgPSAnZ2FudHQtYmFyLWFjdGl2ZSc7XG5jb25zdCBkcm9wQWN0aXZlQ2xhc3MgPSAnZ2FudHQtYmFyLWRyb3AtYWN0aXZlJztcbmNvbnN0IHNpbmdsZURyb3BBY3RpdmVDbGFzcyA9ICdnYW50dC1iYXItc2luZ2xlLWRyb3AtYWN0aXZlJztcblxuZnVuY3Rpb24gY3JlYXRlU3ZnRWxlbWVudChxdWFsaWZpZWROYW1lOiBzdHJpbmcsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCBxdWFsaWZpZWROYW1lKTtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gZWxlbWVudDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdhbnR0QmFyRHJhZyBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBnYW50dFVwcGVyOiBHYW50dFVwcGVyO1xuXG4gICAgcHJpdmF0ZSBiYXJFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIHByaXZhdGUgaXRlbTogR2FudHRJdGVtSW50ZXJuYWw7XG5cbiAgICBwcml2YXRlIGdldCBkcmFnRGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pdGVtLmRyYWdnYWJsZSB8fCAhdGhpcy5nYW50dFVwcGVyLmRyYWdnYWJsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBsaW5rRHJhZ0Rpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXRlbS5saW5rYWJsZSB8fCAhdGhpcy5nYW50dFVwcGVyLmxpbmthYmxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGJhckhhbmRsZURyYWdNb3ZlQW5kU2Nyb2xsRGlzdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhckhhbmRsZURyYWdNb3ZlRGlzdGFuY2UgKyB0aGlzLmRyYWdTY3JvbGxEaXN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBhdXRvU2Nyb2xsU3RlcCgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgucG93KGF1dG9TY3JvbGxCYXNlU3RlcCwgdGhpcy5hdXRvU2Nyb2xsU3BlZWRSYXRlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsaW5rRHJhZ2dpbmdMaW5lOiBTVkdFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBiYXJEcmFnUmVmOiBEcmFnUmVmO1xuXG4gICAgcHJpdmF0ZSBkcmFnUmVmczogRHJhZ1JlZltdID0gW107XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBVc2VkIHRvIHNpZ25hbCB0byB0aGUgY3VycmVudCBhdXRvLXNjcm9sbCBzZXF1ZW5jZSB3aGVuIHRvIHN0b3AuICovXG4gICAgcHJpdmF0ZSBzdG9wU2Nyb2xsVGltZXJzJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogY29udGFpbmVyIGVsZW1lbnQgc2Nyb2xsTGVmdCAqL1xuICAgIHByaXZhdGUgY29udGFpbmVyU2Nyb2xsTGVmdDogbnVtYmVyO1xuXG4gICAgLyoqIG1vdmUgZGlzdGFuY2Ugd2hlbiBkcmFnIGJhciAqL1xuICAgIHByaXZhdGUgYmFyRHJhZ01vdmVEaXN0YW5jZSA9IDA7XG5cbiAgICAvKiogbW92ZSBkaXN0YW5jZSB3aGVuIGRyYWcgYmFyIGhhbmRsZSAqL1xuICAgIHByaXZhdGUgYmFySGFuZGxlRHJhZ01vdmVEaXN0YW5jZSA9IDA7XG5cbiAgICAvKiogc2Nyb2xsaW5nIHN0YXRlIHdoZW4gZHJhZyAqL1xuICAgIHByaXZhdGUgZHJhZ1Njcm9sbGluZyA9IGZhbHNlO1xuXG4gICAgLyoqIGRyYWdTY3JvbGxEaXN0YW5jZSAqL1xuICAgIHByaXZhdGUgZHJhZ1Njcm9sbERpc3RhbmNlID0gMDtcblxuICAgIC8qKiBIb3Jpem9udGFsIGRpcmVjdGlvbiBpbiB3aGljaCB0aGUgbGlzdCBpcyBjdXJyZW50bHkgc2Nyb2xsaW5nLiAqL1xuICAgIHByaXZhdGUgX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPSBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbi5OT05FO1xuXG4gICAgLyoqIFJlY29yZCBiYXIgZGF5cyB3aGVuIGJhciBoYW5kbGUgZHJhZyBtb3ZlLiAqL1xuICAgIHByaXZhdGUgYmFySGFuZGxlRHJhZ01vdmVSZWNvcmREYXlzOiBudW1iZXI7XG5cbiAgICAvKiogU3BlZWQgcmF0aW8gZm9yIGF1dG8gc2Nyb2xsICovXG4gICAgcHJpdmF0ZSBhdXRvU2Nyb2xsU3BlZWRSYXRlcyA9IDE7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkcmFnRHJvcDogRHJhZ0Ryb3AsXG4gICAgICAgIHByaXZhdGUgZG9tOiBHYW50dERvbVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZHJhZ0NvbnRhaW5lcjogR2FudHREcmFnQ29udGFpbmVyLFxuICAgICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIHByaXZhdGUgY3JlYXRlRHJhZ1JlZjxUID0gYW55PihlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50KTogRHJhZ1JlZjxUPiB7XG4gICAgICAgIGNvbnN0IGRyYWdSZWYgPSB0aGlzLmRyYWdEcm9wLmNyZWF0ZURyYWcoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBkcmFnUmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRHJhZ1Njcm9sbEV2ZW50KGRyYWdSZWY6IERyYWdSZWYpIHtcbiAgICAgICAgcmV0dXJuIGZyb21FdmVudCh0aGlzLmRvbS5tYWluQ29udGFpbmVyLCAnc2Nyb2xsJywgcGFzc2l2ZUxpc3RlbmVyT3B0aW9ucykucGlwZSh0YWtlVW50aWwoZHJhZ1JlZi5lbmRlZCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTW91c2VFdmVudHMoKSB7XG4gICAgICAgIGNvbnN0IGRyb3BDbGFzcyA9XG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuY29uZmlnLmxpbmtPcHRpb25zPy5kZXBlbmRlbmN5VHlwZXM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmNvbmZpZy5saW5rT3B0aW9ucz8uZGVwZW5kZW5jeVR5cGVzWzBdID09PSBHYW50dExpbmtUeXBlLmZzXG4gICAgICAgICAgICAgICAgPyBzaW5nbGVEcm9wQWN0aXZlQ2xhc3NcbiAgICAgICAgICAgICAgICA6IGRyb3BBY3RpdmVDbGFzcztcblxuICAgICAgICBmcm9tRXZlbnQodGhpcy5iYXJFbGVtZW50LCAnbW91c2VlbnRlcicsIHBhc3NpdmVMaXN0ZW5lck9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnQ29udGFpbmVyLmxpbmtEcmFnZ2luZ0lkICYmIHRoaXMuZHJhZ0NvbnRhaW5lci5saW5rRHJhZ2dpbmdJZCAhPT0gdGhpcy5pdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW0ubGlua2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKGRyb3BDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZW1pdExpbmtEcmFnRW50ZXJlZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogdGhpcy5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuYmFyRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZChhY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuYmFyRWxlbWVudCwgJ21vdXNlbGVhdmUnLCBwYXNzaXZlTGlzdGVuZXJPcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdDb250YWluZXIubGlua0RyYWdnaW5nSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYWN0aXZlQ2xhc3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5lbWl0TGlua0RyYWdMZWF2ZWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZHJvcENsYXNzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQmFyRHJhZygpIHtcbiAgICAgICAgY29uc3QgZHJhZ1JlZiA9IHRoaXMuY3JlYXRlRHJhZ1JlZih0aGlzLmJhckVsZW1lbnQpO1xuICAgICAgICBkcmFnUmVmLmxvY2tBeGlzID0gJ3gnO1xuICAgICAgICBpZiAodGhpcy5nYW50dFVwcGVyLnJlc3RyaWN0VG9Cb3VuZHMpIHtcbiAgICAgICAgICAgIGRyYWdSZWYud2l0aEJvdW5kYXJ5RWxlbWVudCh0aGlzLmRvbS5tYWluSXRlbXMgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdSZWYuc3RhcnRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXREcmFnZ2luZ1N0eWxlcygpO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXJTY3JvbGxMZWZ0ID0gdGhpcy5kb20ubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVEcmFnU2Nyb2xsRXZlbnQoZHJhZ1JlZikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZHJhZ1JlZi5pc0RyYWdnaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZHJhZ1Njcm9sbERpc3RhbmNlID0gdGhpcy5kb20ubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0IC0gdGhpcy5jb250YWluZXJTY3JvbGxMZWZ0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdTY3JvbGxEaXN0YW5jZSA9IGRyYWdTY3JvbGxEaXN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgZHJhZ1JlZlsnX2JvdW5kYXJ5UmVjdCddID0gdGhpcy5kb20ubWFpbkl0ZW1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckRyYWdNb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ1N0YXJ0ZWQuZW1pdCh7IGl0ZW06IHRoaXMuaXRlbS5vcmlnaW4gfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRyYWdSZWYubW92ZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFydFNjcm9sbGluZ0lmTmVjZXNzYXJ5KGV2ZW50LnBvaW50ZXJQb3NpdGlvbi54LCBldmVudC5wb2ludGVyUG9zaXRpb24ueSk7XG4gICAgICAgICAgICB0aGlzLmJhckRyYWdNb3ZlRGlzdGFuY2UgPSBldmVudC5kaXN0YW5jZS54O1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdTY3JvbGxpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJhckRyYWdNb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRyYWdSZWYuZW5kZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhckRyYWdnaW5nU3R5bGVzKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJhZ0JhY2tkcm9wKCk7XG4gICAgICAgICAgICBldmVudC5zb3VyY2UucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcFNjcm9sbGluZygpO1xuICAgICAgICAgICAgdGhpcy5kcmFnU2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRyYWdTY3JvbGxEaXN0YW5jZSA9IDA7XG4gICAgICAgICAgICB0aGlzLmJhckRyYWdNb3ZlRGlzdGFuY2UgPSAwO1xuICAgICAgICAgICAgdGhpcy5pdGVtLnVwZGF0ZVJlZnMoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXREYXRlUmFuZ2VXaWR0aCh0aGlzLml0ZW0uc3RhcnQuc3RhcnRPZkRheSgpLCB0aGlzLml0ZW0uZW5kLmVuZE9mRGF5KCkpLFxuICAgICAgICAgICAgICAgIHg6IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldFhQb2ludEJ5RGF0ZSh0aGlzLml0ZW0uc3RhcnQpLFxuICAgICAgICAgICAgICAgIHk6ICh0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmJhckhlaWdodCkgLyAyIC0gMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ0VuZGVkLmVtaXQoeyBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5iYXJEcmFnUmVmID0gZHJhZ1JlZjtcblxuICAgICAgICByZXR1cm4gZHJhZ1JlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUJhckhhbmRsZURyYWdzKCkge1xuICAgICAgICBjb25zdCBkcmFnUmVmcyA9IFtdO1xuICAgICAgICBjb25zdCBoYW5kbGVzID0gdGhpcy5iYXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcuZHJhZy1oYW5kbGVzIC5oYW5kbGUnKTtcbiAgICAgICAgaGFuZGxlcy5mb3JFYWNoKChoYW5kbGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0JlZm9yZSA9IGluZGV4ID09PSAwO1xuICAgICAgICAgICAgY29uc3QgZHJhZ1JlZiA9IHRoaXMuY3JlYXRlRHJhZ1JlZihoYW5kbGUpO1xuICAgICAgICAgICAgZHJhZ1JlZi5sb2NrQXhpcyA9ICd4JztcbiAgICAgICAgICAgIGRyYWdSZWYud2l0aEJvdW5kYXJ5RWxlbWVudCh0aGlzLmRvbS5tYWluSXRlbXMgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgZHJhZ1JlZi5zdGFydGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcmFnZ2luZ1N0eWxlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyU2Nyb2xsTGVmdCA9IHRoaXMuZG9tLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURyYWdTY3JvbGxFdmVudChkcmFnUmVmKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZHJhZ1JlZi5pc0RyYWdnaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdTY3JvbGxEaXN0YW5jZSA9IHRoaXMuZG9tLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCAtIHRoaXMuY29udGFpbmVyU2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1Njcm9sbERpc3RhbmNlID0gZHJhZ1Njcm9sbERpc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ1JlZlsnX2JvdW5kYXJ5UmVjdCddID0gdGhpcy5kb20ubWFpbkl0ZW1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnU2Nyb2xsaW5nICYmIHRoaXMuaXNTdGFydEdyZWF0ZXJUaGFuRW5kV2hlbkJhckhhbmRsZURyYWdNb3ZlKGlzQmVmb3JlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcFNjcm9sbGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1Njcm9sbGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNCZWZvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckJlZm9yZUhhbmRsZURyYWdNb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyQWZ0ZXJIYW5kbGVEcmFnTW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLmVtaXQoeyBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRyYWdSZWYubW92ZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJhckhhbmRsZURyYWdNb3ZlUmVjb3JkRGF5cyAmJiB0aGlzLmJhckhhbmRsZURyYWdNb3ZlUmVjb3JkRGF5cyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFNjcm9sbGluZ0lmTmVjZXNzYXJ5KGV2ZW50LnBvaW50ZXJQb3NpdGlvbi54LCBldmVudC5wb2ludGVyUG9zaXRpb24ueSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYmFySGFuZGxlRHJhZ01vdmVEaXN0YW5jZSA9IGV2ZW50LmRpc3RhbmNlLng7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdTY3JvbGxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckJlZm9yZUhhbmRsZURyYWdNb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckFmdGVySGFuZGxlRHJhZ01vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkcmFnUmVmLmVuZGVkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRHJhZ2dpbmdTdHlsZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJhZ0JhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc291cmNlLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wU2Nyb2xsaW5nKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU2Nyb2xsRGlzdGFuY2UgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuYmFySGFuZGxlRHJhZ01vdmVEaXN0YW5jZSA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtLnVwZGF0ZVJlZnMoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZVJhbmdlV2lkdGgodGhpcy5pdGVtLnN0YXJ0LnN0YXJ0T2ZEYXkoKSwgdGhpcy5pdGVtLmVuZC5lbmRPZkRheSgpKSxcbiAgICAgICAgICAgICAgICAgICAgeDogdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0WFBvaW50QnlEYXRlKHRoaXMuaXRlbS5zdGFydCksXG4gICAgICAgICAgICAgICAgICAgIHk6ICh0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmJhckhlaWdodCkgLyAyIC0gMVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnRW5kZWQuZW1pdCh7IGl0ZW06IHRoaXMuaXRlbS5vcmlnaW4gfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRyYWdSZWZzLnB1c2goZHJhZ1JlZik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZHJhZ1JlZnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMaW5rSGFuZGxlRHJhZ3MoKSB7XG4gICAgICAgIGNvbnN0IGRyYWdSZWZzID0gW107XG4gICAgICAgIGNvbnN0IGhhbmRsZXMgPSB0aGlzLmJhckVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5saW5rLWhhbmRsZXMgLmhhbmRsZScpO1xuICAgICAgICBoYW5kbGVzLmZvckVhY2goKGhhbmRsZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzQmVnaW4gPSBpbmRleCA9PT0gMDtcbiAgICAgICAgICAgIGNvbnN0IGRyYWdSZWYgPSB0aGlzLmRyYWdEcm9wLmNyZWF0ZURyYWcoaGFuZGxlKTtcbiAgICAgICAgICAgIGRyYWdSZWYud2l0aEJvdW5kYXJ5RWxlbWVudCh0aGlzLmRvbS5yb290IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGRyYWdSZWYuYmVmb3JlU3RhcnRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJhckRyYWdSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXJEcmFnUmVmLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVMaW5rRHJhZ2dpbmdMaW5lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmVtaXRMaW5rRHJhZ1N0YXJ0ZWQoe1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLmJhckVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IHRoaXMuaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgcG9zOiBpc0JlZ2luID8gSW5CYXJQb3NpdGlvbi5zdGFydCA6IEluQmFyUG9zaXRpb24uZmluaXNoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZHJhZ1JlZi5tb3ZlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMuY2FsY0xpbmtMaW5lUG9zaXRpb25zKGhhbmRsZSwgaXNCZWdpbik7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnNldEF0dHJpYnV0ZSgneDEnLCBwb3NpdGlvbnMueDEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnNldEF0dHJpYnV0ZSgneTEnLCBwb3NpdGlvbnMueTEudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnNldEF0dHJpYnV0ZSgneDInLCBwb3NpdGlvbnMueDIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnNldEF0dHJpYnV0ZSgneTInLCBwb3NpdGlvbnMueTIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZHJhZ1JlZi5lbmRlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnJztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXJEcmFnUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyRHJhZ1JlZi5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyDorqHnrpdsaW5l5ouW5Yqo55qE6JC954K55L2N5LqO55uu5qCHQmFy55qE5YC877yM5aaC5p6c5YC85aSn5LqOQmFy5a695bqm55qE5LiA5Y2K77yM6K+05piO5piv5ouW5Yqo5YiwQmVnaW7kvY3nva7vvIzlkKbliJnliJnkuLrmi5bliqjliLBFbmTkvY3nva5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnQ29udGFpbmVyLmxpbmtEcmFnUGF0aC50bykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwbGFjZVBvaW50WCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zb3VyY2UuZ2V0Um9vdEVsZW1lbnQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54IC1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5saW5rRHJhZ1BhdGgudG8uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54O1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5lbWl0TGlua0RyYWdFbmRlZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmRyYWdDb250YWluZXIubGlua0RyYWdQYXRoLnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlUG9pbnRYIDwgdGhpcy5kcmFnQ29udGFpbmVyLmxpbmtEcmFnUGF0aC50by5pdGVtLnJlZnMud2lkdGggLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSW5CYXJQb3NpdGlvbi5zdGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEluQmFyUG9zaXRpb24uZmluaXNoXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5lbWl0TGlua0RyYWdFbmRlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBldmVudC5zb3VyY2UucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TGlua0RyYWdnaW5nTGluZSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRyYWdSZWZzLnB1c2goZHJhZ1JlZik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZHJhZ1JlZnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuRHJhZ0JhY2tkcm9wKGRyYWdFbGVtZW50OiBIVE1MRWxlbWVudCwgc3RhcnQ6IEdhbnR0RGF0ZSwgZW5kOiBHYW50dERhdGUpIHtcbiAgICAgICAgY29uc3QgZHJhZ0JhY2tkcm9wRWxlbWVudCA9IHRoaXMuZG9tLnJvb3QucXVlcnlTZWxlY3RvcignLmdhbnR0LWRyYWctYmFja2Ryb3AnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgZHJhZ01hc2tFbGVtZW50ID0gdGhpcy5kb20ucm9vdC5xdWVyeVNlbGVjdG9yKCcuZ2FudHQtZHJhZy1tYXNrJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJvb3RSZWN0ID0gdGhpcy5kb20ucm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgZHJhZ1JlY3QgPSBkcmFnRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IGxlZnQgPSBkcmFnUmVjdC5sZWZ0IC0gcm9vdFJlY3QubGVmdCAtICh0aGlzLmRvbS5zaWRlLmNsaWVudFdpZHRoICsgMSk7XG4gICAgICAgIGlmICh0aGlzLmRyYWdTY3JvbGxpbmcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID09PSBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbi5MRUZUKSB7XG4gICAgICAgICAgICAgICAgbGVmdCArPSB0aGlzLmF1dG9TY3JvbGxTdGVwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID09PSBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbi5SSUdIVCkge1xuICAgICAgICAgICAgICAgIGxlZnQgLT0gdGhpcy5hdXRvU2Nyb2xsU3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aWR0aCA9IGRyYWdSZWN0LnJpZ2h0IC0gZHJhZ1JlY3QubGVmdDtcblxuICAgICAgICAvLyBOb3RlOiB1cGRhdGluZyBzdHlsZXMgd2lsbCBjYXVzZSByZS1sYXlvdXQgc28gd2UgaGF2ZSB0byBwbGFjZSB0aGVtIGNvbnNpc3RlbnRseSBvbmUgYnkgb25lLlxuICAgICAgICBkcmFnTWFza0VsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnO1xuICAgICAgICBkcmFnTWFza0VsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgICAgIGRyYWdNYXNrRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgZHJhZ0JhY2tkcm9wRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgLy8gVGhpcyB3aWxsIGludmFsaWRhdGUgdGhlIGxheW91dCwgYnV0IHdlIHdvbid0IG5lZWQgcmUtbGF5b3V0LCBiZWNhdXNlIHdlIHNldCBzdHlsZXMgcHJldmlvdXNseS5cbiAgICAgICAgZHJhZ01hc2tFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zdGFydCcpLmlubmVySFRNTCA9IHN0YXJ0LmZvcm1hdCgnTU0tZGQnKTtcbiAgICAgICAgZHJhZ01hc2tFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lbmQnKS5pbm5lckhUTUwgPSBlbmQuZm9ybWF0KCdNTS1kZCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VEcmFnQmFja2Ryb3AoKSB7XG4gICAgICAgIGNvbnN0IGRyYWdCYWNrZHJvcEVsZW1lbnQgPSB0aGlzLmRvbS5yb290LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1kcmFnLWJhY2tkcm9wJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRyYWdNYXNrRWxlbWVudCA9IHRoaXMuZG9tLnJvb3QucXVlcnlTZWxlY3RvcignLmdhbnR0LWRyYWctbWFzaycpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBkcmFnTWFza0VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgZHJhZ0JhY2tkcm9wRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RHJhZ2dpbmdTdHlsZXMoKSB7XG4gICAgICAgIHRoaXMuYmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdnYW50dC1iYXItZHJhZ2dhYmxlLWRyYWcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyRHJhZ2dpbmdTdHlsZXMoKSB7XG4gICAgICAgIHRoaXMuYmFyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdnYW50dC1iYXItZHJhZ2dhYmxlLWRyYWcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJhckRyYWdNb3ZlKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50WCA9IHRoaXMuaXRlbS5yZWZzLnggKyB0aGlzLmJhckRyYWdNb3ZlRGlzdGFuY2UgKyB0aGlzLmRyYWdTY3JvbGxEaXN0YW5jZTtcbiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXREYXRlQnlYUG9pbnQoY3VycmVudFgpO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RhcnRYID0gdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0WFBvaW50QnlEYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgICAgY29uc3QgZGF5V2lkdGggPSB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXREYXlPY2N1cGFuY3lXaWR0aChjdXJyZW50RGF0ZSk7XG4gICAgICAgIGNvbnN0IGRpZmZEYXlzID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKHRoaXMuaXRlbS5lbmQudmFsdWUsIHRoaXMuaXRlbS5zdGFydC52YWx1ZSk7XG5cbiAgICAgICAgbGV0IHN0YXJ0ID0gY3VycmVudERhdGU7XG4gICAgICAgIGxldCBlbmQgPSBjdXJyZW50RGF0ZS5hZGREYXlzKGRpZmZEYXlzKTtcblxuICAgICAgICBpZiAoY3VycmVudFggPiBjdXJyZW50U3RhcnRYICsgZGF5V2lkdGggLyAyKSB7XG4gICAgICAgICAgICBzdGFydCA9IHN0YXJ0LmFkZERheXMoMSk7XG4gICAgICAgICAgICBlbmQgPSBlbmQuYWRkRGF5cygxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRyYWdTY3JvbGxpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBjdXJyZW50WCAtIHRoaXMuYmFyRHJhZ01vdmVEaXN0YW5jZTtcbiAgICAgICAgICAgIHRoaXMuYmFyRWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wZW5EcmFnQmFja2Ryb3AoXG4gICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXREYXRlQnlYUG9pbnQoY3VycmVudFgpLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KGN1cnJlbnRYICsgdGhpcy5pdGVtLnJlZnMud2lkdGgpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzU3RhcnRPckVuZEluc2lkZVZpZXcoc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXRlbS51cGRhdGVEYXRlKHN0YXJ0LCBlbmQpO1xuICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ01vdmVkLmVtaXQoeyBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmFyQmVmb3JlSGFuZGxlRHJhZ01vdmUoKSB7XG4gICAgICAgIGNvbnN0IHsgeCwgc3RhcnQsIG9uZURheVdpZHRoIH0gPSB0aGlzLnN0YXJ0T2ZCYXJIYW5kbGUoKTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLml0ZW0ucmVmcy53aWR0aCArIHRoaXMuYmFySGFuZGxlRHJhZ01vdmVBbmRTY3JvbGxEaXN0YW5jZSAqIC0xO1xuICAgICAgICBjb25zdCBkYXlzID0gZGlmZmVyZW5jZUluRGF5cyh0aGlzLml0ZW0uZW5kLnZhbHVlLCBzdGFydC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKHdpZHRoID4gZHJhZ01pbldpZHRoICYmIGRheXMgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuc3R5bGUubGVmdCA9IHggKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJhZ0JhY2tkcm9wKHRoaXMuYmFyRWxlbWVudCwgc3RhcnQsIHRoaXMuaXRlbS5lbmQpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTdGFydE9yRW5kSW5zaWRlVmlldyhzdGFydCwgdGhpcy5pdGVtLmVuZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXRlbS51cGRhdGVEYXRlKHN0YXJ0LCB0aGlzLml0ZW0uZW5kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmJhckhhbmRsZURyYWdNb3ZlUmVjb3JkRGF5cyA+IDAgJiYgZGF5cyA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLndpZHRoID0gb25lRGF5V2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHggPSB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXRYUG9pbnRCeURhdGUodGhpcy5pdGVtLmVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLmxlZnQgPSB4ICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3BlbkRyYWdCYWNrZHJvcCh0aGlzLmJhckVsZW1lbnQsIHRoaXMuaXRlbS5lbmQuc3RhcnRPZkRheSgpLCB0aGlzLml0ZW0uZW5kKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbS51cGRhdGVEYXRlKHRoaXMuaXRlbS5lbmQuc3RhcnRPZkRheSgpLCB0aGlzLml0ZW0uZW5kKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJhckhhbmRsZURyYWdNb3ZlUmVjb3JkRGF5cyA9IGRheXM7XG5cbiAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdNb3ZlZC5lbWl0KHsgaXRlbTogdGhpcy5pdGVtLm9yaWdpbiB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJhckFmdGVySGFuZGxlRHJhZ01vdmUoKSB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGVuZCB9ID0gdGhpcy5lbmRPZkJhckhhbmRsZSgpO1xuICAgICAgICBjb25zdCBkYXlzID0gZGlmZmVyZW5jZUluRGF5cyhlbmQudmFsdWUsIHRoaXMuaXRlbS5zdGFydC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKHdpZHRoID4gZHJhZ01pbldpZHRoICYmIGRheXMgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmJhckVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgICAgICAgICB0aGlzLm9wZW5EcmFnQmFja2Ryb3AodGhpcy5iYXJFbGVtZW50LCB0aGlzLml0ZW0uc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTdGFydE9yRW5kSW5zaWRlVmlldyh0aGlzLml0ZW0uc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLml0ZW0udXBkYXRlRGF0ZSh0aGlzLml0ZW0uc3RhcnQsIGVuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5iYXJIYW5kbGVEcmFnTW92ZVJlY29yZERheXMgPiAwICYmIGRheXMgPD0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9uZURheVdpZHRoID0gdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZVJhbmdlV2lkdGgodGhpcy5pdGVtLnN0YXJ0LCB0aGlzLml0ZW0uc3RhcnQuZW5kT2ZEYXkoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5iYXJFbGVtZW50LnN0eWxlLndpZHRoID0gb25lRGF5V2lkdGggKyAncHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vcGVuRHJhZ0JhY2tkcm9wKHRoaXMuYmFyRWxlbWVudCwgdGhpcy5pdGVtLnN0YXJ0LCB0aGlzLml0ZW0uc3RhcnQuZW5kT2ZEYXkoKSk7XG4gICAgICAgICAgICB0aGlzLml0ZW0udXBkYXRlRGF0ZSh0aGlzLml0ZW0uc3RhcnQsIHRoaXMuaXRlbS5zdGFydC5lbmRPZkRheSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJhckhhbmRsZURyYWdNb3ZlUmVjb3JkRGF5cyA9IGRheXM7XG4gICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnTW92ZWQuZW1pdCh7IGl0ZW06IHRoaXMuaXRlbS5vcmlnaW4gfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjTGlua0xpbmVQb3NpdGlvbnModGFyZ2V0OiBIVE1MRWxlbWVudCwgaXNCZWZvcmU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qgcm9vdFJlY3QgPSB0aGlzLmRvbS5yb290LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB0YXJnZXRSZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBsYXllclJlY3QgPSB0YXJnZXQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDE6IGxheWVyUmVjdC5sZWZ0ICsgKGlzQmVmb3JlID8gMCA6IGxheWVyUmVjdC53aWR0aCkgLSByb290UmVjdC5sZWZ0LFxuICAgICAgICAgICAgeTE6IGxheWVyUmVjdC50b3AgKyBsYXllclJlY3QuaGVpZ2h0IC8gMiAtIHJvb3RSZWN0LnRvcCxcbiAgICAgICAgICAgIHgyOiB0YXJnZXRSZWN0LmxlZnQgLSByb290UmVjdC5sZWZ0ICsgdGFyZ2V0UmVjdC53aWR0aCAvIDIsXG4gICAgICAgICAgICB5MjogdGFyZ2V0UmVjdC50b3AgLSByb290UmVjdC50b3AgKyB0YXJnZXRSZWN0LmhlaWdodCAvIDJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxpbmtEcmFnZ2luZ0xpbmUoKSB7XG4gICAgICAgIGlmICghdGhpcy5saW5rRHJhZ2dpbmdMaW5lKSB7XG4gICAgICAgICAgICBjb25zdCBzdmdFbGVtZW50ID0gY3JlYXRlU3ZnRWxlbWVudCgnc3ZnJywgJ2dhbnR0LWxpbmstZHJhZy1jb250YWluZXInKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbkVsZW1lbnQgPSBjcmVhdGVTdmdFbGVtZW50KCdsaW5lJywgJ2xpbmstZHJhZ2dpbmctbGluZScpO1xuICAgICAgICAgICAgbGluRWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICAgICAgc3ZnRWxlbWVudC5hcHBlbmRDaGlsZChsaW5FbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuZG9tLnJvb3QuYXBwZW5kQ2hpbGQoc3ZnRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmxpbmtEcmFnZ2luZ0xpbmUgPSBsaW5FbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95TGlua0RyYWdnaW5nTGluZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlua0RyYWdnaW5nTGluZSkge1xuICAgICAgICAgICAgdGhpcy5saW5rRHJhZ2dpbmdMaW5lLnBhcmVudEVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLmxpbmtEcmFnZ2luZ0xpbmUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydFNjcm9sbEludGVydmFsID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3BTY3JvbGxpbmcoKTtcbiAgICAgICAgaW50ZXJ2YWwoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5zdG9wU2Nyb2xsVGltZXJzJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5kb20ubWFpbkNvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxTdGVwID0gdGhpcy5hdXRvU2Nyb2xsU3RlcDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9PT0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uTEVGVCkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnNjcm9sbEJ5KC1zY3JvbGxTdGVwLCAwKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPT09IEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLlJJR0hUKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc2Nyb2xsQnkoc2Nyb2xsU3RlcCwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc3RhcnRTY3JvbGxpbmdJZk5lY2Vzc2FyeShwb2ludGVyWDogbnVtYmVyLCBwb2ludGVyWTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudFJlY3QgPSB0aGlzLmRvbS5tYWluQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gdGhpcy5kb20ubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICBpZiAoaXNQb2ludGVyTmVhckNsaWVudFJlY3QoY2xpZW50UmVjdCwgRFJPUF9QUk9YSU1JVFlfVEhSRVNIT0xELCBwb2ludGVyWCwgcG9pbnRlclkpKSB7XG4gICAgICAgICAgICBjb25zdCBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID0gZ2V0SG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbihjbGllbnRSZWN0LCBwb2ludGVyWCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9PT0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uTEVGVCAmJiBzY3JvbGxMZWZ0ID4gMCkgfHxcbiAgICAgICAgICAgICAgICAoaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9PT0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uUklHSFQgJiZcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdCA8IHRoaXMuZ2FudHRVcHBlci52aWV3LndpZHRoIC0gY2xpZW50UmVjdC53aWR0aClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPSBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0b1Njcm9sbFNwZWVkUmF0ZXMgPSBnZXRBdXRvU2Nyb2xsU3BlZWRSYXRlcyhjbGllbnRSZWN0LCBwb2ludGVyWCwgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU2Nyb2xsaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIodGhpcy5zdGFydFNjcm9sbEludGVydmFsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wU2Nyb2xsaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb25kaXRpb25zIHRvIHN0b3AgYXV0by1zY3JvbGw6IHdoZW4gdGhlIHN0YXJ0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgZW5kIGFuZCB0aGUgYmFyIGFwcGVhcnMgaW4gdGhlIHZpZXdcbiAgICBwcml2YXRlIGlzU3RhcnRHcmVhdGVyVGhhbkVuZFdoZW5CYXJIYW5kbGVEcmFnTW92ZShpc0JlZm9yZTogYm9vbGVhbikge1xuICAgICAgICBsZXQgaXNTdGFydEdyZWF0ZXJUaGFuRW5kOiBib29sZWFuO1xuICAgICAgICBsZXQgaXNCYXJBcHBlYXJzSW5WaWV3OiBib29sZWFuO1xuXG4gICAgICAgIGNvbnN0IHNjcm9sbExlZnQgPSB0aGlzLmRvbS5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IGNsaWVudFdpZHRoID0gdGhpcy5kb20ubWFpbkNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3QgeFRocmVzaG9sZCA9IGNsaWVudFdpZHRoICogRFJPUF9QUk9YSU1JVFlfVEhSRVNIT0xEO1xuXG4gICAgICAgIGlmIChpc0JlZm9yZSkge1xuICAgICAgICAgICAgY29uc3QgeyBzdGFydCwgb25lRGF5V2lkdGggfSA9IHRoaXMuc3RhcnRPZkJhckhhbmRsZSgpO1xuICAgICAgICAgICAgY29uc3QgeFBvaW50ZXJCeUVuZERhdGUgPSB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXRYUG9pbnRCeURhdGUodGhpcy5pdGVtLmVuZCk7XG5cbiAgICAgICAgICAgIGlzU3RhcnRHcmVhdGVyVGhhbkVuZCA9IHN0YXJ0LnZhbHVlID4gdGhpcy5pdGVtLmVuZC52YWx1ZTtcbiAgICAgICAgICAgIGlzQmFyQXBwZWFyc0luVmlldyA9IHhQb2ludGVyQnlFbmREYXRlICsgb25lRGF5V2lkdGggKyB4VGhyZXNob2xkIDw9IHNjcm9sbExlZnQgKyBjbGllbnRXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZW5kIH0gPSB0aGlzLmVuZE9mQmFySGFuZGxlKCk7XG4gICAgICAgICAgICBjb25zdCB4UG9pbnRlckJ5U3RhcnREYXRlID0gdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0WFBvaW50QnlEYXRlKHRoaXMuaXRlbS5zdGFydCk7XG5cbiAgICAgICAgICAgIGlzU3RhcnRHcmVhdGVyVGhhbkVuZCA9IGVuZC52YWx1ZSA8IHRoaXMuaXRlbS5zdGFydC52YWx1ZTtcbiAgICAgICAgICAgIGlzQmFyQXBwZWFyc0luVmlldyA9IHNjcm9sbExlZnQgKyB4VGhyZXNob2xkIDw9IHhQb2ludGVyQnlTdGFydERhdGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNTdGFydEdyZWF0ZXJUaGFuRW5kICYmIGlzQmFyQXBwZWFyc0luVmlldyA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTb21lIGRhdGEgaW5mb3JtYXRpb24gYWJvdXQgZHJhZ2dpbmcgc3RhcnQgdW50aWwgaXQgaXMgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIGVuZFxuICAgIHByaXZhdGUgc3RhcnRPZkJhckhhbmRsZSgpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuaXRlbS5yZWZzLnggKyB0aGlzLmJhckhhbmRsZURyYWdNb3ZlQW5kU2Nyb2xsRGlzdGFuY2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4LFxuICAgICAgICAgICAgc3RhcnQ6IHRoaXMuZ2FudHRVcHBlci52aWV3LmdldERhdGVCeVhQb2ludCh4KSxcbiAgICAgICAgICAgIG9uZURheVdpZHRoOiB0aGlzLmdhbnR0VXBwZXIudmlldy5nZXREYXRlUmFuZ2VXaWR0aCh0aGlzLml0ZW0uZW5kLnN0YXJ0T2ZEYXkoKSwgdGhpcy5pdGVtLmVuZClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBTb21lIGRhdGEgaW5mb3JtYXRpb24gYWJvdXQgZHJhZ2dpbmcgZW5kIG9mIGJhciBoYW5kbGVcbiAgICBwcml2YXRlIGVuZE9mQmFySGFuZGxlKCkge1xuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuaXRlbS5yZWZzLndpZHRoICsgdGhpcy5iYXJIYW5kbGVEcmFnTW92ZUFuZFNjcm9sbERpc3RhbmNlO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGVuZDogdGhpcy5nYW50dFVwcGVyLnZpZXcuZ2V0RGF0ZUJ5WFBvaW50KHRoaXMuaXRlbS5yZWZzLnggKyB3aWR0aClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3BTY3JvbGxpbmcoKSB7XG4gICAgICAgIHRoaXMuc3RvcFNjcm9sbFRpbWVycyQubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTdGFydE9yRW5kSW5zaWRlVmlldyhzdGFydDogR2FudHREYXRlLCBlbmQ6IEdhbnR0RGF0ZSkge1xuICAgICAgICBjb25zdCBpdGVtU3RhcnQgPSBzdGFydC5nZXRVbml4VGltZSgpO1xuICAgICAgICBjb25zdCBpdGVtRW5kID0gZW5kLmdldFVuaXhUaW1lKCk7XG4gICAgICAgIGNvbnN0IHZpZXdTdGFydCA9IHRoaXMuZ2FudHRVcHBlci52aWV3LnN0YXJ0LmdldFVuaXhUaW1lKCk7XG4gICAgICAgIGNvbnN0IHZpZXdFbmQgPSB0aGlzLmdhbnR0VXBwZXIudmlldy5lbmQuZ2V0VW5peFRpbWUoKTtcbiAgICAgICAgaWYgKCF0aGlzLmdhbnR0VXBwZXIucmVzdHJpY3RUb0JvdW5kcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW1TdGFydCA8IHZpZXdTdGFydCB8fCBpdGVtRW5kID4gdmlld0VuZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVEcmFncyhlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbCwgZ2FudHRVcHBlcjogR2FudHRVcHBlcikge1xuICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgICAgICB0aGlzLmJhckVsZW1lbnQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5nYW50dFVwcGVyID0gZ2FudHRVcHBlcjtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0Rpc2FibGVkICYmIHRoaXMubGlua0RyYWdEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVNb3VzZUV2ZW50cygpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdSZWYgPSB0aGlzLmNyZWF0ZUJhckRyYWcoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnSGFuZGxlc1JlZnMgPSB0aGlzLmNyZWF0ZUJhckhhbmRsZURyYWdzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnUmVmcy5wdXNoKGRyYWdSZWYsIC4uLmRyYWdIYW5kbGVzUmVmcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMubGlua0RyYWdEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtEcmFnUmVmcyA9IHRoaXMuY3JlYXRlTGlua0hhbmRsZURyYWdzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnUmVmcy5wdXNoKC4uLmxpbmtEcmFnUmVmcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVJdGVtKGl0ZW06IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIHRoaXMuaXRlbSA9IGl0ZW07XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEcmFnQmFja2Ryb3AoKTtcbiAgICAgICAgdGhpcy5kcmFnUmVmcy5mb3JFYWNoKChkcmFnUmVmKSA9PiBkcmFnUmVmLmRpc3Bvc2UoKSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuc3RvcFNjcm9sbGluZygpO1xuICAgICAgICB0aGlzLnN0b3BTY3JvbGxUaW1lcnMkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
@@ -120,11 +120,11 @@ export class GanttTableHeaderComponent {
120
120
  this.unsubscribe$.complete();
121
121
  }
122
122
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: GanttTableHeaderComponent, deps: [{ token: i0.ElementRef }, { token: GANTT_ABSTRACT_TOKEN }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: GanttTableHeaderComponent, selector: "gantt-table-header", inputs: { columns: "columns" }, host: { properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "resizeLineElementRef", first: true, predicate: ["resizeLine"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"gantt-table-header-container\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columns; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"> </ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"column-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event, column)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onResizeEnded($event, column)\"\n ></div>\n </div>\n</div>\n\n<div\n class=\"table-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onOverallResizeEnded($event)\"\n></div>\n\n<div #resizeLine class=\"table-resize-auxiliary-line\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }] }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: GanttTableHeaderComponent, selector: "gantt-table-header", inputs: { columns: "columns" }, host: { properties: { "class": "this.className" } }, viewQueries: [{ propertyName: "resizeLineElementRef", first: true, predicate: ["resizeLine"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"d-flex\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columns; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"> </ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"column-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event, column)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onResizeEnded($event, column)\"\n ></div>\n </div>\n</div>\n\n<div\n class=\"table-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onOverallResizeEnded($event)\"\n></div>\n\n<div #resizeLine class=\"table-resize-auxiliary-line\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }] }); }
124
124
  }
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: GanttTableHeaderComponent, decorators: [{
126
126
  type: Component,
127
- args: [{ selector: 'gantt-table-header', template: "<div class=\"gantt-table-header-container\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columns; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"> </ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"column-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event, column)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onResizeEnded($event, column)\"\n ></div>\n </div>\n</div>\n\n<div\n class=\"table-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onOverallResizeEnded($event)\"\n></div>\n\n<div #resizeLine class=\"table-resize-auxiliary-line\"></div>\n" }]
127
+ args: [{ selector: 'gantt-table-header', template: "<div class=\"d-flex\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columns; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"> </ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"column-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event, column)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onResizeEnded($event, column)\"\n ></div>\n </div>\n</div>\n\n<div\n class=\"table-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onOverallResizeEnded($event)\"\n></div>\n\n<div #resizeLine class=\"table-resize-auxiliary-line\"></div>\n" }]
128
128
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
129
129
  type: Inject,
130
130
  args: [GANTT_ABSTRACT_TOKEN]
@@ -137,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
137
137
  type: HostBinding,
138
138
  args: ['class']
139
139
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL3RhYmxlL2hlYWRlci9nYW50dC10YWJsZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdGFibGUvaGVhZGVyL2dhbnR0LXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFFWCxLQUFLLEVBRUwsU0FBUyxFQUVULE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQTBCLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFFMUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFXakMsTUFBTSxPQUFPLHlCQUF5QjtJQWFsQyxZQUNZLFVBQXNCLEVBQ1EsS0FBNkIsRUFDM0QsR0FBc0I7UUFGdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNRLFVBQUssR0FBTCxLQUFLLENBQXdCO1FBQzNELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBYjNCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFFZCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFNckIsY0FBUyxHQUFHLHFCQUFxQixDQUFDO0lBTXJELENBQUM7SUFFSixR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YSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNwRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDbkUsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0FySVEseUJBQXlCLDRDQWV0QixvQkFBb0I7a0dBZnZCLHlCQUF5QixpUkMvQnRDLDgvQkE2QkE7OzJGREVhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDSSxvQkFBb0I7OzBCQWtCekIsTUFBTTsyQkFBQyxvQkFBb0I7NEVBUnZCLE9BQU87c0JBQWYsS0FBSztnQkFFcUMsb0JBQW9CO3NCQUE5RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRW5CLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90YWJsZS9nYW50dC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IENka0RyYWdFbmQsIENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IGNvZXJjZUNzc1BpeGVsVmFsdWUgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgR2FudHRBYnN0cmFjdENvbXBvbmVudCwgR0FOVFRfQUJTVFJBQ1RfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9nYW50dC1hYnN0cmFjdCc7XG5pbXBvcnQgeyBzZXRTdHlsZVdpdGhWZW5kb3JQcmVmaXggfSBmcm9tICcuLi8uLi8uLi91dGlscy9zZXQtc3R5bGUtd2l0aC12ZW5kb3ItcHJlZml4JztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbHVtbldpZHRoID0gMTAwO1xuZXhwb3J0IGNvbnN0IG1pbkNvbHVtbldpZHRoID0gODA7XG5pbnRlcmZhY2UgRHJhZ0ZpeGVkQ29uZmlnIHtcbiAgICB0YXJnZXQ6IEhUTUxFbGVtZW50O1xuICAgIG9yaWdpbldpZHRoOiBudW1iZXI7XG4gICAgbW92ZWRXaWR0aDogbnVtYmVyO1xuICAgIG1pbldpZHRoOiBudW1iZXI7XG59XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LXRhYmxlLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRUYWJsZUhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgZHJhZ1N0YXJ0TGVmdDogbnVtYmVyO1xuXG4gICAgcHVibGljIHRhYmxlV2lkdGggPSAwO1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgQElucHV0KCkgY29sdW1uczogUXVlcnlMaXN0PE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgncmVzaXplTGluZScsIHsgc3RhdGljOiB0cnVlIH0pIHJlc2l6ZUxpbmVFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSBgZ2FudHQtdGFibGUtaGVhZGVyIGA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KEdBTlRUX0FCU1RSQUNUX1RPS0VOKSBwcml2YXRlIGdhbnR0OiBHYW50dEFic3RyYWN0Q29tcG9uZW50LFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY29sdW1ucy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc0NoYW5nZSgpO1xuICAgICAgICAgICAgdGhpcy5nYW50dC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbHVtbnNDaGFuZ2UoKSB7XG4gICAgICAgIGxldCB0YWJsZVdpZHRoID0gMDtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb2x1bW4uY29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uY29sdW1uV2lkdGggPSBjb2VyY2VDc3NQaXhlbFZhbHVlKGRlZmF1bHRDb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZVdpZHRoICs9IE51bWJlcihjb2x1bW4uY29sdW1uV2lkdGgucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50YWJsZVdpZHRoID0gdGFibGVXaWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRyYWdGaXhlZChjb25maWc6IERyYWdGaXhlZENvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLm1vdmVkV2lkdGggPCBjb25maWcubWluV2lkdGgpIHtcbiAgICAgICAgICAgIHNldFN0eWxlV2l0aFZlbmRvclByZWZpeCh7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogY29uZmlnLnRhcmdldCxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGB0cmFuc2xhdGUzZCgke2NvbmZpZy5taW5XaWR0aCAtIGNvbmZpZy5vcmlnaW5XaWR0aH1weCwgMCwgMClgXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVzaXplU3RhcnRlZChldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhZ1N0YXJ0TGVmdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgIH1cblxuICAgIG9uUmVzaXplTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlLCBjb2x1bW4/OiBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblxuICAgICAgICBsZXQgb3JpZ2luV2lkdGg6IG51bWJlcjtcbiAgICAgICAgbGV0IG1vdmVkV2lkdGg6IG51bWJlcjtcbiAgICAgICAgbGV0IG1pbldpZHRoOiBudW1iZXI7XG4gICAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgICAgIG9yaWdpbldpZHRoID0gcGFyc2VJbnQoY29sdW1uLmNvbHVtbldpZHRoLCAxMCk7XG4gICAgICAgICAgICBtb3ZlZFdpZHRoID0gb3JpZ2luV2lkdGggKyAobGVmdCAtIHRoaXMuZHJhZ1N0YXJ0TGVmdCk7XG4gICAgICAgICAgICBtaW5XaWR0aCA9IG1pbkNvbHVtbldpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3JpZ2luV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgICAgIG1vdmVkV2lkdGggPSBvcmlnaW5XaWR0aCArIChsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0KTtcbiAgICAgICAgICAgIG1pbldpZHRoID0gbWluQ29sdW1uV2lkdGggKiB0aGlzLmNvbHVtbnMubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcmFnRml4ZWQoe1xuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgb3JpZ2luV2lkdGgsXG4gICAgICAgICAgICBtb3ZlZFdpZHRoLFxuICAgICAgICAgICAgbWluV2lkdGhcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zaG93QXV4aWxpYXJ5TGluZShldmVudCk7XG4gICAgfVxuXG4gICAgb25SZXNpemVFbmRlZChldmVudDogQ2RrRHJhZ0VuZCwgY29sdW1uOiBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGJlZm9yZVdpZHRoID0gcGFyc2VJbnQoY29sdW1uLmNvbHVtbldpZHRoLCAxMCk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4uY29sdW1uV2lkdGgsIDEwKSArIChsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0KTtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLm1heCh3aWR0aCB8fCAwLCBtaW5Db2x1bW5XaWR0aCk7XG4gICAgICAgIGNvbHVtbi5jb2x1bW5XaWR0aCA9IGNvZXJjZUNzc1BpeGVsVmFsdWUoY29sdW1uV2lkdGgpO1xuICAgICAgICBpZiAodGhpcy5nYW50dC50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5nYW50dC50YWJsZS5jb2x1bW5DaGFuZ2VzLmVtaXQoeyBjb2x1bW5zOiB0aGlzLmNvbHVtbnMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYmxlV2lkdGggPSB0aGlzLnRhYmxlV2lkdGggLSBiZWZvcmVXaWR0aCArIGNvbHVtbldpZHRoO1xuICAgICAgICB0aGlzLmhpZGVBdXhpbGlhcnlMaW5lKCk7XG4gICAgICAgIGV2ZW50LnNvdXJjZS5yZXNldCgpO1xuICAgIH1cblxuICAgIG9uT3ZlcmFsbFJlc2l6ZUVuZGVkKGV2ZW50OiBDZGtEcmFnRW5kKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3QgdGFibGVXaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBjb25zdCBkcmFnV2lkdGggPSBsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0O1xuICAgICAgICBsZXQgdGVtcFdpZHRoID0gMDtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFzdENvbHVtbldpZHRoID0gcGFyc2VJbnQoY29sdW1uLmNvbHVtbldpZHRoLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBkaXN0cmlidXRlV2lkdGggPSBwYXJzZUludChTdHJpbmcoZHJhZ1dpZHRoICogKGxhc3RDb2x1bW5XaWR0aCAvIHRhYmxlV2lkdGgpKSwgMTApO1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLm1heChsYXN0Q29sdW1uV2lkdGggKyBkaXN0cmlidXRlV2lkdGggfHwgMCwgbWluQ29sdW1uV2lkdGgpO1xuICAgICAgICAgICAgY29sdW1uLmNvbHVtbldpZHRoID0gY29lcmNlQ3NzUGl4ZWxWYWx1ZShjb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICB0ZW1wV2lkdGggKz0gY29sdW1uV2lkdGg7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRhYmxlV2lkdGggPSB0ZW1wV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmdhbnR0LnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmdhbnR0LnRhYmxlLmNvbHVtbkNoYW5nZXMuZW1pdCh7IGNvbHVtbnM6IHRoaXMuY29sdW1ucyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZUF1eGlsaWFyeUxpbmUoKTtcbiAgICAgICAgZXZlbnQuc291cmNlLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93QXV4aWxpYXJ5TGluZShldmVudDogQ2RrRHJhZ01vdmUpIHtcbiAgICAgICAgY29uc3QgdGFibGVSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSBldmVudC5zb3VyY2UuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHsgeDogdGFyZ2V0UmVjdC5sZWZ0IC0gdGFibGVSZWN0LmxlZnQsIHk6IHRhcmdldFJlY3QudG9wIC0gdGFibGVSZWN0LnRvcCB9O1xuICAgICAgICB0aGlzLnJlc2l6ZUxpbmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2Rpc3RhbmNlLnh9cHhgO1xuICAgICAgICB0aGlzLnJlc2l6ZUxpbmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlQXV4aWxpYXJ5TGluZSgpIHtcbiAgICAgICAgdGhpcy5yZXNpemVMaW5lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtaGVhZGVyLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtY29sdW1uXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgaSA9IGluZGV4XCIgW3N0eWxlLndpZHRoXT1cImNvbHVtbi5jb2x1bW5XaWR0aFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVSZWY7IGVsc2UgZGVmYXVsdFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZVJlZlwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICB7eyBjb2x1bW4ubmFtZSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2x1bW4tcmVzaXplLWhhbmRsZVwiXG4gICAgICBjZGtEcmFnXG4gICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgIGNka0RyYWdCb3VuZGFyeT1cIi5nYW50dFwiXG4gICAgICAoY2RrRHJhZ01vdmVkKT1cIm9uUmVzaXplTW92ZWQoJGV2ZW50LCBjb2x1bW4pXCJcbiAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvblJlc2l6ZVN0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAoY2RrRHJhZ0VuZGVkKT1cIm9uUmVzaXplRW5kZWQoJGV2ZW50LCBjb2x1bW4pXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgY2xhc3M9XCJ0YWJsZS1yZXNpemUtaGFuZGxlXCJcbiAgY2RrRHJhZ1xuICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgY2RrRHJhZ0JvdW5kYXJ5PVwiLmdhbnR0XCJcbiAgKGNka0RyYWdNb3ZlZCk9XCJvblJlc2l6ZU1vdmVkKCRldmVudClcIlxuICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25SZXNpemVTdGFydGVkKCRldmVudClcIlxuICAoY2RrRHJhZ0VuZGVkKT1cIm9uT3ZlcmFsbFJlc2l6ZUVuZGVkKCRldmVudClcIlxuPjwvZGl2PlxuXG48ZGl2ICNyZXNpemVMaW5lIGNsYXNzPVwidGFibGUtcmVzaXplLWF1eGlsaWFyeS1saW5lXCI+PC9kaXY+XG4iXX0=
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL3RhYmxlL2hlYWRlci9nYW50dC10YWJsZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdGFibGUvaGVhZGVyL2dhbnR0LXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFFWCxLQUFLLEVBRUwsU0FBUyxFQUVULE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQTBCLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFFMUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFXakMsTUFBTSxPQUFPLHlCQUF5QjtJQWFsQyxZQUNZLFVBQXNCLEVBQ1EsS0FBNkIsRUFDM0QsR0FBc0I7UUFGdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNRLFVBQUssR0FBTCxLQUFLLENBQXdCO1FBQzNELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBYjNCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFFZCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFNckIsY0FBUyxHQUFHLHFCQUFxQixDQUFDO0lBTXJELENBQUM7SUFFSixR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YSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNwRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDbkUsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0FySVEseUJBQXlCLDRDQWV0QixvQkFBb0I7a0dBZnZCLHlCQUF5QixpUkMvQnRDLHcrQkE2QkE7OzJGREVhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDSSxvQkFBb0I7OzBCQWtCekIsTUFBTTsyQkFBQyxvQkFBb0I7NEVBUnZCLE9BQU87c0JBQWYsS0FBSztnQkFFcUMsb0JBQW9CO3NCQUE5RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRW5CLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90YWJsZS9nYW50dC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IENka0RyYWdFbmQsIENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IGNvZXJjZUNzc1BpeGVsVmFsdWUgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgR2FudHRBYnN0cmFjdENvbXBvbmVudCwgR0FOVFRfQUJTVFJBQ1RfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9nYW50dC1hYnN0cmFjdCc7XG5pbXBvcnQgeyBzZXRTdHlsZVdpdGhWZW5kb3JQcmVmaXggfSBmcm9tICcuLi8uLi8uLi91dGlscy9zZXQtc3R5bGUtd2l0aC12ZW5kb3ItcHJlZml4JztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbHVtbldpZHRoID0gMTAwO1xuZXhwb3J0IGNvbnN0IG1pbkNvbHVtbldpZHRoID0gODA7XG5pbnRlcmZhY2UgRHJhZ0ZpeGVkQ29uZmlnIHtcbiAgICB0YXJnZXQ6IEhUTUxFbGVtZW50O1xuICAgIG9yaWdpbldpZHRoOiBudW1iZXI7XG4gICAgbW92ZWRXaWR0aDogbnVtYmVyO1xuICAgIG1pbldpZHRoOiBudW1iZXI7XG59XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LXRhYmxlLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRUYWJsZUhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgZHJhZ1N0YXJ0TGVmdDogbnVtYmVyO1xuXG4gICAgcHVibGljIHRhYmxlV2lkdGggPSAwO1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgQElucHV0KCkgY29sdW1uczogUXVlcnlMaXN0PE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgncmVzaXplTGluZScsIHsgc3RhdGljOiB0cnVlIH0pIHJlc2l6ZUxpbmVFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSBgZ2FudHQtdGFibGUtaGVhZGVyIGA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KEdBTlRUX0FCU1RSQUNUX1RPS0VOKSBwcml2YXRlIGdhbnR0OiBHYW50dEFic3RyYWN0Q29tcG9uZW50LFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY29sdW1ucy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc0NoYW5nZSgpO1xuICAgICAgICAgICAgdGhpcy5nYW50dC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbHVtbnNDaGFuZ2UoKSB7XG4gICAgICAgIGxldCB0YWJsZVdpZHRoID0gMDtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb2x1bW4uY29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uY29sdW1uV2lkdGggPSBjb2VyY2VDc3NQaXhlbFZhbHVlKGRlZmF1bHRDb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZVdpZHRoICs9IE51bWJlcihjb2x1bW4uY29sdW1uV2lkdGgucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50YWJsZVdpZHRoID0gdGFibGVXaWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRyYWdGaXhlZChjb25maWc6IERyYWdGaXhlZENvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLm1vdmVkV2lkdGggPCBjb25maWcubWluV2lkdGgpIHtcbiAgICAgICAgICAgIHNldFN0eWxlV2l0aFZlbmRvclByZWZpeCh7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogY29uZmlnLnRhcmdldCxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGB0cmFuc2xhdGUzZCgke2NvbmZpZy5taW5XaWR0aCAtIGNvbmZpZy5vcmlnaW5XaWR0aH1weCwgMCwgMClgXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVzaXplU3RhcnRlZChldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhZ1N0YXJ0TGVmdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgIH1cblxuICAgIG9uUmVzaXplTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlLCBjb2x1bW4/OiBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblxuICAgICAgICBsZXQgb3JpZ2luV2lkdGg6IG51bWJlcjtcbiAgICAgICAgbGV0IG1vdmVkV2lkdGg6IG51bWJlcjtcbiAgICAgICAgbGV0IG1pbldpZHRoOiBudW1iZXI7XG4gICAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgICAgIG9yaWdpbldpZHRoID0gcGFyc2VJbnQoY29sdW1uLmNvbHVtbldpZHRoLCAxMCk7XG4gICAgICAgICAgICBtb3ZlZFdpZHRoID0gb3JpZ2luV2lkdGggKyAobGVmdCAtIHRoaXMuZHJhZ1N0YXJ0TGVmdCk7XG4gICAgICAgICAgICBtaW5XaWR0aCA9IG1pbkNvbHVtbldpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3JpZ2luV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgICAgIG1vdmVkV2lkdGggPSBvcmlnaW5XaWR0aCArIChsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0KTtcbiAgICAgICAgICAgIG1pbldpZHRoID0gbWluQ29sdW1uV2lkdGggKiB0aGlzLmNvbHVtbnMubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcmFnRml4ZWQoe1xuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgb3JpZ2luV2lkdGgsXG4gICAgICAgICAgICBtb3ZlZFdpZHRoLFxuICAgICAgICAgICAgbWluV2lkdGhcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zaG93QXV4aWxpYXJ5TGluZShldmVudCk7XG4gICAgfVxuXG4gICAgb25SZXNpemVFbmRlZChldmVudDogQ2RrRHJhZ0VuZCwgY29sdW1uOiBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGJlZm9yZVdpZHRoID0gcGFyc2VJbnQoY29sdW1uLmNvbHVtbldpZHRoLCAxMCk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4uY29sdW1uV2lkdGgsIDEwKSArIChsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0KTtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLm1heCh3aWR0aCB8fCAwLCBtaW5Db2x1bW5XaWR0aCk7XG4gICAgICAgIGNvbHVtbi5jb2x1bW5XaWR0aCA9IGNvZXJjZUNzc1BpeGVsVmFsdWUoY29sdW1uV2lkdGgpO1xuICAgICAgICBpZiAodGhpcy5nYW50dC50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5nYW50dC50YWJsZS5jb2x1bW5DaGFuZ2VzLmVtaXQoeyBjb2x1bW5zOiB0aGlzLmNvbHVtbnMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYmxlV2lkdGggPSB0aGlzLnRhYmxlV2lkdGggLSBiZWZvcmVXaWR0aCArIGNvbHVtbldpZHRoO1xuICAgICAgICB0aGlzLmhpZGVBdXhpbGlhcnlMaW5lKCk7XG4gICAgICAgIGV2ZW50LnNvdXJjZS5yZXNldCgpO1xuICAgIH1cblxuICAgIG9uT3ZlcmFsbFJlc2l6ZUVuZGVkKGV2ZW50OiBDZGtEcmFnRW5kKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3QgdGFibGVXaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBjb25zdCBkcmFnV2lkdGggPSBsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0O1xuICAgICAgICBsZXQgdGVtcFdpZHRoID0gMDtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFzdENvbHVtbldpZHRoID0gcGFyc2VJbnQoY29sdW1uLmNvbHVtbldpZHRoLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBkaXN0cmlidXRlV2lkdGggPSBwYXJzZUludChTdHJpbmcoZHJhZ1dpZHRoICogKGxhc3RDb2x1bW5XaWR0aCAvIHRhYmxlV2lkdGgpKSwgMTApO1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLm1heChsYXN0Q29sdW1uV2lkdGggKyBkaXN0cmlidXRlV2lkdGggfHwgMCwgbWluQ29sdW1uV2lkdGgpO1xuICAgICAgICAgICAgY29sdW1uLmNvbHVtbldpZHRoID0gY29lcmNlQ3NzUGl4ZWxWYWx1ZShjb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICB0ZW1wV2lkdGggKz0gY29sdW1uV2lkdGg7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRhYmxlV2lkdGggPSB0ZW1wV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmdhbnR0LnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmdhbnR0LnRhYmxlLmNvbHVtbkNoYW5nZXMuZW1pdCh7IGNvbHVtbnM6IHRoaXMuY29sdW1ucyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZUF1eGlsaWFyeUxpbmUoKTtcbiAgICAgICAgZXZlbnQuc291cmNlLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93QXV4aWxpYXJ5TGluZShldmVudDogQ2RrRHJhZ01vdmUpIHtcbiAgICAgICAgY29uc3QgdGFibGVSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSBldmVudC5zb3VyY2UuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHsgeDogdGFyZ2V0UmVjdC5sZWZ0IC0gdGFibGVSZWN0LmxlZnQsIHk6IHRhcmdldFJlY3QudG9wIC0gdGFibGVSZWN0LnRvcCB9O1xuICAgICAgICB0aGlzLnJlc2l6ZUxpbmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2Rpc3RhbmNlLnh9cHhgO1xuICAgICAgICB0aGlzLnJlc2l6ZUxpbmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlQXV4aWxpYXJ5TGluZSgpIHtcbiAgICAgICAgdGhpcy5yZXNpemVMaW5lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1jb2x1bW5cIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIiBbc3R5bGUud2lkdGhdPVwiY29sdW1uLmNvbHVtbldpZHRoXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZVJlZjsgZWxzZSBkZWZhdWx0XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlUmVmXCI+IDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgIHt7IGNvbHVtbi5uYW1lIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNvbHVtbi1yZXNpemUtaGFuZGxlXCJcbiAgICAgIGNka0RyYWdcbiAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgY2RrRHJhZ0JvdW5kYXJ5PVwiLmdhbnR0XCJcbiAgICAgIChjZGtEcmFnTW92ZWQpPVwib25SZXNpemVNb3ZlZCgkZXZlbnQsIGNvbHVtbilcIlxuICAgICAgKGNka0RyYWdTdGFydGVkKT1cIm9uUmVzaXplU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgIChjZGtEcmFnRW5kZWQpPVwib25SZXNpemVFbmRlZCgkZXZlbnQsIGNvbHVtbilcIlxuICAgID48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cInRhYmxlLXJlc2l6ZS1oYW5kbGVcIlxuICBjZGtEcmFnXG4gIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICBjZGtEcmFnQm91bmRhcnk9XCIuZ2FudHRcIlxuICAoY2RrRHJhZ01vdmVkKT1cIm9uUmVzaXplTW92ZWQoJGV2ZW50KVwiXG4gIChjZGtEcmFnU3RhcnRlZCk9XCJvblJlc2l6ZVN0YXJ0ZWQoJGV2ZW50KVwiXG4gIChjZGtEcmFnRW5kZWQpPVwib25PdmVyYWxsUmVzaXplRW5kZWQoJGV2ZW50KVwiXG4+PC9kaXY+XG5cbjxkaXYgI3Jlc2l6ZUxpbmUgY2xhc3M9XCJ0YWJsZS1yZXNpemUtYXV4aWxpYXJ5LWxpbmVcIj48L2Rpdj5cbiJdfQ==