igniteui-angular 13.1.0-rc.1 → 13.1.0-rc.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.
Files changed (62) hide show
  1. package/esm2020/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +2 -2
  2. package/esm2020/lib/data-operations/pivot-sort-strategy.mjs +44 -0
  3. package/esm2020/lib/data-operations/pivot-strategy.mjs +2 -43
  4. package/esm2020/lib/grids/cell.component.mjs +1 -2
  5. package/esm2020/lib/grids/common/grid.interface.mjs +1 -1
  6. package/esm2020/lib/grids/filtering/excel-style/excel-style-search.component.mjs +6 -3
  7. package/esm2020/lib/grids/grid-base.directive.mjs +11 -11
  8. package/esm2020/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +2 -2
  9. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
  10. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +10 -10
  11. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
  12. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +31 -30
  13. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +1 -1
  14. package/esm2020/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +2 -2
  15. package/esm2020/lib/grids/hierarchical-grid/row-island.component.mjs +12 -13
  16. package/esm2020/lib/grids/pivot-grid/pivot-data-selector.component.mjs +2 -5
  17. package/esm2020/lib/grids/pivot-grid/pivot-grid-dimensions.mjs +2 -2
  18. package/esm2020/lib/grids/pivot-grid/pivot-grid.component.mjs +13 -13
  19. package/esm2020/lib/grids/pivot-grid/pivot-grid.pipes.mjs +7 -9
  20. package/esm2020/lib/grids/pivot-grid/pivot-header-row.component.mjs +6 -9
  21. package/esm2020/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +9 -10
  22. package/esm2020/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +1 -1
  23. package/esm2020/lib/grids/pivot-grid/pivot-row.component.mjs +1 -1
  24. package/esm2020/lib/grids/pivot-grid/pivot-sort-util.mjs +26 -0
  25. package/esm2020/lib/grids/pivot-grid/pivot-util.mjs +1 -23
  26. package/esm2020/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +1 -1
  27. package/esm2020/lib/grids/resizing/resize-handle.directive.mjs +1 -1
  28. package/esm2020/lib/grids/resizing/resizer.component.mjs +1 -1
  29. package/esm2020/lib/grids/resizing/resizing.service.mjs +1 -1
  30. package/esm2020/lib/grids/row.directive.mjs +1 -1
  31. package/esm2020/lib/grids/state.directive.mjs +2 -2
  32. package/esm2020/lib/grids/toolbar/grid-toolbar.base.mjs +1 -1
  33. package/esm2020/lib/grids/tree-grid/tree-grid.component.mjs +5 -7
  34. package/esm2020/lib/progressbar/progressbar.component.mjs +1 -2
  35. package/esm2020/lib/services/exporter-common/base-export-service.mjs +3 -3
  36. package/esm2020/public_api.mjs +2 -1
  37. package/fesm2015/igniteui-angular.mjs +276 -290
  38. package/fesm2015/igniteui-angular.mjs.map +1 -1
  39. package/fesm2020/igniteui-angular.mjs +276 -289
  40. package/fesm2020/igniteui-angular.mjs.map +1 -1
  41. package/lib/data-operations/pivot-sort-strategy.d.ts +16 -0
  42. package/lib/data-operations/pivot-strategy.d.ts +0 -14
  43. package/lib/grids/cell.component.d.ts +2 -2
  44. package/lib/grids/common/grid.interface.d.ts +3 -3
  45. package/lib/grids/grid-base.directive.d.ts +6 -7
  46. package/lib/grids/hierarchical-grid/hierarchical-grid-api.service.d.ts +1 -1
  47. package/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.d.ts +4 -8
  48. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +11 -6
  49. package/lib/grids/hierarchical-grid/row-island.component.d.ts +5 -5
  50. package/lib/grids/pivot-grid/pivot-grid-dimensions.d.ts +1 -1
  51. package/lib/grids/pivot-grid/pivot-grid.component.d.ts +4 -2
  52. package/lib/grids/pivot-grid/pivot-grid.pipes.d.ts +2 -2
  53. package/lib/grids/pivot-grid/pivot-header-row.component.d.ts +1 -1
  54. package/lib/grids/pivot-grid/pivot-row-dimension-content.component.d.ts +6 -6
  55. package/lib/grids/pivot-grid/pivot-sort-util.d.ts +5 -0
  56. package/lib/grids/pivot-grid/pivot-util.d.ts +0 -1
  57. package/lib/grids/row.directive.d.ts +3 -3
  58. package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -4
  59. package/lib/progressbar/progressbar.component.d.ts +1 -1
  60. package/package.json +1 -1
  61. package/public_api.d.ts +1 -0
  62. package/schematics/tsconfig.tsbuildinfo +1 -1
@@ -317,10 +317,7 @@ export class IgxPivotDataSelectorComponent {
317
317
  const itemIndex = dimension?.findIndex((x) => x?.memberName === itemId) !== -1
318
318
  ? dimension?.findIndex((x) => x.memberName === itemId)
319
319
  : dimension?.length;
320
- const dimensions = this.grid.pivotConfiguration.rows
321
- .concat(this.grid.pivotConfiguration.columns)
322
- .concat(this.grid.pivotConfiguration.filters)
323
- .filter((x) => x && x.memberName === itemId);
320
+ const dimensions = this.grid.allDimensions.filter((x) => x && x.memberName === itemId);
324
321
  const reorder = dimensionState?.findIndex((item) => item.memberName === itemId) !==
325
322
  -1;
326
323
  let targetIndex = targetId !== ""
@@ -517,4 +514,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
517
514
  }], grid: [{
518
515
  type: Input
519
516
  }] } });
