igniteui-angular 18.2.9 → 18.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/esm2022/lib/carousel/carousel-base.mjs +4 -2
  2. package/esm2022/lib/carousel/carousel.component.mjs +6 -4
  3. package/esm2022/lib/carousel/slide.component.mjs +5 -6
  4. package/esm2022/lib/core/i18n/grid-resources.mjs +3 -3
  5. package/esm2022/lib/grids/columns/column-group.component.mjs +2 -2
  6. package/esm2022/lib/grids/columns/column-layout.component.mjs +3 -3
  7. package/esm2022/lib/grids/columns/column.component.mjs +11 -8
  8. package/esm2022/lib/grids/common/grid.interface.mjs +1 -1
  9. package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +13 -6
  10. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +3 -2
  11. package/esm2022/lib/grids/grid-base.directive.mjs +16 -10
  12. package/esm2022/lib/grids/headers/pipes.mjs +2 -2
  13. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +2 -1
  14. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +1 -1
  15. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +3 -3
  16. package/esm2022/lib/grids/resizing/resizer.component.mjs +3 -3
  17. package/esm2022/lib/grids/resizing/resizer.directive.mjs +12 -3
  18. package/esm2022/lib/grids/resizing/resizing.service.mjs +4 -4
  19. package/fesm2022/igniteui-angular.mjs +72 -42
  20. package/fesm2022/igniteui-angular.mjs.map +1 -1
  21. package/lib/carousel/carousel-base.d.ts +31 -2
  22. package/lib/carousel/carousel.component.d.ts +2 -2
  23. package/lib/carousel/slide.component.d.ts +2 -3
  24. package/lib/core/styles/components/checkbox/_checkbox-component.scss +8 -4
  25. package/lib/core/styles/components/checkbox/_checkbox-theme.scss +8 -3
  26. package/lib/core/styles/components/chip/_chip-theme.scss +1 -1
  27. package/lib/core/styles/components/combo/_combo-theme.scss +2 -2
  28. package/lib/core/styles/components/grid/_excel-filtering-theme.scss +3 -7
  29. package/lib/core/styles/components/grid/_grid-theme.scss +19 -15
  30. package/lib/core/styles/components/progress/_progress-theme.scss +55 -7
  31. package/lib/core/styles/components/radio/_radio-theme.scss +0 -2
  32. package/lib/core/styles/components/switch/_switch-theme.scss +0 -2
  33. package/lib/grids/common/grid.interface.d.ts +4 -0
  34. package/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.d.ts +4 -1
  35. package/lib/grids/grid-base.directive.d.ts +5 -2
  36. package/lib/grids/pivot-grid/pivot-grid.component.d.ts +1 -1
  37. package/lib/grids/resizing/resizer.directive.d.ts +2 -0
  38. package/lib/grids/resizing/resizing.service.d.ts +2 -2
  39. package/package.json +1 -1
  40. package/styles/igniteui-angular-dark.css +1 -1
  41. package/styles/igniteui-angular.css +1 -1
  42. package/styles/igniteui-bootstrap-dark.css +1 -1
  43. package/styles/igniteui-bootstrap-light.css +1 -1
  44. package/styles/igniteui-dark-green.css +1 -1
  45. package/styles/igniteui-fluent-dark-excel.css +1 -1
  46. package/styles/igniteui-fluent-dark-word.css +1 -1
  47. package/styles/igniteui-fluent-dark.css +1 -1
  48. package/styles/igniteui-fluent-light-excel.css +1 -1
  49. package/styles/igniteui-fluent-light-word.css +1 -1
  50. package/styles/igniteui-fluent-light.css +1 -1
  51. package/styles/igniteui-indigo-dark.css +1 -1
  52. package/styles/igniteui-indigo-light.css +1 -1
  53. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  54. package/styles/maps/igniteui-angular.css.map +1 -1
  55. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  56. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  57. package/styles/maps/igniteui-dark-green.css.map +1 -1
  58. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  59. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  60. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  61. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  62. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  63. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  64. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  65. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -18,7 +18,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
18
18
  export class IgxHeaderGroupWidthPipe {
19
19
  transform(width, minWidth, hasLayout) {
20
20
  const isFitContent = width === 'fit-content';
21
- return hasLayout ? '' : isFitContent ? width : `${Math.max(parseInt(width), minWidth)}px`;
21
+ return hasLayout ? '' : isFitContent ? width : `${Math.max(parseFloat(width), minWidth)}px`;
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxHeaderGroupWidthPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
24
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.4", ngImport: i0, type: IgxHeaderGroupWidthPipe, isStandalone: true, name: "igxHeaderGroupWidth" }); }
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
52
52
  standalone: true
53
53
  }]
