@datorama/core 22.12.1-beta.4 → 22.12.2

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.
@@ -29,7 +29,7 @@ let DatoGridV2Component = class DatoGridV2Component {
29
29
  return this.gridOptions ? this.gridOptions.enableV2_1 : false;
30
30
  }
31
31
  get isPivotStyle() {
32
- return this.gridOptions ? this.gridOptions.pivotGridStyle : false;
32
+ return this.gridOptions && this.gridOptions.usePivotGridStyle;
33
33
  }
34
34
  };
35
35
  DatoGridV2Component.ctorParameters = () => [
@@ -52,4 +52,4 @@ DatoGridV2Component = __decorate([
52
52
  __metadata("design:paramtypes", [DatoGridControllerComponent, ElementRef])
53
53
  ], DatoGridV2Component);
54
54
  export { DatoGridV2Component };
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBVS9DLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBc0I5QixZQUFvQixVQUF1QyxFQUFVLElBQWdCO1FBQWpFLGVBQVUsR0FBVixVQUFVLENBQTZCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFyQmpELElBQUksSUFBSSxDQUFDLE1BQWlCO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEUsQ0FBQztDQUdGLENBQUE7O1lBRGlDLDJCQUEyQjtZQUFnQixVQUFVOztBQXJCN0M7SUFBdkMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4QkFBa0IsU0FBUztxQ0FBVCxTQUFTOytDQUdqRTtBQUpVLG1CQUFtQjtJQVAvQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsY0FBYztRQUN4QixxYUFBdUM7UUFFdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07UUFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O0tBQ3RDLENBQUM7cUNBdUJnQywyQkFBMkIsRUFBZ0IsVUFBVTtHQXRCMUUsbUJBQW1CLENBdUIvQjtTQXZCWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZ0dyaWROZzIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgcXVlcnkgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9oZWxwZXJzJztcbmltcG9ydCB7IERhdG9HcmlkT3B0aW9ucyB9IGZyb20gJy4vZ3JpZC12Mi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZ3JpZC12MicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLXYyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC12Mi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZFYyQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChBZ0dyaWROZzIsIHsgc3RhdGljOiB0cnVlIH0pIHNldCBncmlkKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgYWdHcmlkRWwgPSBxdWVyeSgnYWctZ3JpZC1hbmd1bGFyJywgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuY29udHJvbGxlci5faW5pdGlhbGl6ZUdyaWQoYWdHcmlkLCBhZ0dyaWRFbCk7XG4gIH1cblxuICBnZXQgZ3JpZE9wdGlvbnMoKTogRGF0b0dyaWRPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyID8gdGhpcy5jb250cm9sbGVyLmdyaWRPcHRpb25zIDogbnVsbDtcbiAgfVxuXG4gIGdldCBlbmFibGVCYWNrZ3JvdW5kKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zID8gdGhpcy5ncmlkT3B0aW9ucy5lbmFibGVCYWNrZ3JvdW5kIDogZmFsc2U7XG4gIH1cblxuICBnZXQgZW5hYmxlVjJfMSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucyA/IHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlVjJfMSA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzUGl2b3RTdHlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucyA/IHRoaXMuZ3JpZE9wdGlvbnMucGl2b3RHcmlkU3R5bGUgOiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udHJvbGxlcjogRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50LCBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYpIHt9XG59XG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBVS9DLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBc0I5QixZQUFvQixVQUF1QyxFQUFVLElBQWdCO1FBQWpFLGVBQVUsR0FBVixVQUFVLENBQTZCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFyQmpELElBQUksSUFBSSxDQUFDLE1BQWlCO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztJQUNoRSxDQUFDO0NBR0YsQ0FBQTs7WUFEaUMsMkJBQTJCO1lBQWdCLFVBQVU7O0FBckI3QztJQUF2QyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDOzhCQUFrQixTQUFTO3FDQUFULFNBQVM7K0NBR2pFO0FBSlUsbUJBQW1CO0lBUC9CLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxjQUFjO1FBQ3hCLHFhQUF1QztRQUV2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtRQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7S0FDdEMsQ0FBQztxQ0F1QmdDLDJCQUEyQixFQUFnQixVQUFVO0dBdEIxRSxtQkFBbUIsQ0F1Qi9CO1NBdkJZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBxdWVyeSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IHsgRGF0b0dyaWRPcHRpb25zIH0gZnJvbSAnLi9ncmlkLXYyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXYyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtdjIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLXYyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkVjJDb21wb25lbnQge1xuICBAVmlld0NoaWxkKEFnR3JpZE5nMiwgeyBzdGF0aWM6IHRydWUgfSkgc2V0IGdyaWQoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCBhZ0dyaWRFbCA9IHF1ZXJ5KCdhZy1ncmlkLWFuZ3VsYXInLCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5jb250cm9sbGVyLl9pbml0aWFsaXplR3JpZChhZ0dyaWQsIGFnR3JpZEVsKTtcbiAgfVxuXG4gIGdldCBncmlkT3B0aW9ucygpOiBEYXRvR3JpZE9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIgPyB0aGlzLmNvbnRyb2xsZXIuZ3JpZE9wdGlvbnMgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGVuYWJsZUJhY2tncm91bmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMgPyB0aGlzLmdyaWRPcHRpb25zLmVuYWJsZUJhY2tncm91bmQgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBlbmFibGVWMl8xKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zID8gdGhpcy5ncmlkT3B0aW9ucy5lbmFibGVWMl8xIDogZmFsc2U7XG4gIH1cblxuICBnZXQgaXNQaXZvdFN0eWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zICYmIHRoaXMuZ3JpZE9wdGlvbnMudXNlUGl2b3RHcmlkU3R5bGU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xsZXI6IERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCwgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmKSB7fVxufVxuIl19
@@ -68,7 +68,7 @@ export const defaultGridOptions = Object.assign({
68
68
  type: DatoGridColumnTypes.String,
69
69
  menuTabs: ['filterMenuTab'],
70
70
  headerComponentFramework: DatoGridColumnHeaderComponent
71
- }, suppressCellSelection: true, suppressPropertyNamesCheck: true, rowHeight: 35, headerHeight: 30, rowSelection: GridRowSelectionType.MULTIPLE, rowDeselection: true, unSortIcon: true, animateRows: true, rememberGroupStateWhenNewData: true, groupMultiAutoColumn: true, groupDefaultExpanded: -1, pivotGridStyle: false }, (isTestEnv() ? { suppressColumnVirtualisation: true, rowBuffer: 99999 } : {}));
71
+ }, suppressCellSelection: true, suppressPropertyNamesCheck: true, rowHeight: 35, headerHeight: 30, rowSelection: GridRowSelectionType.MULTIPLE, rowDeselection: true, unSortIcon: true, animateRows: true, rememberGroupStateWhenNewData: true, groupMultiAutoColumn: true, groupDefaultExpanded: -1, usePivotGridStyle: false }, (isTestEnv() ? { suppressColumnVirtualisation: true, rowBuffer: 99999 } : {}));
72
72
  export const DEFAULT_GRID_SEARCH_DEBOUNCE_TIME = {
73
73
  CLIENT: 200,
74
74
  SERVER: 250
@@ -397,4 +397,4 @@ function rowGroupOpened({ node }) {
397
397
  this.api.refreshCells({ force: true, rowNodes: [node] });
398
398
  }
399
399
  export { ɵ0, ɵ1 };
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFFTCxtQkFBbUIsRUFHbkIsYUFBYSxFQUNiLG9CQUFvQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUlqRCxNQUFNLGdCQUFnQixHQUFXLGVBQWUsQ0FBQztBQUNqRCxNQUFNLG9CQUFvQixHQUFXLGlCQUFpQixDQUFDO0FBRXZELFNBQVMsT0FBTyxDQUFDLEdBQWM7SUFDN0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztXQUc1QixJQUFJLENBQUMsRUFB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QztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFJLElBQVMsRUFBRSxjQUFrQztJQUNsRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFVLEVBQUUsRUFBRTtZQUFaLG9CQUFNO1FBQ3ZCLE1BQU0sSUFBSSxHQUFTLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sUUFBUSxHQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoQyx1Q0FDSyxHQUFHLEtBQ04sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxJQUN0QztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRTtJQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuaW1wb3J0IHsgRGF0b0dyaWRWMkxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtbG9hZGVyL2dyaWQtdjItbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBBZ0dyaWRSb3dJY29uLFxuICBEYXRvR3JpZENvbHVtblR5cGVzLFxuICBEYXRvR3JpZE9wdGlvbnMsXG4gIERhdG9HcmlkVHJlZUNvbmZpZyxcbiAgR3JpZE1pbldpZHRocyxcbiAgR3JpZFJvd1NlbGVjdGlvblR5cGVcbn0gZnJvbSAnLi9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkVjJOb0RhdGFPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1uby1kYXRhLW92ZXJsYXkvZ3JpZC12Mi1uby1kYXRhLW92ZXJsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IERhdG9HcmlkRmlsdGVyVHlwZXMgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZENvbHVtbkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtY29sdW1uLWhlYWRlci9ncmlkLWNvbHVtbi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGlzVGVzdEVudiB9IGZyb20gJy4uLy4uL2lzdGVzdC1lbnYnO1xuaW1wb3J0IHsgSUQgfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgZ2V0SW5pdGlhbHMgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmcnO1xuaW1wb3J0IHsgc2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuXG50eXBlIERhdGVUeXBlcyA9IG51bWJlciB8IHN0cmluZyB8IERhdGU7XG5cbmNvbnN0IGFnUm93TGV2ZWxQcmVmaXg6IHN0cmluZyA9ICdhZy1yb3ctbGV2ZWwtJztcbmNvbnN0IGVtcHR5Rm9sZGVyQ2xhc3NOYW1lOiBzdHJpbmcgPSAnYWctZW1wdHktZm9sZGVyJztcblxuZnVuY3Rpb24gZ2V0VGltZSh2YWw6IERhdGVUeXBlcykge1xuICBsZXQgdGltZSA9IG5ldyBEYXRlKHZhbCB8fCBudWxsKS5nZXRUaW1lKCk7XG4gIHJldHVybiBpc05hTih0aW1lKSA/IDAgOiB0aW1lO1xufVxuXG5leHBvcnQgY29uc3QgUk9PVF9OT0RFX0lEID0gJ1JPT1RfTk9ERV9JRCc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJlZU9wdGlvbnM6IFBhcnRpYWw8RGF0b0dyaWRPcHRpb25zPiA9IHtcbiAgZ2V0RGF0YVBhdGg6IGl0ZW0gPT4gaXRlbVtncmlkVHJlZUZpbGVQYXRoS2V5XSxcbiAgY29tcG9uZW50czoge1xuICAgIGZpbGVDZWxsUmVuZGVyZXI6IGdldEdyaWRUcmVlQ2VsbFJlbmRlcmVyKClcbiAgfSxcbiAgb25Sb3dEcmFnTW92ZTogb25Sb3dEcmFnTW92ZSxcbiAgb25Sb3dEcmFnRW5kOiBvblJvd0RyYWdFbmQsXG4gIG9uUm93U2VsZWN0ZWQ6IG9uUm93U2VsZWN0ZWQsXG4gIG9uUm93R3JvdXBPcGVuZWQ6IHJvd0dyb3VwT3BlbmVkLFxuICBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uOiB0cnVlLFxuICBncm91cFNlbGVjdHNDaGlsZHJlbjogdHJ1ZSxcbiAgaWNvbnM6IHtcbiAgICByb3dEcmFnOiAnPGRhdG8taWNvbiBpY29uPVwiZHJhZ1wiIGNsYXNzPVwiZGF0by1pY29uLWZvbnQtZHJhZyBwcmltYXJ5LTQwMC1jb2xvclwiPjwvZGF0by1pY29uPidcbiAgfVxufTtcblxuY29uc3Qgc3RyaW5nQ29sRGVmID0ge1xuICBmaWx0ZXI6IERhdG9HcmlkRmlsdGVyVHlwZXMuU3RyaW5nLFxuICBjb21wYXJhdG9yOiAoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IChhIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoKGIgfHwgJycpLnRvTG93ZXJDYXNlKCkpXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEdyaWRPcHRpb25zOiBQYXJ0aWFsPERhdG9HcmlkT3B0aW9ucz4gPSB7XG4gIC8vIENvcmVcbiAgaG92ZXJDb25maWc6IHsgZW5hYmxlZDogdHJ1ZSwgbWF4RGlzcGxheWVkSXRlbXM6IDMgfSxcbiAgZW5hYmxlVjJfMTogZmFsc2UsXG4gIGVuYWJsZVNlYXJjaDogZmFsc2UsXG4gIGVuYWJsZVNlYXJjaEhpZ2hsaWdodDogdHJ1ZSxcbiAgY29sdW1uc0luY2x1ZGVkSW5TZWFyY2hCeURlZmF1bHQ6IHRydWUsXG4gIGluY2x1ZGVIaWRkZW5Db2x1bW5zSW5TZWFyY2g6IGZhbHNlLFxuICBlbmFibGVBbGxQYWdlc1NlbGVjdGlvbjogdHJ1ZSxcbiAgaWRDb2x1bW5LZXk6ICdpZCcsXG4gIGVuYWJsZUJhY2tncm91bmQ6IHRydWUsXG4gIC8vIEFnIGdyaWRcbiAgY29sdW1uVHlwZXM6IHtcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5EYXRlXToge1xuICAgICAgZmlsdGVyOiBEYXRvR3JpZEZpbHRlclR5cGVzLkRhdGUsXG4gICAgICBjb21wYXJhdG9yOiAoYTogRGF0ZVR5cGVzLCBiOiBEYXRlVHlwZXMpID0+IGdldFRpbWUoYSkgLSBnZXRUaW1lKGIpXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5OdW1iZXJdOiB7XG4gICAgICBmaWx0ZXI6IERhdG9HcmlkRmlsdGVyVHlwZXMuTnVtYmVyXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5TdHJpbmddOiBzdHJpbmdDb2xEZWYsXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuU3RhdHVzXToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRTdGF0dXNDZWxsQ29tcG9uZW50J1xuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuSXRlbXNdOiB7XG4gICAgICAuLi5zdHJpbmdDb2xEZWYsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdEYXRvR3JpZEl0ZW1zQ2VsbENvbXBvbmVudCdcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkl0ZW1zQ291bnRdOiB7XG4gICAgICAuLi5zdHJpbmdDb2xEZWYsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdEYXRvR3JpZEl0ZW1zQ291bnRDZWxsQ29tcG9uZW50J1xuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuSW5pdGlhbHNdOiB7XG4gICAgICAuLi5zdHJpbmdDb2xEZWYsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdEYXRvR3JpZEluaXRpYWxzQ2VsbENvbXBvbmVudCdcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkF2YXRhcl06IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkQXZhdGFyQ2VsbENvbXBvbmVudCdcbiAgICB9XG4gIH0sXG4gIG11bHRpU29ydEtleTogJ2N0cmwnLFxuICBzdXBwcmVzc1BhZ2luYXRpb25QYW5lbDogdHJ1ZSxcbiAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgZGVsdGFDb2x1bW5Nb2RlOiB0cnVlLFxuICBsb2FkaW5nT3ZlcmxheUNvbXBvbmVudEZyYW1ld29yazogRGF0b0dyaWRWMkxvYWRlckNvbXBvbmVudCxcbiAgbm9Sb3dzT3ZlcmxheUNvbXBvbmVudEZyYW1ld29yazogRGF0b0dyaWRWMk5vRGF0YU92ZXJsYXlDb21wb25lbnQsXG4gIGRlZmF1bHRDb2xEZWY6IHtcbiAgICBtaW5XaWR0aDogR3JpZE1pbldpZHRocy5EZWZhdWx0LFxuICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICB0eXBlOiBEYXRvR3JpZENvbHVtblR5cGVzLlN0cmluZyxcbiAgICBtZW51VGFiczogWydmaWx0ZXJNZW51VGFiJ10sXG4gICAgaGVhZGVyQ29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZENvbHVtbkhlYWRlckNvbXBvbmVudFxuICB9LFxuICBzdXBwcmVzc0NlbGxTZWxlY3Rpb246IHRydWUsXG4gIHN1cHByZXNzUHJvcGVydHlOYW1lc0NoZWNrOiB0cnVlLFxuICByb3dIZWlnaHQ6IDM1LFxuICBoZWFkZXJIZWlnaHQ6IDMwLFxuICByb3dTZWxlY3Rpb246IEdyaWRSb3dTZWxlY3Rpb25UeXBlLk1VTFRJUExFLFxuICByb3dEZXNlbGVjdGlvbjogdHJ1ZSxcbiAgdW5Tb3J0SWNvbjogdHJ1ZSxcbiAgYW5pbWF0ZVJvd3M6IHRydWUsXG4gIHJlbWVtYmVyR3JvdXBTdGF0ZVdoZW5OZXdEYXRhOiB0cnVlLFxuICBncm91cE11bHRpQXV0b0NvbHVtbjogdHJ1ZSxcbiAgZ3JvdXBEZWZhdWx0RXhwYW5kZWQ6IC0xLFxuICBwaXZvdEdyaWRTdHlsZTogZmFsc2UsXG4gIC4uLihpc1Rlc3RFbnYoKSA/IHsgc3VwcHJlc3NDb2x1bW5WaXJ0dWFsaXNhdGlvbjogdHJ1ZSwgcm93QnVmZmVyOiA5OTk5OSB9IDoge30pXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9HUklEX1NFQVJDSF9ERUJPVU5DRV9USU1FID0ge1xuICBDTElFTlQ6IDIwMCxcbiAgU0VSVkVSOiAyNTBcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0R3JpZFRyZWVMYWJlbDogRGF0b0dyaWRUcmVlQ29uZmlnID0ge1xuICBpZEtleTogJ2lkJyxcbiAgcGFyZW50SURLZXk6ICdwYXJlbnRJRCdcbn07XG5cbmV4cG9ydCBjb25zdCBncmlkVHJlZUZpbGVQYXRoS2V5ID0gJ2FnR3JpZEZpbGVQYXRoJztcblxuLyoqXG4gKiBDZWxsIHJlbmRlcmVyIGZvciB0cmVlIHN0cnVjdHVyZS5cbiAqL1xuZnVuY3Rpb24gZ2V0R3JpZFRyZWVDZWxsUmVuZGVyZXIoKSB7XG4gIHJldHVybiBpdGVtID0+IHtcbiAgICBjb25zdCB7IGRhdGEsIGVHcmlkQ2VsbCwgY29sRGVmIH0gPSBpdGVtO1xuICAgIGNvbnN0IHsgaWNvbjogaXRlbUljb24sIGlzRm9sZGVyLCBpbml0aWFscyA9IHRydWUgfSA9IGRhdGE7XG4gICAgY29uc3QgaWNvbiA9IGdldFJvd0ljb24oaXRlbUljb24sIGVHcmlkQ2VsbCwgaXNGb2xkZXIpO1xuICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gZGF0YVtjb2xEZWZbJ2ZpZWxkJ11dO1xuICAgIGNvbnN0IGVudGl0eUNsYXNzTmFtZSA9ICdlbnRpdHktZGlzcGxheS1uYW1lJztcbiAgICBjb25zdCB7IHN2Z1JlZ2lzdHJ5IH0gPSBjb2xEZWYuZ3JpZFNlcnZpY2U7XG5cbiAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgIHNldEVtcHR5Rm9sZGVyQ2xhc3MoaXRlbS5ub2RlKTtcbiAgICB9XG5cbiAgICBpZiAoaWNvbikge1xuICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImRhdG8tc2ltcGxlLWJvbGRcIj4gPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gZm9sZGVyIGQtZmxleFwiPiR7c3ZnUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICBpY29uXG4gICAgICApfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7ZW50aXR5Q2xhc3NOYW1lfVwiPjwvc3Bhbj4gJHtkaXNwbGF5TmFtZX08L3NwYW4+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzRm9sZGVyKSB7XG4gICAgICAgIHNldEVtcHR5Rm9sZGVyQ2xhc3MoaXRlbSk7XG4gICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaW5pdGlhbHMpIHtcbiAgICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXRJbml0aWFscyhkaXNwbGF5TmFtZSk7XG4gICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIiR7ZW50aXR5Q2xhc3NOYW1lfSBkYXRvLXNpbXBsZS1ib2xkXCI+PHNwYW4gY2xhc3M9XCJpbml0aWFsc1wiPiR7aW5pdGlhbFZhbHVlfTwvc3Bhbj4ke2Rpc3BsYXlOYW1lfTwvc3Bhbj5gO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9IGRhdG8tc2ltcGxlLWJvbGRcIj4ke2Rpc3BsYXlOYW1lfTwvc3Bhbj5gO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9IGRhdG8tc2ltcGxlLWJvbGRcIj4ke2Rpc3BsYXlOYW1lfTwvc3Bhbj5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHJvdydzIGljb24uXG4gKiBJZiBpY29uIGlzIG9mIHR5cGUgc3RyaW5nLCBSZXR1cm4gaXQuXG4gKiBJZiBpdCBhbiBvYmplY3QsIFJldHVybiBiYXNlZCBvbiB0aGUgZXhwYW5kIC8gY29sbGFwc2Ugc3RhdGUuXG4gKiBAcGFyYW0gaWNvblxuICogQHBhcmFtIGVHcmlkQ2VsbFxuICogQHBhcmFtIGlzRm9sZGVyXG4gKi9cbmZ1bmN0aW9uIGdldFJvd0ljb24oaWNvbjogQWdHcmlkUm93SWNvbiwgZUdyaWRDZWxsOiBhbnksIGlzRm9sZGVyOiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKGljb24gPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGdldEljb25CYXNlZE9uUm93U3RhdGUgPSAoZUdyaWRDZWxsLCB7IGV4cGFuZGVkLCBjb2xsYXBzZWQgfSkgPT4ge1xuICAgIGNvbnN0IGFnR3JpZFJvd0V4cGFuZGVkQ2xhc3MgPSAnYWctcm93LWdyb3VwLWV4cGFuZGVkJztcbiAgICByZXR1cm4gZUdyaWRDZWxsLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGFnR3JpZFJvd0V4cGFuZGVkQ2xhc3MpID8gZXhwYW5kZWQgOiBjb2xsYXBzZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIElmIGljb24gd2Fzbid0IG92ZXJyaWRlIGJ5IHRoZSB1c2VyIGFuZCB0aGUgcm93IGlzIG9mIHR5cGUgZm9sZGVyLFxuICAgKiBTZXQgZGVmYXVsdCBmb2xkZXIgaWNvbnMuXG4gICAqL1xuICBpZiAoaWNvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGlzRm9sZGVyKSB7XG4gICAgICBjb25zdCBkZWZhdWx0Rm9sZGVySWNvbnM6IEFnR3JpZFJvd0ljb24gPSB7XG4gICAgICAgIGV4cGFuZGVkOiAnZm9sZGVyLW9wZW4nLFxuICAgICAgICBjb2xsYXBzZWQ6ICdmb2xkZXItY2xvc2VkJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiBnZXRJY29uQmFzZWRPblJvd1N0YXRlKGVHcmlkQ2VsbCwgZGVmYXVsdEZvbGRlckljb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gdHlwZW9mIGljb24gPT09ICdzdHJpbmcnID8gaWNvbiA6IGdldEljb25CYXNlZE9uUm93U3RhdGUoZUdyaWRDZWxsLCBpY29uKTtcbn1cblxubGV0IHBvdGVudGlhbFBhcmVudCA9IG51bGw7XG5jb25zdCBhZ1Jvd0hvdmVyQ2xhc3NOYW1lID0gJ2FnLXJvdy1ob3Zlcic7XG5cbmxldCB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGdldENlbGxCeVJvd0lEKHJvd0lEOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtyb3ctaWQ9XCIke3Jvd0lEfVwiXSA+IC5hZy1jZWxsYCk7XG59XG5cbi8qKlxuICogTWFyayBwYXJlbnQgZm9sZGVyIG9mIHRoZSBvdmVyTm9kZSBhcyBob3ZlcmVkIGluIG9yZGVyIHRvIGFwcGx5XG4gKiByZWxldmFudCBjc3Mgc3R5bGUgdG8gaXQuXG4gKiBAcGFyYW0gb3Zlck5vZGVcbiAqL1xuZnVuY3Rpb24gb25Sb3dEcmFnTW92ZSh7IG92ZXJOb2RlLCBub2RlIH0pIHtcbiAgbGV0IGZvbGRlclRvRHJvcEludG87XG5cbiAgaWYgKG92ZXJOb2RlKSB7XG4gICAgLy8gZm9sZGVyIHRvIGRyb3AgaW50byBpcyB3aGVyZSB3ZSBhcmUgZ29pbmcgdG8gbW92ZSB0aGUgZmlsZS9mb2xkZXIgdG9cbiAgICBmb2xkZXJUb0Ryb3BJbnRvID0gb3Zlck5vZGUuZGF0YS5pc0ZvbGRlclxuICAgICAgPyAvLyBpZiBvdmVyIGEgZm9sZGVyLCB3ZSB0YWtlIHRoZSBpbW1lZGlhdGUgcm93XG4gICAgICAgIG92ZXJOb2RlXG4gICAgICA6IC8vIGlmIG92ZXIgYSBmaWxlLCB3ZSB0YWtlIHRoZSBwYXJlbnQgcm93ICh3aGljaCB3aWxsIGJlIGEgZm9sZGVyKVxuICAgICAgICBvdmVyTm9kZS5wYXJlbnQ7XG4gIH0gZWxzZSB7XG4gICAgZm9sZGVyVG9Ecm9wSW50byA9IG5vZGUucm93TW9kZWwucm9vdE5vZGU7XG4gIH1cblxuICBpZiAocG90ZW50aWFsUGFyZW50KSB7XG4gICAgaWYgKHBvdGVudGlhbFBhcmVudC5pZCA9PT0gZm9sZGVyVG9Ecm9wSW50by5pZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcmV2aW91c1BvdGVudGlhbFBhcmVudCA9IGdldENlbGxCeVJvd0lEKHBvdGVudGlhbFBhcmVudC5pZCk7XG4gICAgICBwcmV2aW91c1BvdGVudGlhbFBhcmVudCAmJiBwcmV2aW91c1BvdGVudGlhbFBhcmVudC5jbGFzc0xpc3QucmVtb3ZlKGFnUm93SG92ZXJDbGFzc05hbWUpO1xuICAgICAgcG90ZW50aWFsUGFyZW50ID0gbnVsbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcG90ZW50aWFsUGFyZW50ID0gZm9sZGVyVG9Ecm9wSW50bztcbiAgfVxuICBpZiAoZm9sZGVyVG9Ecm9wSW50bykge1xuICAgIGNvbnN0IGZvbGRlcklEOiBzdHJpbmcgPSBmb2xkZXJUb0Ryb3BJbnRvLmlkO1xuICAgIGNvbnN0IGZvbGRlclRvRHJvcEludG9FbGVtZW50ID0gZ2V0Q2VsbEJ5Um93SUQoZm9sZGVySUQpO1xuICAgIGZvbGRlclRvRHJvcEludG9FbGVtZW50ICYmIGZvbGRlclRvRHJvcEludG9FbGVtZW50LmNsYXNzTGlzdC5hZGQoYWdSb3dIb3ZlckNsYXNzTmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb25Sb3dEcmFnRW5kKHsgb3Zlck5vZGUsIG5vZGUgfSkge1xuICBsZXQgbm9kZVBhcmVudDtcbiAgbGV0IGZvbGRlclRvRHJvcEludG87XG4gIGlmIChvdmVyTm9kZSkge1xuICAgIG5vZGVQYXJlbnQgPSBub2RlLnBhcmVudDtcbiAgICAvLyBmb2xkZXIgdG8gZHJvcCBpbnRvIGlzIHdoZXJlIHdlIGFyZSBnb2luZyB0byBtb3ZlIHRoZSBmaWxlL2ZvbGRlciB0b1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBvdmVyTm9kZS5kYXRhLmlzRm9sZGVyXG4gICAgICA/IC8vIGlmIG92ZXIgYSBmb2xkZXIsIHdlIHRha2UgdGhlIGltbWVkaWF0ZSByb3dcbiAgICAgICAgb3Zlck5vZGVcbiAgICAgIDogLy8gaWYgb3ZlciBhIGZpbGUsIHdlIHRha2UgdGhlIHBhcmVudCByb3cgKHdoaWNoIHdpbGwgYmUgYSBmb2xkZXIpXG4gICAgICAgIG92ZXJOb2RlLnBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICBub2RlUGFyZW50ID0gbm9kZS5yb3dNb2RlbC5yb290Tm9kZTtcbiAgICBmb2xkZXJUb0Ryb3BJbnRvID0gbm9kZS5yb3dNb2RlbC5yb290Tm9kZTtcbiAgfVxuXG4gIC8vIHRoZSBkYXRhIHdlIHdhbnQgdG8gbW92ZVxuICBjb25zdCBtb3ZpbmdEYXRhID0gbm9kZS5kYXRhO1xuXG4gIGNvbnN0IHRyZWVNYXhEZXB0aDogbnVtYmVyID0gbm9kZS5ncmlkT3B0aW9uc1dyYXBwZXIuZ3JpZE9wdGlvbnMubWF4RGVwdGggfHwgLTE7XG4gIC8vIERpc2FibGUgbmVzdGVkIGRyYWcgd2hlbiB0cmVlIGRlcHRoIGlzIGFib3ZlIHRoZSBsaW1pdFxuICBpZiAoXG4gICAgbW92aW5nRGF0YS5pc0ZvbGRlciAmJlxuICAgIHRyZWVNYXhEZXB0aCAhPT0gLTEgJiZcbiAgICBub2RlUGFyZW50LmlkICE9PSBST09UX05PREVfSUQgJiZcbiAgICBvdmVyTm9kZS5kYXRhLmFnR3JpZEZpbGVQYXRoLmxlbmd0aCA+IHRyZWVNYXhEZXB0aFxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyB0YWtlIG5ldyBwYXJlbnQgcGF0aCBmcm9tIHBhcmVudCwgaWYgZGF0YSBpcyBtaXNzaW5nLCBtZWFucyBpdCdzIHRoZSByb290IG5vZGUsXG4gIC8vIHdoaWNoIGhhcyBubyBkYXRhLlxuICBjb25zdCBuZXdQYXJlbnRQYXRoID0gZm9sZGVyVG9Ecm9wSW50by5kYXRhID8gZm9sZGVyVG9Ecm9wSW50by5kYXRhW2dyaWRUcmVlRmlsZVBhdGhLZXldIDogW107XG4gIGNvbnN0IG5lZWRUb0NoYW5nZVBhcmVudCA9ICFpc0VxdWFsKG5ld1BhcmVudFBhdGgsIG1vdmluZ0RhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0pO1xuXG4gIC8vIGNoZWNrIHdlIGFyZSBub3QgbW92aW5nIGEgZm9sZGVyIGludG8gYSBjaGlsZCBmb2xkZXJcbiAgY29uc3QgaW52YWxpZE1vZGUgPSBpc1NlbGVjdGlvblBhcmVudE9mVGFyZ2V0KG5vZGUsIGZvbGRlclRvRHJvcEludG8pO1xuICBpZiAoaW52YWxpZE1vZGUpIHtcbiAgICBjb25zb2xlLmxvZygnaW52YWxpZCBtb3ZlJyk7XG4gIH1cblxuICBpZiAobmVlZFRvQ2hhbmdlUGFyZW50ICYmICFpbnZhbGlkTW9kZSkge1xuICAgIGNvbnN0IHVwZGF0ZWRSb3dzID0gW107XG4gICAgY29uc3QgeyBpZEtleSB9OiBEYXRvR3JpZFRyZWVDb25maWcgPSB0aGlzLmF1dG9Hcm91cENvbHVtbkRlZi5ncmlkU2VydmljZS50cmVlQ29uZmlnO1xuICAgIG1vdmVUb1BhdGgobmV3UGFyZW50UGF0aCwgbm9kZSwgdXBkYXRlZFJvd3MsIGlkS2V5KTtcblxuICAgIGNvbnN0IGFmZmVjdGVkUm93cyA9IHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmdyaWRTZXJ2aWNlLnVwZGF0ZVJvd3ModXBkYXRlZFJvd3MpO1xuXG4gICAgc2V0Um93Q2xhc3NlcyhbLi4uYWZmZWN0ZWRSb3dzLnVwZGF0ZSwgb3Zlck5vZGUsIG5vZGVQYXJlbnRdKTtcblxuICAgIC8qKlxuICAgICAqIENsZWFyIHByZXZpb3VzIG1hcmtlZCBwYXJlbnQgZnJvbSBob3ZlciBzdHlsZS5cbiAgICAgKi9cbiAgICBjb25zdCBob3ZlcmVkUGFyZW50RWxlbWVudCA9IGdldENlbGxCeVJvd0lEKHBvdGVudGlhbFBhcmVudC5pZCk7XG4gICAgaG92ZXJlZFBhcmVudEVsZW1lbnQgJiYgaG92ZXJlZFBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhZ1Jvd0hvdmVyQ2xhc3NOYW1lKTtcbiAgICBwb3RlbnRpYWxQYXJlbnQgPSBudWxsO1xuXG4gICAgdGhpcy5hcGkuY2xlYXJGb2N1c2VkQ2VsbCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldFJvd0NsYXNzZXMocm93cykge1xuICBjb25zdCBjbGFzc0xpc3QgPSBbYCR7YWdSb3dMZXZlbFByZWZpeH0xYCwgYCR7YWdSb3dMZXZlbFByZWZpeH0yYCwgYCR7YWdSb3dMZXZlbFByZWZpeH0zYF07XG4gIHJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbcm93LWlkPVwiJHtyb3cuaWR9XCJdYClbMV07XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIGZvciAoY29uc3QgY2xhc3NOYW1lIG9mIGNsYXNzTGlzdCkge1xuICAgICAgICBpZiAobm9kZS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgICAgICAgIG5vZGUuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBub2RlLmNsYXNzTGlzdC5hZGQoYCR7YWdSb3dMZXZlbFByZWZpeH0ke3Jvdy5sZXZlbH1gKTtcblxuICAgICAgaWYgKHJvdy5kYXRhLmlzRm9sZGVyKSB7XG4gICAgICAgIHNldEVtcHR5Rm9sZGVyQ2xhc3Mocm93LCBub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RW1wdHlGb2xkZXJDbGFzcyhyb3csIG5vZGU/KSB7XG4gIGNvbnN0IGN1cnJlbnROb2RlID0gbm9kZSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbcm93LWlkPVwiJHtyb3cuaWR9XCJdYClbMF07XG4gIGlmICghY3VycmVudE5vZGUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHNpemUocm93LmNoaWxkcmVuQWZ0ZXJHcm91cCkgPT09IDApIHtcbiAgICBjdXJyZW50Tm9kZS5jbGFzc0xpc3QuYWRkKGVtcHR5Rm9sZGVyQ2xhc3NOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBjdXJyZW50Tm9kZS5jbGFzc0xpc3QucmVtb3ZlKGVtcHR5Rm9sZGVyQ2xhc3NOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvblJvd1NlbGVjdGVkKHBhcmFtcykge1xuICBpZiAodXBkYXRpbmdDaGVja2JveGVzUHJvZ3JhbW1hdGljYWxseSkge1xuICAgIHJldHVybjtcbiAgfVxuICB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gdHJ1ZTtcblxuICBzZXRDaGlsZHJlblNlbGVjdGlvblN0YXR1cyhwYXJhbXMubm9kZSwgcGFyYW1zLm5vZGUuc2VsZWN0ZWQpO1xuICByZWZyZXNoUGFyZW50c1NlbGVjdGlvblN0YXR1c1JlY3Vyc2l2ZWx5KHBhcmFtcy5ub2RlKTtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gZmFsc2U7XG4gIH0sIDApO1xufVxuXG5mdW5jdGlvbiBzZXRDaGlsZHJlblNlbGVjdGlvblN0YXR1cyhub2RlLCBzZWxlY3RlZCkge1xuICBsZXQgaGFzQ2hpbGRyZW4gPSBub2RlLmFsbENoaWxkcmVuQ291bnQgPiAwO1xuICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICBub2RlLmFsbExlYWZDaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGNoaWxkLnNldFNlbGVjdGVkKHNlbGVjdGVkKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoUGFyZW50c1NlbGVjdGlvblN0YXR1c1JlY3Vyc2l2ZWx5KG5vZGUpIHtcbiAgbGV0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudDtcbiAgd2hpbGUgKHBhcmVudE5vZGUpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5pZCA9PT0gUk9PVF9OT0RFX0lEKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZWZyZXNoU2VsZWN0aW9uU3RhdHVzKHBhcmVudE5vZGUpO1xuICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudDtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoU2VsZWN0aW9uU3RhdHVzKG5vZGUpIHtcbiAgbGV0IGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzID0gbm9kZS5hbGxMZWFmQ2hpbGRyZW4ubWFwKG5vZGUgPT4gbm9kZS5zZWxlY3RlZCk7XG5cbiAgaWYgKGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLmV2ZXJ5KHNlbGVjdGVkVmFsdWUgPT4gc2VsZWN0ZWRWYWx1ZSA9PT0gdHJ1ZSB8fCBzZWxlY3RlZFZhbHVlID09PSB1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLnNoaWZ0KCk7XG5cbiAgbGV0IG5vZGVTZWxlY3Rpb25TdGF0dXMgPSBjaGlsZHJlblNlbGVjdGlvblN0YXR1cy5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIG5vZGUuc2VsZWN0VGhpc05vZGUobm9kZVNlbGVjdGlvblN0YXR1cyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzZWxlY3RlZCBub2RlIGlzIGEgY2hpbGQgb2YgdGhlIHRhcmdldCBwb3NpdGlvbi5cbiAqIEBwYXJhbSBzZWxlY3RlZE5vZGVcbiAqIEBwYXJhbSB0YXJnZXROb2RlXG4gKi9cbmZ1bmN0aW9uIGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQoc2VsZWN0ZWROb2RlLCB0YXJnZXROb2RlKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoaWxkcmVuID0gc2VsZWN0ZWROb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0YXJnZXROb2RlICYmIGNoaWxkcmVuW2ldLmtleSA9PT0gdGFyZ2V0Tm9kZS5rZXkpIHJldHVybiB0cnVlO1xuICAgIGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQoY2hpbGRyZW5baV0sIHRhcmdldE5vZGUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIHRoaXMgdXBkYXRlcyB0aGUgZmlsZVBhdGggbG9jYXRpb25zIGluIG91ciBkYXRhLCB3ZSB1cGRhdGUgdGhlIGRhdGFcbiBiZWZvcmUgd2Ugc2VuZCBpdCB0byBhZy1HcmlkXG4gKi9cbmZ1bmN0aW9uIG1vdmVUb1BhdGgobmV3UGFyZW50UGF0aCwgeyBkYXRhLCBjaGlsZHJlbkFmdGVyR3JvdXAgfSwgYWxsVXBkYXRlZE5vZGVzLCBpZEtleTogc3RyaW5nKSB7XG4gIC8vIGxhc3QgcGFydCBvZiB0aGUgZmlsZSBwYXRoIGlzIHRoZSBmaWxlIG5hbWVcbiAgY29uc3QgbmV3Q2hpbGRQYXRoID0gbmV3UGFyZW50UGF0aC5zbGljZSgpO1xuXG4gIGRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0gPSBuZXdDaGlsZFBhdGg7XG5cbiAgYWxsVXBkYXRlZE5vZGVzLnB1c2goZGF0YSk7XG5cbiAgaWYgKHNpemUoY2hpbGRyZW5BZnRlckdyb3VwKSA+IDApIHtcbiAgICBjaGlsZHJlbkFmdGVyR3JvdXAuZm9yRWFjaChmdW5jdGlvbihjaGlsZE5vZGUpIHtcbiAgICAgIG1vdmVUb1BhdGgoWy4uLm5ld0NoaWxkUGF0aCwgZGF0YVtpZEtleV1dLCBjaGlsZE5vZGUsIGFsbFVwZGF0ZWROb2RlcywgaWRLZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgZGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XS5wdXNoKGRhdGFbaWRLZXldKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRhdGEgaW50byB0cmVlIHNoYXBlZCBzdHJ1Y3R1cmUuXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGdyaWRUcmVlQ29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9UcmVlRGF0YTxUPihkYXRhOiBUW10sIGdyaWRUcmVlQ29uZmlnOiBEYXRvR3JpZFRyZWVDb25maWcpOiBUW10ge1xuICBjb25zdCB7IHBhcmVudElES2V5LCBpZEtleSB9ID0gZ3JpZFRyZWVDb25maWc7XG4gIGNvbnN0IGdlbmVyYXRlRmlsZVBhdGggPSAoaXRlbSwgaW5pdENoaWxkID0gZmFsc2UpOiBJRFtdID0+IHtcbiAgICBjb25zdCBwYXRoOiBJRFtdID0gaW5pdENoaWxkID8gW2l0ZW1baWRLZXldXSA6IFtdO1xuICAgIGNvbnN0IHBhcmVudEVudGl0eSA9IGRhdGEuZmluZChlbnRpdHkgPT4gZW50aXR5W2lkS2V5XSA9PT0gaXRlbVtwYXJlbnRJREtleV0pO1xuICAgIHBhdGgudW5zaGlmdChwYXJlbnRFbnRpdHlbaWRLZXldKTtcblxuICAgIGlmIChwYXJlbnRFbnRpdHlbcGFyZW50SURLZXldKSB7XG4gICAgICBjb25zdCBlbnRpdHlQYXRoID0gZ2VuZXJhdGVGaWxlUGF0aChwYXJlbnRFbnRpdHkpO1xuICAgICAgcGF0aC51bnNoaWZ0KC4uLmVudGl0eVBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoZXJlJ3Mgbm8gcGFyZW50SUQsIFNldCB0aGUgaXRlbSBpbiB0byByb290IG9mIHRoZSB0cmVlLlxuICAgKiBFbHNlLCBSZWN1cnNpdmVseSBjcmVhdGUgdGhlIHBhdGguXG4gICAqL1xuICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiB7XG4gICAgaWYgKGl0ZW1bcGFyZW50SURLZXldKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBbZ3JpZFRyZWVGaWxlUGF0aEtleV06IGdlbmVyYXRlRmlsZVBhdGgoaXRlbSwgdHJ1ZSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIFtncmlkVHJlZUZpbGVQYXRoS2V5XTogW2l0ZW1baWRLZXldXVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdyaWRzIGRhdGEgZnJvbSB0cmVlIHNoYXBlIHRvIG9yaWdpbmFsIHNoYXBlLlxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSBncmlkVHJlZUNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEZyb21UcmVlRGF0YTxUPihkYXRhOiBUW10sIGdyaWRUcmVlQ29uZmlnOiBEYXRvR3JpZFRyZWVDb25maWcpOiBUW10ge1xuICByZXR1cm4gZGF0YS5tYXAoKHsgLi4ucm93IH0pID0+IHtcbiAgICBjb25zdCBwYXRoOiBJRFtdID0gcm93W2dyaWRUcmVlRmlsZVBhdGhLZXldO1xuICAgIGNvbnN0IHBhcmVudElEOiBJRCA9IHNpemUocGF0aCkgPiAxID8gcGF0aFtwYXRoLmxlbmd0aCAtIDJdIDogMDtcbiAgICBkZWxldGUgcm93W2dyaWRUcmVlRmlsZVBhdGhLZXldO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yb3csXG4gICAgICBbZ3JpZFRyZWVDb25maWcucGFyZW50SURLZXldOiBwYXJlbnRJRFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggZXhwYW5kZWQgLyBjb2xsYXBzZWQgcm93IGZvciB0aGUgZ3JpZCB0byBkZXRlY3RcbiAqIHRoZSBjaGFuZ2UuXG4gKiBAcGFyYW0gbm9kZVxuICovXG5mdW5jdGlvbiByb3dHcm91cE9wZW5lZCh7IG5vZGUgfSkge1xuICB0aGlzLmFwaS5yZWZyZXNoQ2VsbHMoeyBmb3JjZTogdHJ1ZSwgcm93Tm9kZXM6IFtub2RlXSB9KTtcbn1cbiJdfQ==
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFFTCxtQkFBbUIsRUFHbkIsYUFBYSxFQUNiLG9CQUFvQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUlqRCxNQUFNLGdCQUFnQixHQUFXLGVBQWUsQ0FBQztBQUNqRCxNQUFNLG9CQUFvQixHQUFXLGlCQUFpQixDQUFDO0FBRXZELFNBQVMsT0FBTyxDQUFDLEdBQWM7SUFDN0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztXQUc1QixJQUFJLENBQUMsRUFB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QUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUksSUFBUyxFQUFFLGNBQWtDO0lBQ2xGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQVUsRUFBRSxFQUFFO1lBQVosb0JBQU07UUFDdkIsTUFBTSxJQUFJLEdBQVMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hDLHVDQUNLLEdBQUcsS0FDTixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLElBQ3RDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFO0lBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5pbXBvcnQgeyBEYXRvR3JpZFYyTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1sb2FkZXIvZ3JpZC12Mi1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFnR3JpZFJvd0ljb24sXG4gIERhdG9HcmlkQ29sdW1uVHlwZXMsXG4gIERhdG9HcmlkT3B0aW9ucyxcbiAgRGF0b0dyaWRUcmVlQ29uZmlnLFxuICBHcmlkTWluV2lkdGhzLFxuICBHcmlkUm93U2VsZWN0aW9uVHlwZVxufSBmcm9tICcuL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRWMk5vRGF0YU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0b0dyaWRGaWx0ZXJUeXBlcyB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQ29sdW1uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb2x1bW4taGVhZGVyL2dyaWQtY29sdW1uLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNUZXN0RW52IH0gZnJvbSAnLi4vLi4vaXN0ZXN0LWVudic7XG5pbXBvcnQgeyBJRCB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBnZXRJbml0aWFscyB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5cbnR5cGUgRGF0ZVR5cGVzID0gbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZTtcblxuY29uc3QgYWdSb3dMZXZlbFByZWZpeDogc3RyaW5nID0gJ2FnLXJvdy1sZXZlbC0nO1xuY29uc3QgZW1wdHlGb2xkZXJDbGFzc05hbWU6IHN0cmluZyA9ICdhZy1lbXB0eS1mb2xkZXInO1xuXG5mdW5jdGlvbiBnZXRUaW1lKHZhbDogRGF0ZVR5cGVzKSB7XG4gIGxldCB0aW1lID0gbmV3IERhdGUodmFsIHx8IG51bGwpLmdldFRpbWUoKTtcbiAgcmV0dXJuIGlzTmFOKHRpbWUpID8gMCA6IHRpbWU7XG59XG5cbmV4cG9ydCBjb25zdCBST09UX05PREVfSUQgPSAnUk9PVF9OT0RFX0lEJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUcmVlT3B0aW9uczogUGFydGlhbDxEYXRvR3JpZE9wdGlvbnM+ID0ge1xuICBnZXREYXRhUGF0aDogaXRlbSA9PiBpdGVtW2dyaWRUcmVlRmlsZVBhdGhLZXldLFxuICBjb21wb25lbnRzOiB7XG4gICAgZmlsZUNlbGxSZW5kZXJlcjogZ2V0R3JpZFRyZWVDZWxsUmVuZGVyZXIoKVxuICB9LFxuICBvblJvd0RyYWdNb3ZlOiBvblJvd0RyYWdNb3ZlLFxuICBvblJvd0RyYWdFbmQ6IG9uUm93RHJhZ0VuZCxcbiAgb25Sb3dTZWxlY3RlZDogb25Sb3dTZWxlY3RlZCxcbiAgb25Sb3dHcm91cE9wZW5lZDogcm93R3JvdXBPcGVuZWQsXG4gIHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246IHRydWUsXG4gIGdyb3VwU2VsZWN0c0NoaWxkcmVuOiB0cnVlLFxuICBpY29uczoge1xuICAgIHJvd0RyYWc6ICc8ZGF0by1pY29uIGljb249XCJkcmFnXCIgY2xhc3M9XCJkYXRvLWljb24tZm9udC1kcmFnIHByaW1hcnktNDAwLWNvbG9yXCI+PC9kYXRvLWljb24+J1xuICB9XG59O1xuXG5jb25zdCBzdHJpbmdDb2xEZWYgPSB7XG4gIGZpbHRlcjogRGF0b0dyaWRGaWx0ZXJUeXBlcy5TdHJpbmcsXG4gIGNvbXBhcmF0b3I6IChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4gKGEgfHwgJycpLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZSgoYiB8fCAnJykudG9Mb3dlckNhc2UoKSlcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0R3JpZE9wdGlvbnM6IFBhcnRpYWw8RGF0b0dyaWRPcHRpb25zPiA9IHtcbiAgLy8gQ29yZVxuICBob3ZlckNvbmZpZzogeyBlbmFibGVkOiB0cnVlLCBtYXhEaXNwbGF5ZWRJdGVtczogMyB9LFxuICBlbmFibGVWMl8xOiBmYWxzZSxcbiAgZW5hYmxlU2VhcmNoOiBmYWxzZSxcbiAgZW5hYmxlU2VhcmNoSGlnaGxpZ2h0OiB0cnVlLFxuICBjb2x1bW5zSW5jbHVkZWRJblNlYXJjaEJ5RGVmYXVsdDogdHJ1ZSxcbiAgaW5jbHVkZUhpZGRlbkNvbHVtbnNJblNlYXJjaDogZmFsc2UsXG4gIGVuYWJsZUFsbFBhZ2VzU2VsZWN0aW9uOiB0cnVlLFxuICBpZENvbHVtbktleTogJ2lkJyxcbiAgZW5hYmxlQmFja2dyb3VuZDogdHJ1ZSxcbiAgLy8gQWcgZ3JpZFxuICBjb2x1bW5UeXBlczoge1xuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkRhdGVdOiB7XG4gICAgICBmaWx0ZXI6IERhdG9HcmlkRmlsdGVyVHlwZXMuRGF0ZSxcbiAgICAgIGNvbXBhcmF0b3I6IChhOiBEYXRlVHlwZXMsIGI6IERhdGVUeXBlcykgPT4gZ2V0VGltZShhKSAtIGdldFRpbWUoYilcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLk51bWJlcl06IHtcbiAgICAgIGZpbHRlcjogRGF0b0dyaWRGaWx0ZXJUeXBlcy5OdW1iZXJcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLlN0cmluZ106IHN0cmluZ0NvbERlZixcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5TdGF0dXNdOiB7XG4gICAgICAuLi5zdHJpbmdDb2xEZWYsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdEYXRvR3JpZFN0YXR1c0NlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5JdGVtc106IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSXRlbXNDZWxsQ29tcG9uZW50J1xuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuSXRlbXNDb3VudF06IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSXRlbXNDb3VudENlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5Jbml0aWFsc106IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSW5pdGlhbHNDZWxsQ29tcG9uZW50J1xuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuQXZhdGFyXToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRBdmF0YXJDZWxsQ29tcG9uZW50J1xuICAgIH1cbiAgfSxcbiAgbXVsdGlTb3J0S2V5OiAnY3RybCcsXG4gIHN1cHByZXNzUGFnaW5hdGlvblBhbmVsOiB0cnVlLFxuICBwYWdpbmF0aW9uOiB0cnVlLFxuICBkZWx0YUNvbHVtbk1vZGU6IHRydWUsXG4gIGxvYWRpbmdPdmVybGF5Q29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZFYyTG9hZGVyQ29tcG9uZW50LFxuICBub1Jvd3NPdmVybGF5Q29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZFYyTm9EYXRhT3ZlcmxheUNvbXBvbmVudCxcbiAgZGVmYXVsdENvbERlZjoge1xuICAgIG1pbldpZHRoOiBHcmlkTWluV2lkdGhzLkRlZmF1bHQsXG4gICAgc29ydGFibGU6IHRydWUsXG4gICAgcmVzaXphYmxlOiB0cnVlLFxuICAgIHR5cGU6IERhdG9HcmlkQ29sdW1uVHlwZXMuU3RyaW5nLFxuICAgIG1lbnVUYWJzOiBbJ2ZpbHRlck1lbnVUYWInXSxcbiAgICBoZWFkZXJDb21wb25lbnRGcmFtZXdvcms6IERhdG9HcmlkQ29sdW1uSGVhZGVyQ29tcG9uZW50XG4gIH0sXG4gIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgc3VwcHJlc3NQcm9wZXJ0eU5hbWVzQ2hlY2s6IHRydWUsXG4gIHJvd0hlaWdodDogMzUsXG4gIGhlYWRlckhlaWdodDogMzAsXG4gIHJvd1NlbGVjdGlvbjogR3JpZFJvd1NlbGVjdGlvblR5cGUuTVVMVElQTEUsXG4gIHJvd0Rlc2VsZWN0aW9uOiB0cnVlLFxuICB1blNvcnRJY29uOiB0cnVlLFxuICBhbmltYXRlUm93czogdHJ1ZSxcbiAgcmVtZW1iZXJHcm91cFN0YXRlV2hlbk5ld0RhdGE6IHRydWUsXG4gIGdyb3VwTXVsdGlBdXRvQ29sdW1uOiB0cnVlLFxuICBncm91cERlZmF1bHRFeHBhbmRlZDogLTEsXG4gIHVzZVBpdm90R3JpZFN0eWxlOiBmYWxzZSxcbiAgLi4uKGlzVGVzdEVudigpID8geyBzdXBwcmVzc0NvbHVtblZpcnR1YWxpc2F0aW9uOiB0cnVlLCByb3dCdWZmZXI6IDk5OTk5IH0gOiB7fSlcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0dSSURfU0VBUkNIX0RFQk9VTkNFX1RJTUUgPSB7XG4gIENMSUVOVDogMjAwLFxuICBTRVJWRVI6IDI1MFxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRHcmlkVHJlZUxhYmVsOiBEYXRvR3JpZFRyZWVDb25maWcgPSB7XG4gIGlkS2V5OiAnaWQnLFxuICBwYXJlbnRJREtleTogJ3BhcmVudElEJ1xufTtcblxuZXhwb3J0IGNvbnN0IGdyaWRUcmVlRmlsZVBhdGhLZXkgPSAnYWdHcmlkRmlsZVBhdGgnO1xuXG4vKipcbiAqIENlbGwgcmVuZGVyZXIgZm9yIHRyZWUgc3RydWN0dXJlLlxuICovXG5mdW5jdGlvbiBnZXRHcmlkVHJlZUNlbGxSZW5kZXJlcigpIHtcbiAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgZUdyaWRDZWxsLCBjb2xEZWYgfSA9IGl0ZW07XG4gICAgY29uc3QgeyBpY29uOiBpdGVtSWNvbiwgaXNGb2xkZXIsIGluaXRpYWxzID0gdHJ1ZSB9ID0gZGF0YTtcbiAgICBjb25zdCBpY29uID0gZ2V0Um93SWNvbihpdGVtSWNvbiwgZUdyaWRDZWxsLCBpc0ZvbGRlcik7XG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSBkYXRhW2NvbERlZlsnZmllbGQnXV07XG4gICAgY29uc3QgZW50aXR5Q2xhc3NOYW1lID0gJ2VudGl0eS1kaXNwbGF5LW5hbWUnO1xuICAgIGNvbnN0IHsgc3ZnUmVnaXN0cnkgfSA9IGNvbERlZi5ncmlkU2VydmljZTtcblxuICAgIGlmIChpc0ZvbGRlcikge1xuICAgICAgc2V0RW1wdHlGb2xkZXJDbGFzcyhpdGVtLm5vZGUpO1xuICAgIH1cblxuICAgIGlmIChpY29uKSB7XG4gICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiZGF0by1zaW1wbGUtYm9sZFwiPiA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBmb2xkZXIgZC1mbGV4XCI+JHtzdmdSZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgIGljb25cbiAgICAgICl9PC9zcGFuPjxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9XCI+PC9zcGFuPiAke2Rpc3BsYXlOYW1lfTwvc3Bhbj5gO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgICAgc2V0RW1wdHlGb2xkZXJDbGFzcyhpdGVtKTtcbiAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIiR7ZW50aXR5Q2xhc3NOYW1lfSBkYXRvLXNpbXBsZS1ib2xkXCI+JHtkaXNwbGF5TmFtZX08L3NwYW4+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpbml0aWFscykge1xuICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEluaXRpYWxzKGRpc3BsYXlOYW1lKTtcbiAgICAgICAgICBpZiAoaW5pdGlhbFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9IGRhdG8tc2ltcGxlLWJvbGRcIj48c3BhbiBjbGFzcz1cImluaXRpYWxzXCI+JHtpbml0aWFsVmFsdWV9PC9zcGFuPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcm93J3MgaWNvbi5cbiAqIElmIGljb24gaXMgb2YgdHlwZSBzdHJpbmcsIFJldHVybiBpdC5cbiAqIElmIGl0IGFuIG9iamVjdCwgUmV0dXJuIGJhc2VkIG9uIHRoZSBleHBhbmQgLyBjb2xsYXBzZSBzdGF0ZS5cbiAqIEBwYXJhbSBpY29uXG4gKiBAcGFyYW0gZUdyaWRDZWxsXG4gKiBAcGFyYW0gaXNGb2xkZXJcbiAqL1xuZnVuY3Rpb24gZ2V0Um93SWNvbihpY29uOiBBZ0dyaWRSb3dJY29uLCBlR3JpZENlbGw6IGFueSwgaXNGb2xkZXI6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoaWNvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZSA9IChlR3JpZENlbGwsIHsgZXhwYW5kZWQsIGNvbGxhcHNlZCB9KSA9PiB7XG4gICAgY29uc3QgYWdHcmlkUm93RXhwYW5kZWRDbGFzcyA9ICdhZy1yb3ctZ3JvdXAtZXhwYW5kZWQnO1xuICAgIHJldHVybiBlR3JpZENlbGwucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoYWdHcmlkUm93RXhwYW5kZWRDbGFzcykgPyBleHBhbmRlZCA6IGNvbGxhcHNlZDtcbiAgfTtcblxuICAvKipcbiAgICogSWYgaWNvbiB3YXNuJ3Qgb3ZlcnJpZGUgYnkgdGhlIHVzZXIgYW5kIHRoZSByb3cgaXMgb2YgdHlwZSBmb2xkZXIsXG4gICAqIFNldCBkZWZhdWx0IGZvbGRlciBpY29ucy5cbiAgICovXG4gIGlmIChpY29uID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRGb2xkZXJJY29uczogQWdHcmlkUm93SWNvbiA9IHtcbiAgICAgICAgZXhwYW5kZWQ6ICdmb2xkZXItb3BlbicsXG4gICAgICAgIGNvbGxhcHNlZDogJ2ZvbGRlci1jbG9zZWQnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGdldEljb25CYXNlZE9uUm93U3RhdGUoZUdyaWRDZWxsLCBkZWZhdWx0Rm9sZGVySWNvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2YgaWNvbiA9PT0gJ3N0cmluZycgPyBpY29uIDogZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZShlR3JpZENlbGwsIGljb24pO1xufVxuXG5sZXQgcG90ZW50aWFsUGFyZW50ID0gbnVsbDtcbmNvbnN0IGFnUm93SG92ZXJDbGFzc05hbWUgPSAnYWctcm93LWhvdmVyJztcblxubGV0IHVwZGF0aW5nQ2hlY2tib3hlc1Byb2dyYW1tYXRpY2FsbHkgPSBmYWxzZTtcblxuZnVuY3Rpb24gZ2V0Q2VsbEJ5Um93SUQocm93SUQ6IHN0cmluZykge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW3Jvdy1pZD1cIiR7cm93SUR9XCJdID4gLmFnLWNlbGxgKTtcbn1cblxuLyoqXG4gKiBNYXJrIHBhcmVudCBmb2xkZXIgb2YgdGhlIG92ZXJOb2RlIGFzIGhvdmVyZWQgaW4gb3JkZXIgdG8gYXBwbHlcbiAqIHJlbGV2YW50IGNzcyBzdHlsZSB0byBpdC5cbiAqIEBwYXJhbSBvdmVyTm9kZVxuICovXG5mdW5jdGlvbiBvblJvd0RyYWdNb3ZlKHsgb3Zlck5vZGUsIG5vZGUgfSkge1xuICBsZXQgZm9sZGVyVG9Ecm9wSW50bztcblxuICBpZiAob3Zlck5vZGUpIHtcbiAgICAvLyBmb2xkZXIgdG8gZHJvcCBpbnRvIGlzIHdoZXJlIHdlIGFyZSBnb2luZyB0byBtb3ZlIHRoZSBmaWxlL2ZvbGRlciB0b1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBvdmVyTm9kZS5kYXRhLmlzRm9sZGVyXG4gICAgICA/IC8vIGlmIG92ZXIgYSBmb2xkZXIsIHdlIHRha2UgdGhlIGltbWVkaWF0ZSByb3dcbiAgICAgICAgb3Zlck5vZGVcbiAgICAgIDogLy8gaWYgb3ZlciBhIGZpbGUsIHdlIHRha2UgdGhlIHBhcmVudCByb3cgKHdoaWNoIHdpbGwgYmUgYSBmb2xkZXIpXG4gICAgICAgIG92ZXJOb2RlLnBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICBmb2xkZXJUb0Ryb3BJbnRvID0gbm9kZS5yb3dNb2RlbC5yb290Tm9kZTtcbiAgfVxuXG4gIGlmIChwb3RlbnRpYWxQYXJlbnQpIHtcbiAgICBpZiAocG90ZW50aWFsUGFyZW50LmlkID09PSBmb2xkZXJUb0Ryb3BJbnRvLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzUG90ZW50aWFsUGFyZW50ID0gZ2V0Q2VsbEJ5Um93SUQocG90ZW50aWFsUGFyZW50LmlkKTtcbiAgICAgIHByZXZpb3VzUG90ZW50aWFsUGFyZW50ICYmIHByZXZpb3VzUG90ZW50aWFsUGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoYWdSb3dIb3ZlckNsYXNzTmFtZSk7XG4gICAgICBwb3RlbnRpYWxQYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwb3RlbnRpYWxQYXJlbnQgPSBmb2xkZXJUb0Ryb3BJbnRvO1xuICB9XG4gIGlmIChmb2xkZXJUb0Ryb3BJbnRvKSB7XG4gICAgY29uc3QgZm9sZGVySUQ6IHN0cmluZyA9IGZvbGRlclRvRHJvcEludG8uaWQ7XG4gICAgY29uc3QgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQgPSBnZXRDZWxsQnlSb3dJRChmb2xkZXJJRCk7XG4gICAgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQgJiYgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQuY2xhc3NMaXN0LmFkZChhZ1Jvd0hvdmVyQ2xhc3NOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvblJvd0RyYWdFbmQoeyBvdmVyTm9kZSwgbm9kZSB9KSB7XG4gIGxldCBub2RlUGFyZW50O1xuICBsZXQgZm9sZGVyVG9Ecm9wSW50bztcbiAgaWYgKG92ZXJOb2RlKSB7XG4gICAgbm9kZVBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgIC8vIGZvbGRlciB0byBkcm9wIGludG8gaXMgd2hlcmUgd2UgYXJlIGdvaW5nIHRvIG1vdmUgdGhlIGZpbGUvZm9sZGVyIHRvXG4gICAgZm9sZGVyVG9Ecm9wSW50byA9IG92ZXJOb2RlLmRhdGEuaXNGb2xkZXJcbiAgICAgID8gLy8gaWYgb3ZlciBhIGZvbGRlciwgd2UgdGFrZSB0aGUgaW1tZWRpYXRlIHJvd1xuICAgICAgICBvdmVyTm9kZVxuICAgICAgOiAvLyBpZiBvdmVyIGEgZmlsZSwgd2UgdGFrZSB0aGUgcGFyZW50IHJvdyAod2hpY2ggd2lsbCBiZSBhIGZvbGRlcilcbiAgICAgICAgb3Zlck5vZGUucGFyZW50O1xuICB9IGVsc2Uge1xuICAgIG5vZGVQYXJlbnQgPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICB9XG5cbiAgLy8gdGhlIGRhdGEgd2Ugd2FudCB0byBtb3ZlXG4gIGNvbnN0IG1vdmluZ0RhdGEgPSBub2RlLmRhdGE7XG5cbiAgY29uc3QgdHJlZU1heERlcHRoOiBudW1iZXIgPSBub2RlLmdyaWRPcHRpb25zV3JhcHBlci5ncmlkT3B0aW9ucy5tYXhEZXB0aCB8fCAtMTtcbiAgLy8gRGlzYWJsZSBuZXN0ZWQgZHJhZyB3aGVuIHRyZWUgZGVwdGggaXMgYWJvdmUgdGhlIGxpbWl0XG4gIGlmIChcbiAgICBtb3ZpbmdEYXRhLmlzRm9sZGVyICYmXG4gICAgdHJlZU1heERlcHRoICE9PSAtMSAmJlxuICAgIG5vZGVQYXJlbnQuaWQgIT09IFJPT1RfTk9ERV9JRCAmJlxuICAgIG92ZXJOb2RlLmRhdGEuYWdHcmlkRmlsZVBhdGgubGVuZ3RoID4gdHJlZU1heERlcHRoXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHRha2UgbmV3IHBhcmVudCBwYXRoIGZyb20gcGFyZW50LCBpZiBkYXRhIGlzIG1pc3NpbmcsIG1lYW5zIGl0J3MgdGhlIHJvb3Qgbm9kZSxcbiAgLy8gd2hpY2ggaGFzIG5vIGRhdGEuXG4gIGNvbnN0IG5ld1BhcmVudFBhdGggPSBmb2xkZXJUb0Ryb3BJbnRvLmRhdGEgPyBmb2xkZXJUb0Ryb3BJbnRvLmRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0gOiBbXTtcbiAgY29uc3QgbmVlZFRvQ2hhbmdlUGFyZW50ID0gIWlzRXF1YWwobmV3UGFyZW50UGF0aCwgbW92aW5nRGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XSk7XG5cbiAgLy8gY2hlY2sgd2UgYXJlIG5vdCBtb3ZpbmcgYSBmb2xkZXIgaW50byBhIGNoaWxkIGZvbGRlclxuICBjb25zdCBpbnZhbGlkTW9kZSA9IGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQobm9kZSwgZm9sZGVyVG9Ecm9wSW50byk7XG4gIGlmIChpbnZhbGlkTW9kZSkge1xuICAgIGNvbnNvbGUubG9nKCdpbnZhbGlkIG1vdmUnKTtcbiAgfVxuXG4gIGlmIChuZWVkVG9DaGFuZ2VQYXJlbnQgJiYgIWludmFsaWRNb2RlKSB7XG4gICAgY29uc3QgdXBkYXRlZFJvd3MgPSBbXTtcbiAgICBjb25zdCB7IGlkS2V5IH06IERhdG9HcmlkVHJlZUNvbmZpZyA9IHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmdyaWRTZXJ2aWNlLnRyZWVDb25maWc7XG4gICAgbW92ZVRvUGF0aChuZXdQYXJlbnRQYXRoLCBub2RlLCB1cGRhdGVkUm93cywgaWRLZXkpO1xuXG4gICAgY29uc3QgYWZmZWN0ZWRSb3dzID0gdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZ3JpZFNlcnZpY2UudXBkYXRlUm93cyh1cGRhdGVkUm93cyk7XG5cbiAgICBzZXRSb3dDbGFzc2VzKFsuLi5hZmZlY3RlZFJvd3MudXBkYXRlLCBvdmVyTm9kZSwgbm9kZVBhcmVudF0pO1xuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgcHJldmlvdXMgbWFya2VkIHBhcmVudCBmcm9tIGhvdmVyIHN0eWxlLlxuICAgICAqL1xuICAgIGNvbnN0IGhvdmVyZWRQYXJlbnRFbGVtZW50ID0gZ2V0Q2VsbEJ5Um93SUQocG90ZW50aWFsUGFyZW50LmlkKTtcbiAgICBob3ZlcmVkUGFyZW50RWxlbWVudCAmJiBob3ZlcmVkUGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGFnUm93SG92ZXJDbGFzc05hbWUpO1xuICAgIHBvdGVudGlhbFBhcmVudCA9IG51bGw7XG5cbiAgICB0aGlzLmFwaS5jbGVhckZvY3VzZWRDZWxsKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0Um93Q2xhc3Nlcyhyb3dzKSB7XG4gIGNvbnN0IGNsYXNzTGlzdCA9IFtgJHthZ1Jvd0xldmVsUHJlZml4fTFgLCBgJHthZ1Jvd0xldmVsUHJlZml4fTJgLCBgJHthZ1Jvd0xldmVsUHJlZml4fTNgXTtcbiAgcm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtyb3ctaWQ9XCIke3Jvdy5pZH1cIl1gKVsxXTtcbiAgICBpZiAobm9kZSkge1xuICAgICAgZm9yIChjb25zdCBjbGFzc05hbWUgb2YgY2xhc3NMaXN0KSB7XG4gICAgICAgIGlmIChub2RlLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgICAgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vZGUuY2xhc3NMaXN0LmFkZChgJHthZ1Jvd0xldmVsUHJlZml4fSR7cm93LmxldmVsfWApO1xuXG4gICAgICBpZiAocm93LmRhdGEuaXNGb2xkZXIpIHtcbiAgICAgICAgc2V0RW1wdHlGb2xkZXJDbGFzcyhyb3csIG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFbXB0eUZvbGRlckNsYXNzKHJvdywgbm9kZT8pIHtcbiAgY29uc3QgY3VycmVudE5vZGUgPSBub2RlIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtyb3ctaWQ9XCIke3Jvdy5pZH1cIl1gKVswXTtcbiAgaWYgKCFjdXJyZW50Tm9kZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoc2l6ZShyb3cuY2hpbGRyZW5BZnRlckdyb3VwKSA9PT0gMCkge1xuICAgIGN1cnJlbnROb2RlLmNsYXNzTGlzdC5hZGQoZW1wdHlGb2xkZXJDbGFzc05hbWUpO1xuICB9IGVsc2Uge1xuICAgIGN1cnJlbnROb2RlLmNsYXNzTGlzdC5yZW1vdmUoZW1wdHlGb2xkZXJDbGFzc05hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uUm93U2VsZWN0ZWQocGFyYW1zKSB7XG4gIGlmICh1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHVwZGF0aW5nQ2hlY2tib3hlc1Byb2dyYW1tYXRpY2FsbHkgPSB0cnVlO1xuXG4gIHNldENoaWxkcmVuU2VsZWN0aW9uU3RhdHVzKHBhcmFtcy5ub2RlLCBwYXJhbXMubm9kZS5zZWxlY3RlZCk7XG4gIHJlZnJlc2hQYXJlbnRzU2VsZWN0aW9uU3RhdHVzUmVjdXJzaXZlbHkocGFyYW1zLm5vZGUpO1xuXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHVwZGF0aW5nQ2hlY2tib3hlc1Byb2dyYW1tYXRpY2FsbHkgPSBmYWxzZTtcbiAgfSwgMCk7XG59XG5cbmZ1bmN0aW9uIHNldENoaWxkcmVuU2VsZWN0aW9uU3RhdHVzKG5vZGUsIHNlbGVjdGVkKSB7XG4gIGxldCBoYXNDaGlsZHJlbiA9IG5vZGUuYWxsQ2hpbGRyZW5Db3VudCA+IDA7XG4gIGlmIChoYXNDaGlsZHJlbikge1xuICAgIG5vZGUuYWxsTGVhZkNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgY2hpbGQuc2V0U2VsZWN0ZWQoc2VsZWN0ZWQpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlZnJlc2hQYXJlbnRzU2VsZWN0aW9uU3RhdHVzUmVjdXJzaXZlbHkobm9kZSkge1xuICBsZXQgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50O1xuICB3aGlsZSAocGFyZW50Tm9kZSkge1xuICAgIGlmIChwYXJlbnROb2RlLmlkID09PSBST09UX05PREVfSUQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJlZnJlc2hTZWxlY3Rpb25TdGF0dXMocGFyZW50Tm9kZSk7XG4gICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlZnJlc2hTZWxlY3Rpb25TdGF0dXMobm9kZSkge1xuICBsZXQgY2hpbGRyZW5TZWxlY3Rpb25TdGF0dXMgPSBub2RlLmFsbExlYWZDaGlsZHJlbi5tYXAobm9kZSA9PiBub2RlLnNlbGVjdGVkKTtcblxuICBpZiAoY2hpbGRyZW5TZWxlY3Rpb25TdGF0dXMuZXZlcnkoc2VsZWN0ZWRWYWx1ZSA9PiBzZWxlY3RlZFZhbHVlID09PSB0cnVlIHx8IHNlbGVjdGVkVmFsdWUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY2hpbGRyZW5TZWxlY3Rpb25TdGF0dXMuc2hpZnQoKTtcblxuICBsZXQgbm9kZVNlbGVjdGlvblN0YXR1cyA9IGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLnJlZHVjZSgoYSwgYikgPT4ge1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSk7XG5cbiAgbm9kZS5zZWxlY3RUaGlzTm9kZShub2RlU2VsZWN0aW9uU3RhdHVzKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHNlbGVjdGVkIG5vZGUgaXMgYSBjaGlsZCBvZiB0aGUgdGFyZ2V0IHBvc2l0aW9uLlxuICogQHBhcmFtIHNlbGVjdGVkTm9kZVxuICogQHBhcmFtIHRhcmdldE5vZGVcbiAqL1xuZnVuY3Rpb24gaXNTZWxlY3Rpb25QYXJlbnRPZlRhcmdldChzZWxlY3RlZE5vZGUsIHRhcmdldE5vZGUpOiBib29sZWFuIHtcbiAgY29uc3QgY2hpbGRyZW4gPSBzZWxlY3RlZE5vZGUuY2hpbGRyZW5BZnRlckdyb3VwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRhcmdldE5vZGUgJiYgY2hpbGRyZW5baV0ua2V5ID09PSB0YXJnZXROb2RlLmtleSkgcmV0dXJuIHRydWU7XG4gICAgaXNTZWxlY3Rpb25QYXJlbnRPZlRhcmdldChjaGlsZHJlbltpXSwgdGFyZ2V0Tm9kZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKiogdGhpcyB1cGRhdGVzIHRoZSBmaWxlUGF0aCBsb2NhdGlvbnMgaW4gb3VyIGRhdGEsIHdlIHVwZGF0ZSB0aGUgZGF0YVxuIGJlZm9yZSB3ZSBzZW5kIGl0IHRvIGFnLUdyaWRcbiAqL1xuZnVuY3Rpb24gbW92ZVRvUGF0aChuZXdQYXJlbnRQYXRoLCB7IGRhdGEsIGNoaWxkcmVuQWZ0ZXJHcm91cCB9LCBhbGxVcGRhdGVkTm9kZXMsIGlkS2V5OiBzdHJpbmcpIHtcbiAgLy8gbGFzdCBwYXJ0IG9mIHRoZSBmaWxlIHBhdGggaXMgdGhlIGZpbGUgbmFtZVxuICBjb25zdCBuZXdDaGlsZFBhdGggPSBuZXdQYXJlbnRQYXRoLnNsaWNlKCk7XG5cbiAgZGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XSA9IG5ld0NoaWxkUGF0aDtcblxuICBhbGxVcGRhdGVkTm9kZXMucHVzaChkYXRhKTtcblxuICBpZiAoc2l6ZShjaGlsZHJlbkFmdGVyR3JvdXApID4gMCkge1xuICAgIGNoaWxkcmVuQWZ0ZXJHcm91cC5mb3JFYWNoKGZ1bmN0aW9uKGNoaWxkTm9kZSkge1xuICAgICAgbW92ZVRvUGF0aChbLi4ubmV3Q2hpbGRQYXRoLCBkYXRhW2lkS2V5XV0sIGNoaWxkTm9kZSwgYWxsVXBkYXRlZE5vZGVzLCBpZEtleSk7XG4gICAgfSk7XG4gIH1cblxuICBkYXRhW2dyaWRUcmVlRmlsZVBhdGhLZXldLnB1c2goZGF0YVtpZEtleV0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgZGF0YSBpbnRvIHRyZWUgc2hhcGVkIHN0cnVjdHVyZS5cbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gZ3JpZFRyZWVDb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1RyZWVEYXRhPFQ+KGRhdGE6IFRbXSwgZ3JpZFRyZWVDb25maWc6IERhdG9HcmlkVHJlZUNvbmZpZyk6IFRbXSB7XG4gIGNvbnN0IHsgcGFyZW50SURLZXksIGlkS2V5IH0gPSBncmlkVHJlZUNvbmZpZztcbiAgY29uc3QgZ2VuZXJhdGVGaWxlUGF0aCA9IChpdGVtLCBpbml0Q2hpbGQgPSBmYWxzZSk6IElEW10gPT4ge1xuICAgIGNvbnN0IHBhdGg6IElEW10gPSBpbml0Q2hpbGQgPyBbaXRlbVtpZEtleV1dIDogW107XG4gICAgY29uc3QgcGFyZW50RW50aXR5ID0gZGF0YS5maW5kKGVudGl0eSA9PiBlbnRpdHlbaWRLZXldID09PSBpdGVtW3BhcmVudElES2V5XSk7XG4gICAgcGF0aC51bnNoaWZ0KHBhcmVudEVudGl0eVtpZEtleV0pO1xuXG4gICAgaWYgKHBhcmVudEVudGl0eVtwYXJlbnRJREtleV0pIHtcbiAgICAgIGNvbnN0IGVudGl0eVBhdGggPSBnZW5lcmF0ZUZpbGVQYXRoKHBhcmVudEVudGl0eSk7XG4gICAgICBwYXRoLnVuc2hpZnQoLi4uZW50aXR5UGF0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGg7XG4gIH07XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlcmUncyBubyBwYXJlbnRJRCwgU2V0IHRoZSBpdGVtIGluIHRvIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAqIEVsc2UsIFJlY3Vyc2l2ZWx5IGNyZWF0ZSB0aGUgcGF0aC5cbiAgICovXG4gIHJldHVybiBkYXRhLm1hcChpdGVtID0+IHtcbiAgICBpZiAoaXRlbVtwYXJlbnRJREtleV0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIFtncmlkVHJlZUZpbGVQYXRoS2V5XTogZ2VuZXJhdGVGaWxlUGF0aChpdGVtLCB0cnVlKVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgW2dyaWRUcmVlRmlsZVBhdGhLZXldOiBbaXRlbVtpZEtleV1dXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydCB0aGUgZ3JpZHMgZGF0YSBmcm9tIHRyZWUgc2hhcGUgdG8gb3JpZ2luYWwgc2hhcGUuXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGdyaWRUcmVlQ29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RnJvbVRyZWVEYXRhPFQ+KGRhdGE6IFRbXSwgZ3JpZFRyZWVDb25maWc6IERhdG9HcmlkVHJlZUNvbmZpZyk6IFRbXSB7XG4gIHJldHVybiBkYXRhLm1hcCgoeyAuLi5yb3cgfSkgPT4ge1xuICAgIGNvbnN0IHBhdGg6IElEW10gPSByb3dbZ3JpZFRyZWVGaWxlUGF0aEtleV07XG4gICAgY29uc3QgcGFyZW50SUQ6IElEID0gc2l6ZShwYXRoKSA+IDEgPyBwYXRoW3BhdGgubGVuZ3RoIC0gMl0gOiAwO1xuICAgIGRlbGV0ZSByb3dbZ3JpZFRyZWVGaWxlUGF0aEtleV07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJvdyxcbiAgICAgIFtncmlkVHJlZUNvbmZpZy5wYXJlbnRJREtleV06IHBhcmVudElEXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVmcmVzaCBleHBhbmRlZCAvIGNvbGxhcHNlZCByb3cgZm9yIHRoZSBncmlkIHRvIGRldGVjdFxuICogdGhlIGNoYW5nZS5cbiAqIEBwYXJhbSBub2RlXG4gKi9cbmZ1bmN0aW9uIHJvd0dyb3VwT3BlbmVkKHsgbm9kZSB9KSB7XG4gIHRoaXMuYXBpLnJlZnJlc2hDZWxscyh7IGZvcmNlOiB0cnVlLCByb3dOb2RlczogW25vZGVdIH0pO1xufVxuIl19
@@ -41,4 +41,4 @@ export var GridStatusColumnTypes;
41
41
  GridStatusColumnTypes["PENDING"] = "PENDING";
42
42
  GridStatusColumnTypes["WAITING"] = "WAITING";
43
43
  })(GridStatusColumnTypes || (GridStatusColumnTypes = {}));
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQ3BELE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFOUYsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUN6RyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyx1Q0FBdUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDeEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUM3RixVQUFVLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkUsT0FBTyxVQUFVO1FBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxrQ0FBa0MsR0FBRyxTQUFTLENBQUM7UUFDOUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQztBQXlIRixNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHlEQUFhLENBQUE7SUFDYiw2REFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0Isd0NBQWlCLENBQUE7SUFDakIsd0NBQWlCLENBQUE7SUFDakIsb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7SUFDZixnREFBeUIsQ0FBQTtJQUN6Qiw0Q0FBcUIsQ0FBQTtJQUNyQix3Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM5QjtBQWNELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIseUNBQWlCLENBQUE7SUFDakIsNkNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUFnQkQsTUFBTSxDQUFOLElBQVkscUJBTVg7QUFORCxXQUFZLHFCQUFxQjtJQUMvQiw0Q0FBbUIsQ0FBQTtJQUNuQiw0Q0FBbUIsQ0FBQTtJQUNuQixvREFBMkIsQ0FBQTtJQUMzQiw0Q0FBbUIsQ0FBQTtJQUNuQiw0Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTlcscUJBQXFCLEtBQXJCLHFCQUFxQixRQU1oQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbERlZiwgR3JpZE9wdGlvbnMsIElDZWxsUmVuZGVyZXJQYXJhbXMsIElHZXRSb3dzUGFyYW1zLCBNZW51SXRlbURlZiwgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIsIERhdG9HcmlkRmlsdGVyU2VjdGlvbnMsIExpc3RJdGVtIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1NlcnZlclBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuLi9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9saWIvZXZlbnRzJztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZE1vcmVNZW51QWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUvZ3JpZC1jb2x1bW4taGVhZGVyLW1vcmUtbWVudS50eXBlcyc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b0dyaWRPdmVybGF5SW5wdXQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS50eXBlcyc7XG5pbXBvcnQgeyBPcGVyYXRvclR5cGVzIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3ItdG9nZ2xlci9vcGVyYXRvci10b2dnbGVyLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRFZGl0YWJsZUNvbHVtblJlbmRlcmVyID0gcGFyYW1zID0+XG4gIHBhcmFtcyAmJiBwYXJhbXMudmFsdWUgPyBgPGRpdiBjbGFzcz1cInZhbHVlLXdyYXBwZXIgZWxsaXBzaXNcIj4ke3BhcmFtcy52YWx1ZX08L2Rpdj5gIDogbnVsbDtcblxuZXhwb3J0IGNvbnN0IGVkaXRhYmxlQ2VsbFJlbmRlcmVyV2l0aFNlYXJjaEhpZ2hsaWdodCA9IChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMsIHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xuICBpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLnZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwidmFsdWUtd3JhcHBlciBlbGxpcHNpc1wiPiR7c2VhcmNoSGlnaGxpZ2h0Q2VsbFJlbmRlcmVyKHBhcmFtcywgc2VhcmNoVGVybSl9PC9kaXY+YDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZWFyY2hIaWdobGlnaHRDZWxsUmVuZGVyZXIgPSAocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcbiAgc2VhcmNoVGVybSA9IChzZWFyY2hUZXJtIHx8ICcnKS50cmltKCk7XG4gIGNvbnN0IHZhbHVlID0gKHBhcmFtcy52YWx1ZUZvcm1hdHRlZCB8fCBwYXJhbXMudmFsdWUgfHwgJycpLnRvU3RyaW5nKCk7XG4gIHJldHVybiBzZWFyY2hUZXJtXG4gICAgPyB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2dpJyksIChzdHI6IHN0cmluZykgPT4gYDxzcGFuIGNsYXNzPVwic2VhcmNoLWhpZ2hsaWdodFwiPiR7c3RyfTwvc3Bhbj5gKVxuICAgIDogdmFsdWU7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZENvbHVtbkRlZiA9IHtcbiAgZmlsdGVyc0NvbmZpZz86IERhdG9HcmlkRmlsdGVyQ29uZmlnO1xuICBtb3JlTWVudUFjdGlvbnM/OiBEYXRvR3JpZE1vcmVNZW51QWN0aW9uc1tdO1xuICBpbmZvPzogc3RyaW5nO1xuICBvcmlnaW5hbFdpZHRoPzogbnVtYmVyO1xuICBpbmNsdWRlSW5TZWFyY2g/OiBib29sZWFuO1xuICBjdXN0b21DZWxsQ29uZmlnPzogRGF0b0dyaWRDdXN0b21DZWxsQ29uZmlnO1xuICB2YWx1ZVRvQ3VzdG9tQ2VsbENvbmZpZz86IEhhc2hNYXA8RGF0b0dyaWRDdXN0b21DZWxsQ29uZmlnPjtcbn0gJiBDb2xEZWY7XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZyA9IHtcbiAgdGV4dENzc0NsYXNzPzogc3RyaW5nO1xuICBpY29uQ3NzQ2xhc3M/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICBzaG93U3Bpbm5lcj86IGJvb2xlYW47XG4gIG1heExhYmVscz86IG51bWJlcjtcbiAgZ2V0QWRkaXRpb25hbFRleHQ/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxUZXh0Q3NzQ2xhc3M/OiBzdHJpbmc7XG4gIGdldEltYWdlVXJsPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpbml0aWFsc0NvbmZpZz86IERhdG9HcmlkSW5pdGlhbHNDZWxsQ29uZmlnO1xuICBnZXRJc1Zpc2libGU/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICBnZXRJdGVtcz86IChkYXRhOiBhbnkpID0+IHN0cmluZ1tdO1xuICBzdGF0dXM/OiBHcmlkU3RhdHVzQ29sdW1uVHlwZXM7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEluaXRpYWxzQ2VsbENvbmZpZyA9IHtcbiAgZmlyc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGxhc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGZ1bGxOYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGdldEZ1bGxOYW1lPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpc0JvbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRGaWx0ZXJDb25maWcgPSB7XG4gIHNlY3Rpb25zPzogRGF0b0dyaWRGaWx0ZXJTZWN0aW9ucztcbiAgcHJlZGVmaW5lZExpc3RWYWx1ZXM/OiAoc3RyaW5nIHwgTGlzdEl0ZW0pW107XG4gIGtlZXBQcmVkZWZpbmVkTGlzdE9yaWdpbmFsT3JkZXI/OiBib29sZWFuO1xuICBzaG93RW1wdHlDb25kaXRpb25zPzogYm9vbGVhbjtcbiAgc2hvd0NsZWFyRmlsdGVyc0J1dHRvbj86IGJvb2xlYW47XG4gIGlucHV0Q29uZGl0aW9uc09wZXJhdG9yPzogT3BlcmF0b3JUeXBlcztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQWdHcmlkRXZlbnQge1xuICB0eXBlOiAnU2VydmVyRGF0YUxvYWRlZCcgfCAncm93RGF0YUNoYW5nZWQnIHwgJ3Jvd0RhdGFVcGRhdGVkJztcbiAgcGFnaW5hdGlvblBhZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWRHZXRSb3dzUGFyYW1zIGV4dGVuZHMgSUdldFJvd3NQYXJhbXMge1xuICBzZXJ2ZXJDb25maWc6IERhdG9TZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEV4cG9ydFBhcmFtcyA9IERhdG9HcmlkQXBpICYgRGF0b0dyaWRTZXR0aW5ncztcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRPbkhvdmVyQ29uZmlnID0ge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgbWF4RGlzcGxheWVkSXRlbXM/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkT3B0aW9ucyBleHRlbmRzIEdyaWRPcHRpb25zIHtcbiAgZ3JpZE5hbWU6IHN0cmluZztcbiAgY29sdW1uRGVmczogRGF0b0dyaWRDb2x1bW5EZWZbXTtcbiAgc2F2ZVNldHRpbmdzPzogYm9vbGVhbjtcbiAgZW5hYmxlVjJfMT86IGJvb2xlYW47XG4gIGV4cG9ydEdyaWQ/KHBhcmFtczogRGF0b0dyaWRFeHBvcnRQYXJhbXMpOiB2b2lkO1xuICBkZWZhdWx0Q29sRGVmPzogRGF0b0dyaWRDb2x1bW5EZWY7XG4gIGRhdGFzb3VyY2U/OiB7XG4gICAgZ2V0Um93cyhwYXJhbXM6IERhdG9HcmlkR2V0Um93c1BhcmFtcyk6IHZvaWQ7XG4gICAgLy8gb3B0aW9uYWwgZGVzdHJveSBtZXRob2QsIGlmIHlvdXIgZGF0YXNvdXJjZSBoYXMgc3RhdGUgaXQgbmVlZHMgdG8gY2xlYW4gdXBcbiAgICBkZXN0cm95PygpOiB2b2lkO1xuICB9O1xuICBjdXN0b21Db250ZXh0TWVudT8ocm93QWN0aW9uczogUm93QWN0aW9uW10pOiBSb3dBY3Rpb25bXTtcbiAgaG92ZXJDb25maWc/OiBEYXRvR3JpZE9uSG92ZXJDb25maWc7XG4gIG92ZXJsYXlzQ29uZmlnPzogRGF0b0dyaWRPdmVybGF5SW5wdXQ7XG4gIGRpc3RpbmN0UmVzdWx0cz86IGJvb2xlYW47XG4gIG1heERlcHRoPzogbnVtYmVyO1xuICBlbmFibGVTZWFyY2g/OiBib29sZWFuO1xuICBlbmFibGVTZWFyY2hIaWdobGlnaHQ/OiBib29sZWFuO1xuICBjb2x1bW5zSW5jbHVkZWRJblNlYXJjaEJ5RGVmYXVsdD86IGJvb2xlYW47XG4gIHNlYXJjaERlYm91bmNlVGltZT86IG51bWJlcjtcbiAgaW5jbHVkZUhpZGRlbkNvbHVtbnNJblNlYXJjaD86IGJvb2xlYW47XG4gIHNob3dNdWx0aVNlbGVjdGlvbkNoZWNrYm94ZXM/OiBib29sZWFuO1xuICBlbmFibGVBbGxQYWdlc1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIGlkQ29sdW1uS2V5Pzogc3RyaW5nO1xuICBlbmFibGVCYWNrZ3JvdW5kPzogYm9vbGVhbjtcbiAgc2hvd0JvdHRvbUNvbnRyb2xzPzogYm9vbGVhbjtcbiAgc29ydEJ5U3RvcmU/OiBib29sZWFuO1xuICBwaXZvdEdyaWRTdHlsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW51SXRlbSA9IHN0cmluZyB8IE1lbnVJdGVtRGVmO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnZlcnRlclBhcmFtcyB7XG4gIG5vZGU6IFJvd05vZGU7XG4gIHRvb2xiYXJBY3Rpb25zOiBSb3dBY3Rpb25bXTtcbiAgc2VsZWN0ZWRSb3dzOiBSb3dOb2RlW107XG4gIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5O1xuICBsb2dnZXI/OiB7XG4gICAgbG9nKGV2ZW50VHlwZTogQ29yZUV2ZW50VHlwZXMuR1JJRF9UQUJMRV9BQ1RJT04sIGV2ZW50UHJvcGVydGllcz86IEhhc2hNYXA8YW55Pik6IHZvaWQ7XG4gICAgZXZlbnRPcmlnaW4/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTb3J0ID0ge1xuICBjb2xJZDogc3RyaW5nO1xuICBzb3J0OiBEYXRvR3JpZFNvcnREaXJlY3Rpb247XG4gIGZpZWxkPzogc3RyaW5nO1xuICBzb3J0SW5kZXg/OiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTZXJ2ZXJTb3J0RGlyZWN0aW9uID0gJ0FTQycgfCAnREVTQyc7XG5leHBvcnQgdHlwZSBEYXRvR3JpZFNlcnZlclNvcnQgPSB7IGNvbHVtbjogc3RyaW5nOyBzb3J0T3JkZXI6IERhdG9HcmlkU2VydmVyU29ydERpcmVjdGlvbiB9O1xuXG5leHBvcnQgY29uc3QgZW51bSBEYXRvR3JpZEFsaWdubWVudCB7XG4gIEZJVF9UT19DT05UQUlORVIsXG4gIEZJVF9UT19DT05URU5ULFxuICBDVVNUT01cbn1cblxuZXhwb3J0IGVudW0gR3JpZE1pbldpZHRocyB7XG4gIERlZmF1bHQgPSAxMDcsXG4gIFdpdGhfSW5mbyA9IDEzMVxufVxuXG5leHBvcnQgZW51bSBEYXRvR3JpZENvbHVtblR5cGVzIHtcbiAgU3RyaW5nID0gJ1N0cmluZycsXG4gIE51bWJlciA9ICdOdW1iZXInLFxuICBEYXRlID0gJ0RhdGUnLFxuICBTdGF0dXMgPSAnU3RhdHVzJyxcbiAgSXRlbXMgPSAnSXRlbXMnLFxuICBJdGVtc0NvdW50ID0gJ0l0ZW1zQ291bnQnLFxuICBJbml0aWFscyA9ICdJbml0aWFscycsXG4gIEF2YXRhciA9ICdBdmF0YXInXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWRUcmVlQ29uZmlnIHtcbiAgaWRLZXk6IHN0cmluZztcbiAgcGFyZW50SURLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQWdHcmlkUm93SWNvbiA9XG4gIHwgc3RyaW5nXG4gIHwge1xuICAgICAgZXhwYW5kZWQ6IHN0cmluZztcbiAgICAgIGNvbGxhcHNlZDogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCBlbnVtIEdyaWRSb3dTZWxlY3Rpb25UeXBlIHtcbiAgU0lOR0xFID0gJ3NpbmdsZScsXG4gIE1VTFRJUExFID0gJ211bHRpcGxlJ1xufVxuXG5leHBvcnQgdHlwZSBHcmlkUm93c1NlbGVjdGlvbkRhdGEgPSB7XG4gIHRvdGFsUm93c0NvdW50OiBudW1iZXI7XG4gIHNlbGVjdGVkUm93c0NvdW50OiBudW1iZXI7XG4gIHNlbGVjdGVkUGFnZVJvd3NDb3VudDogbnVtYmVyO1xuICBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkQ2hhbmdlRXZlbnQgPSB7XG4gIHR5cGU6IHN0cmluZztcbiAgZGF0YTogUm93Tm9kZVtdO1xuICBmaWx0ZXI6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXTtcbiAgc29ydDogRGF0b0dyaWRTb3J0O1xufTtcblxuZXhwb3J0IGVudW0gR3JpZFN0YXR1c0NvbHVtblR5cGVzIHtcbiAgU1VDQ0VTUyA9ICdTVUNDRVNTJyxcbiAgRkFJTFVSRSA9ICdGQUlMVVJFJyxcbiAgSU5fUFJPR1JFU1MgPSAnSU5fUFJPR1JFU1MnLFxuICBQRU5ESU5HID0gJ1BFTkRJTkcnLFxuICBXQUlUSU5HID0gJ1dBSVRJTkcnXG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQ3BELE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFOUYsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUN6RyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyx1Q0FBdUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDeEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUM3RixVQUFVLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkUsT0FBTyxVQUFVO1FBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxrQ0FBa0MsR0FBRyxTQUFTLENBQUM7UUFDOUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQztBQTBIRixNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHlEQUFhLENBQUE7SUFDYiw2REFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0Isd0NBQWlCLENBQUE7SUFDakIsd0NBQWlCLENBQUE7SUFDakIsb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7SUFDZixnREFBeUIsQ0FBQTtJQUN6Qiw0Q0FBcUIsQ0FBQTtJQUNyQix3Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM5QjtBQWNELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIseUNBQWlCLENBQUE7SUFDakIsNkNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUFnQkQsTUFBTSxDQUFOLElBQVkscUJBTVg7QUFORCxXQUFZLHFCQUFxQjtJQUMvQiw0Q0FBbUIsQ0FBQTtJQUNuQiw0Q0FBbUIsQ0FBQTtJQUNuQixvREFBMkIsQ0FBQTtJQUMzQiw0Q0FBbUIsQ0FBQTtJQUNuQiw0Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTlcscUJBQXFCLEtBQXJCLHFCQUFxQixRQU1oQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbERlZiwgR3JpZE9wdGlvbnMsIElDZWxsUmVuZGVyZXJQYXJhbXMsIElHZXRSb3dzUGFyYW1zLCBNZW51SXRlbURlZiwgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIsIERhdG9HcmlkRmlsdGVyU2VjdGlvbnMsIExpc3RJdGVtIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1NlcnZlclBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuLi9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9saWIvZXZlbnRzJztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZE1vcmVNZW51QWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUvZ3JpZC1jb2x1bW4taGVhZGVyLW1vcmUtbWVudS50eXBlcyc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b0dyaWRPdmVybGF5SW5wdXQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS50eXBlcyc7XG5pbXBvcnQgeyBPcGVyYXRvclR5cGVzIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3ItdG9nZ2xlci9vcGVyYXRvci10b2dnbGVyLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRFZGl0YWJsZUNvbHVtblJlbmRlcmVyID0gcGFyYW1zID0+XG4gIHBhcmFtcyAmJiBwYXJhbXMudmFsdWUgPyBgPGRpdiBjbGFzcz1cInZhbHVlLXdyYXBwZXIgZWxsaXBzaXNcIj4ke3BhcmFtcy52YWx1ZX08L2Rpdj5gIDogbnVsbDtcblxuZXhwb3J0IGNvbnN0IGVkaXRhYmxlQ2VsbFJlbmRlcmVyV2l0aFNlYXJjaEhpZ2hsaWdodCA9IChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMsIHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xuICBpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLnZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwidmFsdWUtd3JhcHBlciBlbGxpcHNpc1wiPiR7c2VhcmNoSGlnaGxpZ2h0Q2VsbFJlbmRlcmVyKHBhcmFtcywgc2VhcmNoVGVybSl9PC9kaXY+YDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZWFyY2hIaWdobGlnaHRDZWxsUmVuZGVyZXIgPSAocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcbiAgc2VhcmNoVGVybSA9IChzZWFyY2hUZXJtIHx8ICcnKS50cmltKCk7XG4gIGNvbnN0IHZhbHVlID0gKHBhcmFtcy52YWx1ZUZvcm1hdHRlZCB8fCBwYXJhbXMudmFsdWUgfHwgJycpLnRvU3RyaW5nKCk7XG4gIHJldHVybiBzZWFyY2hUZXJtXG4gICAgPyB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2dpJyksIChzdHI6IHN0cmluZykgPT4gYDxzcGFuIGNsYXNzPVwic2VhcmNoLWhpZ2hsaWdodFwiPiR7c3RyfTwvc3Bhbj5gKVxuICAgIDogdmFsdWU7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZENvbHVtbkRlZiA9IHtcbiAgZmlsdGVyc0NvbmZpZz86IERhdG9HcmlkRmlsdGVyQ29uZmlnO1xuICBtb3JlTWVudUFjdGlvbnM/OiBEYXRvR3JpZE1vcmVNZW51QWN0aW9uc1tdO1xuICBpbmZvPzogc3RyaW5nO1xuICBvcmlnaW5hbFdpZHRoPzogbnVtYmVyO1xuICBpbmNsdWRlSW5TZWFyY2g/OiBib29sZWFuO1xuICBjdXN0b21DZWxsQ29uZmlnPzogRGF0b0dyaWRDdXN0b21DZWxsQ29uZmlnO1xuICB2YWx1ZVRvQ3VzdG9tQ2VsbENvbmZpZz86IEhhc2hNYXA8RGF0b0dyaWRDdXN0b21DZWxsQ29uZmlnPjtcbiAgY3VzdG9tSGVhZGVyVG9vbHRpcD86IHN0cmluZztcbn0gJiBDb2xEZWY7XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZyA9IHtcbiAgdGV4dENzc0NsYXNzPzogc3RyaW5nO1xuICBpY29uQ3NzQ2xhc3M/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICBzaG93U3Bpbm5lcj86IGJvb2xlYW47XG4gIG1heExhYmVscz86IG51bWJlcjtcbiAgZ2V0QWRkaXRpb25hbFRleHQ/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxUZXh0Q3NzQ2xhc3M/OiBzdHJpbmc7XG4gIGdldEltYWdlVXJsPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpbml0aWFsc0NvbmZpZz86IERhdG9HcmlkSW5pdGlhbHNDZWxsQ29uZmlnO1xuICBnZXRJc1Zpc2libGU/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICBnZXRJdGVtcz86IChkYXRhOiBhbnkpID0+IHN0cmluZ1tdO1xuICBzdGF0dXM/OiBHcmlkU3RhdHVzQ29sdW1uVHlwZXM7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEluaXRpYWxzQ2VsbENvbmZpZyA9IHtcbiAgZmlyc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGxhc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGZ1bGxOYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGdldEZ1bGxOYW1lPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpc0JvbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRGaWx0ZXJDb25maWcgPSB7XG4gIHNlY3Rpb25zPzogRGF0b0dyaWRGaWx0ZXJTZWN0aW9ucztcbiAgcHJlZGVmaW5lZExpc3RWYWx1ZXM/OiAoc3RyaW5nIHwgTGlzdEl0ZW0pW107XG4gIGtlZXBQcmVkZWZpbmVkTGlzdE9yaWdpbmFsT3JkZXI/OiBib29sZWFuO1xuICBzaG93RW1wdHlDb25kaXRpb25zPzogYm9vbGVhbjtcbiAgc2hvd0NsZWFyRmlsdGVyc0J1dHRvbj86IGJvb2xlYW47XG4gIGlucHV0Q29uZGl0aW9uc09wZXJhdG9yPzogT3BlcmF0b3JUeXBlcztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQWdHcmlkRXZlbnQge1xuICB0eXBlOiAnU2VydmVyRGF0YUxvYWRlZCcgfCAncm93RGF0YUNoYW5nZWQnIHwgJ3Jvd0RhdGFVcGRhdGVkJztcbiAgcGFnaW5hdGlvblBhZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWRHZXRSb3dzUGFyYW1zIGV4dGVuZHMgSUdldFJvd3NQYXJhbXMge1xuICBzZXJ2ZXJDb25maWc6IERhdG9TZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEV4cG9ydFBhcmFtcyA9IERhdG9HcmlkQXBpICYgRGF0b0dyaWRTZXR0aW5ncztcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRPbkhvdmVyQ29uZmlnID0ge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgbWF4RGlzcGxheWVkSXRlbXM/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkT3B0aW9ucyBleHRlbmRzIEdyaWRPcHRpb25zIHtcbiAgZ3JpZE5hbWU6IHN0cmluZztcbiAgY29sdW1uRGVmczogRGF0b0dyaWRDb2x1bW5EZWZbXTtcbiAgc2F2ZVNldHRpbmdzPzogYm9vbGVhbjtcbiAgZW5hYmxlVjJfMT86IGJvb2xlYW47XG4gIGV4cG9ydEdyaWQ/KHBhcmFtczogRGF0b0dyaWRFeHBvcnRQYXJhbXMpOiB2b2lkO1xuICBkZWZhdWx0Q29sRGVmPzogRGF0b0dyaWRDb2x1bW5EZWY7XG4gIGRhdGFzb3VyY2U/OiB7XG4gICAgZ2V0Um93cyhwYXJhbXM6IERhdG9HcmlkR2V0Um93c1BhcmFtcyk6IHZvaWQ7XG4gICAgLy8gb3B0aW9uYWwgZGVzdHJveSBtZXRob2QsIGlmIHlvdXIgZGF0YXNvdXJjZSBoYXMgc3RhdGUgaXQgbmVlZHMgdG8gY2xlYW4gdXBcbiAgICBkZXN0cm95PygpOiB2b2lkO1xuICB9O1xuICBjdXN0b21Db250ZXh0TWVudT8ocm93QWN0aW9uczogUm93QWN0aW9uW10pOiBSb3dBY3Rpb25bXTtcbiAgaG92ZXJDb25maWc/OiBEYXRvR3JpZE9uSG92ZXJDb25maWc7XG4gIG92ZXJsYXlzQ29uZmlnPzogRGF0b0dyaWRPdmVybGF5SW5wdXQ7XG4gIGRpc3RpbmN0UmVzdWx0cz86IGJvb2xlYW47XG4gIG1heERlcHRoPzogbnVtYmVyO1xuICBlbmFibGVTZWFyY2g/OiBib29sZWFuO1xuICBlbmFibGVTZWFyY2hIaWdobGlnaHQ/OiBib29sZWFuO1xuICBjb2x1bW5zSW5jbHVkZWRJblNlYXJjaEJ5RGVmYXVsdD86IGJvb2xlYW47XG4gIHNlYXJjaERlYm91bmNlVGltZT86IG51bWJlcjtcbiAgaW5jbHVkZUhpZGRlbkNvbHVtbnNJblNlYXJjaD86IGJvb2xlYW47XG4gIHNob3dNdWx0aVNlbGVjdGlvbkNoZWNrYm94ZXM/OiBib29sZWFuO1xuICBlbmFibGVBbGxQYWdlc1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIGlkQ29sdW1uS2V5Pzogc3RyaW5nO1xuICBlbmFibGVCYWNrZ3JvdW5kPzogYm9vbGVhbjtcbiAgc2hvd0JvdHRvbUNvbnRyb2xzPzogYm9vbGVhbjtcbiAgc29ydEJ5U3RvcmU/OiBib29sZWFuO1xuICB1c2VQaXZvdEdyaWRTdHlsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW51SXRlbSA9IHN0cmluZyB8IE1lbnVJdGVtRGVmO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnZlcnRlclBhcmFtcyB7XG4gIG5vZGU6IFJvd05vZGU7XG4gIHRvb2xiYXJBY3Rpb25zOiBSb3dBY3Rpb25bXTtcbiAgc2VsZWN0ZWRSb3dzOiBSb3dOb2RlW107XG4gIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5O1xuICBsb2dnZXI/OiB7XG4gICAgbG9nKGV2ZW50VHlwZTogQ29yZUV2ZW50VHlwZXMuR1JJRF9UQUJMRV9BQ1RJT04sIGV2ZW50UHJvcGVydGllcz86IEhhc2hNYXA8YW55Pik6IHZvaWQ7XG4gICAgZXZlbnRPcmlnaW4/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTb3J0ID0ge1xuICBjb2xJZDogc3RyaW5nO1xuICBzb3J0OiBEYXRvR3JpZFNvcnREaXJlY3Rpb247XG4gIGZpZWxkPzogc3RyaW5nO1xuICBzb3J0SW5kZXg/OiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTZXJ2ZXJTb3J0RGlyZWN0aW9uID0gJ0FTQycgfCAnREVTQyc7XG5leHBvcnQgdHlwZSBEYXRvR3JpZFNlcnZlclNvcnQgPSB7IGNvbHVtbjogc3RyaW5nOyBzb3J0T3JkZXI6IERhdG9HcmlkU2VydmVyU29ydERpcmVjdGlvbiB9O1xuXG5leHBvcnQgY29uc3QgZW51bSBEYXRvR3JpZEFsaWdubWVudCB7XG4gIEZJVF9UT19DT05UQUlORVIsXG4gIEZJVF9UT19DT05URU5ULFxuICBDVVNUT01cbn1cblxuZXhwb3J0IGVudW0gR3JpZE1pbldpZHRocyB7XG4gIERlZmF1bHQgPSAxMDcsXG4gIFdpdGhfSW5mbyA9IDEzMVxufVxuXG5leHBvcnQgZW51bSBEYXRvR3JpZENvbHVtblR5cGVzIHtcbiAgU3RyaW5nID0gJ1N0cmluZycsXG4gIE51bWJlciA9ICdOdW1iZXInLFxuICBEYXRlID0gJ0RhdGUnLFxuICBTdGF0dXMgPSAnU3RhdHVzJyxcbiAgSXRlbXMgPSAnSXRlbXMnLFxuICBJdGVtc0NvdW50ID0gJ0l0ZW1zQ291bnQnLFxuICBJbml0aWFscyA9ICdJbml0aWFscycsXG4gIEF2YXRhciA9ICdBdmF0YXInXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWRUcmVlQ29uZmlnIHtcbiAgaWRLZXk6IHN0cmluZztcbiAgcGFyZW50SURLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQWdHcmlkUm93SWNvbiA9XG4gIHwgc3RyaW5nXG4gIHwge1xuICAgICAgZXhwYW5kZWQ6IHN0cmluZztcbiAgICAgIGNvbGxhcHNlZDogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCBlbnVtIEdyaWRSb3dTZWxlY3Rpb25UeXBlIHtcbiAgU0lOR0xFID0gJ3NpbmdsZScsXG4gIE1VTFRJUExFID0gJ211bHRpcGxlJ1xufVxuXG5leHBvcnQgdHlwZSBHcmlkUm93c1NlbGVjdGlvbkRhdGEgPSB7XG4gIHRvdGFsUm93c0NvdW50OiBudW1iZXI7XG4gIHNlbGVjdGVkUm93c0NvdW50OiBudW1iZXI7XG4gIHNlbGVjdGVkUGFnZVJvd3NDb3VudDogbnVtYmVyO1xuICBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkQ2hhbmdlRXZlbnQgPSB7XG4gIHR5cGU6IHN0cmluZztcbiAgZGF0YTogUm93Tm9kZVtdO1xuICBmaWx0ZXI6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXTtcbiAgc29ydDogRGF0b0dyaWRTb3J0O1xufTtcblxuZXhwb3J0IGVudW0gR3JpZFN0YXR1c0NvbHVtblR5cGVzIHtcbiAgU1VDQ0VTUyA9ICdTVUNDRVNTJyxcbiAgRkFJTFVSRSA9ICdGQUlMVVJFJyxcbiAgSU5fUFJPR1JFU1MgPSAnSU5fUFJPR1JFU1MnLFxuICBQRU5ESU5HID0gJ1BFTkRJTkcnLFxuICBXQUlUSU5HID0gJ1dBSVRJTkcnXG59XG4iXX0=
@@ -35,6 +35,7 @@ let DatoGridColumnHeaderComponent = class DatoGridColumnHeaderComponent {
35
35
  this.showFilter = colDef.filter !== DatoGridFilterTypes.None;
36
36
  this.showMoreMenu = isNil(colDef.moreMenuActions) || colDef.moreMenuActions.length > 0;
37
37
  this.field = getColField(colDef);
38
+ this.headerTooltip = this.getHeaderTooltip(colDef);
38
39
  this.context = {
39
40
  api: {
40
41
  grid: params.api,
@@ -115,6 +116,19 @@ let DatoGridColumnHeaderComponent = class DatoGridColumnHeaderComponent {
115
116
  });
116
117
  }
117
118
  ngOnDestroy() { }
119
+ getHeaderTooltip(initialColDef) {
120
+ if (this.params) {
121
+ let colDef = initialColDef;
122
+ if (colDef.showRowGroup) {
123
+ const rowGroupColumns = this.params.columnApi.getRowGroupColumns();
124
+ const rowGroupColumn = rowGroupColumns && rowGroupColumns.find(col => col.getColId() === colDef.showRowGroup);
125
+ const rowGroupColDef = rowGroupColumn && rowGroupColumn.getColDef();
126
+ colDef = rowGroupColDef || colDef;
127
+ }
128
+ return colDef.customHeaderTooltip || colDef.headerName;
129
+ }
130
+ return '';
131
+ }
118
132
  };