520
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZGF0YS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1kYXRhLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LWRhdGEtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBVzFFLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBR3BCLGlCQUFpQixFQUNwQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFJSCxrQkFBa0IsRUFDckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY3pDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUF3SnRDLFlBQW9CLFFBQW1CLEVBQVUsR0FBc0I7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBdEp2RTs7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LENBQUMsY0FBYyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtTQUMxRDtJQUNMLENBQUM7OzBIQTNqQlEsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsa2ZDMUUxQyxxdVBBdUxBOzJGRDdHYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0kseUJBQXlCO2dJQXNCNUIsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxxQkFBcUI7c0JBRDNCLE1BQU07Z0JBb0JBLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixNQUFNO2dCQW9CQSxlQUFlO3NCQURyQixLQUFLO2dCQU9DLHFCQUFxQjtzQkFEM0IsTUFBTTtnQkFvQkEsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBUUEsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLCtCQUErQjtnQkEwR2pDLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IGZhZGVJbiwgZmFkZU91dCB9IGZyb20gXCIuLi8uLi9hbmltYXRpb25zL2ZhZGVcIjtcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5IH0gZnJvbSBcIi4uLy4uL2NvcmUvZGlzcGxheURlbnNpdHlcIjtcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3lcIjtcbmltcG9ydCB7XG4gICAgSURyYWdCYXNlRXZlbnRBcmdzLFxuICAgIElEcmFnR2hvc3RCYXNlRXZlbnRBcmdzLFxuICAgIElEcmFnTW92ZUV2ZW50QXJncyxcbiAgICBJRHJvcEJhc2VFdmVudEFyZ3MsXG4gICAgSURyb3BEcm9wcGVkRXZlbnRBcmdzXG59IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2RyYWctZHJvcC9kcmFnLWRyb3AuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBJU2VsZWN0aW9uRXZlbnRBcmdzIH0gZnJvbSBcIi4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tbW9uXCI7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFic29sdXRlU2Nyb2xsU3RyYXRlZ3ksXG4gICAgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheVNldHRpbmdzLFxuICAgIFBvc2l0aW9uU2V0dGluZ3MsXG4gICAgVmVydGljYWxBbGlnbm1lbnRcbn0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3B1YmxpY19hcGlcIjtcbmltcG9ydCB7IENvbHVtblR5cGUsIFBpdm90R3JpZFR5cGUgfSBmcm9tIFwiLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlXCI7XG5pbXBvcnQge1xuICAgIElQaXZvdEFnZ3JlZ2F0b3IsXG4gICAgSVBpdm90RGltZW5zaW9uLFxuICAgIElQaXZvdFZhbHVlLFxuICAgIFBpdm90RGltZW5zaW9uVHlwZVxufSBmcm9tIFwiLi9waXZvdC1ncmlkLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgUGl2b3RVdGlsIH0gZnJvbSAnLi9waXZvdC11dGlsJztcblxuaW50ZXJmYWNlIElEYXRhU2VsZWN0b3JQYW5lbCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGkxOG46IHN0cmluZztcbiAgICB0eXBlPzogUGl2b3REaW1lbnNpb25UeXBlO1xuICAgIGRhdGFLZXk6IHN0cmluZztcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgaXRlbUtleTogc3RyaW5nO1xuICAgIGRpc3BsYXlLZXk/OiBzdHJpbmc7XG4gICAgc29ydGFibGU6IGJvb2xlYW47XG4gICAgZHJhZ0NoYW5uZWxzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQaXZvdCBEYXRhIFNlbGVjdG9yIHByb3ZpZGVzIG1lYW5zIHRvIGNvbmZpZ3VyZSB0aGUgcGl2b3Qgc3RhdGUgb2YgdGhlIFBpdm90IEdyaWQgdmlhIGEgdmVydGljYWwgcGFuZWwgVUlcbiAqXG4gKiBAaWd4TW9kdWxlIElneFBpdm90R3JpZE1vZHVsZVxuICogQGlneEdyb3VwIEdyaWRzICYgTGlzdHNcbiAqIEBpZ3hLZXl3b3JkcyBkYXRhIHNlbGVjdG9yLCBwaXZvdCwgZ3JpZFxuICogQGlneFRoZW1lIHBpdm90LWRhdGEtc2VsZWN0b3ItdGhlbWVcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIERhdGEgU2VsZWN0b3IgaGFzIGEgc2VhcmNoYWJsZSBsaXN0IHdpdGggdGhlIGdyaWQgZGF0YSBjb2x1bW5zLFxuICogdGhlcmUgYXJlIGFsc28gZm91ciBleHBhbmRhYmxlIGFyZWFzIHVuZGVybmVhdGggZm9yIGZpbHRlcnMsIHJvd3MsIGNvbHVtbnMsIGFuZCB2YWx1ZXNcbiAqIGlzIHVzZWQgZm9yIGdyb3VwaW5nIGFuZCBhZ2dyZWdhdGluZyBzaW1wbGUgZmxhdCBkYXRhIGludG8gYSBwaXZvdCB0YWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LXBpdm90LWdyaWQgI2dyaWQxIFtkYXRhXT1cImRhdGFcIiBbcGl2b3RDb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj5cbiAqIDwvaWd4LXBpdm90LWdyaWQ+XG4gKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcImlneC1waXZvdC1kYXRhLXNlbGVjdG9yXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9waXZvdC1kYXRhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sXCIsXG59KVxuZXhwb3J0IGNsYXNzIElneFBpdm90RGF0YVNlbGVjdG9yQ29tcG9uZW50IHtcblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBjb2x1bW5zIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBjb2x1bW5zUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLmNvbHVtbnNFeHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgW2NvbHVtbnNFeHBhbmRlZF09XCJjb2x1bW5zUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyhjb2x1bW5zRXhwYW5kZWQpXT1cImNvbHVtbnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIHJvd3MgcGFuZWwgaXMgZXhwYW5kZWRcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IHJvd3NQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3Iucm93c0V4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbcm93c0V4cGFuZGVkXT1cInJvd3NQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKHJvd3NFeHBhbmRlZCldPVwicm93c1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXJzIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBmaWx0ZXJzUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLmZpbHRlcnNFeHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgW2ZpbHRlcnNFeHBhbmRlZF09XCJmaWx0ZXJzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyhmaWx0ZXJzRXhwYW5kZWQpXT1cImZpbHRlcnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJzRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJzRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgdmFsdWVzIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCB2YWx1ZXNQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3IudmFsdWVzRXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFt2YWx1ZXNFeHBhbmRlZF09XCJ2YWx1ZXNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKHZhbHVlc0V4cGFuZGVkKV09XCJ2YWx1ZXNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZXNFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlc0V4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfZ3JpZDogUGl2b3RHcmlkVHlwZTtcbiAgICBwcml2YXRlIF9kcm9wRGVsdGEgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICoqL1xuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmlneC1waXZvdC1kYXRhLXNlbGVjdG9yXCIpXG4gICAgcHVibGljIGNzc0NsYXNzID0gXCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvclwiO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqKi9cbiAgICBwdWJsaWMgZGltZW5zaW9uczogSVBpdm90RGltZW5zaW9uW107XG5cbiAgICBwcml2YXRlIF9zdWJNZW51UG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgdmVydGljYWxTdGFydFBvaW50OiBWZXJ0aWNhbEFsaWdubWVudC5Cb3R0b20sXG4gICAgICAgIGNsb3NlQW5pbWF0aW9uOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHByaXZhdGUgX3N1Yk1lbnVPdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHtcbiAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogdHJ1ZSxcbiAgICAgICAgbW9kYWw6IGZhbHNlLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQXV0b1Bvc2l0aW9uU3RyYXRlZ3koXG4gICAgICAgICAgICB0aGlzLl9zdWJNZW51UG9zaXRpb25TZXR0aW5nc1xuICAgICAgICApLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICB9O1xuICAgIHB1YmxpYyBhbmltYXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlT3V0LCB7XG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogXCIwbXNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBvcGVuQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oZmFkZUluLCB7XG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogXCIwbXNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgYWdncmVnYXRlTGlzdDogSVBpdm90QWdncmVnYXRvcltdID0gW107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHZhbHVlOiBJUGl2b3RWYWx1ZTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2hvc3RUZXh0OiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdob3N0V2lkdGg6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZHJvcEFsbG93ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGRpbXM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyB2YWx1ZXM6IElQaXZvdFZhbHVlW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIF9wYW5lbHM6IElEYXRhU2VsZWN0b3JQYW5lbFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkZpbHRlcnNcIixcbiAgICAgICAgICAgIGkxOG46ICdpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzJyxcbiAgICAgICAgICAgIHR5cGU6IFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXIsXG4gICAgICAgICAgICBkYXRhS2V5OiBcImZpbHRlckRpbWVuc2lvbnNcIixcbiAgICAgICAgICAgIGljb246IFwiZmlsdGVyX2xpc3RcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb2x1bW5zXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1ucycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uLFxuICAgICAgICAgICAgZGF0YUtleTogXCJjb2x1bW5EaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcInZpZXdfY29sdW1uXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlck5hbWVcIixcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSb3dzXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3Jfcm93cycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuUm93LFxuICAgICAgICAgICAgZGF0YUtleTogXCJyb3dEaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcInRhYmxlX3Jvd3NcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICBkcmFnQ2hhbm5lbHM6IFtcIkZpbHRlcnNcIiwgXCJDb2x1bW5zXCIsIFwiUm93c1wiXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlZhbHVlc1wiLFxuICAgICAgICAgICAgaTE4bjogJ2lneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3ZhbHVlcycsXG4gICAgICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgICAgICAgZGF0YUtleTogXCJ2YWx1ZXNcIixcbiAgICAgICAgICAgIGljb246IFwiZnVuY3Rpb25zXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlclwiLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJ2Rpc3BsYXlOYW1lJyxcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGRyYWdDaGFubmVsczogW1wiVmFsdWVzXCJdXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5RGVuc2l0eSgpOiBEaXNwbGF5RGVuc2l0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQ/LmRpc3BsYXlEZW5zaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIGdyaWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGdyaWQodmFsdWU6IFBpdm90R3JpZFR5cGUpIHtcbiAgICAgICAgdGhpcy5fZ3JpZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmRpbXMgPSB0aGlzLl9ncmlkLmFsbERpbWVuc2lvbnM7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5fZ3JpZC5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGdyaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBncmlkKCk6IFBpdm90R3JpZFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbVNvcnQoXG4gICAgICAgIF86IEV2ZW50LFxuICAgICAgICBkaW1lbnNpb246IElQaXZvdERpbWVuc2lvbixcbiAgICAgICAgZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlXG4gICAgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLl9wYW5lbHMuZmluZChcbiAgICAgICAgICAgICAgICAocGFuZWw6IElEYXRhU2VsZWN0b3JQYW5lbCkgPT4gcGFuZWwudHlwZSA9PT0gZGltZW5zaW9uVHlwZVxuICAgICAgICAgICAgKS5zb3J0YWJsZVxuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc3RhcnREaXJlY3Rpb24gPSBkaW1lbnNpb24uc29ydERpcmVjdGlvbiB8fCBTb3J0aW5nRGlyZWN0aW9uLk5vbmU7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHN0YXJ0RGlyZWN0aW9uICsgMSA+IFNvcnRpbmdEaXJlY3Rpb24uRGVzYyA/XG4gICAgICAgICAgICBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgOiBzdGFydERpcmVjdGlvbiArIDE7XG4gICAgICAgIHRoaXMuZ3JpZC5zb3J0RGltZW5zaW9uKGRpbWVuc2lvbiwgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uRmlsdGVyaW5nSWNvblBvaW50ZXJEb3duKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkZpbHRlcmluZ0ljb25DbGljayhldmVudDogTW91c2VFdmVudCwgZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24pIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgbGV0IGRpbSA9IGRpbWVuc2lvbjtcbiAgICAgICAgbGV0IGNvbDogQ29sdW1uVHlwZTtcblxuICAgICAgICB3aGlsZSAoZGltKSB7XG4gICAgICAgICAgICBjb2wgPSB0aGlzLmdyaWQuZGltZW5zaW9uRGF0YUNvbHVtbnMuZmluZChcbiAgICAgICAgICAgICAgICAoeCkgPT4geC5maWVsZCA9PT0gZGltLm1lbWJlck5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoY29sKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpbSA9IGRpbS5jaGlsZExldmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLmZpbHRlcmluZ1NlcnZpY2UudG9nZ2xlRmlsdGVyRHJvcGRvd24oZXZlbnQudGFyZ2V0LCBjb2wpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0RGltZW5zaW9uU3RhdGUoZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKSB7XG4gICAgICAgIHN3aXRjaCAoZGltZW5zaW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQucm93RGltZW5zaW9ucztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmNvbHVtbkRpbWVuc2lvbnM7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5maWx0ZXJEaW1lbnNpb25zO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbW92ZVZhbHVlSXRlbShpdGVtSWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbiA9IHRoaXMuZ3JpZC5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzO1xuICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID1cbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXIgPT09IGl0ZW1JZCkgIT09IC0xXG4gICAgICAgICAgICAgICAgPyBhZ2dyZWdhdGlvbj8uZmluZEluZGV4KCh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkKVxuICAgICAgICAgICAgICAgIDogYWdncmVnYXRpb24ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZUluZGV4ID1cbiAgICAgICAgICAgIHZhbHVlSW5kZXggKyB0aGlzLl9kcm9wRGVsdGEgPCAwID8gMCA6IHZhbHVlSW5kZXggKyB0aGlzLl9kcm9wRGVsdGE7XG5cbiAgICAgICAgY29uc3QgYWdncmVnYXRpb25JdGVtID0gYWdncmVnYXRpb24uZmluZChcbiAgICAgICAgICAgICh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkIHx8IHguZGlzcGxheU5hbWUgPT09IGl0ZW1JZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChhZ2dyZWdhdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5tb3ZlVmFsdWUoYWdncmVnYXRpb25JdGVtLCBuZXdWYWx1ZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC52YWx1ZXNDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlzLmdyaWQucGl2b3RDb25maWd1cmF0aW9uLnZhbHVlcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1Ecm9wcGVkKFxuICAgICAgICBldmVudDogSURyb3BEcm9wcGVkRXZlbnRBcmdzLFxuICAgICAgICBkaW1lbnNpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGVcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLmdyaWQuZ2V0RGltZW5zaW9uc0J5VHlwZShkaW1lbnNpb25UeXBlKTtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uU3RhdGUgPSB0aGlzLmdldERpbWVuc2lvblN0YXRlKGRpbWVuc2lvblR5cGUpO1xuICAgICAgICBjb25zdCBpdGVtSWQgPSBldmVudC5kcmFnLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pZDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SWQgPSBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQ7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbkl0ZW0gPSBkaW1lbnNpb24/LmZpbmQoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKTtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID1cbiAgICAgICAgICAgIGRpbWVuc2lvbj8uZmluZEluZGV4KCh4KSA9PiB4Py5tZW1iZXJOYW1lID09PSBpdGVtSWQpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gZGltZW5zaW9uPy5maW5kSW5kZXgoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKVxuICAgICAgICAgICAgICAgIDogZGltZW5zaW9uPy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSB0aGlzLmdyaWQucGl2b3RDb25maWd1cmF0aW9uLnJvd3NcbiAgICAgICAgICAgIC5jb25jYXQodGhpcy5ncmlkLnBpdm90Q29uZmlndXJhdGlvbi5jb2x1bW5zKVxuICAgICAgICAgICAgLmNvbmNhdCh0aGlzLmdyaWQucGl2b3RDb25maWd1cmF0aW9uLmZpbHRlcnMpXG4gICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4ICYmIHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKTtcblxuICAgICAgICBjb25zdCByZW9yZGVyID1cbiAgICAgICAgICAgIGRpbWVuc2lvblN0YXRlPy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0ubWVtYmVyTmFtZSA9PT0gaXRlbUlkKSAhPT1cbiAgICAgICAgICAgIC0xO1xuXG4gICAgICAgIGxldCB0YXJnZXRJbmRleCA9XG4gICAgICAgICAgICB0YXJnZXRJZCAhPT0gXCJcIlxuICAgICAgICAgICAgICAgID8gZGltZW5zaW9uPy5maW5kSW5kZXgoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gdGFyZ2V0SWQpXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb24/Lmxlbmd0aDtcblxuICAgICAgICBpZiAoIWRpbWVuc2lvbikge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVmFsdWVJdGVtKGl0ZW1JZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVvcmRlcikge1xuICAgICAgICAgICAgdGFyZ2V0SW5kZXggPVxuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCArIHRoaXMuX2Ryb3BEZWx0YSA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbUluZGV4ICsgdGhpcy5fZHJvcERlbHRhO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRpbWVuc2lvbkl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5tb3ZlRGltZW5zaW9uKGRpbWVuc2lvbkl0ZW0sIGRpbWVuc2lvblR5cGUsIHRhcmdldEluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0RpbSA9IGRpbWVuc2lvbnMuZmluZCgoeCkgPT4geC5tZW1iZXJOYW1lID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgdGhpcy5ncmlkLm1vdmVEaW1lbnNpb24obmV3RGltLCBkaW1lbnNpb25UeXBlLCB0YXJnZXRJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyaWQuZGltZW5zaW9uc0NoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IGRpbWVuc2lvbixcbiAgICAgICAgICAgIGRpbWVuc2lvbkNvbGxlY3Rpb25UeXBlOiBkaW1lbnNpb25UeXBlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZURyb3BEb3duKFxuICAgICAgICB2YWx1ZTogSVBpdm90VmFsdWUsXG4gICAgICAgIGRyb3Bkb3duOiBJZ3hEcm9wRG93bkNvbXBvbmVudFxuICAgICkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGRyb3Bkb3duLndpZHRoID0gXCIyMDBweFwiO1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0ZUxpc3QgPSBQaXZvdFV0aWwuZ2V0QWdncmVnYXRlTGlzdCh2YWx1ZSwgdGhpcy5ncmlkKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBkcm9wZG93bi5vcGVuKHRoaXMuX3N1Yk1lbnVPdmVybGF5U2V0dGluZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25TdW1tYXJ5Q2xpY2soXG4gICAgICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgICAgICB2YWx1ZTogSVBpdm90VmFsdWUsXG4gICAgICAgIGRyb3Bkb3duOiBJZ3hEcm9wRG93bkNvbXBvbmVudFxuICAgICkge1xuICAgICAgICB0aGlzLl9zdWJNZW51T3ZlcmxheVNldHRpbmdzLnRhcmdldCA9XG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmIChkcm9wZG93bi5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcERvd24odmFsdWUsIGRyb3Bkb3duKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNsb3NlIGZvciBwcmV2aW91cyBjaGlwXG4gICAgICAgICAgICBkcm9wZG93bi5jbG9zZSgpO1xuICAgICAgICAgICAgZHJvcGRvd24uY2xvc2VkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURyb3BEb3duKHZhbHVlLCBkcm9wZG93bik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25BZ2dyZWdhdGlvbkNoYW5nZShldmVudDogSVNlbGVjdGlvbkV2ZW50QXJncykge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChldmVudC5uZXdTZWxlY3Rpb24udmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlLmFnZ3JlZ2F0ZSA9IGV2ZW50Lm5ld1NlbGVjdGlvbi52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5waXBlVHJpZ2dlcisrO1xuICAgICAgICAgICAgdGhpcy5ncmlkLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNTZWxlY3RlZCh2YWw6IElQaXZvdEFnZ3JlZ2F0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuYWdncmVnYXRlLmtleSA9PT0gdmFsLmtleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdob3N0Q3JlYXRlZChldmVudDogSURyYWdHaG9zdEJhc2VFdmVudEFyZ3MsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgeyB3aWR0aDogaXRlbVdpZHRoIH0gPVxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLmdob3N0V2lkdGggPSBpdGVtV2lkdGg7XG4gICAgICAgIHRoaXMuZ2hvc3RUZXh0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInBvc2l0aW9uXCIsXG4gICAgICAgICAgICBcImFic29sdXRlXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIFwidmlzaWJpbGl0eVwiLFxuICAgICAgICAgICAgXCJoaWRkZW5cIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlSXRlbShpdGVtOiBJUGl2b3REaW1lbnNpb24gfCBJUGl2b3RWYWx1ZSkge1xuICAgICAgICBpZiAoaXRlbSBhcyBJUGl2b3RWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnRvZ2dsZVZhbHVlKGl0ZW0gYXMgSVBpdm90VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0gYXMgSVBpdm90RGltZW5zaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQudG9nZ2xlRGltZW5zaW9uKGl0ZW0gYXMgSVBpdm90RGltZW5zaW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25QYW5lbEVudHJ5KGV2ZW50OiBJRHJvcEJhc2VFdmVudEFyZ3MsIHBhbmVsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kcm9wQWxsb3dlZCA9IGV2ZW50LmRyYWdEYXRhLmdyaWRJRCA9PT0gdGhpcy5ncmlkLmlkICYmIGV2ZW50LmRyYWdEYXRhLnNlbGVjdG9yQ2hhbm5lbHM/LnNvbWUoXG4gICAgICAgICAgICAoY2hhbm5lbDogc3RyaW5nKSA9PiBjaGFubmVsID09PSBwYW5lbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJhZ01vdmUoZXZlbnQ6IElEcmFnTW92ZUV2ZW50QXJncykge1xuICAgICAgICBjb25zdCBjbGllbnRSZWN0ID1cbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5fZHJvcERlbHRhID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgIChldmVudC5uZXh0UGFnZVkgLSBldmVudC5zdGFydFkpIC8gY2xpZW50UmVjdC5oZWlnaHRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbURyYWdFbmQoZXZlbnQ6IElEcmFnQmFzZUV2ZW50QXJncykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJwb3NpdGlvblwiLFxuICAgICAgICAgICAgXCJzdGF0aWNcIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJ2aXNpYmlsaXR5XCIsXG4gICAgICAgICAgICBcInZpc2libGVcIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJhZ092ZXIoZXZlbnQ6IElEcm9wQmFzZUV2ZW50QXJncykge1xuICAgICAgICBpZiAodGhpcy5kcm9wQWxsb3dlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgXCJpZ3gtZHJhZy0tcHVzaFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnTGVhdmUoZXZlbnQ6IElEcm9wQmFzZUV2ZW50QXJncykge1xuICAgICAgICBpZiAodGhpcy5kcm9wQWxsb3dlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgXCJpZ3gtZHJhZy0tcHVzaFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhbmVsQ29sbGFwc2VkKHBhbmVsVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHN3aXRjaChwYW5lbFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuY29sdW1uc0V4cGFuZGVkO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuRmlsdGVyOlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5maWx0ZXJzRXhwYW5kZWQ7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5Sb3c6XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLnJvd3NFeHBhbmRlZDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlc0V4cGFuZGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29sbGFwc2VDaGFuZ2UodmFsdWU6IGJvb2xlYW4sIHBhbmVsVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaChwYW5lbFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuY29sdW1uc0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcjpcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZmlsdGVyc0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLlJvdzpcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMucm93c0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy52YWx1ZXNFeHBhbmRlZClcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fZmlsdGVyXCI+XG4gICAgPGlneC1pbnB1dC1ncm91cCB0eXBlPVwiYm94XCIgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCI+XG4gICAgICAgIDxpZ3gtaWNvbiBpZ3hQcmVmaXg+c2VhcmNoPC9pZ3gtaWNvbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIGlneElucHV0XG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgLz5cbiAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAgICA8aWd4LWxpc3QgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCI+XG4gICAgICAgIDxpZ3gtbGlzdC1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBkaW1zXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyUGl2b3RJdGVtczogaW5wdXQudmFsdWU6Z3JpZC5waXBlVHJpZ2dlclxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtpZF09XCJpdGVtLm1lbWJlck5hbWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxsZWRieV09XCJpdGVtLm1lbWJlck5hbWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0uZW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgPjwvaWd4LWNoZWNrYm94PlxuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5tZW1iZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICA8L2lneC1saXN0LWl0ZW0+XG4gICAgICAgIDxpZ3gtbGlzdC1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJQaXZvdEl0ZW1zOiBpbnB1dC52YWx1ZTpncmlkLnBpcGVUcmlnZ2VyXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2lkXT1cIml0ZW0ubWVtYmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1jaGVja2JveFxuICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsbGVkYnldPVwiaXRlbS5tZW1iZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0uZW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgPjwvaWd4LWNoZWNrYm94PlxuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5kaXNwbGF5TmFtZSB8fCBpdGVtLm1lbWJlciB9fTwvc3Bhbj5cbiAgICAgICAgPC9pZ3gtbGlzdC1pdGVtPlxuICAgIDwvaWd4LWxpc3Q+XG48L2Rpdj5cblxuPGlneC1hY2NvcmRpb24+XG4gICAgPGlneC1leHBhbnNpb24tcGFuZWxcbiAgICAgICAgKm5nRm9yPVwibGV0IHBhbmVsIG9mIF9wYW5lbHNcIlxuICAgICAgICBbYW5pbWF0aW9uU2V0dGluZ3NdPVwiYW5pbWF0aW9uU2V0dGluZ3NcIlxuICAgICAgICBbY29sbGFwc2VkXT1cImdldFBhbmVsQ29sbGFwc2VkKHBhbmVsLnR5cGUpXCJcbiAgICAgICAgKGNvbGxhcHNlZENoYW5nZSk9XCJvbkNvbGxhcHNlQ2hhbmdlKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgID5cbiAgICAgICAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICBpY29uUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBpZ3hEcm9wXG4gICAgICAgICAgICAoZW50ZXIpPVwib25QYW5lbEVudHJ5KCRldmVudCwgcGFuZWwubmFtZSlcIlxuICAgICAgICAgICAgKGRyb3BwZWQpPVwib25JdGVtRHJvcHBlZCgkZXZlbnQsIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1leHBhbnNpb24tcGFuZWwtdGl0bGUgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2hlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBncmlkLnJlc291cmNlU3RyaW5nc1twYW5lbC5pMThuXSB9fVxuICAgICAgICAgICAgICAgIDwvaDY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXItZXh0cmFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uPnt7IHBhbmVsLmljb24gfX08L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWNoaXA+e3sgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCB9fTwvaWd4LWNoaXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2lneC1leHBhbnNpb24tcGFuZWwtdGl0bGU+XG4gICAgICAgIDwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWJvZHlcbiAgICAgICAgICAgIGlneERyb3BcbiAgICAgICAgICAgIChlbnRlcik9XCJvblBhbmVsRW50cnkoJGV2ZW50LCBwYW5lbC5uYW1lKVwiXG4gICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWxpc3RcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuZ3JpZFtwYW5lbC5kYXRhS2V5XS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpZ3gtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgIGlneERyb3BcbiAgICAgICAgICAgICAgICAgICAgW2lneERyYWddPVwieyBncmlkSUQ6IGdyaWQuaWQsIHNlbGVjdG9yQ2hhbm5lbHM6IHBhbmVsLmRyYWdDaGFubmVscyB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2dob3N0VGVtcGxhdGVdPVwiaXRlbUdob3N0XCJcbiAgICAgICAgICAgICAgICAgICAgKGdob3N0Q3JlYXRlKT1cImdob3N0Q3JlYXRlZCgkZXZlbnQsIGl0ZW1bcGFuZWwuaXRlbUtleV0pXCJcbiAgICAgICAgICAgICAgICAgICAgKG92ZXIpPVwib25JdGVtRHJhZ092ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChsZWF2ZSk9XCJvbkl0ZW1EcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChkcmFnTW92ZSk9XCJvbkl0ZW1EcmFnTW92ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdFbmQpPVwib25JdGVtRHJhZ0VuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyb3BwZWQpPVwib25JdGVtRHJvcHBlZCgkZXZlbnQsIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKmlneEZvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsT3JpZW50YXRpb246ICd2ZXJ0aWNhbCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW1bcGFuZWwuaXRlbUtleV1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS1zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbVNvcnQoJGV2ZW50LCBpdGVtLCBwYW5lbC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19hY3Rpb24tc29ydF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwuc29ydGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGFuZWwudHlwZSA9PT0gbnVsbFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmFnZ3JlZ2F0ZS5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGFuZWwudHlwZSA9PT0gbnVsbFwiPig8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW1bcGFuZWwuZGlzcGxheUtleV0gfHwgaXRlbVtwYW5lbC5pdGVtS2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fYWN0aW9uLXNvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnNvcnRhYmxlICYmIGl0ZW0uc29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zb3J0RGlyZWN0aW9uIDwgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJhcnJvd191cHdhcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJhcnJvd19kb3dud2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pZ3gtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19hY3Rpb24tZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbC50eXBlICE9PSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50ZXJkb3duKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaWx0ZXJpbmdJY29uUG9pbnRlckRvd24oJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXJpbmdJY29uQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5maWx0ZXJfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaWd4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1zdW1tYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VtbWFyeUNsaWNrKCRldmVudCwgaXRlbSwgZHJvcGRvd24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lneERyb3BEb3duSXRlbU5hdmlnYXRpb25dPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pZ3gtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd4RHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19hY3Rpb24tbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFuZWwuZHJhZ0NoYW5uZWxzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ZHJhZ19oYW5kbGU8L2lneC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvaWd4LWxpc3QtaXRlbT5cbiAgICAgICAgICAgIDwvaWd4LWxpc3Q+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fZW1wdHlcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfcGFuZWxfZW1wdHkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lneC1leHBhbnNpb24tcGFuZWwtYm9keT5cbiAgICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG48L2lneC1hY2NvcmRpb24+XG5cbjxpZ3gtZHJvcC1kb3duICNkcm9wZG93biAoc2VsZWN0aW9uQ2hhbmdpbmcpPVwib25BZ2dyZWdhdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPGlneC1kcm9wLWRvd24taXRlbVxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhZ2dyZWdhdGVMaXN0XCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgPlxuICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgPC9pZ3gtZHJvcC1kb3duLWl0ZW0+XG48L2lneC1kcm9wLWRvd24+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbUdob3N0PlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS1naG9zdFwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJnaG9zdFdpZHRoXCJcbiAgICAgICAgW2NsYXNzLmlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLWdob3N0LS1uby1kcm9wXT1cIiFkcm9wQWxsb3dlZFwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZ2hvc3QtdGV4dFwiPlxuICAgICAgICAgICAgPGlneC1pY29uPnVuZm9sZF9tb3JlPC9pZ3gtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGdob3N0VGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpZ3gtaWNvbj5kcmFnX2hhbmRsZTwvaWd4LWljb24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
517
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZGF0YS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1kYXRhLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LWRhdGEtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBVTFFLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBR3BCLGlCQUFpQixFQUNwQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFJSCxrQkFBa0IsRUFDckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY3pDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUF3SnRDLFlBQW9CLFFBQW1CLEVBQVUsR0FBc0I7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBdEp2RTs7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QUE3Qiw2QkFBNkIsa2ZDekUxQyxxdVBBdUxBOzJGRDlHYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0kseUJBQXlCO2dJQXNCNUIsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxxQkFBcUI7c0JBRDNCLE1BQU07Z0JBb0JBLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixNQUFNO2dCQW9CQSxlQUFlO3NCQURyQixLQUFLO2dCQU9DLHFCQUFxQjtzQkFEM0IsTUFBTTtnQkFvQkEsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBUUEsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLCtCQUErQjtnQkEwR2pDLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IGZhZGVJbiwgZmFkZU91dCB9IGZyb20gXCIuLi8uLi9hbmltYXRpb25zL2ZhZGVcIjtcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5IH0gZnJvbSBcIi4uLy4uL2NvcmUvZGlzcGxheURlbnNpdHlcIjtcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3lcIjtcbmltcG9ydCB7XG4gICAgSURyYWdCYXNlRXZlbnRBcmdzLFxuICAgIElEcmFnR2hvc3RCYXNlRXZlbnRBcmdzLFxuICAgIElEcmFnTW92ZUV2ZW50QXJncyxcbiAgICBJRHJvcEJhc2VFdmVudEFyZ3MsXG4gICAgSURyb3BEcm9wcGVkRXZlbnRBcmdzXG59IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2RyYWctZHJvcC9kcmFnLWRyb3AuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBJU2VsZWN0aW9uRXZlbnRBcmdzIH0gZnJvbSBcIi4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tbW9uXCI7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtcbiAgICBBYnNvbHV0ZVNjcm9sbFN0cmF0ZWd5LFxuICAgIEF1dG9Qb3NpdGlvblN0cmF0ZWd5LFxuICAgIE92ZXJsYXlTZXR0aW5ncyxcbiAgICBQb3NpdGlvblNldHRpbmdzLFxuICAgIFZlcnRpY2FsQWxpZ25tZW50XG59IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpXCI7XG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBQaXZvdEdyaWRUeXBlIH0gZnJvbSBcIi4uL2NvbW1vbi9ncmlkLmludGVyZmFjZVwiO1xuaW1wb3J0IHtcbiAgICBJUGl2b3RBZ2dyZWdhdG9yLFxuICAgIElQaXZvdERpbWVuc2lvbixcbiAgICBJUGl2b3RWYWx1ZSxcbiAgICBQaXZvdERpbWVuc2lvblR5cGVcbn0gZnJvbSBcIi4vcGl2b3QtZ3JpZC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFBpdm90VXRpbCB9IGZyb20gJy4vcGl2b3QtdXRpbCc7XG5cbmludGVyZmFjZSBJRGF0YVNlbGVjdG9yUGFuZWwge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpMThuOiBzdHJpbmc7XG4gICAgdHlwZT86IFBpdm90RGltZW5zaW9uVHlwZTtcbiAgICBkYXRhS2V5OiBzdHJpbmc7XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIGl0ZW1LZXk6IHN0cmluZztcbiAgICBkaXNwbGF5S2V5Pzogc3RyaW5nO1xuICAgIHNvcnRhYmxlOiBib29sZWFuO1xuICAgIGRyYWdDaGFubmVsczogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGl2b3QgRGF0YSBTZWxlY3RvciBwcm92aWRlcyBtZWFucyB0byBjb25maWd1cmUgdGhlIHBpdm90IHN0YXRlIG9mIHRoZSBQaXZvdCBHcmlkIHZpYSBhIHZlcnRpY2FsIHBhbmVsIFVJXG4gKlxuICogQGlneE1vZHVsZSBJZ3hQaXZvdEdyaWRNb2R1bGVcbiAqIEBpZ3hHcm91cCBHcmlkcyAmIExpc3RzXG4gKiBAaWd4S2V5d29yZHMgZGF0YSBzZWxlY3RvciwgcGl2b3QsIGdyaWRcbiAqIEBpZ3hUaGVtZSBwaXZvdC1kYXRhLXNlbGVjdG9yLXRoZW1lXG4gKiBAcmVtYXJrc1xuICogVGhlIElnbml0ZSBVSSBEYXRhIFNlbGVjdG9yIGhhcyBhIHNlYXJjaGFibGUgbGlzdCB3aXRoIHRoZSBncmlkIGRhdGEgY29sdW1ucyxcbiAqIHRoZXJlIGFyZSBhbHNvIGZvdXIgZXhwYW5kYWJsZSBhcmVhcyB1bmRlcm5lYXRoIGZvciBmaWx0ZXJzLCByb3dzLCBjb2x1bW5zLCBhbmQgdmFsdWVzXG4gKiBpcyB1c2VkIGZvciBncm91cGluZyBhbmQgYWdncmVnYXRpbmcgc2ltcGxlIGZsYXQgZGF0YSBpbnRvIGEgcGl2b3QgdGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1waXZvdC1ncmlkICNncmlkMSBbZGF0YV09XCJkYXRhXCIgW3Bpdm90Q29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+XG4gKiA8L2lneC1waXZvdC1ncmlkPlxuICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvclwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vcGl2b3QtZGF0YS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hQaXZvdERhdGFTZWxlY3RvckNvbXBvbmVudCB7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgY29sdW1ucyBwYW5lbCBpcyBleHBhbmRlZFxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY29sdW1uc1BhbmVsU3RhdGU6IGJvb2xlYW4gPSB0aGlzLmRhdGFTZWxlY3Rvci5jb2x1bW5zRXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFtjb2x1bW5zRXhwYW5kZWRdPVwiY29sdW1uc1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmc6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFsoY29sdW1uc0V4cGFuZGVkKV09XCJjb2x1bW5zUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sdW1uc0V4cGFuZGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29sdW1uc0V4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIHJvd3MgcGFuZWwgaXMgZXhwYW5kZWRcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IHJvd3NQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3Iucm93c0V4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbcm93c0V4cGFuZGVkXT1cInJvd3NQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKHJvd3NFeHBhbmRlZCldPVwicm93c1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXJzIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBmaWx0ZXJzUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLmZpbHRlcnNFeHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgW2ZpbHRlcnNFeHBhbmRlZF09XCJmaWx0ZXJzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyhmaWx0ZXJzRXhwYW5kZWQpXT1cImZpbHRlcnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJzRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJzRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgdmFsdWVzIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCB2YWx1ZXNQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3IudmFsdWVzRXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFt2YWx1ZXNFeHBhbmRlZF09XCJ2YWx1ZXNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKHZhbHVlc0V4cGFuZGVkKV09XCJ2YWx1ZXNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZXNFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlc0V4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfZ3JpZDogUGl2b3RHcmlkVHlwZTtcbiAgICBwcml2YXRlIF9kcm9wRGVsdGEgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICoqL1xuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmlneC1waXZvdC1kYXRhLXNlbGVjdG9yXCIpXG4gICAgcHVibGljIGNzc0NsYXNzID0gXCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvclwiO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqKi9cbiAgICBwdWJsaWMgZGltZW5zaW9uczogSVBpdm90RGltZW5zaW9uW107XG5cbiAgICBwcml2YXRlIF9zdWJNZW51UG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgdmVydGljYWxTdGFydFBvaW50OiBWZXJ0aWNhbEFsaWdubWVudC5Cb3R0b20sXG4gICAgICAgIGNsb3NlQW5pbWF0aW9uOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHByaXZhdGUgX3N1Yk1lbnVPdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHtcbiAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogdHJ1ZSxcbiAgICAgICAgbW9kYWw6IGZhbHNlLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQXV0b1Bvc2l0aW9uU3RyYXRlZ3koXG4gICAgICAgICAgICB0aGlzLl9zdWJNZW51UG9zaXRpb25TZXR0aW5nc1xuICAgICAgICApLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICB9O1xuICAgIHB1YmxpYyBhbmltYXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlT3V0LCB7XG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogXCIwbXNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBvcGVuQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oZmFkZUluLCB7XG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogXCIwbXNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgYWdncmVnYXRlTGlzdDogSVBpdm90QWdncmVnYXRvcltdID0gW107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHZhbHVlOiBJUGl2b3RWYWx1ZTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2hvc3RUZXh0OiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdob3N0V2lkdGg6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZHJvcEFsbG93ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGRpbXM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyB2YWx1ZXM6IElQaXZvdFZhbHVlW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIF9wYW5lbHM6IElEYXRhU2VsZWN0b3JQYW5lbFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkZpbHRlcnNcIixcbiAgICAgICAgICAgIGkxOG46ICdpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzJyxcbiAgICAgICAgICAgIHR5cGU6IFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXIsXG4gICAgICAgICAgICBkYXRhS2V5OiBcImZpbHRlckRpbWVuc2lvbnNcIixcbiAgICAgICAgICAgIGljb246IFwiZmlsdGVyX2xpc3RcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb2x1bW5zXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1ucycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uLFxuICAgICAgICAgICAgZGF0YUtleTogXCJjb2x1bW5EaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcInZpZXdfY29sdW1uXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlck5hbWVcIixcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSb3dzXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3Jfcm93cycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuUm93LFxuICAgICAgICAgICAgZGF0YUtleTogXCJyb3dEaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcInRhYmxlX3Jvd3NcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICBkcmFnQ2hhbm5lbHM6IFtcIkZpbHRlcnNcIiwgXCJDb2x1bW5zXCIsIFwiUm93c1wiXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlZhbHVlc1wiLFxuICAgICAgICAgICAgaTE4bjogJ2lneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3ZhbHVlcycsXG4gICAgICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgICAgICAgZGF0YUtleTogXCJ2YWx1ZXNcIixcbiAgICAgICAgICAgIGljb246IFwiZnVuY3Rpb25zXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlclwiLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJ2Rpc3BsYXlOYW1lJyxcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGRyYWdDaGFubmVsczogW1wiVmFsdWVzXCJdXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5RGVuc2l0eSgpOiBEaXNwbGF5RGVuc2l0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQ/LmRpc3BsYXlEZW5zaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIGdyaWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGdyaWQodmFsdWU6IFBpdm90R3JpZFR5cGUpIHtcbiAgICAgICAgdGhpcy5fZ3JpZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmRpbXMgPSB0aGlzLl9ncmlkLmFsbERpbWVuc2lvbnM7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5fZ3JpZC5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGdyaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBncmlkKCk6IFBpdm90R3JpZFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbVNvcnQoXG4gICAgICAgIF86IEV2ZW50LFxuICAgICAgICBkaW1lbnNpb246IElQaXZvdERpbWVuc2lvbixcbiAgICAgICAgZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlXG4gICAgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLl9wYW5lbHMuZmluZChcbiAgICAgICAgICAgICAgICAocGFuZWw6IElEYXRhU2VsZWN0b3JQYW5lbCkgPT4gcGFuZWwudHlwZSA9PT0gZGltZW5zaW9uVHlwZVxuICAgICAgICAgICAgKS5zb3J0YWJsZVxuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc3RhcnREaXJlY3Rpb24gPSBkaW1lbnNpb24uc29ydERpcmVjdGlvbiB8fCBTb3J0aW5nRGlyZWN0aW9uLk5vbmU7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHN0YXJ0RGlyZWN0aW9uICsgMSA+IFNvcnRpbmdEaXJlY3Rpb24uRGVzYyA/XG4gICAgICAgICAgICBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgOiBzdGFydERpcmVjdGlvbiArIDE7XG4gICAgICAgIHRoaXMuZ3JpZC5zb3J0RGltZW5zaW9uKGRpbWVuc2lvbiwgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uRmlsdGVyaW5nSWNvblBvaW50ZXJEb3duKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkZpbHRlcmluZ0ljb25DbGljayhldmVudDogTW91c2VFdmVudCwgZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24pIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgbGV0IGRpbSA9IGRpbWVuc2lvbjtcbiAgICAgICAgbGV0IGNvbDogQ29sdW1uVHlwZTtcblxuICAgICAgICB3aGlsZSAoZGltKSB7XG4gICAgICAgICAgICBjb2wgPSB0aGlzLmdyaWQuZGltZW5zaW9uRGF0YUNvbHVtbnMuZmluZChcbiAgICAgICAgICAgICAgICAoeCkgPT4geC5maWVsZCA9PT0gZGltLm1lbWJlck5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoY29sKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpbSA9IGRpbS5jaGlsZExldmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLmZpbHRlcmluZ1NlcnZpY2UudG9nZ2xlRmlsdGVyRHJvcGRvd24oZXZlbnQudGFyZ2V0LCBjb2wpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0RGltZW5zaW9uU3RhdGUoZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKSB7XG4gICAgICAgIHN3aXRjaCAoZGltZW5zaW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQucm93RGltZW5zaW9ucztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmNvbHVtbkRpbWVuc2lvbnM7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5maWx0ZXJEaW1lbnNpb25zO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbW92ZVZhbHVlSXRlbShpdGVtSWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbiA9IHRoaXMuZ3JpZC5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzO1xuICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID1cbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXIgPT09IGl0ZW1JZCkgIT09IC0xXG4gICAgICAgICAgICAgICAgPyBhZ2dyZWdhdGlvbj8uZmluZEluZGV4KCh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkKVxuICAgICAgICAgICAgICAgIDogYWdncmVnYXRpb24ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZUluZGV4ID1cbiAgICAgICAgICAgIHZhbHVlSW5kZXggKyB0aGlzLl9kcm9wRGVsdGEgPCAwID8gMCA6IHZhbHVlSW5kZXggKyB0aGlzLl9kcm9wRGVsdGE7XG5cbiAgICAgICAgY29uc3QgYWdncmVnYXRpb25JdGVtID0gYWdncmVnYXRpb24uZmluZChcbiAgICAgICAgICAgICh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkIHx8IHguZGlzcGxheU5hbWUgPT09IGl0ZW1JZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChhZ2dyZWdhdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5tb3ZlVmFsdWUoYWdncmVnYXRpb25JdGVtLCBuZXdWYWx1ZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC52YWx1ZXNDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlzLmdyaWQucGl2b3RDb25maWd1cmF0aW9uLnZhbHVlcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1Ecm9wcGVkKFxuICAgICAgICBldmVudDogSURyb3BEcm9wcGVkRXZlbnRBcmdzLFxuICAgICAgICBkaW1lbnNpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGVcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLmdyaWQuZ2V0RGltZW5zaW9uc0J5VHlwZShkaW1lbnNpb25UeXBlKTtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uU3RhdGUgPSB0aGlzLmdldERpbWVuc2lvblN0YXRlKGRpbWVuc2lvblR5cGUpO1xuICAgICAgICBjb25zdCBpdGVtSWQgPSBldmVudC5kcmFnLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pZDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SWQgPSBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQ7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbkl0ZW0gPSBkaW1lbnNpb24/LmZpbmQoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKTtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID1cbiAgICAgICAgICAgIGRpbWVuc2lvbj8uZmluZEluZGV4KCh4KSA9PiB4Py5tZW1iZXJOYW1lID09PSBpdGVtSWQpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gZGltZW5zaW9uPy5maW5kSW5kZXgoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKVxuICAgICAgICAgICAgICAgIDogZGltZW5zaW9uPy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSB0aGlzLmdyaWQuYWxsRGltZW5zaW9ucy5maWx0ZXIoKHgpID0+IHggJiYgeC5tZW1iZXJOYW1lID09PSBpdGVtSWQpO1xuXG4gICAgICAgIGNvbnN0IHJlb3JkZXIgPVxuICAgICAgICAgICAgZGltZW5zaW9uU3RhdGU/LmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5tZW1iZXJOYW1lID09PSBpdGVtSWQpICE9PVxuICAgICAgICAgICAgLTE7XG5cbiAgICAgICAgbGV0IHRhcmdldEluZGV4ID1cbiAgICAgICAgICAgIHRhcmdldElkICE9PSBcIlwiXG4gICAgICAgICAgICAgICAgPyBkaW1lbnNpb24/LmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXJOYW1lID09PSB0YXJnZXRJZClcbiAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbj8ubGVuZ3RoO1xuXG4gICAgICAgIGlmICghZGltZW5zaW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVWYWx1ZUl0ZW0oaXRlbUlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZW9yZGVyKSB7XG4gICAgICAgICAgICB0YXJnZXRJbmRleCA9XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ICsgdGhpcy5fZHJvcERlbHRhIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtSW5kZXggKyB0aGlzLl9kcm9wRGVsdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGltZW5zaW9uSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLm1vdmVEaW1lbnNpb24oZGltZW5zaW9uSXRlbSwgZGltZW5zaW9uVHlwZSwgdGFyZ2V0SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmV3RGltID0gZGltZW5zaW9ucy5maW5kKCh4KSA9PiB4Lm1lbWJlck5hbWUgPT09IGl0ZW1JZCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQubW92ZURpbWVuc2lvbihuZXdEaW0sIGRpbWVuc2lvblR5cGUsIHRhcmdldEluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZC5kaW1lbnNpb25zQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgZGltZW5zaW9uczogZGltZW5zaW9uLFxuICAgICAgICAgICAgZGltZW5zaW9uQ29sbGVjdGlvblR5cGU6IGRpbWVuc2lvblR5cGUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRHJvcERvd24oXG4gICAgICAgIHZhbHVlOiBJUGl2b3RWYWx1ZSxcbiAgICAgICAgZHJvcGRvd246IElneERyb3BEb3duQ29tcG9uZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgZHJvcGRvd24ud2lkdGggPSBcIjIwMHB4XCI7XG4gICAgICAgIHRoaXMuYWdncmVnYXRlTGlzdCA9IFBpdm90VXRpbC5nZXRBZ2dyZWdhdGVMaXN0KHZhbHVlLCB0aGlzLmdyaWQpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGRyb3Bkb3duLm9wZW4odGhpcy5fc3ViTWVudU92ZXJsYXlTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblN1bW1hcnlDbGljayhcbiAgICAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgICAgIHZhbHVlOiBJUGl2b3RWYWx1ZSxcbiAgICAgICAgZHJvcGRvd246IElneERyb3BEb3duQ29tcG9uZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3N1Yk1lbnVPdmVybGF5U2V0dGluZ3MudGFyZ2V0ID1cbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGRyb3Bkb3duLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEcm9wRG93bih2YWx1ZSwgZHJvcGRvd24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY2xvc2UgZm9yIHByZXZpb3VzIGNoaXBcbiAgICAgICAgICAgIGRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICAgICAgICBkcm9wZG93bi5jbG9zZWQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcERvd24odmFsdWUsIGRyb3Bkb3duKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFnZ3JlZ2F0aW9uQ2hhbmdlKGV2ZW50OiBJU2VsZWN0aW9uRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKGV2ZW50Lm5ld1NlbGVjdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUuYWdncmVnYXRlID0gZXZlbnQubmV3U2VsZWN0aW9uLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5ncmlkLnBpcGVUcmlnZ2VyKys7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1NlbGVjdGVkKHZhbDogSVBpdm90QWdncmVnYXRvcikge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5hZ2dyZWdhdGUua2V5ID09PSB2YWwua2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2hvc3RDcmVhdGVkKGV2ZW50OiBJRHJhZ0dob3N0QmFzZUV2ZW50QXJncywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBpdGVtV2lkdGggfSA9XG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuZ2hvc3RXaWR0aCA9IGl0ZW1XaWR0aDtcbiAgICAgICAgdGhpcy5naG9zdFRleHQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIFwicG9zaXRpb25cIixcbiAgICAgICAgICAgIFwiYWJzb2x1dGVcIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJ2aXNpYmlsaXR5XCIsXG4gICAgICAgICAgICBcImhpZGRlblwiXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGVJdGVtKGl0ZW06IElQaXZvdERpbWVuc2lvbiB8IElQaXZvdFZhbHVlKSB7XG4gICAgICAgIGlmIChpdGVtIGFzIElQaXZvdFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQudG9nZ2xlVmFsdWUoaXRlbSBhcyBJUGl2b3RWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSBhcyBJUGl2b3REaW1lbnNpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC50b2dnbGVEaW1lbnNpb24oaXRlbSBhcyBJUGl2b3REaW1lbnNpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblBhbmVsRW50cnkoZXZlbnQ6IElEcm9wQmFzZUV2ZW50QXJncywgcGFuZWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmRyb3BBbGxvd2VkID0gZXZlbnQuZHJhZ0RhdGEuZ3JpZElEID09PSB0aGlzLmdyaWQuaWQgJiYgZXZlbnQuZHJhZ0RhdGEuc2VsZWN0b3JDaGFubmVscz8uc29tZShcbiAgICAgICAgICAgIChjaGFubmVsOiBzdHJpbmcpID0+IGNoYW5uZWwgPT09IHBhbmVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnTW92ZShldmVudDogSURyYWdNb3ZlRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudFJlY3QgPVxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLl9kcm9wRGVsdGEgPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgKGV2ZW50Lm5leHRQYWdlWSAtIGV2ZW50LnN0YXJ0WSkgLyBjbGllbnRSZWN0LmhlaWdodFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJhZ0VuZChldmVudDogSURyYWdCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInBvc2l0aW9uXCIsXG4gICAgICAgICAgICBcInN0YXRpY1wiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInZpc2liaWxpdHlcIixcbiAgICAgICAgICAgIFwidmlzaWJsZVwiXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnT3ZlcihldmVudDogSURyb3BCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBcImlneC1kcmFnLS1wdXNoXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbURyYWdMZWF2ZShldmVudDogSURyb3BCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBcImlneC1kcmFnLS1wdXNoXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFuZWxDb2xsYXBzZWQocGFuZWxUeXBlOiBQaXZvdERpbWVuc2lvblR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgc3dpdGNoKHBhbmVsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uOlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5jb2x1bW5zRXhwYW5kZWQ7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmZpbHRlcnNFeHBhbmRlZDtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLlJvdzpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMucm93c0V4cGFuZGVkO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMudmFsdWVzRXhwYW5kZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db2xsYXBzZUNoYW5nZSh2YWx1ZTogYm9vbGVhbiwgcGFuZWxUeXBlOiBQaXZvdERpbWVuc2lvblR5cGUpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoKHBhbmVsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uOlxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc0V4cGFuZGVkID0gIXZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5jb2x1bW5zRXhwYW5kZWQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuRmlsdGVyOlxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc0V4cGFuZGVkID0gIXZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJzRXhwYW5kZWQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHRoaXMucm93c0V4cGFuZGVkID0gIXZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucm93c0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5yb3dzRXhwYW5kZWQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0V4cGFuZGVkID0gIXZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzRXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlc0V4cGFuZGVkKVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19maWx0ZXJcIj5cbiAgICA8aWd4LWlucHV0LWdyb3VwIHR5cGU9XCJib3hcIiBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIj5cbiAgICAgICAgPGlneC1pY29uIGlneFByZWZpeD5zZWFyY2g8L2lneC1pY29uPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgaWd4SW5wdXRcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAvPlxuICAgIDwvaWd4LWlucHV0LWdyb3VwPlxuICAgIDxpZ3gtbGlzdCBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIj5cbiAgICAgICAgPGlneC1saXN0LWl0ZW1cbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGRpbXNcbiAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJQaXZvdEl0ZW1zOiBpbnB1dC52YWx1ZTpncmlkLnBpcGVUcmlnZ2VyXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2lkXT1cIml0ZW0ubWVtYmVyTmFtZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpZ3gtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbGxlZGJ5XT1cIml0ZW0ubWVtYmVyTmFtZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSXRlbShpdGVtKVwiXG4gICAgICAgICAgICA+PC9pZ3gtY2hlY2tib3g+XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtLm1lbWJlck5hbWUgfX08L3NwYW4+XG4gICAgICAgIDwvaWd4LWxpc3QtaXRlbT5cbiAgICAgICAgPGlneC1saXN0LWl0ZW1cbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICB8IGZpbHRlclBpdm90SXRlbXM6IGlucHV0LnZhbHVlOmdyaWQucGlwZVRyaWdnZXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5tZW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxsZWRieV09XCJpdGVtLm1lbWJlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSXRlbShpdGVtKVwiXG4gICAgICAgICAgICA+PC9pZ3gtY2hlY2tib3g+XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmRpc3BsYXlOYW1lIHx8IGl0ZW0ubWVtYmVyIH19PC9zcGFuPlxuICAgICAgICA8L2lneC1saXN0LWl0ZW0+XG4gICAgPC9pZ3gtbGlzdD5cbjwvZGl2PlxuXG48aWd4LWFjY29yZGlvbj5cbiAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbFxuICAgICAgICAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgX3BhbmVsc1wiXG4gICAgICAgIFthbmltYXRpb25TZXR0aW5nc109XCJhbmltYXRpb25TZXR0aW5nc1wiXG4gICAgICAgIFtjb2xsYXBzZWRdPVwiZ2V0UGFuZWxDb2xsYXBzZWQocGFuZWwudHlwZSlcIlxuICAgICAgICAoY29sbGFwc2VkQ2hhbmdlKT1cIm9uQ29sbGFwc2VDaGFuZ2UoJGV2ZW50LCBwYW5lbC50eXBlKVwiXG4gICAgPlxuICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIGljb25Qb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIGlneERyb3BcbiAgICAgICAgICAgIChlbnRlcik9XCJvblBhbmVsRW50cnkoJGV2ZW50LCBwYW5lbC5uYW1lKVwiXG4gICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC10aXRsZSBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faGVhZGVyLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyaWQucmVzb3VyY2VTdHJpbmdzW3BhbmVsLmkxOG5dIH19XG4gICAgICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2hlYWRlci1leHRyYVwiPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWljb24+e3sgcGFuZWwuaWNvbiB9fTwvaWd4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxpZ3gtY2hpcD57eyB0aGlzLmdyaWRbcGFuZWwuZGF0YUtleV0ubGVuZ3RoIH19PC9pZ3gtY2hpcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvaWd4LWV4cGFuc2lvbi1wYW5lbC10aXRsZT5cbiAgICAgICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgPGlneC1leHBhbnNpb24tcGFuZWwtYm9keVxuICAgICAgICAgICAgaWd4RHJvcFxuICAgICAgICAgICAgKGVudGVyKT1cIm9uUGFuZWxFbnRyeSgkZXZlbnQsIHBhbmVsLm5hbWUpXCJcbiAgICAgICAgICAgIChkcm9wcGVkKT1cIm9uSXRlbURyb3BwZWQoJGV2ZW50LCBwYW5lbC50eXBlKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpZ3gtbGlzdFxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlneC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgaWd4RHJvcFxuICAgICAgICAgICAgICAgICAgICBbaWd4RHJhZ109XCJ7IGdyaWRJRDogZ3JpZC5pZCwgc2VsZWN0b3JDaGFubmVsczogcGFuZWwuZHJhZ0NoYW5uZWxzIH1cIlxuICAgICAgICAgICAgICAgICAgICBbZ2hvc3RUZW1wbGF0ZV09XCJpdGVtR2hvc3RcIlxuICAgICAgICAgICAgICAgICAgICAoZ2hvc3RDcmVhdGUpPVwiZ2hvc3RDcmVhdGVkKCRldmVudCwgaXRlbVtwYW5lbC5pdGVtS2V5XSlcIlxuICAgICAgICAgICAgICAgICAgICAob3Zlcik9XCJvbkl0ZW1EcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGxlYXZlKT1cIm9uSXRlbURyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdNb3ZlKT1cIm9uSXRlbURyYWdNb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJhZ0VuZCk9XCJvbkl0ZW1EcmFnRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAqaWd4Rm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiB0aGlzLmdyaWRbcGFuZWwuZGF0YUtleV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxPcmllbnRhdGlvbjogJ3ZlcnRpY2FsJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbVtwYW5lbC5pdGVtS2V5XVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLXN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtU29ydCgkZXZlbnQsIGl0ZW0sIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1zb3J0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5zb3J0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYWdncmVnYXRlLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+KDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbVtwYW5lbC5kaXNwbGF5S2V5XSB8fCBpdGVtW3BhbmVsLml0ZW1LZXldIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIj4pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19hY3Rpb24tc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFuZWwuc29ydGFibGUgJiYgaXRlbS5zb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNvcnREaXJlY3Rpb24gPCAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImFycm93X3Vwd2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImFycm93X2Rvd253YXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnR5cGUgIT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlcmluZ0ljb25Qb2ludGVyRG93bigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcmluZ0ljb25DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmZpbHRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pZ3gtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fYWN0aW9uLXN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdW1tYXJ5Q2xpY2soJGV2ZW50LCBpdGVtLCBkcm9wZG93bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbl09XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ3hEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1tb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbC5kcmFnQ2hhbm5lbHMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5kcmFnX2hhbmRsZTwvaWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9pZ3gtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9pZ3gtbGlzdD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19lbXB0eVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmdyaWRbcGFuZWwuZGF0YUtleV0ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9wYW5lbF9lbXB0eSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaWd4LWV4cGFuc2lvbi1wYW5lbC1ib2R5PlxuICAgIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbjwvaWd4LWFjY29yZGlvbj5cblxuPGlneC1kcm9wLWRvd24gI2Ryb3Bkb3duIChzZWxlY3Rpb25DaGFuZ2luZyk9XCJvbkFnZ3JlZ2F0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICA8aWd4LWRyb3AtZG93bi1pdGVtXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFnZ3JlZ2F0ZUxpc3RcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICA+XG4gICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L2lneC1kcm9wLWRvd24taXRlbT5cbjwvaWd4LWRyb3AtZG93bj5cblxuPG5nLXRlbXBsYXRlICNpdGVtR2hvc3Q+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLWdob3N0XCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImdob3N0V2lkdGhcIlxuICAgICAgICBbY2xhc3MuaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZ2hvc3QtLW5vLWRyb3BdPVwiIWRyb3BBbGxvd2VkXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS1naG9zdC10ZXh0XCI+XG4gICAgICAgICAgICA8aWd4LWljb24+dW5mb2xkX21vcmU8L2lneC1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgZ2hvc3RUZXh0IH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlneC1pY29uPmRyYWdfaGFuZGxlPC9pZ3gtaWNvbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -55,7 +55,7 @@ export class IgxPivotDateDimension {
55
55
  this.memberName = 'AllPeriods';
56
56
  this._resourceStrings = CurrentResourceStrings.GridResStrings;
57
57
  /** @hidden @internal */
58
- this.memberFunction = (data) => this.resourceStrings.igx_grid_pivot_date_dimension_total;
58
+ this.memberFunction = (_data) => this.resourceStrings.igx_grid_pivot_date_dimension_total;
59
59
  const options = { ...this.defaultOptions, ...inOptions };
60
60
  if (!inBaseDimension) {
61
61
  console.warn(`Please provide data child level to the pivot dimension.`);
@@ -112,4 +112,4 @@ export class IgxPivotDateDimension {
112
112
  return this._resourceStrings;
113
113
  }
114
114
  }
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZ3JpZC1kaW1lbnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC1kaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFlekMsNENBQTRDO0FBQzVDLElBQUk7QUFDSixtQ0FBbUM7QUFDbkMscUJBQXFCO0FBQ3JCLCtCQUErQjtBQUMvQixvQkFBb0I7QUFDcEIsOEJBQThCO0FBQzlCLDZCQUE2QjtBQUM3QiwrQ0FBK0M7QUFDL0Msb0dBQW9HO0FBQ3BHLGFBQWE7QUFDYix5QkFBeUI7QUFDekIsd0JBQXdCO0FBQ3hCLHFDQUFxQztBQUNyQyx1REFBdUQ7QUFDdkQsK0hBQStIO0FBQy9ILHFCQUFxQjtBQUNyQixpQ0FBaUM7QUFDakMsdUNBQXVDO0FBQ3ZDLGdDQUFnQztBQUNoQywwQ0FBMEM7QUFDMUMsNENBQTRDO0FBQzVDLHdDQUF3QztBQUN4Qyx3QkFBd0I7QUFDeEIsZ0JBQWdCO0FBQ2hCLFFBQVE7QUFDUixLQUFLO0FBQ0wsTUFBTSxPQUFPLHFCQUFxQjtJQWdDOUI7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQW1CLGVBQWdDLEVBQVMsWUFBd0MsRUFBRTtRQUFuRixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFpQztRQTFDdEcsb0VBQW9FO1FBQzdELFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFdEIsK0NBQStDO1FBQ3hDLG1CQUFjLEdBQUc7WUFDcEIsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsSUFBSTtZQUNYLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7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QUFDO1FBRWpDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDO1NBQy9DO0lBQ0wsQ0FBQztJQS9FRDs7Ozs7T0FLRztJQUNILElBQVcsZUFBZSxDQUFDLEtBQTJCO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0NBdUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUdyaWRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vZ3JpZC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ3VycmVudFJlc291cmNlU3RyaW5ncyB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSVBpdm90RGltZW5zaW9uIH0gZnJvbSAnLi9waXZvdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQaXZvdFV0aWwgfSBmcm9tICcuL3Bpdm90LXV0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdERhdGVEaW1lbnNpb25PcHRpb25zIHtcbiAgICAvKiogRW5hYmxlcy9EaXNhYmxlcyB0b3RhbCB2YWx1ZSBvZiBhbGwgcGVyaW9kcy4gKi9cbiAgICB0b3RhbD86IGJvb2xlYW47XG4gICAgLyoqIEVuYWJsZXMvRGlzYWJsZXMgZGltZW5zaW9ucyBwZXIgeWVhciBmcm9tIHByb3ZpZGVkIHBlcmlvZHMuICovXG4gICAgeWVhcnM/OiBib29sZWFuO1xuICAgIC8qLyoqIEVuYWJsZXMvRGlzYWJsZXMgZGltZW5zaW9ucyBwZXIgcXVhcnRlciBmcm9tIHByb3ZpZGVkIHBlcmlvZHMuICovXG4gICAgcXVhcnRlcnM/OiBib29sZWFuO1xuICAgIC8qKiBFbmFibGVzL0Rpc2FibGVzIGRpbWVuc2lvbnMgcGVyIG1vbnRoIGZyb20gcHJvdmlkZWQgcGVyaW9kcy4gKi9cbiAgICBtb250aHM/OiBib29sZWFuO1xuICAgIC8qKiBFbmFibGVkL0Rpc2FibGVzIGRpbWVuc2lvbnMgZm9yIHRoZSBmdWxsIGRhdGUgcHJvdmlkZWQgKi9cbiAgICBmdWxsRGF0ZT86IGJvb2xlYW47XG59XG5cbi8vIEVxdWFscyB0byBwcmV0dHkgbXVjaCB0aGlzIGNvbmZpZ3VyYXRpb246XG4vLyB7XG4vLyAgICAgbWVtYmVyOiAoKSA9PiAnQWxsIFBlcmlvZHMnLFxuLy8gICAgIGVuYWJsZWQ6IHRydWUsXG4vLyAgICAgZmllbGROYW1lOiAnQWxsUGVyaW9kcycsXG4vLyAgICAgY2hpbGRMZXZlbDoge1xuLy8gICAgICAgICBmaWVsZE5hbWU6ICdZZWFycycsXG4vLyAgICAgICAgIG1lbWJlcjogKHJlYykgPT4ge1xuLy8gICAgICAgICAgICAgY29uc3QgcmVjb3JkVmFsdWUgPSByZWNbJ0RhdGUnXTtcbi8vICAgICAgICAgICAgIHJldHVybiByZWNvcmRWYWx1ZSA/IChuZXcgRGF0ZShyZWNvcmRWYWx1ZSkpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSA6IHJlY1snWWVhcnMnXTtcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbi8vICAgICAgICAgY2hpbGRMZXZlbDoge1xuLy8gICAgICAgICAgICAgICAgIG1lbWJlcjogKHJlYykgPT4ge1xuLy8gICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRWYWx1ZSA9IHJlY1snRGF0ZSddO1xuLy8gICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkVmFsdWUgPyBuZXcgRGF0ZShyZWNvcmRWYWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2RlZmF1bHQnLCB7IG1vbnRoOiAnbG9uZycgfSkgOiByZWNbJ01vbnRocyddO1xuLy8gICAgICAgICAgICAgICAgIH0sXG4vLyAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbi8vICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6ICdNb250aHMnLFxuLy8gICAgICAgICAgICAgICAgIGNoaWxkTGV2ZWw6IHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlcjogJ0RhdGUnLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOidEYXRlJyxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcbi8vICAgICAgICAgICAgICAgICAgICAgfVxuLy8gICAgICAgICAgICAgfVxuLy8gICAgIH1cbi8vIH0sXG5leHBvcnQgY2xhc3MgSWd4UGl2b3REYXRlRGltZW5zaW9uIGltcGxlbWVudHMgSVBpdm90RGltZW5zaW9uIHtcbiAgICAvKiogRW5hYmxlcy9EaXNhYmxlcyBhIHBhcnRpY3VsYXIgZGltZW5zaW9uIGZyb20gcGl2b3Qgc3RydWN0dXJlLiAqL1xuICAgIHB1YmxpYyBlbmFibGVkID0gdHJ1ZTtcblxuICAgIC8qKiBEZWZhdWx0IG9wdGlvbnMgdXNlZCBmb3IgaW5pdGlhbGl6YXRpb24uICovXG4gICAgcHVibGljIGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgICB0b3RhbDogdHJ1ZSxcbiAgICAgICAgeWVhcnM6IHRydWUsXG4gICAgICAgIG1vbnRoczogdHJ1ZSxcbiAgICAgICAgZnVsbERhdGU6IHRydWVcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBCeSBkZWZhdWx0IGl0IHVzZXMgRU4gcmVzb3VyY2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgcmVzb3VyY2VTdHJpbmdzKHZhbHVlOiBJR3JpZFJlc291cmNlU3RyaW5ncykge1xuICAgICAgICB0aGlzLl9yZXNvdXJjZVN0cmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXNvdXJjZVN0cmluZ3MsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc291cmNlU3RyaW5ncygpOiBJR3JpZFJlc291cmNlU3RyaW5ncyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVN0cmluZ3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGNoaWxkTGV2ZWw/OiBJUGl2b3REaW1lbnNpb247XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG1lbWJlck5hbWUgPSAnQWxsUGVyaW9kcyc7XG4gICAgcHJpdmF0ZSBfcmVzb3VyY2VTdHJpbmdzID0gQ3VycmVudFJlc291cmNlU3RyaW5ncy5HcmlkUmVzU3RyaW5ncztcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYWRkaXRpb25hbCBwaXZvdCBkYXRlIGRpbWVuc2lvbnMgYmFzZWQgb24gYSBwcm92aWRlZCBkaW1lbnNpb24gZGVzY3JpYmluZyBkYXRlIGRhdGE6XG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5EYXRlRGltZW5zaW9uIEJhc2UgZGltZW5zaW9uIHRoYXQgaXMgdXNlZCBieSB0aGlzIGNsYXNzIHRvIGRldGVybWluZSB0aGUgb3RoZXIgZGltZW5zaW9ucyBhbmQgdGhlaXIgdmFsdWVzLlxuICAgICAqIEBwYXJhbSBpbk9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHByZWRlZmluZWQgZGF0ZSBkaW1lbnNpb25zIHdoZXRoZXIgdG8gc2hvdyBxdWFydGVyLCB5ZWFycyBhbmQgZXRjLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIERpc3BsYXlzIG9ubHkgeWVhcnMgYXMgcGFyZW50IGRpbWVuc2lvbiB0byB0aGUgYmFzZSBkaW1lbnNpb24gcHJvdmlkZWQuXG4gICAgICogbmV3IElneFBpdm90RGF0ZURpbWVuc2lvbih7IG1lbWJlck5hbWU6ICdEYXRlJywgZW5hYmxlZDogdHJ1ZSB9LCB7IHRvdGFsOiBmYWxzZSwgbW9udGhzOiBmYWxzZSB9KTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5CYXNlRGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sIHB1YmxpYyBpbk9wdGlvbnM6IElQaXZvdERhdGVEaW1lbnNpb25PcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4udGhpcy5kZWZhdWx0T3B0aW9ucywgLi4uaW5PcHRpb25zIH07XG5cbiAgICAgICAgaWYgKCFpbkJhc2VEaW1lbnNpb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUGxlYXNlIHByb3ZpZGUgZGF0YSBjaGlsZCBsZXZlbCB0byB0aGUgcGl2b3QgZGltZW5zaW9uLmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZURpbWVuc2lvbiA9IG9wdGlvbnMuZnVsbERhdGUgPyBpbkJhc2VEaW1lbnNpb24gOiBudWxsO1xuICAgICAgICBjb25zdCBtb250aERpbWVuc2lvbkRlZjogSVBpdm90RGltZW5zaW9uID0ge1xuICAgICAgICAgICAgbWVtYmVyTmFtZTogJ01vbnRocycsXG4gICAgICAgICAgICBtZW1iZXJGdW5jdGlvbjogKHJlYykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZFZhbHVlID0gUGl2b3RVdGlsLmV4dHJhY3RWYWx1ZUZyb21EaW1lbnNpb24oaW5CYXNlRGltZW5zaW9uLCByZWMpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmRWYWx1ZSA/IG5ldyBEYXRlKHJlY29yZFZhbHVlKS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgbW9udGg6ICdsb25nJyB9KSA6IHJlY1snTW9udGhzJ107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIGNoaWxkTGV2ZWw6IGJhc2VEaW1lbnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbW9udGhEaW1lbnNpb24gPSBvcHRpb25zLm1vbnRocyA/IG1vbnRoRGltZW5zaW9uRGVmIDogYmFzZURpbWVuc2lvbjtcblxuICAgICAgICBjb25zdCBxdWFydGVyRGltZW5zaW9uRGVmOiBJUGl2b3REaW1lbnNpb24gPSB7XG4gICAgICAgICAgICBtZW1iZXJOYW1lOiAnUXVhcnRlcnMnLFxuICAgICAgICAgICAgbWVtYmVyRnVuY3Rpb246IChyZWMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRWYWx1ZSA9IFBpdm90VXRpbC5leHRyYWN0VmFsdWVGcm9tRGltZW5zaW9uKGluQmFzZURpbWVuc2lvbiwgcmVjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkVmFsdWUgPyBgUWAgKyBNYXRoLmNlaWwoKG5ldyBEYXRlKHJlY29yZFZhbHVlKS5nZXRNb250aCgpICsgMSkgLyAzKSA6IHJlY1snUXVhcnRlcnMnXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgY2hpbGRMZXZlbDogbW9udGhEaW1lbnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcXVhcnRlckRpbWVuc2lvbiA9IG9wdGlvbnMucXVhcnRlcnMgPyBxdWFydGVyRGltZW5zaW9uRGVmIDogbW9udGhEaW1lbnNpb247XG5cbiAgICAgICAgY29uc3QgeWVhcnNEaW1lbnNpb25EZWYgPSB7XG4gICAgICAgICAgICBtZW1iZXJOYW1lOiAnWWVhcnMnLFxuICAgICAgICAgICAgbWVtYmVyRnVuY3Rpb246IChyZWMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRWYWx1ZSA9IFBpdm90VXRpbC5leHRyYWN0VmFsdWVGcm9tRGltZW5zaW9uKGluQmFzZURpbWVuc2lvbiwgcmVjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkVmFsdWUgPyAobmV3IERhdGUocmVjb3JkVmFsdWUpKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkgOiByZWNbJ1llYXJzJ107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIGNoaWxkTGV2ZWw6IHF1YXJ0ZXJEaW1lbnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgeWVhcnNEaW1lbnNpb24gPSBvcHRpb25zLnllYXJzID8geWVhcnNEaW1lbnNpb25EZWYgOiBxdWFydGVyRGltZW5zaW9uO1xuICAgICAgICB0aGlzLmNoaWxkTGV2ZWwgPSB5ZWFyc0RpbWVuc2lvbjtcblxuICAgICAgICBpZiAoIW9wdGlvbnMudG90YWwpIHtcbiAgICAgICAgICAgIHRoaXMubWVtYmVyTmFtZSA9IHllYXJzRGltZW5zaW9uLm1lbWJlck5hbWU7XG4gICAgICAgICAgICB0aGlzLm1lbWJlckZ1bmN0aW9uID0geWVhcnNEaW1lbnNpb24ubWVtYmVyRnVuY3Rpb247XG4gICAgICAgICAgICB0aGlzLmNoaWxkTGV2ZWwgPSB5ZWFyc0RpbWVuc2lvbi5jaGlsZExldmVsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG1lbWJlckZ1bmN0aW9uID0gKGRhdGEpID0+IHRoaXMucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX3Bpdm90X2RhdGVfZGltZW5zaW9uX3RvdGFsO1xufVxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZ3JpZC1kaW1lbnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC1kaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFlekMsNENBQTRDO0FBQzVDLElBQUk7QUFDSixtQ0FBbUM7QUFDbkMscUJBQXFCO0FBQ3JCLCtCQUErQjtBQUMvQixvQkFBb0I7QUFDcEIsOEJBQThCO0FBQzlCLDZCQUE2QjtBQUM3QiwrQ0FBK0M7QUFDL0Msb0dBQW9HO0FBQ3BHLGFBQWE7QUFDYix5QkFBeUI7QUFDekIsd0JBQXdCO0FBQ3hCLHFDQUFxQztBQUNyQyx1REFBdUQ7QUFDdkQsK0hBQStIO0FBQy9ILHFCQUFxQjtBQUNyQixpQ0FBaUM7QUFDakMsdUNBQXVDO0FBQ3ZDLGdDQUFnQztBQUNoQywwQ0FBMEM7QUFDMUMsNENBQTRDO0FBQzVDLHdDQUF3QztBQUN4Qyx3QkFBd0I7QUFDeEIsZ0JBQWdCO0FBQ2hCLFFBQVE7QUFDUixLQUFLO0FBQ0wsTUFBTSxPQUFPLHFCQUFxQjtJQWdDOUI7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQW1CLGVBQWdDLEVBQVMsWUFBd0MsRUFBRTtRQUFuRixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFpQztRQTFDdEcsb0VBQW9FO1FBQzdELFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFdEIsK0NBQStDO1FBQ3hDLG1CQUFjLEdBQUc7WUFDcEIsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsSUFBSTtZQUNYLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7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QUFDO1FBRWpDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDO1NBQy9DO0lBQ0wsQ0FBQztJQS9FRDs7Ozs7T0FLRztJQUNILElBQVcsZUFBZSxDQUFDLEtBQTJCO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0NBdUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUdyaWRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vZ3JpZC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ3VycmVudFJlc291cmNlU3RyaW5ncyB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSVBpdm90RGltZW5zaW9uIH0gZnJvbSAnLi9waXZvdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQaXZvdFV0aWwgfSBmcm9tICcuL3Bpdm90LXV0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdERhdGVEaW1lbnNpb25PcHRpb25zIHtcbiAgICAvKiogRW5hYmxlcy9EaXNhYmxlcyB0b3RhbCB2YWx1ZSBvZiBhbGwgcGVyaW9kcy4gKi9cbiAgICB0b3RhbD86IGJvb2xlYW47XG4gICAgLyoqIEVuYWJsZXMvRGlzYWJsZXMgZGltZW5zaW9ucyBwZXIgeWVhciBmcm9tIHByb3ZpZGVkIHBlcmlvZHMuICovXG4gICAgeWVhcnM/OiBib29sZWFuO1xuICAgIC8qLyoqIEVuYWJsZXMvRGlzYWJsZXMgZGltZW5zaW9ucyBwZXIgcXVhcnRlciBmcm9tIHByb3ZpZGVkIHBlcmlvZHMuICovXG4gICAgcXVhcnRlcnM/OiBib29sZWFuO1xuICAgIC8qKiBFbmFibGVzL0Rpc2FibGVzIGRpbWVuc2lvbnMgcGVyIG1vbnRoIGZyb20gcHJvdmlkZWQgcGVyaW9kcy4gKi9cbiAgICBtb250aHM/OiBib29sZWFuO1xuICAgIC8qKiBFbmFibGVkL0Rpc2FibGVzIGRpbWVuc2lvbnMgZm9yIHRoZSBmdWxsIGRhdGUgcHJvdmlkZWQgKi9cbiAgICBmdWxsRGF0ZT86IGJvb2xlYW47XG59XG5cbi8vIEVxdWFscyB0byBwcmV0dHkgbXVjaCB0aGlzIGNvbmZpZ3VyYXRpb246XG4vLyB7XG4vLyAgICAgbWVtYmVyOiAoKSA9PiAnQWxsIFBlcmlvZHMnLFxuLy8gICAgIGVuYWJsZWQ6IHRydWUsXG4vLyAgICAgZmllbGROYW1lOiAnQWxsUGVyaW9kcycsXG4vLyAgICAgY2hpbGRMZXZlbDoge1xuLy8gICAgICAgICBmaWVsZE5hbWU6ICdZZWFycycsXG4vLyAgICAgICAgIG1lbWJlcjogKHJlYykgPT4ge1xuLy8gICAgICAgICAgICAgY29uc3QgcmVjb3JkVmFsdWUgPSByZWNbJ0RhdGUnXTtcbi8vICAgICAgICAgICAgIHJldHVybiByZWNvcmRWYWx1ZSA/IChuZXcgRGF0ZShyZWNvcmRWYWx1ZSkpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSA6IHJlY1snWWVhcnMnXTtcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbi8vICAgICAgICAgY2hpbGRMZXZlbDoge1xuLy8gICAgICAgICAgICAgICAgIG1lbWJlcjogKHJlYykgPT4ge1xuLy8gICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRWYWx1ZSA9IHJlY1snRGF0ZSddO1xuLy8gICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkVmFsdWUgPyBuZXcgRGF0ZShyZWNvcmRWYWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2RlZmF1bHQnLCB7IG1vbnRoOiAnbG9uZycgfSkgOiByZWNbJ01vbnRocyddO1xuLy8gICAgICAgICAgICAgICAgIH0sXG4vLyAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbi8vICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6ICdNb250aHMnLFxuLy8gICAgICAgICAgICAgICAgIGNoaWxkTGV2ZWw6IHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlcjogJ0RhdGUnLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOidEYXRlJyxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcbi8vICAgICAgICAgICAgICAgICAgICAgfVxuLy8gICAgICAgICAgICAgfVxuLy8gICAgIH1cbi8vIH0sXG5leHBvcnQgY2xhc3MgSWd4UGl2b3REYXRlRGltZW5zaW9uIGltcGxlbWVudHMgSVBpdm90RGltZW5zaW9uIHtcbiAgICAvKiogRW5hYmxlcy9EaXNhYmxlcyBhIHBhcnRpY3VsYXIgZGltZW5zaW9uIGZyb20gcGl2b3Qgc3RydWN0dXJlLiAqL1xuICAgIHB1YmxpYyBlbmFibGVkID0gdHJ1ZTtcblxuICAgIC8qKiBEZWZhdWx0IG9wdGlvbnMgdXNlZCBmb3IgaW5pdGlhbGl6YXRpb24uICovXG4gICAgcHVibGljIGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgICB0b3RhbDogdHJ1ZSxcbiAgICAgICAgeWVhcnM6IHRydWUsXG4gICAgICAgIG1vbnRoczogdHJ1ZSxcbiAgICAgICAgZnVsbERhdGU6IHRydWVcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBCeSBkZWZhdWx0IGl0IHVzZXMgRU4gcmVzb3VyY2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgcmVzb3VyY2VTdHJpbmdzKHZhbHVlOiBJR3JpZFJlc291cmNlU3RyaW5ncykge1xuICAgICAgICB0aGlzLl9yZXNvdXJjZVN0cmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXNvdXJjZVN0cmluZ3MsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc291cmNlU3RyaW5ncygpOiBJR3JpZFJlc291cmNlU3RyaW5ncyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVN0cmluZ3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGNoaWxkTGV2ZWw/OiBJUGl2b3REaW1lbnNpb247XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG1lbWJlck5hbWUgPSAnQWxsUGVyaW9kcyc7XG4gICAgcHJpdmF0ZSBfcmVzb3VyY2VTdHJpbmdzID0gQ3VycmVudFJlc291cmNlU3RyaW5ncy5HcmlkUmVzU3RyaW5ncztcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYWRkaXRpb25hbCBwaXZvdCBkYXRlIGRpbWVuc2lvbnMgYmFzZWQgb24gYSBwcm92aWRlZCBkaW1lbnNpb24gZGVzY3JpYmluZyBkYXRlIGRhdGE6XG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5EYXRlRGltZW5zaW9uIEJhc2UgZGltZW5zaW9uIHRoYXQgaXMgdXNlZCBieSB0aGlzIGNsYXNzIHRvIGRldGVybWluZSB0aGUgb3RoZXIgZGltZW5zaW9ucyBhbmQgdGhlaXIgdmFsdWVzLlxuICAgICAqIEBwYXJhbSBpbk9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHByZWRlZmluZWQgZGF0ZSBkaW1lbnNpb25zIHdoZXRoZXIgdG8gc2hvdyBxdWFydGVyLCB5ZWFycyBhbmQgZXRjLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIERpc3BsYXlzIG9ubHkgeWVhcnMgYXMgcGFyZW50IGRpbWVuc2lvbiB0byB0aGUgYmFzZSBkaW1lbnNpb24gcHJvdmlkZWQuXG4gICAgICogbmV3IElneFBpdm90RGF0ZURpbWVuc2lvbih7IG1lbWJlck5hbWU6ICdEYXRlJywgZW5hYmxlZDogdHJ1ZSB9LCB7IHRvdGFsOiBmYWxzZSwgbW9udGhzOiBmYWxzZSB9KTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5CYXNlRGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sIHB1YmxpYyBpbk9wdGlvbnM6IElQaXZvdERhdGVEaW1lbnNpb25PcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4udGhpcy5kZWZhdWx0T3B0aW9ucywgLi4uaW5PcHRpb25zIH07XG5cbiAgICAgICAgaWYgKCFpbkJhc2VEaW1lbnNpb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUGxlYXNlIHByb3ZpZGUgZGF0YSBjaGlsZCBsZXZlbCB0byB0aGUgcGl2b3QgZGltZW5zaW9uLmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZURpbWVuc2lvbiA9IG9wdGlvbnMuZnVsbERhdGUgPyBpbkJhc2VEaW1lbnNpb24gOiBudWxsO1xuICAgICAgICBjb25zdCBtb250aERpbWVuc2lvbkRlZjogSVBpdm90RGltZW5zaW9uID0ge1xuICAgICAgICAgICAgbWVtYmVyTmFtZTogJ01vbnRocycsXG4gICAgICAgICAgICBtZW1iZXJGdW5jdGlvbjogKHJlYykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZFZhbHVlID0gUGl2b3RVdGlsLmV4dHJhY3RWYWx1ZUZyb21EaW1lbnNpb24oaW5CYXNlRGltZW5zaW9uLCByZWMpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmRWYWx1ZSA/IG5ldyBEYXRlKHJlY29yZFZhbHVlKS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgbW9udGg6ICdsb25nJyB9KSA6IHJlY1snTW9udGhzJ107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIGNoaWxkTGV2ZWw6IGJhc2VEaW1lbnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbW9udGhEaW1lbnNpb24gPSBvcHRpb25zLm1vbnRocyA/IG1vbnRoRGltZW5zaW9uRGVmIDogYmFzZURpbWVuc2lvbjtcblxuICAgICAgICBjb25zdCBxdWFydGVyRGltZW5zaW9uRGVmOiBJUGl2b3REaW1lbnNpb24gPSB7XG4gICAgICAgICAgICBtZW1iZXJOYW1lOiAnUXVhcnRlcnMnLFxuICAgICAgICAgICAgbWVtYmVyRnVuY3Rpb246IChyZWMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRWYWx1ZSA9IFBpdm90VXRpbC5leHRyYWN0VmFsdWVGcm9tRGltZW5zaW9uKGluQmFzZURpbWVuc2lvbiwgcmVjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkVmFsdWUgPyBgUWAgKyBNYXRoLmNlaWwoKG5ldyBEYXRlKHJlY29yZFZhbHVlKS5nZXRNb250aCgpICsgMSkgLyAzKSA6IHJlY1snUXVhcnRlcnMnXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgY2hpbGRMZXZlbDogbW9udGhEaW1lbnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcXVhcnRlckRpbWVuc2lvbiA9IG9wdGlvbnMucXVhcnRlcnMgPyBxdWFydGVyRGltZW5zaW9uRGVmIDogbW9udGhEaW1lbnNpb247XG5cbiAgICAgICAgY29uc3QgeWVhcnNEaW1lbnNpb25EZWYgPSB7XG4gICAgICAgICAgICBtZW1iZXJOYW1lOiAnWWVhcnMnLFxuICAgICAgICAgICAgbWVtYmVyRnVuY3Rpb246IChyZWMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRWYWx1ZSA9IFBpdm90VXRpbC5leHRyYWN0VmFsdWVGcm9tRGltZW5zaW9uKGluQmFzZURpbWVuc2lvbiwgcmVjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkVmFsdWUgPyAobmV3IERhdGUocmVjb3JkVmFsdWUpKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkgOiByZWNbJ1llYXJzJ107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIGNoaWxkTGV2ZWw6IHF1YXJ0ZXJEaW1lbnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgeWVhcnNEaW1lbnNpb24gPSBvcHRpb25zLnllYXJzID8geWVhcnNEaW1lbnNpb25EZWYgOiBxdWFydGVyRGltZW5zaW9uO1xuICAgICAgICB0aGlzLmNoaWxkTGV2ZWwgPSB5ZWFyc0RpbWVuc2lvbjtcblxuICAgICAgICBpZiAoIW9wdGlvbnMudG90YWwpIHtcbiAgICAgICAgICAgIHRoaXMubWVtYmVyTmFtZSA9IHllYXJzRGltZW5zaW9uLm1lbWJlck5hbWU7XG4gICAgICAgICAgICB0aGlzLm1lbWJlckZ1bmN0aW9uID0geWVhcnNEaW1lbnNpb24ubWVtYmVyRnVuY3Rpb247XG4gICAgICAgICAgICB0aGlzLmNoaWxkTGV2ZWwgPSB5ZWFyc0RpbWVuc2lvbi5jaGlsZExldmVsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG1lbWJlckZ1bmN0aW9uID0gKF9kYXRhKSA9PiB0aGlzLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9waXZvdF9kYXRlX2RpbWVuc2lvbl90b3RhbDtcbn1cbiJdfQ==