54
54
  }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvaGVhZGVycy9waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFTcEQsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixTQUFTLENBQUMsV0FBbUIsRUFBRSxrQkFBd0M7UUFDMUUsSUFBSSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQztRQUNqRyxPQUFPLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDOzhHQUpRLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7O0FBWUQsTUFBTSxPQUFPLHVCQUF1QjtJQUV6QixTQUFTLENBQUMsS0FBVSxFQUFFLFFBQWEsRUFBRSxTQUFrQjtRQUMxRCxNQUFNLFlBQVksR0FBRyxLQUFLLEtBQUssYUFBYSxDQUFDO1FBQzdDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDOUYsQ0FBQzs4R0FMUSx1QkFBdUI7NEdBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFKbkMsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUscUJBQXFCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7O0FBY0QsTUFBTSxPQUFPLHVCQUF1QjtJQUV6QixTQUFTLENBQUMsTUFBK0IsRUFBRSxNQUFrQixFQUFFLENBQVM7UUFDM0UsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1YsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7OEdBZlEsdUJBQXVCOzRHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSm5DLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVNvcnRpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdzb3J0aW5nSW5kZXgnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU29ydGluZ0luZGV4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sdW1uRmllbGQ6IHN0cmluZywgc29ydGluZ0V4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IG51bWJlciB7XG4gICAgICAgIGxldCBzb3J0SW5kZXggPSBzb3J0aW5nRXhwcmVzc2lvbnMuZmluZEluZGV4KGV4cHJlc3Npb24gPT4gZXhwcmVzc2lvbi5maWVsZE5hbWUgPT09IGNvbHVtbkZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHNvcnRJbmRleCAhPT0gLTEgPyArK3NvcnRJbmRleCA6IG51bGw7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneEhlYWRlckdyb3VwV2lkdGgnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4SGVhZGVyR3JvdXBXaWR0aFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0od2lkdGg6IGFueSwgbWluV2lkdGg6IGFueSwgaGFzTGF5b3V0OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGlzRml0Q29udGVudCA9IHdpZHRoID09PSAnZml0LWNvbnRlbnQnO1xuICAgICAgICByZXR1cm4gaGFzTGF5b3V0ID8gJycgOiBpc0ZpdENvbnRlbnQgPyB3aWR0aCA6IGAke01hdGgubWF4KHBhcnNlSW50KHdpZHRoKSwgbWluV2lkdGgpfXB4YDtcbiAgICB9XG59XG5cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hIZWFkZXJHcm91cFN0eWxlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEhlYWRlckdyb3VwU3R5bGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHN0eWxlczogeyBbcHJvcDogc3RyaW5nXTogYW55IH0sIGNvbHVtbjogQ29sdW1uVHlwZSwgXzogbnVtYmVyKTogeyBbcHJvcDogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICBjb25zdCBjc3MgPSB7fTtcblxuICAgICAgICBpZiAoIXN0eWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIGNzcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyhzdHlsZXMpKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBzdHlsZXNbcHJvcF07XG4gICAgICAgICAgICBjc3NbcHJvcF0gPSB0eXBlb2YgcmVzID09PSAnZnVuY3Rpb24nID8gcmVzKGNvbHVtbikgOiByZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3NzO1xuICAgIH1cbn1cbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvaGVhZGVycy9waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFTcEQsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixTQUFTLENBQUMsV0FBbUIsRUFBRSxrQkFBd0M7UUFDMUUsSUFBSSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQztRQUNqRyxPQUFPLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDOzhHQUpRLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7O0FBWUQsTUFBTSxPQUFPLHVCQUF1QjtJQUV6QixTQUFTLENBQUMsS0FBVSxFQUFFLFFBQWEsRUFBRSxTQUFrQjtRQUMxRCxNQUFNLFlBQVksR0FBRyxLQUFLLEtBQUssYUFBYSxDQUFDO1FBQzdDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDaEcsQ0FBQzs4R0FMUSx1QkFBdUI7NEdBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFKbkMsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUscUJBQXFCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7O0FBY0QsTUFBTSxPQUFPLHVCQUF1QjtJQUV6QixTQUFTLENBQUMsTUFBK0IsRUFBRSxNQUFrQixFQUFFLENBQVM7UUFDM0UsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1YsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7OEdBZlEsdUJBQXVCOzRHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSm5DLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVNvcnRpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdzb3J0aW5nSW5kZXgnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU29ydGluZ0luZGV4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sdW1uRmllbGQ6IHN0cmluZywgc29ydGluZ0V4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IG51bWJlciB7XG4gICAgICAgIGxldCBzb3J0SW5kZXggPSBzb3J0aW5nRXhwcmVzc2lvbnMuZmluZEluZGV4KGV4cHJlc3Npb24gPT4gZXhwcmVzc2lvbi5maWVsZE5hbWUgPT09IGNvbHVtbkZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHNvcnRJbmRleCAhPT0gLTEgPyArK3NvcnRJbmRleCA6IG51bGw7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneEhlYWRlckdyb3VwV2lkdGgnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4SGVhZGVyR3JvdXBXaWR0aFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0od2lkdGg6IGFueSwgbWluV2lkdGg6IGFueSwgaGFzTGF5b3V0OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGlzRml0Q29udGVudCA9IHdpZHRoID09PSAnZml0LWNvbnRlbnQnO1xuICAgICAgICByZXR1cm4gaGFzTGF5b3V0ID8gJycgOiBpc0ZpdENvbnRlbnQgPyB3aWR0aCA6IGAke01hdGgubWF4KHBhcnNlRmxvYXQod2lkdGgpLCBtaW5XaWR0aCl9cHhgO1xuICAgIH1cbn1cblxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneEhlYWRlckdyb3VwU3R5bGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4SGVhZGVyR3JvdXBTdHlsZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oc3R5bGVzOiB7IFtwcm9wOiBzdHJpbmddOiBhbnkgfSwgY29sdW1uOiBDb2x1bW5UeXBlLCBfOiBudW1iZXIpOiB7IFtwcm9wOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgICAgIGNvbnN0IGNzcyA9IHt9O1xuXG4gICAgICAgIGlmICghc3R5bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY3NzO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHN0eWxlc1twcm9wXTtcbiAgICAgICAgICAgIGNzc1twcm9wXSA9IHR5cGVvZiByZXMgPT09ICdmdW5jdGlvbicgPyByZXMoY29sdW1uKSA6IHJlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjc3M7XG4gICAgfVxufVxuIl19