119
133
  DatoGridColumnHeaderComponent.ctorParameters = () => [
120
134
  { type: ViewContainerRef },
@@ -125,7 +139,7 @@ DatoGridColumnHeaderComponent.ctorParameters = () => [
125
139
  DatoGridColumnHeaderComponent = __decorate([
126
140
  Component({
127
141
  selector: 'dato-grid-column-header',
128
- template: "<div class=\"d-flex align-start-center\" [attr.data-auto-id]=\"field + '-column-header'\" [attr.data-field]=\"field\">\n <ng-container *ngIf=\"customTemplates && customTemplates.customHeader as customHeader\">\n <div class=\"mr-5\" [attr.data-auto-id]=\"field + '-dynamic-section'\">\n <ng-container *ngTemplateOutlet=\"customHeader; context: context\"></ng-container>\n </div>\n </ng-container>\n <div class=\"d-flex d-flex-grow align-start-center min-width-0 items-center\">\n <span class=\"dato-simple-bold primary-400-color ellipsis min-width-0 mr-5\" [datoTooltip]=\"headerName\"\n datoTooltipPosition=\"bottom\">{{headerName}}</span>\n <div>\n <dato-icon class=\"primary-300-color\" *ngIf=\"headerInfo\" [datoTooltip]=\"headerInfo\" datoTooltipPosition=\"bottom\" datoIcon=\"question\"></dato-icon>\n </div>\n </div>\n <div class=\"sort-icon opacity-0\" *ngIf=\"params.enableSorting && (sortingInfo$ | async) as sortingInfo\"\n [class.active]=\"sortingInfo.active\">\n <dato-icon width=\"24px\" height=\"16px\" class=\"primary-300-color\"\n [attr.data-auto-id]=\"field + '-sort'\"\n [icon]=\"sortingInfo.icon\"></dato-icon>\n </div>\n <ng-container *ngIf=\"showFilter\">\n <div class=\"filter relative\" *datoSubscribe=\"filterActive$ as filterActive\">\n <dato-icon-button (click.stop)=\"openFilters(filters)\" datoTooltip=\"core.filters\" datoTooltipPosition=\"bottom\"\n datoType=\"none\" [attr.data-auto-id]=\"field + '-filter'\" class=\"filter-icon opacity-0\"\n [class.active]=\"filtersMenuOpen || filterActive\"\n datoSize=\"md\" icon=\"filter\"\n #filters></dato-icon-button>\n <div [class.opacity-100]=\"filterActive\"\n class=\"opacity-0 filter-active-circle accent-400-background-color absolute\"></div>\n </div>\n </ng-container>\n <dato-icon-button *ngIf=\"showMoreMenu\" (click.stop)=\"openMoreMenu(moreMenu)\" datoTooltip=\"core.more-options\" datoTooltipPosition=\"bottom\"\n datoType=\"none\" [attr.data-auto-id]=\"field + '-more-menu'\" [class.active]=\"moreMenuOpen\"\n datoSize=\"md\" icon=\"more-vertical\" #moreMenu></dato-icon-button>\n</div>\n",
142
+ template: "<div class=\"d-flex align-start-center\" [attr.data-auto-id]=\"field + '-column-header'\" [attr.data-field]=\"field\">\n <ng-container *ngIf=\"customTemplates && customTemplates.customHeader as customHeader\">\n <div class=\"mr-5\" [attr.data-auto-id]=\"field + '-dynamic-section'\">\n <ng-container *ngTemplateOutlet=\"customHeader; context: context\"></ng-container>\n </div>\n </ng-container>\n <div class=\"d-flex d-flex-grow align-start-center min-width-0 items-center\">\n <span class=\"dato-simple-bold primary-400-color ellipsis min-width-0 mr-5\" [datoTooltip]=\"headerTooltip\"\n datoTooltipPosition=\"bottom\">{{headerName}}</span>\n <div>\n <dato-icon class=\"primary-300-color\" *ngIf=\"headerInfo\" [datoTooltip]=\"headerInfo\" datoTooltipPosition=\"bottom\" datoIcon=\"question\"></dato-icon>\n </div>\n </div>\n <div class=\"sort-icon opacity-0\" *ngIf=\"params.enableSorting && (sortingInfo$ | async) as sortingInfo\"\n [class.active]=\"sortingInfo.active\">\n <dato-icon width=\"24px\" height=\"16px\" class=\"primary-300-color\"\n [attr.data-auto-id]=\"field + '-sort'\"\n [icon]=\"sortingInfo.icon\"></dato-icon>\n </div>\n <ng-container *ngIf=\"showFilter\">\n <div class=\"filter relative\" *datoSubscribe=\"filterActive$ as filterActive\">\n <dato-icon-button (click.stop)=\"openFilters(filters)\" datoTooltip=\"core.filters\" datoTooltipPosition=\"bottom\"\n datoType=\"none\" [attr.data-auto-id]=\"field + '-filter'\" class=\"filter-icon opacity-0\"\n [class.active]=\"filtersMenuOpen || filterActive\"\n datoSize=\"md\" icon=\"filter\"\n #filters></dato-icon-button>\n <div [class.opacity-100]=\"filterActive\"\n class=\"opacity-0 filter-active-circle accent-400-background-color absolute\"></div>\n </div>\n </ng-container>\n <dato-icon-button *ngIf=\"showMoreMenu\" (click.stop)=\"openMoreMenu(moreMenu)\" datoTooltip=\"core.more-options\" datoTooltipPosition=\"bottom\"\n datoType=\"none\" [attr.data-auto-id]=\"field + '-more-menu'\" [class.active]=\"moreMenuOpen\"\n datoSize=\"md\" icon=\"more-vertical\" #moreMenu></dato-icon-button>\n</div>\n",
129
143
  styles: [":host .filter-icon,:host .sort-icon{transition:opacity .25s linear,width .25s ease-in-out;width:0}:host .sort-icon{height:16px}:host .filter-icon.active,:host .sort-icon.active{opacity:1;width:24px}:host:hover .filter-icon,:host:hover .sort-icon{opacity:1;width:24px}:host .filter-active-circle{pointer-events:none;transition:opacity .2s ease-in-out;position:absolute;height:8px;width:8px;top:2px;right:2px;border-radius:4px;border:1px solid #fff}:host ::ng-deep .filter dato-icon-button dato-icon{transition:color .2s ease-in-out}"]
130
144
  }),
131
145
  __metadata("design:paramtypes", [ViewContainerRef,
@@ -134,4 +148,4 @@ DatoGridColumnHeaderComponent = __decorate([
134
148
  ChangeDetectorRef])
135
149
  ], DatoGridColumnHeaderComponent);
136
150
  export { DatoGridColumnHeaderComponent };
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb2x1bW4taGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb2x1bW4taGVhZGVyL2dyaWQtY29sdW1uLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU9qRCxJQUFhLDZCQUE2QixHQUExQyxNQUFhLDZCQUE2QjtJQWtCeEMsWUFDVSxHQUFxQixFQUNyQixVQUF5QyxFQUN6QyxJQUFnQixFQUNoQixHQUFzQjtRQUh0QixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUErQjtRQUN6QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FB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RUFBRSx5QkFBeUI7UUFDbkMsMjRFQUFrRDs7S0FFbkQsQ0FBQztxQ0FvQmUsZ0JBQWdCO1FBQ1QsNkJBQTZCO1FBQ25DLFVBQVU7UUFDWCxpQkFBaUI7R0F0QnJCLDZCQUE2QixDQTZIekM7U0E3SFksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUhlYWRlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IENvbHVtbiwgQ29sdW1uQXBpLCBHcmlkQXBpLCBJQWZ0ZXJHdWlBdHRhY2hlZFBhcmFtcyB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IERhdG9Db2x1bW5IZWFkZXJQYXJhbXMgfSBmcm9tICcuL2dyaWQtY29sdW1uLWhlYWRlci50eXBlcyc7XG5pbXBvcnQgeyBDdXN0b21IZWFkZXJDb250cm9sbGVyU2VydmljZSB9IGZyb20gJy4vY3VzdG9tLWhlYWRlci1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdG9HcmlkRmlsdGVyVHlwZXMgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgRGF0b0dyaWRDb2x1bW5EZWYgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IENvcmVFdmVudFR5cGVzIH0gZnJvbSAnLi4vLi4vZXZlbnQtbG9nZ2VyJztcbmltcG9ydCB7IGlzQXJyYXlWYWx1ZXNFcXVhbCB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGdldENvbEZpZWxkIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS91dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLWNvbHVtbi1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1jb2x1bW4taGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1jb2x1bW4taGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRDb2x1bW5IZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIElIZWFkZXJBbmd1bGFyQ29tcCB7XG4gIGhlYWRlck5hbWU6IHN0cmluZztcbiAgcGFyYW1zOiBEYXRvQ29sdW1uSGVhZGVyUGFyYW1zO1xuICBjb2x1bW46IENvbHVtbjtcbiAgY3VzdG9tVGVtcGxhdGVzOiB7XG4gICAgY3VzdG9tSGVhZGVyPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBtb3JlTWVudT86IFRlbXBsYXRlUmVmPGFueT47XG4gIH07XG4gIHNob3dGaWx0ZXI6IGJvb2xlYW47XG4gIHNob3dNb3JlTWVudTogYm9vbGVhbjtcbiAgY29udGV4dDogeyBhcGk6IHsgZ3JpZDogR3JpZEFwaTsgY29sdW1uczogQ29sdW1uQXBpIH07IGNvbHVtbjogQ29sdW1uIH07XG4gIGZpbHRlckFjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZpZWxkOiBzdHJpbmc7XG4gIHNvcnRpbmdJbmZvJDogT2JzZXJ2YWJsZTx7IGFjdGl2ZTogYm9vbGVhbjsgaWNvbjogc3RyaW5nIH0+O1xuICBtb3JlTWVudU9wZW4gPSBmYWxzZTtcbiAgZmlsdGVyc01lbnVPcGVuID0gZmFsc2U7XG4gIGhlYWRlckluZm86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGNvbnRyb2xsZXI6IEN1c3RvbUhlYWRlckNvbnRyb2xsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIGFmdGVyR3VpQXR0YWNoZWQocGFyYW1zPzogSUFmdGVyR3VpQXR0YWNoZWRQYXJhbXMpOiB2b2lkIHt9XG5cbiAgYWdJbml0KHBhcmFtczogRGF0b0NvbHVtbkhlYWRlclBhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuY29sdW1uID0gcGFyYW1zLmNvbHVtbjtcbiAgICBjb25zdCBjb2xEZWYgPSBwYXJhbXMuY29sdW1uLmdldENvbERlZigpIGFzIERhdG9HcmlkQ29sdW1uRGVmO1xuICAgIHRoaXMuaGVhZGVySW5mbyA9IGNvbERlZi5pbmZvO1xuICAgIHRoaXMuaGVhZGVyTmFtZSA9IGNvbERlZi5oZWFkZXJOYW1lO1xuICAgIHRoaXMuc2hvd0ZpbHRlciA9IGNvbERlZi5maWx0ZXIgIT09IERhdG9HcmlkRmlsdGVyVHlwZXMuTm9uZTtcbiAgICB0aGlzLnNob3dNb3JlTWVudSA9IGlzTmlsKGNvbERlZi5tb3JlTWVudUFjdGlvbnMpIHx8IGNvbERlZi5tb3JlTWVudUFjdGlvbnMubGVuZ3RoID4gMDtcbiAgICB0aGlzLmZpZWxkID0gZ2V0Q29sRmllbGQoY29sRGVmKTtcblxuICAgIHRoaXMuY29udGV4dCA9IHtcbiAgICAgIGFwaToge1xuICAgICAgICBncmlkOiBwYXJhbXMuYXBpLFxuICAgICAgICBjb2x1bW5zOiBwYXJhbXMuY29sdW1uQXBpXG4gICAgICB9LFxuICAgICAgY29sdW1uOiB0aGlzLmNvbHVtblxuICAgIH07XG4gICAgY29uc3QgeyBncmlkUXVlcnksIGdyaWRTZXJ2aWNlIH0gPSB0aGlzLnBhcmFtcztcbiAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcyA9IGdyaWRTZXJ2aWNlLmdldEN1c3RvbUhlYWRlcih0aGlzLmZpZWxkKTtcbiAgICB0aGlzLmZpbHRlckFjdGl2ZSQgPSBncmlkUXVlcnlcbiAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MuZmlsdGVyW3RoaXMuZmllbGRdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmaWx0ZXIgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzUGl2b3RDb2x1bW5NYXRjaEZpbHRlciA9IGZpbHRlciAmJiBpc0FycmF5VmFsdWVzRXF1YWwoZmlsdGVyLnBpdm90S2V5cywgY29sRGVmLnBpdm90S2V5cyk7XG5cbiAgICAgICAgICByZXR1cm4gc2l6ZShmaWx0ZXIpID4gMCAmJiBpc1Bpdm90Q29sdW1uTWF0Y2hGaWx0ZXI7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIGlmICh0aGlzLnBhcmFtcy5lbmFibGVTb3J0aW5nKSB7XG4gICAgICBmcm9tRXZlbnQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzb3J0aW5nT3JkZXI6IHN0cmluZ1tdID0gdGhpcy5jb2x1bW4uZ2V0Q29sRGVmKCkgPyB0aGlzLmNvbHVtbi5nZXRDb2xEZWYoKS5zb3J0aW5nT3JkZXIgOiBudWxsO1xuICAgICAgICAgIGxldCBzb3J0O1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTb3J0ID0gdGhpcy5jb2x1bW4uZ2V0U29ydCgpO1xuICAgICAgICAgIGNvbnN0IGNvbElkID0gdGhpcy5jb2x1bW4uZ2V0Q29sSWQoKTtcblxuICAgICAgICAgIGlmIChzb3J0aW5nT3JkZXIgJiYgc29ydGluZ09yZGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTb3J0SW5kZXggPSBzb3J0aW5nT3JkZXIuaW5kZXhPZihjdXJyZW50U29ydCk7XG4gICAgICAgICAgICBsZXQgbmV3U29ydEluZGV4O1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTb3J0SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIG5ld1NvcnRJbmRleCA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdTb3J0SW5kZXggPSBjdXJyZW50U29ydEluZGV4ID09PSBzb3J0aW5nT3JkZXIubGVuZ3RoIC0gMSA/IDAgOiBjdXJyZW50U29ydEluZGV4ICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvcnQgPSBzb3J0aW5nT3JkZXJbbmV3U29ydEluZGV4XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc29ydCA9IGN1cnJlbnRTb3J0ICE9PSAnYXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBncmlkU2VydmljZS5fbG9nRXZlbnQoQ29yZUV2ZW50VHlwZXMuR1JJRF9DT0xVTU5fQUNUSU9OLCB7XG4gICAgICAgICAgICBhY3Rpb246ICdTb3J0JyxcbiAgICAgICAgICAgIGNvbHVtbjogY29sSWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlICYmIGdyaWRTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XG5cbiAgICAgICAgICBpZiAoZ3JpZFF1ZXJ5LmdldEdyaWRPcHRpb25zKCkuc29ydEJ5U3RvcmUpIHtcbiAgICAgICAgICAgIGdyaWRTZXJ2aWNlLnNldFNvcnRCeUNvbHVtbihjb2xJZCwgc29ydCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLnNldFNvcnQoc29ydCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHRoaXMuc29ydGluZ0luZm8kID0gZ3JpZFF1ZXJ5XG4gICAgICAgIC53YWl0Rm9yR3JpZCgoKSA9PiBncmlkUXVlcnkuZ3JpZFJlZi5zb3J0Q2hhbmdlZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKHt9KSxcbiAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgYWN0aXZlOiB0aGlzLmNvbHVtbi5pc1NvcnRpbmcoKSxcbiAgICAgICAgICAgICAgaWNvbjogIXRoaXMuY29sdW1uLmlzU29ydGluZygpIHx8IHRoaXMuY29sdW1uLmlzU29ydEFzY2VuZGluZygpID8gJ3NvcnQtYXNjZW5kaW5nJyA6ICdzb3J0LWRlc2NlbmRpbmcnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkZpbHRlcnMob3JpZ2luKSB7XG4gICAgdGhpcy5maWx0ZXJzTWVudU9wZW4gPSB0cnVlO1xuICAgIHRoaXMuY29udHJvbGxlclxuICAgICAgLm9wZW5GaWx0ZXJNZW51KG9yaWdpbi5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMucGFyYW1zKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJzTWVudU9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBvcGVuTW9yZU1lbnUob3JpZ2luKSB7XG4gICAgdGhpcy5tb3JlTWVudU9wZW4gPSB0cnVlO1xuICAgIHRoaXMuY29udHJvbGxlclxuICAgICAgLm9wZW5Nb3JlTWVudShvcmlnaW4uaG9zdC5uYXRpdmVFbGVtZW50LCB0aGlzLnBhcmFtcywgdGhpcy5jdXN0b21UZW1wbGF0ZXMubW9yZU1lbnUpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm1vcmVNZW51T3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge31cbn1cbiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb2x1bW4taGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb2x1bW4taGVhZGVyL2dyaWQtY29sdW1uLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU9qRCxJQUFhLDZCQUE2QixHQUExQyxNQUFhLDZCQUE2QjtJQW1CeEMsWUFDVSxHQUFxQixFQUNyQixVQUF5QyxFQUN6QyxJQUFnQixFQUNoQixHQUFzQjtRQUh0QixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUErQjtRQUN6QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FB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Q0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLE1BQU0sR0FBRyxhQUFhLENBQUM7WUFFM0IsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUN2QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNuRSxNQUFNLGNBQWMsR0FBRyxlQUFlLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzlHLE1BQU0sY0FBYyxHQUFHLGNBQWMsSUFBSyxjQUFjLENBQUMsU0FBUyxFQUF3QixDQUFDO2dCQUUzRixNQUFNLEdBQUcsY0FBYyxJQUFJLE1BQU0sQ0FBQzthQUNuQztZQUVELE9BQU8sTUFBTSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUM7U0FDeEQ7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRixDQUFBOztZQTVIZ0IsZ0JBQWdCO1lBQ1QsNkJBQTZCO1lBQ25DLFVBQVU7WUFDWCxpQkFBaUI7O0FBdkJyQiw2QkFBNkI7SUFMekMsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLHlCQUF5QjtRQUNuQyw4NEVBQWtEOztLQUVuRCxDQUFDO3FDQXFCZSxnQkFBZ0I7UUFDVCw2QkFBNkI7UUFDbkMsVUFBVTtRQUNYLGlCQUFpQjtHQXZCckIsNkJBQTZCLENBZ0p6QztTQWhKWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSGVhZGVyQW5ndWxhckNvbXAgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgQ29sdW1uLCBDb2x1bW5BcGksIEdyaWRBcGksIElBZnRlckd1aUF0dGFjaGVkUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRGF0b0NvbHVtbkhlYWRlclBhcmFtcyB9IGZyb20gJy4vZ3JpZC1jb2x1bW4taGVhZGVyLnR5cGVzJztcbmltcG9ydCB7IEN1c3RvbUhlYWRlckNvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jdXN0b20taGVhZGVyLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNpemUgfSBmcm9tICcuLi8uLi91dGlscy9jb2xsZWN0aW9uJztcbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0b0dyaWRGaWx0ZXJUeXBlcyB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBEYXRvR3JpZENvbHVtbkRlZiB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgaXNBcnJheVZhbHVlc0VxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29sRmllbGQgfSBmcm9tICcuLi9ncmlkLXN0b3JlL3V0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtY29sdW1uLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWNvbHVtbi1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLWNvbHVtbi1oZWFkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZENvbHVtbkhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgSUhlYWRlckFuZ3VsYXJDb21wIHtcbiAgaGVhZGVyTmFtZTogc3RyaW5nO1xuICBoZWFkZXJUb29sdGlwOiBzdHJpbmc7XG4gIHBhcmFtczogRGF0b0NvbHVtbkhlYWRlclBhcmFtcztcbiAgY29sdW1uOiBDb2x1bW47XG4gIGN1c3RvbVRlbXBsYXRlczoge1xuICAgIGN1c3RvbUhlYWRlcj86IFRlbXBsYXRlUmVmPGFueT47XG4gICAgbW9yZU1lbnU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICB9O1xuICBzaG93RmlsdGVyOiBib29sZWFuO1xuICBzaG93TW9yZU1lbnU6IGJvb2xlYW47XG4gIGNvbnRleHQ6IHsgYXBpOiB7IGdyaWQ6IEdyaWRBcGk7IGNvbHVtbnM6IENvbHVtbkFwaSB9OyBjb2x1bW46IENvbHVtbiB9O1xuICBmaWx0ZXJBY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBmaWVsZDogc3RyaW5nO1xuICBzb3J0aW5nSW5mbyQ6IE9ic2VydmFibGU8eyBhY3RpdmU6IGJvb2xlYW47IGljb246IHN0cmluZyB9PjtcbiAgbW9yZU1lbnVPcGVuID0gZmFsc2U7XG4gIGZpbHRlcnNNZW51T3BlbiA9IGZhbHNlO1xuICBoZWFkZXJJbmZvOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjb250cm9sbGVyOiBDdXN0b21IZWFkZXJDb250cm9sbGVyU2VydmljZSxcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBhZnRlckd1aUF0dGFjaGVkKHBhcmFtcz86IElBZnRlckd1aUF0dGFjaGVkUGFyYW1zKTogdm9pZCB7fVxuXG4gIGFnSW5pdChwYXJhbXM6IERhdG9Db2x1bW5IZWFkZXJQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLmNvbHVtbiA9IHBhcmFtcy5jb2x1bW47XG4gICAgY29uc3QgY29sRGVmID0gcGFyYW1zLmNvbHVtbi5nZXRDb2xEZWYoKSBhcyBEYXRvR3JpZENvbHVtbkRlZjtcbiAgICB0aGlzLmhlYWRlckluZm8gPSBjb2xEZWYuaW5mbztcbiAgICB0aGlzLmhlYWRlck5hbWUgPSBjb2xEZWYuaGVhZGVyTmFtZTtcbiAgICB0aGlzLnNob3dGaWx0ZXIgPSBjb2xEZWYuZmlsdGVyICE9PSBEYXRvR3JpZEZpbHRlclR5cGVzLk5vbmU7XG4gICAgdGhpcy5zaG93TW9yZU1lbnUgPSBpc05pbChjb2xEZWYubW9yZU1lbnVBY3Rpb25zKSB8fCBjb2xEZWYubW9yZU1lbnVBY3Rpb25zLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5maWVsZCA9IGdldENvbEZpZWxkKGNvbERlZik7XG4gICAgdGhpcy5oZWFkZXJUb29sdGlwID0gdGhpcy5nZXRIZWFkZXJUb29sdGlwKGNvbERlZik7XG4gICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgYXBpOiB7XG4gICAgICAgIGdyaWQ6IHBhcmFtcy5hcGksXG4gICAgICAgIGNvbHVtbnM6IHBhcmFtcy5jb2x1bW5BcGlcbiAgICAgIH0sXG4gICAgICBjb2x1bW46IHRoaXMuY29sdW1uXG4gICAgfTtcbiAgICBjb25zdCB7IGdyaWRRdWVyeSwgZ3JpZFNlcnZpY2UgfSA9IHRoaXMucGFyYW1zO1xuICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzID0gZ3JpZFNlcnZpY2UuZ2V0Q3VzdG9tSGVhZGVyKHRoaXMuZmllbGQpO1xuICAgIHRoaXMuZmlsdGVyQWN0aXZlJCA9IGdyaWRRdWVyeVxuICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncy5maWx0ZXJbdGhpcy5maWVsZF0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGZpbHRlciA9PiB7XG4gICAgICAgICAgY29uc3QgaXNQaXZvdENvbHVtbk1hdGNoRmlsdGVyID0gZmlsdGVyICYmIGlzQXJyYXlWYWx1ZXNFcXVhbChmaWx0ZXIucGl2b3RLZXlzLCBjb2xEZWYucGl2b3RLZXlzKTtcblxuICAgICAgICAgIHJldHVybiBzaXplKGZpbHRlcikgPiAwICYmIGlzUGl2b3RDb2x1bW5NYXRjaEZpbHRlcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgaWYgKHRoaXMucGFyYW1zLmVuYWJsZVNvcnRpbmcpIHtcbiAgICAgIGZyb21FdmVudCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNvcnRpbmdPcmRlcjogc3RyaW5nW10gPSB0aGlzLmNvbHVtbi5nZXRDb2xEZWYoKSA/IHRoaXMuY29sdW1uLmdldENvbERlZigpLnNvcnRpbmdPcmRlciA6IG51bGw7XG4gICAgICAgICAgbGV0IHNvcnQ7XG4gICAgICAgICAgY29uc3QgY3VycmVudFNvcnQgPSB0aGlzLmNvbHVtbi5nZXRTb3J0KCk7XG4gICAgICAgICAgY29uc3QgY29sSWQgPSB0aGlzLmNvbHVtbi5nZXRDb2xJZCgpO1xuXG4gICAgICAgICAgaWYgKHNvcnRpbmdPcmRlciAmJiBzb3J0aW5nT3JkZXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNvcnRJbmRleCA9IHNvcnRpbmdPcmRlci5pbmRleE9mKGN1cnJlbnRTb3J0KTtcbiAgICAgICAgICAgIGxldCBuZXdTb3J0SW5kZXg7XG4gICAgICAgICAgICBpZiAoY3VycmVudFNvcnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgbmV3U29ydEluZGV4ID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld1NvcnRJbmRleCA9IGN1cnJlbnRTb3J0SW5kZXggPT09IHNvcnRpbmdPcmRlci5sZW5ndGggLSAxID8gMCA6IGN1cnJlbnRTb3J0SW5kZXggKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc29ydCA9IHNvcnRpbmdPcmRlcltuZXdTb3J0SW5kZXhdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ID0gY3VycmVudFNvcnQgIT09ICdhc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGdyaWRTZXJ2aWNlLl9sb2dFdmVudChDb3JlRXZlbnRUeXBlcy5HUklEX0NPTFVNTl9BQ1RJT04sIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ1NvcnQnLFxuICAgICAgICAgICAgY29sdW1uOiBjb2xJZFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGdyaWRRdWVyeS5pc1NlcnZlclNpZGUgJiYgZ3JpZFNlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcblxuICAgICAgICAgIGlmIChncmlkUXVlcnkuZ2V0R3JpZE9wdGlvbnMoKS5zb3J0QnlTdG9yZSkge1xuICAgICAgICAgICAgZ3JpZFNlcnZpY2Uuc2V0U29ydEJ5Q29sdW1uKGNvbElkLCBzb3J0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYXJhbXMuc2V0U29ydChzb3J0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5zb3J0aW5nSW5mbyQgPSBncmlkUXVlcnlcbiAgICAgICAgLndhaXRGb3JHcmlkKCgpID0+IGdyaWRRdWVyeS5ncmlkUmVmLnNvcnRDaGFuZ2VkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoe30pLFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBhY3RpdmU6IHRoaXMuY29sdW1uLmlzU29ydGluZygpLFxuICAgICAgICAgICAgICBpY29uOiAhdGhpcy5jb2x1bW4uaXNTb3J0aW5nKCkgfHwgdGhpcy5jb2x1bW4uaXNTb3J0QXNjZW5kaW5nKCkgPyAnc29ydC1hc2NlbmRpbmcnIDogJ3NvcnQtZGVzY2VuZGluZydcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRmlsdGVycyhvcmlnaW4pIHtcbiAgICB0aGlzLmZpbHRlcnNNZW51T3BlbiA9IHRydWU7XG4gICAgdGhpcy5jb250cm9sbGVyXG4gICAgICAub3BlbkZpbHRlck1lbnUob3JpZ2luLmhvc3QubmF0aXZlRWxlbWVudCwgdGhpcy5wYXJhbXMpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcnNNZW51T3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG9wZW5Nb3JlTWVudShvcmlnaW4pIHtcbiAgICB0aGlzLm1vcmVNZW51T3BlbiA9IHRydWU7XG4gICAgdGhpcy5jb250cm9sbGVyXG4gICAgICAub3Blbk1vcmVNZW51KG9yaWdpbi5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMucGFyYW1zLCB0aGlzLmN1c3RvbVRlbXBsYXRlcy5tb3JlTWVudSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubW9yZU1lbnVPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7fVxuXG4gIHByaXZhdGUgZ2V0SGVhZGVyVG9vbHRpcChpbml0aWFsQ29sRGVmOiBEYXRvR3JpZENvbHVtbkRlZik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucGFyYW1zKSB7XG4gICAgICBsZXQgY29sRGVmID0gaW5pdGlhbENvbERlZjtcblxuICAgICAgaWYgKGNvbERlZi5zaG93Um93R3JvdXApIHtcbiAgICAgICAgY29uc3Qgcm93R3JvdXBDb2x1bW5zID0gdGhpcy5wYXJhbXMuY29sdW1uQXBpLmdldFJvd0dyb3VwQ29sdW1ucygpO1xuICAgICAgICBjb25zdCByb3dHcm91cENvbHVtbiA9IHJvd0dyb3VwQ29sdW1ucyAmJiByb3dHcm91cENvbHVtbnMuZmluZChjb2wgPT4gY29sLmdldENvbElkKCkgPT09IGNvbERlZi5zaG93Um93R3JvdXApO1xuICAgICAgICBjb25zdCByb3dHcm91cENvbERlZiA9IHJvd0dyb3VwQ29sdW1uICYmIChyb3dHcm91cENvbHVtbi5nZXRDb2xEZWYoKSBhcyBEYXRvR3JpZENvbHVtbkRlZik7XG5cbiAgICAgICAgY29sRGVmID0gcm93R3JvdXBDb2xEZWYgfHwgY29sRGVmO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29sRGVmLmN1c3RvbUhlYWRlclRvb2x0aXAgfHwgY29sRGVmLmhlYWRlck5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4iXX0=