@@ -108,6 +108,7 @@ export class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective {
108
108
  const columns = [];
109
109
  const topLevelCols = cols.filter(c => c.level === 0);
110
110
  topLevelCols.forEach((col) => {
111
+ col.grid = this;
111
112
  const ref = this._createColumn(col);
112
113
  ref.changeDetectorRef.detectChanges();
113
114
  columns.push(ref.instance);
@@ -227,4 +228,4 @@ const flatten = (arr) => {
227
228
  });
228
229
  return result;
229
230
  };
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpY2FsLWdyaWQtYmFzZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvaGllcmFyY2hpY2FsLWdyaWQvaGllcmFyY2hpY2FsLWdyaWQtYmFzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUVoQixlQUFlLEVBQ2YsU0FBUyxFQUdULFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxFQUVMLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLG9CQUFvQixFQUV2QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUk5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLM0MsT0FBTyxFQUFZLHFCQUFxQixFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUlyRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLHFCQUFxQixFQUFFLENBQUM7QUFFdkYsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUc7SUFDcEQsT0FBTyxFQUFFLGtCQUFrQjtJQUMzQixVQUFVLEVBQUUscUNBQXFDO0NBQ3BELENBQUM7QUFFRjs7OzJCQUcyQjtBQUUzQixNQUFNLE9BQWdCLGdDQUFpQyxTQUFRLG9CQUFvQjtJQXVDL0Usd0JBQXdCO0lBQ3hCLElBQW9CLElBQUk7UUFDcEIsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBb0IsbUJBQW1CO1FBQ25DLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDckMsQ0FBQztJQUVELG9CQUFvQjtJQUNwQjs7Ozs7T0FLRztJQUNILElBQW9CLE1BQU07UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVELG9CQUFvQjtJQUNwQjs7T0FFRztJQUNILElBQW9CLE1BQU0sQ0FBQyxHQUFRO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxHQUFHLENBQUM7SUFDcEMsQ0FBQztJQUtELElBQW9CLFlBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFvQixZQUFZLENBQUMsR0FBWTtRQUN6QyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzFCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO0lBV0QsWUFDSSxpQkFBMkMsRUFDM0MsZ0JBQXlDLEVBQ3pDLGtCQUE0QyxFQUNHLE9BQXNDLEVBQ3JGLGtCQUE2QyxFQUM3QyxVQUFtQyxFQUNuQyxJQUFZLEVBQ00sUUFBUSxFQUMxQixHQUFzQixFQUN0QixPQUF3QixFQUN4QixPQUF5QixFQUN6QixRQUFrQixFQUNsQixXQUFnQyxFQUNoQyxVQUFnRCxFQUNoRCxnQkFBcUMsRUFDckMsb0JBQTZDLEVBQ2xCLGNBQWlDLEVBQzVELGNBQXFDLEVBQ2xCLFFBQWdCLEVBQ25DLFFBQXNCLEVBQ2tCLGVBQXdEO1FBRWhHLEtBQUssQ0FDRCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixPQUFPLEVBQ1Asa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFDSCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFFBQVEsRUFDUixXQUFXLEVBQ1gsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxRQUFRLEVBQ1IsUUFBUSxFQUNSLGVBQWUsQ0FDbEIsQ0FBQztRQXpDNkMsWUFBTyxHQUFQLE9BQU8sQ0FBK0I7UUExRnpGOzs7Ozs7Ozs7O1dBVUc7UUFFSSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUU3Qjs7Ozs7Ozs7V0FRRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQW9DckQsd0JBQXdCO1FBQ2pCLHVCQUFrQixHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO0lBdUUvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUIsQ0FBQyxJQUFnQjtRQUNyQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxjQUFjLENBQUMsQ0FBQztRQUMxRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUN4RSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLOzRCQUN4RSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsS0FBSzs0QkFDNUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNwQyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDakUsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsYUFBYSxDQUFDLEdBQUc7UUFDdkIsSUFBSSxHQUFHLENBQUM7UUFDUixJQUFJLEdBQUcsWUFBWSx1QkFBdUIsRUFBRSxDQUFDO1lBQ3pDLEdBQUcsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDSixHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxHQUE0QjtRQUMzRCxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNoSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3RCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzVCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDaEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN2QixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDN0IsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUNILEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6QyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRVMsbUJBQW1CLENBQUMsR0FBRztRQUM3QixNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzSCxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNoQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksaUJBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQ3ZELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDekMsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRVMsaUJBQWlCLENBQUMsV0FBbUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFUyxZQUFZLENBQUMsSUFBeUI7UUFDNUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsT0FBTztRQUNYLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBN09pQixnQ0FBZ0MseUlBdUd0QyxxQkFBcUIsc0dBSXJCLFFBQVEsc1NBU1IsaUJBQWlCLGtEQUVqQixTQUFTLHlDQUVHLGtCQUFrQjtrR0F4SHhCLGdDQUFnQyxnR0F3QjlCLGdCQUFnQjs7MkZBeEJsQixnQ0FBZ0M7a0JBRHJELFNBQVM7OzBCQXdHRCxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBSTVCLE1BQU07MkJBQUMsUUFBUTs7MEJBU2YsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLFNBQVM7OzBCQUVoQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0E3R25DLGNBQWM7c0JBRHBCLEtBQUs7Z0JBZUMsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFhL0IsV0FBVztzQkFEakIsTUFBTTs7QUE0TVgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFVLEVBQUUsRUFBRTtJQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIGNyZWF0ZUNvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIExPQ0FMRV9JRCxcbiAgICBOZ1pvbmUsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIHJlZmxlY3RDb21wb25lbnRUeXBlLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2dyaWQtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZEFQSVNlcnZpY2UgfSBmcm9tICcuL2hpZXJhcmNoaWNhbC1ncmlkLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IElneFJvd0lzbGFuZENvbXBvbmVudCB9IGZyb20gJy4vcm93LWlzbGFuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4RmlsdGVyaW5nU2VydmljZSB9IGZyb20gJy4uL2ZpbHRlcmluZy9ncmlkLWZpbHRlcmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElneFN1bW1hcnlPcGVyYW5kIH0gZnJvbSAnLi4vc3VtbWFyaWVzL2dyaWQtc3VtbWFyeSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxHcmlkTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL2hpZXJhcmNoaWNhbC1ncmlkLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hHcmlkU3VtbWFyeVNlcnZpY2UgfSBmcm9tICcuLi9zdW1tYXJpZXMvZ3JpZC1zdW1tYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4R3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzaXppbmcvcmVzaXppbmcuc2VydmljZSc7XG5pbXBvcnQgeyBHcmlkVHlwZSwgSUdYX0dSSURfU0VSVklDRV9CQVNFLCBJUGF0aFNlZ21lbnQgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4Q29sdW1uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IElGb3JPZlN0YXRlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3Itb2YvZm9yX29mLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneEZsYXRUcmFuc2FjdGlvbkZhY3RvcnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4VHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNhY3Rpb24vaWd4LXRyYW5zYWN0aW9uJztcbmltcG9ydCB7IElneE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3ZlcmxheS9vdmVybGF5JztcbmltcG9ydCB7IFN0YXRlLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgSWd4R3JpZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IElneEdyaWRWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uL2dyaWQvZ3JpZC12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4VGV4dEhpZ2hsaWdodFNlcnZpY2UgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RleHQtaGlnaGxpZ2h0L3RleHQtaGlnaGxpZ2h0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgaGllcmFyY2hpY2FsVHJhbnNhY3Rpb25TZXJ2aWNlRmFjdG9yeSA9ICgpID0+IG5ldyBJZ3hUcmFuc2FjdGlvblNlcnZpY2UoKTtcblxuZXhwb3J0IGNvbnN0IElneEhpZXJhcmNoaWNhbFRyYW5zYWN0aW9uU2VydmljZUZhY3RvcnkgPSB7XG4gICAgcHJvdmlkZTogSWd4R3JpZFRyYW5zYWN0aW9uLFxuICAgIHVzZUZhY3Rvcnk6IGhpZXJhcmNoaWNhbFRyYW5zYWN0aW9uU2VydmljZUZhY3Rvcnlcbn07XG5cbi8qIGJsYXpvckluZGlyZWN0UmVuZGVyXG4gICBibGF6b3JDb21wb25lbnRcbiAgIG9taXRNb2R1bGVcbiAgIHdjU2tpcENvbXBvbmVudFN1ZmZpeCAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWd4SGllcmFyY2hpY2FsR3JpZEJhc2VEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hHcmlkQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEdyaWRUeXBlIHtcbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgdGhlIGtleSBpbmRpY2F0aW5nIHdoZXRoZXIgYSByb3cgaGFzIGNoaWxkcmVuLiBJZiByb3cgaGFzIG5vIGNoaWxkcmVuIGl0IGRvZXMgbm90IHJlbmRlciBhbiBleHBhbmQgaW5kaWNhdG9yLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1oaWVyYXJjaGljYWwtZ3JpZCAjZ3JpZCBbZGF0YV09XCJsb2NhbERhdGFcIiBbaGFzQ2hpbGRyZW5LZXldPVwiJ2hhc0VtcGxveWVlcydcIj5cbiAgICAgKiA8L2lneC1oaWVyYXJjaGljYWwtZ3JpZD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoYXNDaGlsZHJlbktleTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHdoZXRoZXIgdGhlIGV4cGFuZC9jb2xsYXBzZSBhbGwgYnV0dG9uIGluIHRoZSBoZWFkZXIgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgICAqXG4gICAgICogQHJlbWFya1xuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtaGllcmFyY2hpY2FsLWdyaWQgI2dyaWQgW2RhdGFdPVwibG9jYWxEYXRhXCIgW3Nob3dFeHBhbmRBbGxdPVwidHJ1ZVwiPlxuICAgICAqIDwvaWd4LWhpZXJhcmNoaWNhbC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBzaG93RXhwYW5kQWxsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gYSBuZXcgY2h1bmsgb2YgZGF0YSBpcyBsb2FkZWQgZnJvbSB2aXJ0dWFsaXphdGlvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICA8aWd4LWhpZXJhcmNoaWNhbC1ncmlkIFtpZF09XCInaWd4LWdyaWQtMSdcIiBbZGF0YV09XCJEYXRhXCIgW2F1dG9HZW5lcmF0ZV09XCJ0cnVlXCIgKGRhdGFQcmVMb2FkKT1cImhhbmRsZUV2ZW50KClcIj5cbiAgICAgKiAgPC9pZ3gtaGllcmFyY2hpY2FsLWdyaWQ+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRhdGFQcmVMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxJRm9yT2ZTdGF0ZT4oKTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdHlwZSgpOiBHcmlkVHlwZVtcInR5cGVcIl0ge1xuICAgICAgICByZXR1cm4gJ2hpZXJhcmNoaWNhbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgbWF4TGV2ZWxIZWFkZXJEZXB0aCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX21heExldmVsSGVhZGVyRGVwdGggPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX21heExldmVsSGVhZGVyRGVwdGggPSB0aGlzLmNvbHVtbnMucmVkdWNlKChhY2MsIGNvbCkgPT4gTWF0aC5tYXgoYWNjLCBjb2wubGV2ZWwpLCAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbWF4TGV2ZWxIZWFkZXJEZXB0aDtcbiAgICB9XG5cbiAgICAvKiBibGF6b3JTdXBwcmVzcyAqL1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG91dGxldCB1c2VkIHRvIGF0dGFjaCB0aGUgZ3JpZCdzIG92ZXJsYXlzIHRvLlxuICAgICAqXG4gICAgICogQHJlbWFya1xuICAgICAqIElmIHNldCwgcmV0dXJucyB0aGUgb3V0bGV0IGRlZmluZWQgb3V0c2lkZSB0aGUgZ3JpZC4gT3RoZXJ3aXNlIHJldHVybnMgdGhlIGdyaWQncyBpbnRlcm5hbCBvdXRsZXQgZGlyZWN0aXZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgb3V0bGV0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb290R3JpZCA/IHRoaXMucm9vdEdyaWQucmVzb2x2ZU91dGxldCgpIDogdGhpcy5yZXNvbHZlT3V0bGV0KCk7XG4gICAgfVxuXG4gICAgLyogYmxhem9yU3VwcHJlc3MgKi9cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBvdXRsZXQgdXNlZCB0byBhdHRhY2ggdGhlIGdyaWQncyBvdmVybGF5cyB0by5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IG91dGxldCh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLl91c2VyT3V0bGV0RGlyZWN0aXZlID0gdmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBiYXRjaEVkaXRpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgYmF0Y2hFZGl0aW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmF0Y2hFZGl0aW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgYmF0Y2hFZGl0aW5nKHZhbDogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsICE9PSB0aGlzLl9iYXRjaEVkaXRpbmcpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90cmFuc2FjdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRyYW5zYWN0aW9uU2VydmljZSh2YWwpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1RyYW5zYWN0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5iYXRjaEVkaXRpbmdDaGFuZ2UuZW1pdCh2YWwpO1xuICAgICAgICAgICAgdGhpcy5fYmF0Y2hFZGl0aW5nID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBwYXJlbnRJc2xhbmQ6IElneFJvd0lzbGFuZENvbXBvbmVudDtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgcm9vdEdyaWQ6IEdyaWRUeXBlO1xuXG4gICAgLyogYmxhem9yU3VwcHJlc3MgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZXhwYW5kQ2hpbGRyZW46IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgdmFsaWRhdGlvblNlcnZpY2U6IElneEdyaWRWYWxpZGF0aW9uU2VydmljZSxcbiAgICAgICAgc2VsZWN0aW9uU2VydmljZTogSWd4R3JpZFNlbGVjdGlvblNlcnZpY2UsXG4gICAgICAgIGNvbFJlc2l6aW5nU2VydmljZTogSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KElHWF9HUklEX1NFUlZJQ0VfQkFTRSkgcHVibGljIG92ZXJyaWRlIGdyaWRBUEk6IElneEhpZXJhcmNoaWNhbEdyaWRBUElTZXJ2aWNlLFxuICAgICAgICB0cmFuc2FjdGlvbkZhY3Rvcnk6IElneEZsYXRUcmFuc2FjdGlvbkZhY3RvcnksXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICB6b25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50LFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHZpZXdSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgZW52SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgIG5hdmlnYXRpb246IElneEhpZXJhcmNoaWNhbEdyaWROYXZpZ2F0aW9uU2VydmljZSxcbiAgICAgICAgZmlsdGVyaW5nU2VydmljZTogSWd4RmlsdGVyaW5nU2VydmljZSxcbiAgICAgICAgdGV4dEhpZ2hsaWdodFNlcnZpY2U6IElneFRleHRIaWdobGlnaHRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KElneE92ZXJsYXlTZXJ2aWNlKSBvdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2UsXG4gICAgICAgIHN1bW1hcnlTZXJ2aWNlOiBJZ3hHcmlkU3VtbWFyeVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGVJZDogc3RyaW5nLFxuICAgICAgICBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElneEdyaWRUcmFuc2FjdGlvbikgX2RpVHJhbnNhY3Rpb25zPzogVHJhbnNhY3Rpb25TZXJ2aWNlPFRyYW5zYWN0aW9uLCBTdGF0ZT4sXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgdmFsaWRhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlLFxuICAgICAgICAgICAgY29sUmVzaXppbmdTZXJ2aWNlLFxuICAgICAgICAgICAgZ3JpZEFQSSxcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uRmFjdG9yeSxcbiAgICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICAgICB6b25lLFxuICAgICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgICBjZHIsXG4gICAgICAgICAgICBkaWZmZXJzLFxuICAgICAgICAgICAgdmlld1JlZixcbiAgICAgICAgICAgIGluamVjdG9yLFxuICAgICAgICAgICAgZW52SW5qZWN0b3IsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uLFxuICAgICAgICAgICAgZmlsdGVyaW5nU2VydmljZSxcbiAgICAgICAgICAgIHRleHRIaWdobGlnaHRTZXJ2aWNlLFxuICAgICAgICAgICAgb3ZlcmxheVNlcnZpY2UsXG4gICAgICAgICAgICBzdW1tYXJ5U2VydmljZSxcbiAgICAgICAgICAgIGxvY2FsZUlkLFxuICAgICAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgICAgICBfZGlUcmFuc2FjdGlvbnMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVDb2x1bW5zTGlzdChjb2xzOiBBcnJheTxhbnk+KSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBbXTtcbiAgICAgICAgY29uc3QgdG9wTGV2ZWxDb2xzID0gY29scy5maWx0ZXIoYyA9PiBjLmxldmVsID09PSAwKTtcbiAgICAgICAgdG9wTGV2ZWxDb2xzLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fY3JlYXRlQ29sdW1uKGNvbCk7XG4gICAgICAgICAgICByZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHJlZi5pbnN0YW5jZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuKGNvbHVtbnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnMocmVzdWx0KTtcbiAgICAgICAgdGhpcy5pbml0UGlubmluZygpO1xuXG4gICAgICAgIHJlc3VsdC5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbkluaXQuZW1pdChjb2wpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBtaXJyb3IgPSByZWZsZWN0Q29tcG9uZW50VHlwZShJZ3hDb2x1bW5Db21wb25lbnQpO1xuICAgICAgICBjb25zdCBvdXRwdXRzID0gbWlycm9yLm91dHB1dHMuZmlsdGVyKG8gPT4gby5wcm9wTmFtZSAhPT0gJ2NvbHVtbkNoYW5nZScpO1xuICAgICAgICBvdXRwdXRzLmZvckVhY2gob3V0cHV0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbltvdXRwdXQucHJvcE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbltvdXRwdXQucHJvcE5hbWVdLnBpcGUodGFrZVVudGlsKGNvbHVtbi5kZXN0cm95JCkpLnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93SXNsYW5kQ29sdW1uID0gdGhpcy5wYXJlbnRJc2xhbmQuY29sdW1uTGlzdC5maW5kKChjb2wpID0+IGNvbC5maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbC5oZWFkZXIgPT09IGNvbHVtbi5oZWFkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93SXNsYW5kQ29sdW1uW291dHB1dC5wcm9wTmFtZV0uZW1pdCh7IGFyZ3MsIG93bmVyOiB0aGlzIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jcmVhdGVDb2x1bW4oY29sKSB7XG4gICAgICAgIGxldCByZWY7XG4gICAgICAgIGlmIChjb2wgaW5zdGFuY2VvZiBJZ3hDb2x1bW5Hcm91cENvbXBvbmVudCkge1xuICAgICAgICAgICAgcmVmID0gdGhpcy5fY3JlYXRlQ29sR3JvdXBDb21wb25lbnQoY29sKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZiA9IHRoaXMuX2NyZWF0ZUNvbENvbXBvbmVudChjb2wpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWY7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jcmVhdGVDb2xHcm91cENvbXBvbmVudChjb2w6IElneENvbHVtbkdyb3VwQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHJlZiA9IGNyZWF0ZUNvbXBvbmVudChJZ3hDb2x1bW5Hcm91cENvbXBvbmVudCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmVudkluamVjdG9yLCBlbGVtZW50SW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSk7XG4gICAgICAgIHJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGNvbnN0IG1pcnJvciA9IHJlZmxlY3RDb21wb25lbnRUeXBlKElneENvbHVtbkdyb3VwQ29tcG9uZW50KTtcbiAgICAgICAgbWlycm9yLmlucHV0cy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvcE5hbWUgPSBpbnB1dC5wcm9wTmFtZTtcbiAgICAgICAgICAgIHJlZi5pbnN0YW5jZVtwcm9wTmFtZV0gPSBjb2xbcHJvcE5hbWVdO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgY29sLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbCA9IHRoaXMuX2NyZWF0ZUNvbHVtbihjaGlsZCkuaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgbmV3Q29sLnBhcmVudCA9IHJlZi5pbnN0YW5jZTtcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0NvbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlZi5pbnN0YW5jZS5jaGlsZHJlbi5yZXNldChuZXdDaGlsZHJlbik7XG4gICAgICAgICAgICByZWYuaW5zdGFuY2UuY2hpbGRyZW4ubm90aWZ5T25DaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUNvbENvbXBvbmVudChjb2wpIHtcbiAgICAgICAgY29uc3QgcmVmID0gY3JlYXRlQ29tcG9uZW50KElneENvbHVtbkNvbXBvbmVudCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmVudkluamVjdG9yLCBlbGVtZW50SW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSk7XG4gICAgICAgIGNvbnN0IG1pcnJvciA9IHJlZmxlY3RDb21wb25lbnRUeXBlKElneENvbHVtbkNvbXBvbmVudCk7XG4gICAgICAgIG1pcnJvci5pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BOYW1lID0gaW5wdXQucHJvcE5hbWU7XG4gICAgICAgICAgICBpZiAoIShjb2xbcHJvcE5hbWVdIGluc3RhbmNlb2YgSWd4U3VtbWFyeU9wZXJhbmQpKSB7XG4gICAgICAgICAgICAgICAgcmVmLmluc3RhbmNlW3Byb3BOYW1lXSA9IGNvbFtwcm9wTmFtZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZi5pbnN0YW5jZVtwcm9wTmFtZV0gPSBjb2xbcHJvcE5hbWVdLmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmVmLmluc3RhbmNlLnZhbGlkYXRvcnMgPSBjb2wudmFsaWRhdG9ycztcbiAgICAgICAgcmV0dXJuIHJlZjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0R3JpZHNGb3JJc2xhbmQocm93SXNsYW5kSUQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkQVBJLmdldENoaWxkR3JpZHNGb3JSb3dJc2xhbmQocm93SXNsYW5kSUQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDaGlsZEdyaWQocGF0aDogQXJyYXk8SVBhdGhTZWdtZW50Pikge1xuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncmlkQVBJLmdldENoaWxkR3JpZChwYXRoKTtcbiAgICB9XG59XG5cbmNvbnN0IGZsYXR0ZW4gPSAoYXJyOiBhbnlbXSkgPT4ge1xuICAgIGxldCByZXN1bHQgPSBbXTtcblxuICAgIGFyci5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgcmVzdWx0LnB1c2goZWwpO1xuICAgICAgICBpZiAoZWwuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoZmxhdHRlbihlbC5jaGlsZHJlbi50b0FycmF5KCkpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuIl19
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpY2FsLWdyaWQtYmFzZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvaGllcmFyY2hpY2FsLWdyaWQvaGllcmFyY2hpY2FsLWdyaWQtYmFzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUVoQixlQUFlLEVBQ2YsU0FBUyxFQUdULFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxFQUVMLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLG9CQUFvQixFQUV2QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUk5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLM0MsT0FBTyxFQUFZLHFCQUFxQixFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUlyRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLHFCQUFxQixFQUFFLENBQUM7QUFFdkYsTUFBTSxD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QXdHRCxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBSTVCLE1BQU07MkJBQUMsUUFBUTs7MEJBU2YsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLFNBQVM7OzBCQUVoQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0E3R25DLGNBQWM7c0JBRHBCLEtBQUs7Z0JBZUMsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFhL0IsV0FBVztzQkFEakIsTUFBTTs7QUE2TVgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFVLEVBQUUsRUFBRTtJQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIGNyZWF0ZUNvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIExPQ0FMRV9JRCxcbiAgICBOZ1pvbmUsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIHJlZmxlY3RDb21wb25lbnRUeXBlLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2dyaWQtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZEFQSVNlcnZpY2UgfSBmcm9tICcuL2hpZXJhcmNoaWNhbC1ncmlkLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IElneFJvd0lzbGFuZENvbXBvbmVudCB9IGZyb20gJy4vcm93LWlzbGFuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4RmlsdGVyaW5nU2VydmljZSB9IGZyb20gJy4uL2ZpbHRlcmluZy9ncmlkLWZpbHRlcmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElneFN1bW1hcnlPcGVyYW5kIH0gZnJvbSAnLi4vc3VtbWFyaWVzL2dyaWQtc3VtbWFyeSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxHcmlkTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL2hpZXJhcmNoaWNhbC1ncmlkLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hHcmlkU3VtbWFyeVNlcnZpY2UgfSBmcm9tICcuLi9zdW1tYXJpZXMvZ3JpZC1zdW1tYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4R3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzaXppbmcvcmVzaXppbmcuc2VydmljZSc7XG5pbXBvcnQgeyBHcmlkVHlwZSwgSUdYX0dSSURfU0VSVklDRV9CQVNFLCBJUGF0aFNlZ21lbnQgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4Q29sdW1uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IElGb3JPZlN0YXRlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3Itb2YvZm9yX29mLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneEZsYXRUcmFuc2FjdGlvbkZhY3RvcnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4VHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNhY3Rpb24vaWd4LXRyYW5zYWN0aW9uJztcbmltcG9ydCB7IElneE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3ZlcmxheS9vdmVybGF5JztcbmltcG9ydCB7IFN0YXRlLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgSWd4R3JpZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IElneEdyaWRWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uL2dyaWQvZ3JpZC12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4VGV4dEhpZ2hsaWdodFNlcnZpY2UgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RleHQtaGlnaGxpZ2h0L3RleHQtaGlnaGxpZ2h0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgaGllcmFyY2hpY2FsVHJhbnNhY3Rpb25TZXJ2aWNlRmFjdG9yeSA9ICgpID0+IG5ldyBJZ3hUcmFuc2FjdGlvblNlcnZpY2UoKTtcblxuZXhwb3J0IGNvbnN0IElneEhpZXJhcmNoaWNhbFRyYW5zYWN0aW9uU2VydmljZUZhY3RvcnkgPSB7XG4gICAgcHJvdmlkZTogSWd4R3JpZFRyYW5zYWN0aW9uLFxuICAgIHVzZUZhY3Rvcnk6IGhpZXJhcmNoaWNhbFRyYW5zYWN0aW9uU2VydmljZUZhY3Rvcnlcbn07XG5cbi8qIGJsYXpvckluZGlyZWN0UmVuZGVyXG4gICBibGF6b3JDb21wb25lbnRcbiAgIG9taXRNb2R1bGVcbiAgIHdjU2tpcENvbXBvbmVudFN1ZmZpeCAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWd4SGllcmFyY2hpY2FsR3JpZEJhc2VEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hHcmlkQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEdyaWRUeXBlIHtcbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgdGhlIGtleSBpbmRpY2F0aW5nIHdoZXRoZXIgYSByb3cgaGFzIGNoaWxkcmVuLiBJZiByb3cgaGFzIG5vIGNoaWxkcmVuIGl0IGRvZXMgbm90IHJlbmRlciBhbiBleHBhbmQgaW5kaWNhdG9yLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1oaWVyYXJjaGljYWwtZ3JpZCAjZ3JpZCBbZGF0YV09XCJsb2NhbERhdGFcIiBbaGFzQ2hpbGRyZW5LZXldPVwiJ2hhc0VtcGxveWVlcydcIj5cbiAgICAgKiA8L2lneC1oaWVyYXJjaGljYWwtZ3JpZD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoYXNDaGlsZHJlbktleTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHdoZXRoZXIgdGhlIGV4cGFuZC9jb2xsYXBzZSBhbGwgYnV0dG9uIGluIHRoZSBoZWFkZXIgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgICAqXG4gICAgICogQHJlbWFya1xuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtaGllcmFyY2hpY2FsLWdyaWQgI2dyaWQgW2RhdGFdPVwibG9jYWxEYXRhXCIgW3Nob3dFeHBhbmRBbGxdPVwidHJ1ZVwiPlxuICAgICAqIDwvaWd4LWhpZXJhcmNoaWNhbC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBzaG93RXhwYW5kQWxsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gYSBuZXcgY2h1bmsgb2YgZGF0YSBpcyBsb2FkZWQgZnJvbSB2aXJ0dWFsaXphdGlvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICA8aWd4LWhpZXJhcmNoaWNhbC1ncmlkIFtpZF09XCInaWd4LWdyaWQtMSdcIiBbZGF0YV09XCJEYXRhXCIgW2F1dG9HZW5lcmF0ZV09XCJ0cnVlXCIgKGRhdGFQcmVMb2FkKT1cImhhbmRsZUV2ZW50KClcIj5cbiAgICAgKiAgPC9pZ3gtaGllcmFyY2hpY2FsLWdyaWQ+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRhdGFQcmVMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxJRm9yT2ZTdGF0ZT4oKTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdHlwZSgpOiBHcmlkVHlwZVtcInR5cGVcIl0ge1xuICAgICAgICByZXR1cm4gJ2hpZXJhcmNoaWNhbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgbWF4TGV2ZWxIZWFkZXJEZXB0aCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX21heExldmVsSGVhZGVyRGVwdGggPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX21heExldmVsSGVhZGVyRGVwdGggPSB0aGlzLmNvbHVtbnMucmVkdWNlKChhY2MsIGNvbCkgPT4gTWF0aC5tYXgoYWNjLCBjb2wubGV2ZWwpLCAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbWF4TGV2ZWxIZWFkZXJEZXB0aDtcbiAgICB9XG5cbiAgICAvKiBibGF6b3JTdXBwcmVzcyAqL1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG91dGxldCB1c2VkIHRvIGF0dGFjaCB0aGUgZ3JpZCdzIG92ZXJsYXlzIHRvLlxuICAgICAqXG4gICAgICogQHJlbWFya1xuICAgICAqIElmIHNldCwgcmV0dXJucyB0aGUgb3V0bGV0IGRlZmluZWQgb3V0c2lkZSB0aGUgZ3JpZC4gT3RoZXJ3aXNlIHJldHVybnMgdGhlIGdyaWQncyBpbnRlcm5hbCBvdXRsZXQgZGlyZWN0aXZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgb3V0bGV0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb290R3JpZCA/IHRoaXMucm9vdEdyaWQucmVzb2x2ZU91dGxldCgpIDogdGhpcy5yZXNvbHZlT3V0bGV0KCk7XG4gICAgfVxuXG4gICAgLyogYmxhem9yU3VwcHJlc3MgKi9cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBvdXRsZXQgdXNlZCB0byBhdHRhY2ggdGhlIGdyaWQncyBvdmVybGF5cyB0by5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IG91dGxldCh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLl91c2VyT3V0bGV0RGlyZWN0aXZlID0gdmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBiYXRjaEVkaXRpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgYmF0Y2hFZGl0aW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmF0Y2hFZGl0aW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgYmF0Y2hFZGl0aW5nKHZhbDogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsICE9PSB0aGlzLl9iYXRjaEVkaXRpbmcpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90cmFuc2FjdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRyYW5zYWN0aW9uU2VydmljZSh2YWwpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1RyYW5zYWN0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5iYXRjaEVkaXRpbmdDaGFuZ2UuZW1pdCh2YWwpO1xuICAgICAgICAgICAgdGhpcy5fYmF0Y2hFZGl0aW5nID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBwYXJlbnRJc2xhbmQ6IElneFJvd0lzbGFuZENvbXBvbmVudDtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgcm9vdEdyaWQ6IEdyaWRUeXBlO1xuXG4gICAgLyogYmxhem9yU3VwcHJlc3MgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZXhwYW5kQ2hpbGRyZW46IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgdmFsaWRhdGlvblNlcnZpY2U6IElneEdyaWRWYWxpZGF0aW9uU2VydmljZSxcbiAgICAgICAgc2VsZWN0aW9uU2VydmljZTogSWd4R3JpZFNlbGVjdGlvblNlcnZpY2UsXG4gICAgICAgIGNvbFJlc2l6aW5nU2VydmljZTogSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KElHWF9HUklEX1NFUlZJQ0VfQkFTRSkgcHVibGljIG92ZXJyaWRlIGdyaWRBUEk6IElneEhpZXJhcmNoaWNhbEdyaWRBUElTZXJ2aWNlLFxuICAgICAgICB0cmFuc2FjdGlvbkZhY3Rvcnk6IElneEZsYXRUcmFuc2FjdGlvbkZhY3RvcnksXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICB6b25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50LFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHZpZXdSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgZW52SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgIG5hdmlnYXRpb246IElneEhpZXJhcmNoaWNhbEdyaWROYXZpZ2F0aW9uU2VydmljZSxcbiAgICAgICAgZmlsdGVyaW5nU2VydmljZTogSWd4RmlsdGVyaW5nU2VydmljZSxcbiAgICAgICAgdGV4dEhpZ2hsaWdodFNlcnZpY2U6IElneFRleHRIaWdobGlnaHRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KElneE92ZXJsYXlTZXJ2aWNlKSBvdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2UsXG4gICAgICAgIHN1bW1hcnlTZXJ2aWNlOiBJZ3hHcmlkU3VtbWFyeVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGVJZDogc3RyaW5nLFxuICAgICAgICBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElneEdyaWRUcmFuc2FjdGlvbikgX2RpVHJhbnNhY3Rpb25zPzogVHJhbnNhY3Rpb25TZXJ2aWNlPFRyYW5zYWN0aW9uLCBTdGF0ZT4sXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgdmFsaWRhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlLFxuICAgICAgICAgICAgY29sUmVzaXppbmdTZXJ2aWNlLFxuICAgICAgICAgICAgZ3JpZEFQSSxcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uRmFjdG9yeSxcbiAgICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICAgICB6b25lLFxuICAgICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgICBjZHIsXG4gICAgICAgICAgICBkaWZmZXJzLFxuICAgICAgICAgICAgdmlld1JlZixcbiAgICAgICAgICAgIGluamVjdG9yLFxuICAgICAgICAgICAgZW52SW5qZWN0b3IsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uLFxuICAgICAgICAgICAgZmlsdGVyaW5nU2VydmljZSxcbiAgICAgICAgICAgIHRleHRIaWdobGlnaHRTZXJ2aWNlLFxuICAgICAgICAgICAgb3ZlcmxheVNlcnZpY2UsXG4gICAgICAgICAgICBzdW1tYXJ5U2VydmljZSxcbiAgICAgICAgICAgIGxvY2FsZUlkLFxuICAgICAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgICAgICBfZGlUcmFuc2FjdGlvbnMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVDb2x1bW5zTGlzdChjb2xzOiBBcnJheTxhbnk+KSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBbXTtcbiAgICAgICAgY29uc3QgdG9wTGV2ZWxDb2xzID0gY29scy5maWx0ZXIoYyA9PiBjLmxldmVsID09PSAwKTtcbiAgICAgICAgdG9wTGV2ZWxDb2xzLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgICAgICAgY29sLmdyaWQgPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fY3JlYXRlQ29sdW1uKGNvbCk7XG4gICAgICAgICAgICByZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHJlZi5pbnN0YW5jZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuKGNvbHVtbnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnMocmVzdWx0KTtcbiAgICAgICAgdGhpcy5pbml0UGlubmluZygpO1xuXG4gICAgICAgIHJlc3VsdC5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbkluaXQuZW1pdChjb2wpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBtaXJyb3IgPSByZWZsZWN0Q29tcG9uZW50VHlwZShJZ3hDb2x1bW5Db21wb25lbnQpO1xuICAgICAgICBjb25zdCBvdXRwdXRzID0gbWlycm9yLm91dHB1dHMuZmlsdGVyKG8gPT4gby5wcm9wTmFtZSAhPT0gJ2NvbHVtbkNoYW5nZScpO1xuICAgICAgICBvdXRwdXRzLmZvckVhY2gob3V0cHV0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbltvdXRwdXQucHJvcE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbltvdXRwdXQucHJvcE5hbWVdLnBpcGUodGFrZVVudGlsKGNvbHVtbi5kZXN0cm95JCkpLnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93SXNsYW5kQ29sdW1uID0gdGhpcy5wYXJlbnRJc2xhbmQuY29sdW1uTGlzdC5maW5kKChjb2wpID0+IGNvbC5maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbC5oZWFkZXIgPT09IGNvbHVtbi5oZWFkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93SXNsYW5kQ29sdW1uW291dHB1dC5wcm9wTmFtZV0uZW1pdCh7IGFyZ3MsIG93bmVyOiB0aGlzIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jcmVhdGVDb2x1bW4oY29sKSB7XG4gICAgICAgIGxldCByZWY7XG4gICAgICAgIGlmIChjb2wgaW5zdGFuY2VvZiBJZ3hDb2x1bW5Hcm91cENvbXBvbmVudCkge1xuICAgICAgICAgICAgcmVmID0gdGhpcy5fY3JlYXRlQ29sR3JvdXBDb21wb25lbnQoY29sKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZiA9IHRoaXMuX2NyZWF0ZUNvbENvbXBvbmVudChjb2wpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWY7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jcmVhdGVDb2xHcm91cENvbXBvbmVudChjb2w6IElneENvbHVtbkdyb3VwQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHJlZiA9IGNyZWF0ZUNvbXBvbmVudChJZ3hDb2x1bW5Hcm91cENvbXBvbmVudCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmVudkluamVjdG9yLCBlbGVtZW50SW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSk7XG4gICAgICAgIHJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGNvbnN0IG1pcnJvciA9IHJlZmxlY3RDb21wb25lbnRUeXBlKElneENvbHVtbkdyb3VwQ29tcG9uZW50KTtcbiAgICAgICAgbWlycm9yLmlucHV0cy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvcE5hbWUgPSBpbnB1dC5wcm9wTmFtZTtcbiAgICAgICAgICAgIHJlZi5pbnN0YW5jZVtwcm9wTmFtZV0gPSBjb2xbcHJvcE5hbWVdO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgY29sLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbCA9IHRoaXMuX2NyZWF0ZUNvbHVtbihjaGlsZCkuaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgbmV3Q29sLnBhcmVudCA9IHJlZi5pbnN0YW5jZTtcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0NvbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlZi5pbnN0YW5jZS5jaGlsZHJlbi5yZXNldChuZXdDaGlsZHJlbik7XG4gICAgICAgICAgICByZWYuaW5zdGFuY2UuY2hpbGRyZW4ubm90aWZ5T25DaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUNvbENvbXBvbmVudChjb2wpIHtcbiAgICAgICAgY29uc3QgcmVmID0gY3JlYXRlQ29tcG9uZW50KElneENvbHVtbkNvbXBvbmVudCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmVudkluamVjdG9yLCBlbGVtZW50SW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSk7XG4gICAgICAgIGNvbnN0IG1pcnJvciA9IHJlZmxlY3RDb21wb25lbnRUeXBlKElneENvbHVtbkNvbXBvbmVudCk7XG4gICAgICAgIG1pcnJvci5pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BOYW1lID0gaW5wdXQucHJvcE5hbWU7XG4gICAgICAgICAgICBpZiAoIShjb2xbcHJvcE5hbWVdIGluc3RhbmNlb2YgSWd4U3VtbWFyeU9wZXJhbmQpKSB7XG4gICAgICAgICAgICAgICAgcmVmLmluc3RhbmNlW3Byb3BOYW1lXSA9IGNvbFtwcm9wTmFtZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZi5pbnN0YW5jZVtwcm9wTmFtZV0gPSBjb2xbcHJvcE5hbWVdLmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmVmLmluc3RhbmNlLnZhbGlkYXRvcnMgPSBjb2wudmFsaWRhdG9ycztcbiAgICAgICAgcmV0dXJuIHJlZjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0R3JpZHNGb3JJc2xhbmQocm93SXNsYW5kSUQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkQVBJLmdldENoaWxkR3JpZHNGb3JSb3dJc2xhbmQocm93SXNsYW5kSUQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDaGlsZEdyaWQocGF0aDogQXJyYXk8SVBhdGhTZWdtZW50Pikge1xuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncmlkQVBJLmdldENoaWxkR3JpZChwYXRoKTtcbiAgICB9XG59XG5cbmNvbnN0IGZsYXR0ZW4gPSAoYXJyOiBhbnlbXSkgPT4ge1xuICAgIGxldCByZXN1bHQgPSBbXTtcblxuICAgIGFyci5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgcmVzdWx0LnB1c2goZWwpO1xuICAgICAgICBpZiAoZWwuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoZmxhdHRlbihlbC5jaGlsZHJlbi50b0FycmF5KCkpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuIl19