igniteui-angular 17.2.5 → 17.2.7

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 (61) hide show
  1. package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +9 -1
  2. package/esm2022/lib/core/density.mjs +2 -1
  3. package/esm2022/lib/directives/for-of/for_of.directive.mjs +13 -2
  4. package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +6 -1
  5. package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +3 -2
  6. package/esm2022/lib/grids/common/events.mjs +1 -1
  7. package/esm2022/lib/grids/common/grid.interface.mjs +1 -1
  8. package/esm2022/lib/grids/common/strategy.mjs +2 -2
  9. package/esm2022/lib/grids/common/types.mjs +1 -1
  10. package/esm2022/lib/grids/grid-base.directive.mjs +45 -45
  11. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +2 -2
  12. package/esm2022/lib/grids/selection/selection.service.mjs +12 -16
  13. package/esm2022/lib/simple-combo/simple-combo.component.mjs +7 -6
  14. package/esm2022/lib/slider/slider.component.mjs +10 -8
  15. package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +6 -2
  16. package/fesm2022/igniteui-angular.mjs +104 -75
  17. package/fesm2022/igniteui-angular.mjs.map +1 -1
  18. package/lib/core/density.d.ts +1 -0
  19. package/lib/core/styles/components/bottom-nav/_bottom-nav-theme.scss +24 -12
  20. package/lib/core/styles/components/button/_button-theme.scss +9 -3
  21. package/lib/core/styles/components/grid/_excel-filtering-theme.scss +20 -0
  22. package/lib/core/styles/components/overlay/_overlay-theme.scss +6 -0
  23. package/lib/directives/for-of/for_of.directive.d.ts +5 -0
  24. package/lib/grids/common/events.d.ts +30 -30
  25. package/lib/grids/common/grid.interface.d.ts +48 -48
  26. package/lib/grids/common/strategy.d.ts +1 -1
  27. package/lib/grids/common/types.d.ts +2 -2
  28. package/lib/grids/grid-base.directive.d.ts +2 -1
  29. package/lib/slider/slider.component.d.ts +1 -1
  30. package/lib/slider/thumb/thumb-slider.component.d.ts +2 -1
  31. package/migrations/migration-collection.json +5 -0
  32. package/migrations/update-17_2_6/changes/theme-changes.json +11 -0
  33. package/migrations/update-17_2_6/index.d.ts +3 -0
  34. package/migrations/update-17_2_6/index.js +31 -0
  35. package/package.json +1 -1
  36. package/styles/igniteui-angular-dark.css +1 -1
  37. package/styles/igniteui-angular.css +1 -1
  38. package/styles/igniteui-bootstrap-dark.css +1 -1
  39. package/styles/igniteui-bootstrap-light.css +1 -1
  40. package/styles/igniteui-dark-green.css +1 -1
  41. package/styles/igniteui-fluent-dark-excel.css +1 -1
  42. package/styles/igniteui-fluent-dark-word.css +1 -1
  43. package/styles/igniteui-fluent-dark.css +1 -1
  44. package/styles/igniteui-fluent-light-excel.css +1 -1
  45. package/styles/igniteui-fluent-light-word.css +1 -1
  46. package/styles/igniteui-fluent-light.css +1 -1
  47. package/styles/igniteui-indigo-dark.css +1 -1
  48. package/styles/igniteui-indigo-light.css +1 -1
  49. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  50. package/styles/maps/igniteui-angular.css.map +1 -1
  51. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  52. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  53. package/styles/maps/igniteui-dark-green.css.map +1 -1
  54. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  55. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  56. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  57. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  58. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  59. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  60. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  61. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -15,6 +15,11 @@ export class IgxForOfSyncService {
15
15
  */
16
16
  setMaster(directive, forced = false) {
17
17
  const orientation = directive.igxForScrollOrientation;
18
+ // in case master is not in dom, set a new master
19
+ const isMasterInDom = this._master.get(orientation)?.dc?.instance?._viewContainer.element.nativeElement.isConnected;
20
+ if (!isMasterInDom) {
21
+ forced = true;
22
+ }
18
23
  if (orientation && (forced || !this._master.has(orientation))) {
19
24
  this._master.set(orientation, directive);
20
25
  }
@@ -65,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
65
70
  providedIn: 'root',
66
71
  }]
67
72
  }] });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yX29mLnN5bmMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvci1vZi9mb3Jfb2Yuc3luYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFLWSxZQUFPLEdBQW1ELElBQUksR0FBRyxFQUE2QyxDQUFDO0tBdUMxSDtJQXJDRzs7T0FFRztJQUNJLFFBQVEsQ0FBQyxTQUE0QztRQUN4RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsU0FBNEMsRUFBRSxNQUFNLEdBQUcsS0FBSztRQUN6RSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsdUJBQXVCLENBQUM7UUFDdEQsSUFBSSxXQUFXLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO1lBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxHQUFXO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVMsQ0FBQyxHQUFXO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNqRCxDQUFDOzhHQXhDUSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZoQixNQUFNOzsyRkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQStDRCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSVksa0JBQWEsR0FBNEMsSUFBSSxHQUFHLEVBQWUsQ0FBQztLQVEzRjtJQVBVLGVBQWUsQ0FBQyxHQUFXLEVBQUUsTUFBa0M7UUFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxlQUFlLENBQUMsR0FBVztRQUM5QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OEdBUlEseUJBQXlCO2tIQUF6Qix5QkFBeUIsY0FGdEIsTUFBTTs7MkZBRVQseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEdyaWRGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4vZm9yX29mLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaXJ0dWFsSGVscGVyQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vYmFzZS5oZWxwZXIuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSWd4Rm9yT2ZTeW5jU2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9tYXN0ZXI6IE1hcDxzdHJpbmcsIElneEdyaWRGb3JPZkRpcmVjdGl2ZTxhbnksIGFueVtdPj4gPSBuZXcgTWFwPHN0cmluZywgSWd4R3JpZEZvck9mRGlyZWN0aXZlPGFueSwgYW55W10+PigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBpc01hc3RlcihkaXJlY3RpdmU6IElneEdyaWRGb3JPZkRpcmVjdGl2ZTxhbnksIGFueVtdPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzdGVyLmdldChkaXJlY3RpdmUuaWd4Rm9yU2Nyb2xsT3JpZW50YXRpb24pID09PSBkaXJlY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRNYXN0ZXIoZGlyZWN0aXZlOiBJZ3hHcmlkRm9yT2ZEaXJlY3RpdmU8YW55LCBhbnlbXT4sIGZvcmNlZCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IG9yaWVudGF0aW9uID0gZGlyZWN0aXZlLmlneEZvclNjcm9sbE9yaWVudGF0aW9uO1xuICAgICAgICBpZiAob3JpZW50YXRpb24gJiYgKGZvcmNlZCB8fCAhdGhpcy5fbWFzdGVyLmhhcyhvcmllbnRhdGlvbikpKSB7XG4gICAgICAgICAgICB0aGlzLl9tYXN0ZXIuc2V0KG9yaWVudGF0aW9uLCBkaXJlY3RpdmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyByZXNldE1hc3RlcigpIHtcbiAgICAgICAgdGhpcy5fbWFzdGVyLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBzaXplc0NhY2hlKGRpcjogc3RyaW5nKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzdGVyLmdldChkaXIpLnNpemVzQ2FjaGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBjaHVua1NpemUoZGlyOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzdGVyLmdldChkaXIpLnN0YXRlLmNodW5rU2l6ZTtcbiAgICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElneEZvck9mU2Nyb2xsU3luY1NlcnZpY2Uge1xuICAgIHByaXZhdGUgX21hc3RlclNjcm9sbDogTWFwPHN0cmluZywgVmlydHVhbEhlbHBlckJhc2VEaXJlY3RpdmU+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBwdWJsaWMgc2V0U2Nyb2xsTWFzdGVyKGRpcjogc3RyaW5nLCBzY3JvbGw6IFZpcnR1YWxIZWxwZXJCYXNlRGlyZWN0aXZlKSB7XG4gICAgICAgIHRoaXMuX21hc3RlclNjcm9sbC5zZXQoZGlyLCBzY3JvbGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTY3JvbGxNYXN0ZXIoZGlyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hc3RlclNjcm9sbC5nZXQoZGlyKTtcbiAgICB9XG59XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yX29mLnN5bmMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvci1vZi9mb3Jfb2Yuc3luYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFLWSxZQUFPLEdBQW1ELElBQUksR0FBRyxFQUE2QyxDQUFDO0tBNEMxSDtJQTFDRzs7T0FFRztJQUNJLFFBQVEsQ0FBQyxTQUE0QztRQUN4RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsU0FBNEMsRUFBRSxNQUFNLEdBQUcsS0FBSztRQUN6RSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsdUJBQXVCLENBQUM7UUFDdEQsaURBQWlEO1FBQ2pELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQ3BILElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEIsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNqQjtRQUNELElBQUksV0FBVyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsR0FBVztRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsR0FBVztRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDakQsQ0FBQzs4R0E3Q1EsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGaEIsTUFBTTs7MkZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7QUFvREQsTUFBTSxPQUFPLHlCQUF5QjtJQUh0QztRQUlZLGtCQUFhLEdBQTRDLElBQUksR0FBRyxFQUFlLENBQUM7S0FRM0Y7SUFQVSxlQUFlLENBQUMsR0FBVyxFQUFFLE1BQWtDO1FBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sZUFBZSxDQUFDLEdBQVc7UUFDOUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQVJRLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRnRCLE1BQU07OzJGQUVULHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hHcmlkRm9yT2ZEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmlydHVhbEhlbHBlckJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Jhc2UuaGVscGVyLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElneEZvck9mU3luY1NlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBfbWFzdGVyOiBNYXA8c3RyaW5nLCBJZ3hHcmlkRm9yT2ZEaXJlY3RpdmU8YW55LCBhbnlbXT4+ID0gbmV3IE1hcDxzdHJpbmcsIElneEdyaWRGb3JPZkRpcmVjdGl2ZTxhbnksIGFueVtdPj4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNNYXN0ZXIoZGlyZWN0aXZlOiBJZ3hHcmlkRm9yT2ZEaXJlY3RpdmU8YW55LCBhbnlbXT4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hc3Rlci5nZXQoZGlyZWN0aXZlLmlneEZvclNjcm9sbE9yaWVudGF0aW9uKSA9PT0gZGlyZWN0aXZlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0TWFzdGVyKGRpcmVjdGl2ZTogSWd4R3JpZEZvck9mRGlyZWN0aXZlPGFueSwgYW55W10+LCBmb3JjZWQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBvcmllbnRhdGlvbiA9IGRpcmVjdGl2ZS5pZ3hGb3JTY3JvbGxPcmllbnRhdGlvbjtcbiAgICAgICAgLy8gaW4gY2FzZSBtYXN0ZXIgaXMgbm90IGluIGRvbSwgc2V0IGEgbmV3IG1hc3RlclxuICAgICAgICBjb25zdCBpc01hc3RlckluRG9tID0gdGhpcy5fbWFzdGVyLmdldChvcmllbnRhdGlvbik/LmRjPy5pbnN0YW5jZT8uX3ZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlzQ29ubmVjdGVkO1xuICAgICAgICBpZiAoIWlzTWFzdGVySW5Eb20pIHtcbiAgICAgICAgICAgIGZvcmNlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yaWVudGF0aW9uICYmIChmb3JjZWQgfHwgIXRoaXMuX21hc3Rlci5oYXMob3JpZW50YXRpb24pKSkge1xuICAgICAgICAgICAgdGhpcy5fbWFzdGVyLnNldChvcmllbnRhdGlvbiwgZGlyZWN0aXZlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVzZXRNYXN0ZXIoKSB7XG4gICAgICAgIHRoaXMuX21hc3Rlci5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2l6ZXNDYWNoZShkaXI6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hc3Rlci5nZXQoZGlyKS5zaXplc0NhY2hlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2h1bmtTaXplKGRpcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hc3Rlci5nZXQoZGlyKS5zdGF0ZS5jaHVua1NpemU7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hGb3JPZlNjcm9sbFN5bmNTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9tYXN0ZXJTY3JvbGw6IE1hcDxzdHJpbmcsIFZpcnR1YWxIZWxwZXJCYXNlRGlyZWN0aXZlPiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgcHVibGljIHNldFNjcm9sbE1hc3RlcihkaXI6IHN0cmluZywgc2Nyb2xsOiBWaXJ0dWFsSGVscGVyQmFzZURpcmVjdGl2ZSkge1xuICAgICAgICB0aGlzLl9tYXN0ZXJTY3JvbGwuc2V0KGRpciwgc2Nyb2xsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2Nyb2xsTWFzdGVyKGRpcjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXN0ZXJTY3JvbGwuZ2V0KGRpcik7XG4gICAgfVxufVxuIl19
@@ -5,6 +5,7 @@ import { takeUntil } from 'rxjs/operators';
5
5
  import { AutoPositionStrategy, HorizontalAlignment } from '../../services/public_api';
6
6
  import { IgxToggleActionDirective } from '../toggle/toggle.directive';
7
7
  import { IgxTooltipComponent } from './tooltip.component';
8
+ import { IgxTooltipDirective } from './tooltip.directive';
8
9
  import { fadeOut, scaleInCenter } from 'igniteui-angular/animations';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "../../core/navigation";
@@ -27,7 +28,7 @@ export class IgxTooltipTargetDirective extends IgxToggleActionDirective {
27
28
  * @hidden
28
29
  */
29
30
  set target(target) {
30
- if (target !== null && target !== '') {
31
+ if (target instanceof IgxTooltipDirective) {
31
32
  this._target = target;
32
33
  }
33
34
  }
@@ -381,4 +382,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
381
382
  type: HostListener,
382
383
  args: ['document:touchstart', ['$event']]
383
384
  }] } });
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBYyxRQUFRLEVBQW9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xLLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFhckU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQU1ILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFzRG5FOztPQUVHO0lBQ0gsSUFDb0IsTUFBTSxDQUFDLE1BQVc7UUFDbEMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFvQixNQUFNO1FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFB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QWdEQyxXQUFXO3NCQURqQixNQUFNO2dCQW1CQSxXQUFXO3NCQURqQixNQUFNO2dCQWNTLE9BQU87c0JBRHRCLFlBQVk7dUJBQUMsT0FBTztnQkFXZCxZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBOEJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBeUJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBYW5CLG9CQUFvQjtzQkFEMUIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgT3V0cHV0LCBFbGVtZW50UmVmLCBPcHRpb25hbCwgVmlld0NvbnRhaW5lclJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksIEhvcml6b250YWxBbGlnbm1lbnQsIFBvc2l0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IGZhZGVPdXQsIHNjYWxlSW5DZW50ZXIgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwU2hvd0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwSGlkZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVG9vbHRpcCBUYXJnZXQqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvdG9vbHRpcClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIFRvb2x0aXAgVGFyZ2V0IGRpcmVjdGl2ZSBpcyB1c2VkIHRvIG1hcmsgYW4gSFRNTCBlbGVtZW50IGluIHRoZSBtYXJrdXAgYXMgb25lIHRoYXQgaGFzIGEgdG9vbHRpcC5cbiAqIFRoZSB0b29sdGlwIHRhcmdldCBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIGJ5IGFzc2lnbmluZyB0aGUgZXhwb3J0ZWQgdG9vbHRpcCByZWZlcmVuY2UgdG8gdGhlXG4gKiB0YXJnZXQncyBzZWxlY3RvciBwcm9wZXJ0eS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIGV4cG9ydEFzOiAndG9vbHRpcFRhcmdldCcsXG4gICAgc2VsZWN0b3I6ICdbaWd4VG9vbHRpcFRhcmdldF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4VG9vbHRpcFRhcmdldERpcmVjdGl2ZSBleHRlbmRzIElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcFNob3dEZWxheSA9IHRoaXMudG9vbHRpcFRhcmdldC5zaG93RGVsYXk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgW3Nob3dEZWxheV09XCIxNTAwXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdzaG93RGVsYXknKVxuICAgIHB1YmxpYyBzaG93RGVsYXkgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCB0b29sdGlwSGlkZURlbGF5ID0gdGhpcy50b29sdGlwVGFyZ2V0LmhpZGVEZWxheTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiBbaGlkZURlbGF5XT1cIjE1MDBcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2hpZGVEZWxheScpXG4gICAgcHVibGljIGhpZGVEZWxheSA9IDUwMDtcblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiB0aGUgdG9vbHRpcCBzaG91bGQgbm90IHNob3cgd2hlbiBob3ZlcmluZyBpdHMgdGFyZ2V0IHdpdGggdGhlIG1vdXNlLiAoZGVmYXVsdHMgdG8gZmFsc2UpXG4gICAgICogV2hpbGUgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvICd0cnVlJyB3aWxsIGRpc2FibGUgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHRoYXQgc2hvd3MvaGlkZXMgdGhlIHRvb2x0aXAsXG4gICAgICogdGhlIGRldmVsb3BlciB3aWxsIHN0aWxsIGJlIGFibGUgdG8gc2hvdy9oaWRlIHRoZSB0b29sdGlwIHRocm91Z2ggdGhlIEFQSS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcERpc2FibGVkVmFsdWUgPSB0aGlzLnRvb2x0aXBUYXJnZXQudG9vbHRpcERpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiIFt0b29sdGlwRGlzYWJsZWRdPVwidHJ1ZVwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndG9vbHRpcERpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHRvb2x0aXBEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4VG9vbHRpcFRhcmdldCcpXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCB0YXJnZXQodGFyZ2V0OiBhbnkpIHtcbiAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YXJnZXQoKTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl90YXJnZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlcnZpY2UuZ2V0KHRoaXMuX3RhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIEBoaWRkZW5cbiAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0b29sdGlwKGNvbnRlbnQ6IGFueSkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0ICYmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgfHwgY29udGVudCBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXBDb21wb25lbnQgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChJZ3hUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHRvb2x0aXBDb21wb25lbnQuaW5zdGFuY2UuY29udGVudCA9IGNvbnRlbnQgYXMgc3RyaW5nO1xuXG4gICAgICAgICAgICB0aGlzLl90YXJnZXQgPSB0b29sdGlwQ29tcG9uZW50Lmluc3RhbmNlLnRvb2x0aXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSByZXNwZWN0aXZlIG5hdGl2ZSBlbGVtZW50IG9mIHRoZSBkaXJlY3RpdmUuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRvb2x0aXBUYXJnZXRFbGVtZW50ID0gdGhpcy50b29sdGlwVGFyZ2V0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgdG9vbHRpcCB0aGF0IGlzIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBpcyBjdXJyZW50bHkgaGlkZGVuLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b29sdGlwSGlkZGVuVmFsdWUgPSB0aGlzLnRvb2x0aXBUYXJnZXQudG9vbHRpcEhpZGRlbjtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRvb2x0aXBIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy50YXJnZXQgfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgc3RhcnRzIHNob3dpbmcuXG4gICAgICogVGhpcyBldmVudCBpcyBmaXJlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBjb3VudGRvd24gdG8gc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0b29sdGlwU2hvd2luZyhhcmdzOiBJVG9vbHRpcFNob3dFdmVudEFyZ3MpIHtcbiAgICAgKiAgICBhbGVydChcIlRvb2x0aXAgc3RhcnRlZCBzaG93aW5nIVwiKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiAodG9vbHRpcFNob3cpPSd0b29sdGlwU2hvd2luZygkZXZlbnQpJz5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcFNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPElUb29sdGlwU2hvd0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgc3RhcnRzIGhpZGluZy5cbiAgICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGNvdW50ZG93biB0byBoaWRpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdG9vbHRpcEhpZGluZyhhcmdzOiBJVG9vbHRpcEhpZGVFdmVudEFyZ3MpIHtcbiAgICAgKiAgICBhbGVydChcIlRvb2x0aXAgc3RhcnRlZCBoaWRpbmchXCIpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiICh0b29sdGlwSGlkZSk9J3Rvb2x0aXBIaWRpbmcoJGV2ZW50KSc+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRvb2x0aXBIaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxJVG9vbHRpcEhpZGVFdmVudEFyZ3M+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX25hdmlnYXRpb25TZXJ2aWNlOiBJZ3hOYXZpZ2F0aW9uU2VydmljZSwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcihfZWxlbWVudCwgX25hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHB1YmxpYyBvdmVycmlkZSBvbkNsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VFbnRlckNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNob3dpbmdBcmdzID0geyB0YXJnZXQ6IHRoaXMsIHRvb2x0aXA6IHRoaXMudGFyZ2V0LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMudG9vbHRpcFNob3cuZW1pdChzaG93aW5nQXJncyk7XG5cbiAgICAgICAgaWYgKHNob3dpbmdBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5vcGVuKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTsgLy8gQ2FsbCBvcGVuKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuc2hvd0RlbGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VMZWF2ZUNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4gfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG5cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JylcbiAgICBwdWJsaWMgb25Ub3VjaFN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRG9jdW1lbnRUb3VjaFN0YXJ0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudCAhPT0gZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgICAhdGhpcy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIGhvcml6b250YWxTdGFydFBvaW50OiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihzY2FsZUluQ2VudGVyLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzE1MG1zJyB9IH0pLFxuICAgICAgICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlT3V0LCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzc1bXMnIH0gfSlcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMucG9zaXRpb25TdHJhdGVneSA9IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25Fc2NhcGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudGFyZ2V0LmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGluZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEhpZGUuZW1pdChoaWRpbmdBcmdzKTtcblxuICAgICAgICAgICAgaWYgKGhpZGluZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgdG9vbHRpcCBieSByZXNwZWN0aW5nIHRoZSAnc2hvd0RlbGF5JyBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd1Rvb2x0aXAoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvd2luZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy50b29sdGlwU2hvdy5lbWl0KHNob3dpbmdBcmdzKTtcblxuICAgICAgICBpZiAoc2hvd2luZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9wZW4odGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpOyAvLyBDYWxsIG9wZW4oKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5zaG93RGVsYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB0b29sdGlwIGJ5IHJlc3BlY3RpbmcgdGhlICdoaWRlRGVsYXknIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudG9vbHRpcFRhcmdldC5oaWRlVG9vbHRpcCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlVG9vbHRpcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCAmJiB0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCB8fCB0aGlzLnRhcmdldC50b0JlSGlkZGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja091dGxldEFuZE91dHNpZGVDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMub3V0bGV0KSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMub3V0bGV0ID0gdGhpcy5vdXRsZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBtZXJnZWRPdmVybGF5U2V0dGluZ3MoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9vdmVybGF5RGVmYXVsdHMsIHRoaXMub3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhlY3V0aW9uIGluIG9uTW91c2VFbnRlciBzaG91bGQgYmUgdGVybWluYXRlZCBhZnRlciB0aGlzIG1ldGhvZFxuICAgIHByaXZhdGUgcHJlTW91c2VFbnRlckNoZWNrKCkge1xuICAgICAgICAvLyBJZiB0b29sdGlwIGlzIGFib3V0IHRvIGJlIG9wZW5lZFxuICAgICAgICBpZiAodGhpcy50YXJnZXQudG9CZVNob3duKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgVG9vbHRpcCBpcyBvcGVuZWQgb3IgYWJvdXQgdG8gYmUgaGlkZGVuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBleGVjdXRpb24gaW4gb25Nb3VzZUxlYXZlIHNob3VsZCBiZSB0ZXJtaW5hdGVkIGFmdGVyIHRoaXMgbWV0aG9kXG4gICAgcHJpdmF0ZSBwcmVNb3VzZUxlYXZlQ2hlY2soKTogYm9vbGVhbiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIC8vIElmIHRvb2x0aXAgaXMgYWJvdXQgdG8gYmUgb3BlbmVkXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBYyxRQUFRLEVBQW9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xLLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFhckU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQU1ILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFzRG5FOztPQUVHO0lBQ0gsSUFDb0IsTUFBTSxDQUFDLE1BQVc7UUFDbEMsSUFBSSxNQUFNLFlBQVksbUJBQW1CLEVBQUU7WUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFvQixNQUFNO1FBQ3RCLElBQUks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O2dCQXFCZCxPQUFPO3NCQURqQixLQUFLO2dCQWdEQyxXQUFXO3NCQURqQixNQUFNO2dCQW1CQSxXQUFXO3NCQURqQixNQUFNO2dCQWNTLE9BQU87c0JBRHRCLFlBQVk7dUJBQUMsT0FBTztnQkFXZCxZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBOEJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBeUJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBYW5CLG9CQUFvQjtzQkFEMUIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgT3V0cHV0LCBFbGVtZW50UmVmLCBPcHRpb25hbCwgVmlld0NvbnRhaW5lclJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksIEhvcml6b250YWxBbGlnbm1lbnQsIFBvc2l0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IGZhZGVPdXQsIHNjYWxlSW5DZW50ZXIgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwU2hvd0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwSGlkZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVG9vbHRpcCBUYXJnZXQqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvdG9vbHRpcClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIFRvb2x0aXAgVGFyZ2V0IGRpcmVjdGl2ZSBpcyB1c2VkIHRvIG1hcmsgYW4gSFRNTCBlbGVtZW50IGluIHRoZSBtYXJrdXAgYXMgb25lIHRoYXQgaGFzIGEgdG9vbHRpcC5cbiAqIFRoZSB0b29sdGlwIHRhcmdldCBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIGJ5IGFzc2lnbmluZyB0aGUgZXhwb3J0ZWQgdG9vbHRpcCByZWZlcmVuY2UgdG8gdGhlXG4gKiB0YXJnZXQncyBzZWxlY3RvciBwcm9wZXJ0eS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIGV4cG9ydEFzOiAndG9vbHRpcFRhcmdldCcsXG4gICAgc2VsZWN0b3I6ICdbaWd4VG9vbHRpcFRhcmdldF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4VG9vbHRpcFRhcmdldERpcmVjdGl2ZSBleHRlbmRzIElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcFNob3dEZWxheSA9IHRoaXMudG9vbHRpcFRhcmdldC5zaG93RGVsYXk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgW3Nob3dEZWxheV09XCIxNTAwXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdzaG93RGVsYXknKVxuICAgIHB1YmxpYyBzaG93RGVsYXkgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCB0b29sdGlwSGlkZURlbGF5ID0gdGhpcy50b29sdGlwVGFyZ2V0LmhpZGVEZWxheTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiBbaGlkZURlbGF5XT1cIjE1MDBcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2hpZGVEZWxheScpXG4gICAgcHVibGljIGhpZGVEZWxheSA9IDUwMDtcblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiB0aGUgdG9vbHRpcCBzaG91bGQgbm90IHNob3cgd2hlbiBob3ZlcmluZyBpdHMgdGFyZ2V0IHdpdGggdGhlIG1vdXNlLiAoZGVmYXVsdHMgdG8gZmFsc2UpXG4gICAgICogV2hpbGUgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvICd0cnVlJyB3aWxsIGRpc2FibGUgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHRoYXQgc2hvd3MvaGlkZXMgdGhlIHRvb2x0aXAsXG4gICAgICogdGhlIGRldmVsb3BlciB3aWxsIHN0aWxsIGJlIGFibGUgdG8gc2hvdy9oaWRlIHRoZSB0b29sdGlwIHRocm91Z2ggdGhlIEFQSS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcERpc2FibGVkVmFsdWUgPSB0aGlzLnRvb2x0aXBUYXJnZXQudG9vbHRpcERpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiIFt0b29sdGlwRGlzYWJsZWRdPVwidHJ1ZVwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndG9vbHRpcERpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHRvb2x0aXBEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4VG9vbHRpcFRhcmdldCcpXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCB0YXJnZXQodGFyZ2V0OiBhbnkpIHtcbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIElneFRvb2x0aXBEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHRhcmdldCgpOiBhbnkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3RhcmdldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uU2VydmljZS5nZXQodGhpcy5fdGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICogQGhpZGRlblxuICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRvb2x0aXAoY29udGVudDogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy50YXJnZXQgJiYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyB8fCBjb250ZW50IGluc3RhbmNlb2YgU3RyaW5nKSkge1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcENvbXBvbmVudCA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KElneFRvb2x0aXBDb21wb25lbnQpO1xuICAgICAgICAgICAgdG9vbHRpcENvbXBvbmVudC5pbnN0YW5jZS5jb250ZW50ID0gY29udGVudCBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRvb2x0aXBDb21wb25lbnQuaW5zdGFuY2UudG9vbHRpcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJlc3BlY3RpdmUgbmF0aXZlIGVsZW1lbnQgb2YgdGhlIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdG9vbHRpcFRhcmdldEVsZW1lbnQgPSB0aGlzLnRvb2x0aXBUYXJnZXQubmF0aXZlRWxlbWVudDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSB0b29sdGlwIHRoYXQgaXMgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFyZ2V0IGlzIGN1cnJlbnRseSBoaWRkZW4uXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRvb2x0aXBIaWRkZW5WYWx1ZSA9IHRoaXMudG9vbHRpcFRhcmdldC50b29sdGlwSGlkZGVuO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG9vbHRpcEhpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnRhcmdldCB8fCB0aGlzLnRhcmdldC5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgdG9vbHRpcCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBzdGFydHMgc2hvd2luZy5cbiAgICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGNvdW50ZG93biB0byBzaG93aW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRvb2x0aXBTaG93aW5nKGFyZ3M6IElUb29sdGlwU2hvd0V2ZW50QXJncykge1xuICAgICAqICAgIGFsZXJ0KFwiVG9vbHRpcCBzdGFydGVkIHNob3dpbmchXCIpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiICh0b29sdGlwU2hvdyk9J3Rvb2x0aXBTaG93aW5nKCRldmVudCknPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwU2hvdyA9IG5ldyBFdmVudEVtaXR0ZXI8SVRvb2x0aXBTaG93RXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgdG9vbHRpcCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBzdGFydHMgaGlkaW5nLlxuICAgICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgY291bnRkb3duIHRvIGhpZGluZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0b29sdGlwSGlkaW5nKGFyZ3M6IElUb29sdGlwSGlkZUV2ZW50QXJncykge1xuICAgICAqICAgIGFsZXJ0KFwiVG9vbHRpcCBzdGFydGVkIGhpZGluZyFcIik7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgKHRvb2x0aXBIaWRlKT0ndG9vbHRpcEhpZGluZygkZXZlbnQpJz5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcEhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPElUb29sdGlwSGlkZUV2ZW50QXJncz4oKTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbmF2aWdhdGlvblNlcnZpY2U6IElneE5hdmlnYXRpb25TZXJ2aWNlLCBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKF9lbGVtZW50LCBfbmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHVibGljIG92ZXJyaWRlIG9uQ2xpY2soKSB7XG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5mb3JjZUNsb3NlKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgICBwdWJsaWMgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hlY2tPdXRsZXRBbmRPdXRzaWRlQ2xpY2soKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmV0dXJuID0gdGhpcy5wcmVNb3VzZUVudGVyQ2hlY2soKTtcbiAgICAgICAgaWYgKHNob3VsZFJldHVybikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvd2luZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy50b29sdGlwU2hvdy5lbWl0KHNob3dpbmdBcmdzKTtcblxuICAgICAgICBpZiAoc2hvd2luZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9wZW4odGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpOyAvLyBDYWxsIG9wZW4oKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5zaG93RGVsYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgICBwdWJsaWMgb25Nb3VzZUxlYXZlKCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hlY2tPdXRsZXRBbmRPdXRzaWRlQ2xpY2soKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmV0dXJuID0gdGhpcy5wcmVNb3VzZUxlYXZlQ2hlY2soKTtcbiAgICAgICAgaWYgKHNob3VsZFJldHVybiB8fCB0aGlzLnRhcmdldC5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNsb3NlKCk7IC8vIENhbGwgY2xvc2UoKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuaGlkZURlbGF5KTtcblxuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKVxuICAgIHB1YmxpYyBvblRvdWNoU3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25Eb2N1bWVudFRvdWNoU3RhcnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50ICE9PSBldmVudC50YXJnZXQgJiZcbiAgICAgICAgICAgICF0aGlzLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIGhvcml6b250YWxEaXJlY3Rpb246IEhvcml6b250YWxBbGlnbm1lbnQuQ2VudGVyLFxuICAgICAgICAgICAgaG9yaXpvbnRhbFN0YXJ0UG9pbnQ6IEhvcml6b250YWxBbGlnbm1lbnQuQ2VudGVyLFxuICAgICAgICAgICAgb3BlbkFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKHNjYWxlSW5DZW50ZXIsIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMTUwbXMnIH0gfSksXG4gICAgICAgICAgICBjbG9zZUFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKGZhZGVPdXQsIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnNzVtcycgfSB9KVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0cy5wb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEF1dG9Qb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9uU2V0dGluZ3MpO1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMuY2xvc2VPbk91dHNpZGVDbGljayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMuY2xvc2VPbkVzY2FwZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy50YXJnZXQuY2xvc2luZy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaGlkaW5nQXJncyA9IHsgdGFyZ2V0OiB0aGlzLCB0b29sdGlwOiB0aGlzLnRhcmdldCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICAgICAgdGhpcy50b29sdGlwSGlkZS5lbWl0KGhpZGluZ0FyZ3MpO1xuXG4gICAgICAgICAgICBpZiAoaGlkaW5nQXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICBldmVudC5jYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3dzIHRoZSB0b29sdGlwIGJ5IHJlc3BlY3RpbmcgdGhlICdzaG93RGVsYXknIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudG9vbHRpcFRhcmdldC5zaG93VG9vbHRpcCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93VG9vbHRpcCgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRhcmdldC5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIC8vICBpZiBjbG9zZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgZmluaXNoIGl0LCBvciBjbG9zZSB0aGUgdG9vbHRpcCB3aXRoIG5vIGFuaW1hdGlvblxuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzaG93aW5nQXJncyA9IHsgdGFyZ2V0OiB0aGlzLCB0b29sdGlwOiB0aGlzLnRhcmdldCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLnRvb2x0aXBTaG93LmVtaXQoc2hvd2luZ0FyZ3MpO1xuXG4gICAgICAgIGlmIChzaG93aW5nQXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IHRydWU7XG4gICAgICAgIHRoaXMudGFyZ2V0LnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQub3Blbih0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7IC8vIENhbGwgb3BlbigpIG9mIElneFRvb2x0aXBEaXJlY3RpdmVcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLnNob3dEZWxheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZXMgdGhlIHRvb2x0aXAgYnkgcmVzcGVjdGluZyB0aGUgJ2hpZGVEZWxheScgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50b29sdGlwVGFyZ2V0LmhpZGVUb29sdGlwKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGhpZGVUb29sdGlwKCkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXQuY29sbGFwc2VkICYmIHRoaXMudGFyZ2V0LnRvQmVTaG93bikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YXJnZXQuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNsb3NlKCk7IC8vIENhbGwgY2xvc2UoKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuaGlkZURlbGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5vdXRsZXQpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0cy5vdXRsZXQgPSB0aGlzLm91dGxldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG1lcmdlZE92ZXJsYXlTZXR0aW5ncygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX292ZXJsYXlEZWZhdWx0cywgdGhpcy5vdmVybGF5U2V0dGluZ3MpO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBleGVjdXRpb24gaW4gb25Nb3VzZUVudGVyIHNob3VsZCBiZSB0ZXJtaW5hdGVkIGFmdGVyIHRoaXMgbWV0aG9kXG4gICAgcHJpdmF0ZSBwcmVNb3VzZUVudGVyQ2hlY2soKSB7XG4gICAgICAgIC8vIElmIHRvb2x0aXAgaXMgYWJvdXQgdG8gYmUgb3BlbmVkXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBUb29sdGlwIGlzIG9wZW5lZCBvciBhYm91dCB0byBiZSBoaWRkZW5cbiAgICAgICAgaWYgKCF0aGlzLnRhcmdldC5jb2xsYXBzZWQgfHwgdGhpcy50YXJnZXQudG9CZUhpZGRlbikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG5cbiAgICAgICAgICAgIC8vICBpZiBjbG9zZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgZmluaXNoIGl0LCBvciBjbG9zZSB0aGUgdG9vbHRpcCB3aXRoIG5vIGFuaW1hdGlvblxuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGV4ZWN1dGlvbiBpbiBvbk1vdXNlTGVhdmUgc2hvdWxkIGJlIHRlcm1pbmF0ZWQgYWZ0ZXIgdGhpcyBtZXRob2RcbiAgICBwcml2YXRlIHByZU1vdXNlTGVhdmVDaGVjaygpOiBib29sZWFuIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG5cbiAgICAgICAgLy8gSWYgdG9vbHRpcCBpcyBhYm91dCB0byBiZSBvcGVuZWRcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LnRvQmVTaG93bikge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2NvbW1vbi9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCYXNlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkS2V5ZG93blRhcmdldFR5cGUgfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IENlbGxUeXBlLCBDb2x1bW5UeXBlLCBHcmlkVHlwZSwgUm93VHlwZSB9IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEJhc2VFeHBvcnRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydGVyLWNvbW1vbi9iYXNlLWV4cG9ydC1zZXJ2aWNlJztcbmltcG9ydCB7IElneEV4cG9ydGVyT3B0aW9uc0Jhc2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnRlci1jb21tb24vZXhwb3J0ZXItb3B0aW9ucy1iYXNlJztcbmltcG9ydCB7IElTb3J0aW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IElCYXNlU2VhcmNoSW5mbyB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGV4dC1oaWdobGlnaHQvdGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlJztcblxuLyoqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBkYXRhIGZyb20gYSBncmlkIGlzIGJlaW5nIGNvcGllZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRDbGlwYm9hcmRFdmVudCB7XG4gICAgLyoqIGBkYXRhYCBjYW4gYmUgb2YgYW55IHR5cGUgYW5kIHJlZmVyZXMgdG8gdGhlIGRhdGEgdGhhdCBpcyBiZWluZyBjb3BpZWQvc3RvcmVkIHRvIHRoZSBjbGlwYm9hcmQgKi9cbiAgICBkYXRhOiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgYW4gZXh0ZXJuYWwgZXZlbnQgaGFzIGludGVyZXB0ZWQgdGhlIGNvcHlpbmdcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbmNpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXZlbnQgYXJndW1lbnQgcmVsYXRlZCB0byBncmlkIGNlbGwgaW50ZXJhY3Rpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZENlbGxFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgY2VsbCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQuICovXG4gICAgY2VsbDogQ2VsbFR5cGU7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQgdGhhdCBvY3VycmVkXG4gICAgICogRXhhbXBsZXMgb2Ygc3VjaCBldmVudHMgaW5jbHVkZTogc2VsZWN0aW5nLCBjbGlja2luZywgZG91YmxlIGNsaWNraW5nLCBldGMuXG4gICAgICovXG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBldmVudCBhcmd1bWVudCByZWxhdGVkIHRvIGdyaWQgcm93IGludGVyYWN0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRSb3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgcm93IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudC4gKi9cbiAgICByb3c6IFJvd1R5cGU7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQgdGhhdCBvY3VycmVkXG4gICAgICogRXhhbXBsZXMgb2Ygc3VjaCBldmVudHMgaW5jbHVkZTogc2VsZWN0aW5nLCBjbGlja2luZywgZG91YmxlIGNsaWNraW5nLCBldGMuXG4gICAgICovXG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byBncmlkIGVkaXRpbmcgY29tcGxldGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRFZGl0RG9uZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE3LjEuMC4gVXNlIHRoZSBgcm93S2V5YCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHJvd0lEOiBhbnk7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4xLjAuIFVzZSB0aGUgYHJvd0tleWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwcmltYXJ5S2V5OiBhbnk7XG4gICAgcm93S2V5OiBhbnk7XG4gICAgY2VsbElEPzoge1xuICAgICAgICByb3dJRDogYW55O1xuICAgICAgICBjb2x1bW5JRDogYW55O1xuICAgICAgICByb3dJbmRleDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogYHJvd0RhdGFgIHJlcHJlc2VudHMgdGhlIHVwZGF0ZWQvY29tbWl0dGVkIGRhdGEgb2YgdGhlIHJvdyBhZnRlciB0aGUgZWRpdCAobmV3VmFsdWUpXG4gICAgICogVGhlIG9ubHkgY2FzZSByb3dEYXRhIChvZiB0aGUgY3VycmVudCBvYmplY3QpIGlzIHVzZWQgZGlyZWN0bHksIGlzIHdoZW4gdGhlcmUgaXMgbm8gcm93RWRpdGluZyBvciB0cmFuc2FjdGlvbnMgZW5hYmxlZFxuICAgICAqL1xuICAgIHJvd0RhdGE6IGFueTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBwcmV2aW91cyAoYmVmb3JlIGVkaXRpbmcpIHZhbHVlIG9mIHRoZSBlZGl0ZWQgY2VsbC5cbiAgICAgKiBJdCdzIHVzZWQgd2hlbiB0aGUgZXZlbnQgaGFzIGJlZW4gc3RvcGVkL2V4aXRlZC5cbiAgICAgKi9cbiAgICBvbGRWYWx1ZTogYW55O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgdmFsdWUsIHRoYXQgaXMgYmVpbmcgZW50ZXJlZCBpbiB0aGUgZWRpdGVkIGNlbGxcbiAgICAgKiBXaGVuIHRoZXJlIGlzIG5vIGBuZXdWYWx1ZWAgYW5kIHRoZSBldmVudCBoYXMgZW5kZWQsIHRoZSB2YWx1ZSBvZiB0aGUgY2VsbCByZXR1cm5zIHRvIHRoZSBgb2xkVmFsdWVgXG4gICAgICovXG4gICAgbmV3VmFsdWU/OiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBvcmlnaW5hbCBldmVudCwgdGhhdCBoYXMgdHJpZ2dlcmVkIHRoZSBlZGl0XG4gICAgICovXG4gICAgZXZlbnQ/OiBFdmVudDtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIGNvbHVtbiBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdGVkIGNlbGxcbiAgICAgKi9cbiAgICBjb2x1bW4/OiBDb2x1bW5UeXBlO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgZ3JpZCBpbnN0YW5jZSB0aGF0IG93bnMgdGhlIGVkaXQgZXZlbnQuXG4gICAgICovXG4gICAgb3duZXI/OiBHcmlkVHlwZTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgZWRpdGluZyBjb3Npc3RzIG9mIGFkZGluZyBhIG5ldyByb3dcbiAgICAgKi9cbiAgICBpc0FkZFJvdz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIG5ldyB2YWx1ZSB3b3VsZCBiZSB2YWxpZC5cbiAgICAgKiBJdCBjYW4gYmUgc2V0IHRvIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBtZXRob2RzIGZvciB2YWxpZGF0aW9uIG9mIHRoZSBncmlkXG4gICAgICovXG4gICAgdmFsaWQ/OiBib29sZWFuO1xufVxuXG5cbi8qKlxuICogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byBncmlkIGVkaXRpbmcuXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICogSXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJvdyBhbmQgdGhlIGNvbHVtbiwgYXMgd2VsbCBhcyB0aGUgb2xkIGFuZCBud2UgdmFsdWUgb2YgdGhlIGVsZW1lbnQvY2VsbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkRWRpdEV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElHcmlkRWRpdERvbmVFdmVudEFyZ3Mge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSb3dEYXRhQ2FuY2VsYWJsZUV2ZW50QXJncyBleHRlbmRzIElSb3dEYXRhRXZlbnRBcmdzLCBJR3JpZEVkaXRFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgY2VsbElEPzoge1xuICAgICAgICByb3dJRDogYW55O1xuICAgICAgICBjb2x1bW5JRDogYW55O1xuICAgICAgICByb3dJbmRleDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBvbGRWYWx1ZTogYW55O1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgbmV3VmFsdWU/OiBhbnk7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBpc0FkZFJvdz86IGJvb2xlYW47XG4gICAgb3duZXI6IEdyaWRUeXBlO1xufVxuXG4vKipcbiAqIFRoZSBldmVudCBhcmd1bWVudHMgYWZ0ZXIgYSBjb2x1bW4ncyBwaW4gc3RhdGUgaXMgY2hhbmdlZC5cbiAqIGBpbnNlcnRBdEluZGV4YHNwZWNpZmllcyBhdCB3aGljaCBpbmRleCBpbiB0aGUgcGlubmVkL3VucGlubmVkIGFyZWEgdGhlIGNvbHVtbiB3YXMgaW5zZXJ0ZWQuXG4gKiBgaXNQaW5uZWRgIHJldHVybnMgdGhlIGFjdHVhbCBwaW4gc3RhdGUgb2YgdGhlIGNvbHVtbiBhZnRlciB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGluQ29sdW1uRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIGNvbHVtbjogQ29sdW1uVHlwZTtcbiAgICAvKipcbiAgICAgKiBJZiBwaW5uZWQsIHNwZWNpZmllcyBhdCB3aGljaCBpbmRleCBpbiB0aGUgcGlubmVkIGFyZWEgdGhlIGNvbHVtbiBpcyBpbnNlcnRlZC5cbiAgICAgKiBJZiB1bnBpbm5lZCwgc3BlY2lmaWVzIGF0IHdoaWNoIGluZGV4IGluIHRoZSB1bnBpbm5lZCBhcmVhIHRoZSBjb2x1bW4gaXMgaW5zZXJ0ZWQuXG4gICAgICovXG4gICAgaW5zZXJ0QXRJbmRleDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFjdHVhbCBwaW4gc3RhdGUgb2YgdGhlIGNvbHVtbi5cbiAgICAgKiBJZiBwaW5uaW5nL3VucGlubmluZyBpcyBzdWNjZXNmdWxsLCB2YWx1ZSBvZiBgaXNQaW5uZWRgIHdpbGwgY2hhbmdlIGFjY29yZGluZ2x5IHdoZW4gcmVhZCBpbiB0aGUgXCItaW5nXCIgYW5kIFwiLWVkXCIgZXZlbnQuXG4gICAgICovXG4gICAgaXNQaW5uZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIGV2ZW50IGFyZ3VtZW50cyBiZWZvcmUgYSBjb2x1bW4ncyBwaW4gc3RhdGUgaXMgY2hhbmdlZC5cbiAqIGBpbnNlcnRBdEluZGV4YHNwZWNpZmllcyBhdCB3aGljaCBpbmRleCBpbiB0aGUgcGlubmVkL3VucGlubmVkIGFyZWEgdGhlIGNvbHVtbiBpcyBpbnNlcnRlZC5cbiAqIENhbiBiZSBjaGFuZ2VkIGluIHRoZSBgY29sdW1uUGluYCBldmVudC5cbiAqIGBpc1Bpbm5lZGAgcmV0dXJucyB0aGUgYWN0dWFsIHBpbiBzdGF0ZSBvZiB0aGUgY29sdW1uLiBXaGVuIHBpbm5pbmcvdW5waW5uaW5nIGlzIHN1Y2Nlc2Z1bGwsXG4gKiB0aGUgdmFsdWUgb2YgYGlzUGlubmVkYCB3aWxsIGNoYW5nZSBhY2NvcmRpbmdseSB3aGVuIHJlYWQgaW4gdGhlIFwiLWluZ1wiIGFuZCBcIi1lZFwiIGV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQaW5Db2x1bW5DYW5jZWxsYWJsZUV2ZW50QXJncyBleHRlbmRzIElQaW5Db2x1bW5FdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gZXZlbnRzLCB0aGF0IGNhbiBvY2N1ciBmb3Igcm93cyBpbiBhIGdyaWRcbiAqIEV4YW1wbGUgZm9yIGV2ZW50czogYWRkaW5nLCBkZWxldGluZywgc2VsZWN0aW9uLCB0cmFuc2FjdGlvbiwgZXRjLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3dEYXRhRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dEYXRhYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGRhdGE6IGFueTtcbiAgICByb3dEYXRhOiBhbnlcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSB1bmlxdWUga2V5LCB0aGUgcm93IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGguXG4gICAgICogQXZhaWxhYmxlIGlmIGBwcmltYXJ5S2V5YCBleGlzdHNcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE3LjEuMC4gVXNlIHRoZSBgcm93S2V5YCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHByaW1hcnlLZXk6IGFueTtcbiAgICByb3dLZXk6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgZ3JpZCBpbnN0YW5jZSB0aGF0IG93bnMgdGhlIGVkaXQgZXZlbnQuICovXG4gICAgb3duZXI6IEdyaWRUeXBlO1xufVxuXG5cbi8qKiBUaGUgZXZlbnQgYXJndW1lbnRzIHdoZW4gYSBjb2x1bW4gaXMgYmVpbmcgcmVzaXplZCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uUmVzaXplRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBpbmZvcm1hbnRpb24gb2YgdGhlIGNvbHVtbiB0aGF0IGlzIGJlaW5nIHJlc2l6ZWQgKi9cbiAgICBjb2x1bW46IENvbHVtblR5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG9sZCB3aWR0aCBvZiB0aGUgY29sdW1uIGJlZm9yZSB0aGUgcmVzaXppbmcgKi9cbiAgICBwcmV2V2lkdGg6IHN0cmluZztcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbmV3IHdpZHRoLCB0aGUgY29sdW1uIGlzIGJlaW5nIHJlc2l6ZWQgdG8gKi9cbiAgICBuZXdXaWR0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBhIGNvbHVtbiBpcyBiZWluZyByZXNpemVkXG4gKiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29sdW1uLCBpdCdzIG9sZCBhbmQgbmV3IHdpZHRoXG4gKiBUaGUgZXZlbnQgY2FuIGJlIGNhbmNlbGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblJlc2l6aW5nRXZlbnRBcmdzIGV4dGVuZHMgSUNvbHVtblJlc2l6ZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG59XG5cbi8qKlxuICogVGhlIGV2ZW50IGFyZ3VtZW50cyB3aGVuIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgYSByb3cgaXMgYmVpbmcgY2hhbmdlZFxuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm93U2VsZWN0aW9uRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIHJvd3MsIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gc2VsZWN0ZWQgKi9cbiAgICByZWFkb25seSBvbGRTZWxlY3Rpb246IGFueVtdO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBuZXdseSBzZWxlY3RlZCByb3dzICovXG4gICAgbmV3U2VsZWN0aW9uOiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGFsbCBhZGRlZCByb3dzXG4gICAgICogV2hlbmV2ZXIgYSByb3cgaGFzIGJlZW4gc2VsZWN0ZWQsIHRoZSBhcnJheSBpcyBcInJlZnJlc2hlZFwiIHdpdGggdGhlIHNlbGVjdGVkIHJvd3NcbiAgICAgKi9cbiAgICByZWFkb25seSBhZGRlZDogYW55W107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBhbGwgcm93cywgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICAgKiBXaGVuZXZlciBhIHJvdyBoYXMgYmVlbiBkZXNlbGVjdGVkLCB0aGUgYXJyYXkgaXMgXCJyZWZyZXNoZWRcIiB3aXRoIHRoZSByb3dzLFxuICAgICAqIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgc2VsZWN0ZWQsIGJ1dCBhcmUgbm8gbG9uZ2VyXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmVtb3ZlZDogYW55W107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQsIHRoYXQgaGFzIHRyaWdnZXJlZCB0aGUgc2VsZWN0aW9uIGNoYW5nZVxuICAgICAqIHNlbGVjdGluZywgZGVzZWxlY3RpbmdcbiAgICAgKi9cbiAgICByZWFkb25seSBldmVudD86IEV2ZW50O1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYWxsIHJvd3Mgb2YgdGhlIGdyaWQgaGF2ZSBiZWVuIHNlbGVjdGVkICovXG4gICAgcmVhZG9ubHkgYWxsUm93c1NlbGVjdGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIHdoZW4gdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBhIGNvbHVtbiBpcyBiZWluZyBjaGFnZWRcbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblNlbGVjdGlvbkV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBjb2x1bW5zLCB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNlbGVjdGVkICovXG4gICAgcmVhZG9ubHkgb2xkU2VsZWN0aW9uOiBzdHJpbmdbXTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbmV3bHkgc2VsZWN0ZWQgY29sdW1ucyAqL1xuICAgIG5ld1NlbGVjdGlvbjogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBhbGwgYWRkZWQgY29sdW1uc1xuICAgICAqIFdoZW5ldmVyIGEgY29sdW1uIGhhcyBiZWVuIHNlbGVjdGVkLCB0aGUgYXJyYXkgaXMgXCJyZWZyZXNoZWRcIiB3aXRoIHRoZSBzZWxlY3RlZCBjb2x1bW5zXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWRkZWQ6IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgYWxsIGNvbHVtbnMsIHJlbW92ZWQgZnJvbSB0aGUgc2VsZWN0aW9uXG4gICAgICogV2hlbmV2ZXIgYSBjb2x1bW4gaGFzIGJlZW4gZGVzZWxlY3RlZCwgdGhlIGFycmF5IGlzIFwicmVmcmVzaGVkXCIgd2l0aCB0aGUgY29sdW1ucywgdGhhdCBoYXZlIGJlZW4gcHJldmlvdXNseSBzZWxlY3RlZCwgYnV0IGFyZSBubyBsb25nZXJcbiAgICAgKi9cbiAgICByZWFkb25seSByZW1vdmVkOiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBvcmlnaW5hbCBldmVudCwgdGhhdCBoYXMgdHJpZ2dlcmVkIHRoZSBzZWxlY3Rpb24gY2hhbmdlXG4gICAgICogc2VsZWN0aW5nLCBkZXNlbGVjdGluZ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGV2ZW50PzogRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEluZm8gZXh0ZW5kcyBJQmFzZVNlYXJjaEluZm8ge1xuICAgIG1hdGNoSW5mb0NhY2hlOiBhbnlbXTtcbiAgICBhY3RpdmVNYXRjaEluZGV4OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgYXJndW1lbnRzIGZvciB0aGUgZ3JpZCB0b29sYmFyIGV4cG9ydCBldmVudC5cbiAqIEl0IHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBncmlkIGluc3RhbmNlLCBleHBvcnRlciBzZXJ2aWNlLCBleHBvcnQgb3B0aW9ucyxcbiAqIGFuZCBhbGxvd3MgdGhlIGV2ZW50IHRvIGJlIGNhbmNlbGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkVG9vbGJhckV4cG9ydEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogYGdyaWRgIHJlcHJlc2VudHMgYSByZWZlcmVuY2UgdG8gdGhlIGluc3RhbmNlIG9mIHRoZSBncmlkIHRlIGV2ZW50IG9yaWdpbmF0ZWQgZnJvbSAqL1xuICAgIGdyaWQ6IEdyaWRUeXBlO1xuICAgIC8qKlxuICAgICAqIFRoZSBgZXhwb3J0ZXJgIGlzIGEgYmFzZSBzZXJ2aWNlLlxuICAgICAqIFRoZSB0eXBlIChhbiBhYnN0cmFjdCBjbGFzcyBgSWd4QmFzZUV4cG9ydGVyYCkgaGFzIGl0J3Mgb3duIHByb3BlcnRpZXMgYW5kIG1ldGhvZHNcbiAgICAgKiBJdCBpcyB1c2VkIHRvIGRlZmluZSB0aGUgZm9ybWF0IGFuZCBvcHRpb25zIG9mIHRoZSBleHBvcnQsIHRoZSBleHBvcnRlZCBlbGVtZW50XG4gICAgICogYW5kIG1ldGhvZHMgZm9yIHByZXBhcmluZyB0aGUgZGF0YSBmcm9tIHRoZSBlbGVtZW50cyBmb3IgZXhwb3J0aW5nXG4gICAgICovXG4gICAgZXhwb3J0ZXI6IElneEJhc2VFeHBvcnRlcjtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgc2V0dGluZ3MsIHRoYXQgY2FuIGJlIGdpdmVuIHRvIGFuIGV4cG9ydFxuICAgICAqIFRoZSB0eXBlIChhbiBhYnN0cmFjdCBjbGFzcyBgSWd4RXhwb3J0ZXJPcHRpb25zQmFzZWApIGhhcyBwcm9wZXJ0aWVzIGZvciBjb2x1bW4gc2V0dGluZ3NcbiAgICAgKiAod2hldGhlciB0aGV5IHNob3VsZCBiZSBpZ25vcmVkKSBhcyB3ZWxsIGFzIG1ldGhvZCBmb3IgZ2VuZXJhdGluZyBhIGZpbGUgbmFtZVxuICAgICAqL1xuICAgIG9wdGlvbnM6IElneEV4cG9ydGVyT3B0aW9uc0Jhc2U7XG4gICAgLyoqXG4gICAgICogYGNhbmNlbGAgcmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCBoYXMgYmVlbiBpbnRlcmVwdGVkIGFuZCBzdG9wcGVkXG4gICAgICogSWYgdGhlIHZhbHVlIGJlY29tZXMgXCJ0cnVlXCIsIGl0IHJldHVybnMvZXhpdHMgZnJvbSB0aGUgbWV0aG9kLCBpbnN0YW5jaWF0aW5nIHRoZSBpbnRlcmZhY2VcbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIHRoZSBzdGFydCBvZiBhIGNvbHVtbiBtb3Zpbmcgb3BlcmF0aW9uIGluIGEgZ3JpZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbk1vdmluZ1N0YXJ0RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGNvbHVtbiB0aGF0IGlzIGJlaW5nIG1vdmVkLlxuICAgICAqIFRoZSBgQ29sdW1uVHlwZWAgY29udGFpbnMgdGhlIGluZm9ybWF0b2luICh0aGUgZ3JpZCBpdCBiZWxvbmdzIHRvLCBjc3MgZGF0YSwgc2V0dGluZ3MsIGV0Yy4pIG9mIHRoZSBjb2x1bW4gaW4gaXRzIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBzb3VyY2U6IENvbHVtblR5cGU7XG59XG5cbi8qKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGEgY29sdW1uIG1vdmluZyBvcGVyYXRpb24gaW4gYSBncmlkICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5Nb3ZpbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29sdW1uIHRoYXQgaXMgYmVpbmcgbW92ZWQuXG4gICAgICogVGhlIGBDb2x1bW5UeXBlYCBjb250YWlucyB0aGUgaW5mb3JtYXRvaW4gKHRoZSBncmlkIGl0IGJlbG9uZ3MgdG8sIGNzcyBkYXRhLCBzZXR0aW5ncywgZXRjLikgb2YgdGhlIGNvbHVtbiBpbiBpdHMgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHNvdXJjZTogQ29sdW1uVHlwZTtcbiAgICAvKipcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyZXB0ZWQgYW5kIHN0b3BwZWRcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbmNpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gdGhlIGVuZCBvZiBhIGNvbHVtbiBtb3Zpbmcgb3BlcmF0aW9uIGluIGEgZ3JpZCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uTW92aW5nRW5kRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50IHJlcHJlc2VudHMgdGhlIGNvbHVtbiB0aGF0IGlzIGJlaW5nIG1vdmVkLlxuICAgICAqIFRoZSBgQ29sdW1uVHlwZWAgY29udGFpbnMgdGhlIGluZm9ybWF0b2luICh0aGUgZ3JpZCBpdCBiZWxvbmdzIHRvLCBjc3MgZGF0YSwgc2V0dGluZ3MsIGV0Yy4pIG9mIHRoZSBjb2x1bW4gaW4gaXRzIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBzb3VyY2U6IENvbHVtblR5cGU7XG4gICAgLyoqXG4gICAgICogVGhlIHRhcmdldCBvZiB0aGUgZXZlbnQgcmVwcmVzZW50cyB0aGUgY29sdW1uLCB0aGUgc291cmNlIGlzIGJlaW5nIG1vdmVkIHRvLlxuICAgICAqIFRoZSBgQ29sdW1uVHlwZWAgY29udGFpbnMgdGhlIGluZm9ybWF0b2luICh0aGUgZ3JpZCBpdCBiZWxvbmdzIHRvLCBjc3MgZGF0YSwgc2V0dGluZ3MsIGV0Yy4pIG9mIHRoZSBjb2x1bW4gaW4gaXRzIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICB0YXJnZXQ6IENvbHVtblR5cGU7XG4gICAgLyoqXG4gICAgICogYGNhbmNlbGAgcmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCBoYXMgYmVlbiBpbnRlcmVwdGVkIGFuZCBzdG9wcGVkXG4gICAgICogSWYgdGhlIHZhbHVlIGJlY29tZXMgXCJ0cnVlXCIsIGl0IHJldHVybnMvZXhpdHMgZnJvbSB0aGUgbWV0aG9kLCBpbnN0YW5jaWF0aW5nIHRoZSBpbnRlcmZhY2VcbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBldmVudCwgZW1pdHRlZCB3aGVuIGtleWRvd24gaXMgdHJpZ2dlcmVkIG92ZXIgZWxlbWVudCBpbnNpZGUgZ3JpZCdzIGJvZHlcbiAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgb25seSBpZiB0aGUga2V5IGNvbWJpbmF0aW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZ3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZEtleWRvd25FdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFRoZSBgdGFyZ2V0VHlwZWAgcmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0aGUgdGFyZ2V0ZWQgb2JqZWN0LiBGb3IgZXhhbXBsZSBhIGNlbGwgb3IgYSByb3cgKi9cbiAgICB0YXJnZXRUeXBlOiBHcmlkS2V5ZG93blRhcmdldFR5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGluZm9ybWF0aW9uIGFuZCBkZXRhaWxzIG9mIHRoZSBvYmplY3QgaXRzZWxmICovXG4gICAgdGFyZ2V0OiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG9yaWdpbmFsIGV2ZW50LCB0aGF0IG9jY3VyZWQuICovXG4gICAgZXZlbnQ6IEV2ZW50O1xuICAgIC8qKlxuICAgICAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gICAgICogYGNhbmNlbGAgcmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCBoYXMgYmVlbiBpbnRlcmVwdGVkIGFuZCBzdG9wcGVkXG4gICAgICogSWYgdGhlIHZhbHVlIGJlY29tZXMgXCJ0cnVlXCIsIGl0IHJldHVybnMvZXhpdHMgZnJvbSB0aGUgbWV0aG9kLCBpbnN0YW5jaWF0aW5nIHRoZSBpbnRlcmZhY2VcbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gZ2V0dGluZyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBhIGNlcnRhaW4gY2VsbCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2VsbFBvc2l0aW9uIHtcbiAgICAvKiogSXQgcmV0dXJucyB0aGUgcG9zaXRpb24gKGluZGV4KSBvZiB0aGUgcm93LCB0aGUgY2VsbCBpcyBpbiAqL1xuICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogSXQgcmV0dXJucyB0aGUgcG9zaXRpb24gKGluZGV4KSBvZiB0aGUgY29sdW5tLCB0aGUgY2VsbCBpcyBpblxuICAgICAqIENvdW50cyBvbmx5IHRoZSB2aXNpYmxlIChub24gaGlkZGVuKSBjb2x1bW5zXG4gICAgICovXG4gICAgdmlzaWJsZUNvbHVtbkluZGV4OiBudW1iZXI7XG59XG5cbi8qKiBFbWl0dGVkIHdoZW4gYSBkcmFnZ2luZyBvcGVyYXRpb24gaXMgZmluaXNoZWQgKHdoZW4gdGhlIHJvdyBpcyBkcm9wcGVkKSAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm93RHJhZ0VuZEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgZHJhZyBkaXJlY3RpdmUgb3IgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBkcmFnIG9wZXJhdGlvbiAqL1xuICAgIGRyYWdEaXJlY3RpdmU6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIHJvdyB0aGF0IGlzIGJlaW5nIGRyYWdnZWQuICovXG4gICAgZHJhZ0RhdGE6IFJvd1R5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIEhUTUwgZWxlbWVudCBpdHNlbGYgKi9cbiAgICBkcmFnRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgLyoqIGBhbmltYXRpb25gIHJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgaXMgYW5pbWF0ZWQgKi9cbiAgICBhbmltYXRpb246IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW1pdHRlZCB3aGVuIGEgZHJhZ2dpbmcgb3BlcmF0aW9uIGlzIHN0YXJ0aW5nICh3aGVuIHRoZSByb3cgaXMgXCJwaWNrZWRcIilcbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd0RyYWdTdGFydEV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgZHJhZyBkaXJlY3RpdmUgb3IgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBkcmFnIG9wZXJhdGlvbiAqL1xuICAgIGRyYWdEaXJlY3RpdmU6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIHJvdyB0aGF0IGlzIGJlaW5nIGRyYWdnZWQuICovXG4gICAgZHJhZ0RhdGE6IFJvd1R5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIEhUTUwgZWxlbWVudCBpdHNlbGYgKi9cbiAgICBkcmFnRWxlbWVudDogSFRNTEVsZW1lbnQ7XG59XG5cbi8qKiDQoGVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byB0aGUgcm93J3MgZXhwYW5zaW9uIHN0YXRlIGJlaW5nIGNoYW5nZWQgaW4gYSBncmlkICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3dUb2dnbGVFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgSUQgb2YgdGhlIHJvdyB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50ICh3aGljaCBzdGF0ZSBpcyBjaGFuZ2VkKVxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dLZXlgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcm93SUQ6IGFueTtcbiAgICByb3dLZXk6IGFueTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcm93IGFmdGVyIHRoZSBvcGVyYXRpb24gaGFzIGVuZGVkXG4gICAgICogSW5kaWNhdGluZyB3aGV0aGVyIHRoZSByb3cgaXMgYmVpbmcgZXhwYW5kZWQgKHRydWUpIG9yIGNvbGxhcHNlZCAoZmFsc2UpXG4gICAgICovXG4gICAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBvcmlnaW5hbCBldmVudCwgdGhhdCBoYXMgdHJpZ2dlcmVkIHRoZSBleHBhbnRpb24vY29sbGFwc2VcbiAgICAgKi9cbiAgICBldmVudD86IEV2ZW50O1xuICAgIC8qKlxuICAgICAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gICAgICogYGNhbmNlbGAgcmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCBoYXMgYmVlbiBpbnRlcmVwdGVkIGFuZCBzdG9wcGVkXG4gICAgICogSWYgdGhlIHZhbHVlIGJlY29tZXMgXCJ0cnVlXCIsIGl0IHJldHVybnMvZXhpdHMgZnJvbSB0aGUgbWV0aG9kLCBpbnN0YW5jaWF0aW5nIHRoZSBpbnRlcmZhY2VcbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgcm93J3MgcGluIHN0YXRlIGNoYW5nZXMuXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQaW5Sb3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogVGhlIElEIG9mIHRoZSByb3csIHRoYXQgd2FzIHBpbm5lZC91bnBpbm5lZC5cbiAgICAgKiBJRCBpcyBlaXRoZXIgdGhlIHByaW1hcnlLZXkgdmFsdWUgb3IgdGhlIGRhdGEgcmVjb3JkIGluc3RhbmNlLlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dLZXlgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcm93SUQ6IGFueTtcbiAgICByZWFkb25seSByb3dLZXk6IGFueTtcbiAgICByb3c/OiBSb3dUeXBlO1xuICAgIC8qKiBUaGUgaW5kZXggYXQgd2hpY2ggdG8gcGluIHRoZSByb3cgaW4gdGhlIHBpbm5lZCByb3dzIGNvbGxlY3Rpb24uICovXG4gICAgaW5zZXJ0QXRJbmRleD86IG51bWJlcjtcbiAgICAvKiogV2hldGhlciBvciBub3QgdGhlIHJvdyBpcyBwaW5uZWQgb3IgdW5waW5uZWQuICovXG4gICAgcmVhZG9ubHkgaXNQaW5uZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgZ3JpZCBpcyBzY3JvbGxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFNjcm9sbEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIHNjcm9sbCBkaXJlY3Rpb24gLSB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiAqL1xuICAgIGRpcmVjdGlvbjogc3RyaW5nO1xuICAgIC8qKiBUaGUgb3JpZ2luYWwgYnJvd3NlciBzY3JvbGwgZXZlbnQuICovXG4gICAgZXZlbnQ6IEV2ZW50O1xuICAgIC8qKiBUaGUgbmV3IHNjcm9sbCBwb3NpdGlvbiAqL1xuICAgIHNjcm9sbFBvc2l0aW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgY2hlY2tib3ggaW4gdGhlIGNoZWNrYm94XG4gKiBsaXN0IG9mIGFuIElneENvbHVtbkFjdGlvbnMgY29tcG9uZW50IGlzIGNsaWNrZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblRvZ2dsZWRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFRoZSBjb2x1bW4gdGhhdCBpcyB0b2dnbGVkLiAqL1xuICAgIGNvbHVtbjogQ29sdW1uVHlwZTtcbiAgICAvKiogVGhlIGNoZWNrZWQgc3RhdGUgYWZ0ZXIgdGhlIGFjdGlvbi4gKi9cbiAgICBjaGVja2VkOiBib29sZWFuO1xufVxuXG4vKiogRW1taXRlZCB3aGVuIHRoZSBhY3RpdmUgbm9kZSBpcyBjaGFuZ2VkICovXG5leHBvcnQgaW50ZXJmYWNlIElBY3RpdmVOb2RlQ2hhbmdlRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSByb3cgaW5kZXggb2YgdGhlIGFjdGl2ZSBub2RlICovXG4gICAgcm93OiBudW1iZXI7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGNvbHVtbiBpbmRleCBvZiB0aGUgYWN0aXZlIG5vZGUgKi9cbiAgICBjb2x1bW46IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIGhpZXJhcmNoaWNhbCBsZXZlbCBvZiB0aGUgYWN0aXZlIG5vZGVcbiAgICAgKi9cbiAgICBsZXZlbD86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZSBhY3RpdmUgbm9kZS5cbiAgICAgKiBUaGUgR3JpZEtleWRvd25UYXJnZXRUeXBlIGlzIGFuIGVudW0gb3IgdGhhdCBzcGVjaWZpZXMgdGhlIHBvc3NpYmxlIHRhcmdldCB0eXBlc1xuICAgICAqL1xuICAgIHRhZzogR3JpZEtleWRvd25UYXJnZXRUeXBlO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gc29ydGluZyBhbmQgZ3JvdXBpbmcgb3BlcmF0aW9uc1xuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU29ydGluZ0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIHNvcnRpbmcgZXhwcmVzc2lvbnMgYXBwbGllZCB0byB0aGUgZ3JpZC5cbiAgICAgKiBJdCBjYW4gYmUgYSBzaW5nbGUgc29ydGluZyBleHByZXNzaW9uIG9yIGFuIGFycmF5IG9mIHRoZW1cbiAgICAgKiBUaGUgZXhwcmVzc2lvbiBjb250YWlucyBpbmZvcm1hdGlvbiBsaWtlIGZpbGUgbmFtZSwgd2hldGhlciB0aGUgbGV0dGVyIGNhc2Ugc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3VudCwgZXRjLlxuICAgICAqL1xuICAgIHNvcnRpbmdFeHByZXNzaW9ucz86IElTb3J0aW5nRXhwcmVzc2lvbiB8IEFycmF5PElTb3J0aW5nRXhwcmVzc2lvbj47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBnb3VwaW5nIGV4cHJlc3Npb25zIGFwcGxpZWQgdG8gdGhlIGdyaWQuXG4gICAgICogSXQgY2FuIGJlIGEgc2luZ2xlIGdyb3VwaW5nIGV4cHJlc3Npb24gb3IgYW4gYXJyYXkgb2YgdGhlbVxuICAgICAqIFRoZSBleHByZXNzaW9uIGNvbnRhaW5zIGluZm9ybWF0aW9uIGxpa2UgdGhlIHNvcnRpbmcgZXhwcmVzc2lvbiBhbmQgY3JpdGVyaWEgYnkgd2hpY2ggdGhlIGVsZW1lbnRzIHdpbGwgYmUgZ3JvdXBlZFxuICAgICAqL1xuICAgIGdyb3VwaW5nRXhwcmVzc2lvbnM/OiBJR3JvdXBpbmdFeHByZXNzaW9uIHwgQXJyYXk8SUdyb3VwaW5nRXhwcmVzc2lvbj47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byBmaWx0ZXJpbmcgb3BlcmF0aW9uc1xuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyaW5nRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGZpbHRlcmluZyBleHByZXNzaW9ucyBhcHBsaWVkIHRvIHRoZSBncmlkLlxuICAgICAqIFRoZSBleHByZXNzaW9uIGNvbnRhaW5zIGluZm9ybWF0aW9uIGxpa2UgZmlsdGVyaW5nIG9wZXJhbmRzIGFuZCBvcGVyYXRvciwgYW4gZXhwcmVzc2lvbiBvciBjb25kaXRpb24sIGV0Yy5cbiAgICAgKi9cbiAgICBmaWx0ZXJpbmdFeHByZXNzaW9uczogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbn1cblxuLyoqIFRoZSBldmVudCBhcmd1bWVudHMgYWZ0ZXIgYSBjb2x1bW4ncyB2aXNpYmlsaXR5IGlzIGNoYW5nZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgY29sdW1uIHRoZSBldmVudCBvcmlnaW5hdGVkIGZyb20gKi9cbiAgICBjb2x1bW46IGFueTtcbiAgICAvKipcbiAgICAgKiBUaGUgbmV3IGhpZGRlbiBzdGF0ZSB0aGF0IHRoZSBjb2x1bW4gd2lsbCBoYXZlLCBpZiBvcGVyYXRpb24gaXMgc3VjY2VzZnVsbC5cbiAgICAgKiBXaWxsIGJlIGB0cnVlYCB3aGVuIGhpZGluZyBhbmQgYGZhbHNlYCB3aGVuIHNob3dpbmcuXG4gICAgICovXG4gICAgbmV3VmFsdWU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIGV2ZW50IGFyZ3VtZW50cyB3aGVuIGEgY29sdW1uJ3MgdmlzaWJpbGl0eSBpcyBjaGFuZ2VkLlxuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2x1bW4gYW5kIHRoZSBpdCdzIHZpc2liaWxpdHkgYWZ0ZXIgdGhlIG9wZXJhdGlvbiAod2lsbCBiZSBgdHJ1ZWAgd2hlbiBoaWRpbmcgYW5kIGBmYWxzZWAgd2hlbiBzaG93aW5nKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdpbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQ29sdW1uVmlzaWJpbGl0eUNoYW5nZWRFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xufVxuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2NvbW1vbi9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCYXNlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkS2V5ZG93blRhcmdldFR5cGUgfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IENlbGxUeXBlLCBDb2x1bW5UeXBlLCBHcmlkVHlwZSwgUm93VHlwZSB9IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEJhc2VFeHBvcnRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydGVyLWNvbW1vbi9iYXNlLWV4cG9ydC1zZXJ2aWNlJztcbmltcG9ydCB7IElneEV4cG9ydGVyT3B0aW9uc0Jhc2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnRlci1jb21tb24vZXhwb3J0ZXItb3B0aW9ucy1iYXNlJztcbmltcG9ydCB7IElTb3J0aW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IElCYXNlU2VhcmNoSW5mbyB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGV4dC1oaWdobGlnaHQvdGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlJztcblxuLyoqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBkYXRhIGZyb20gYSBncmlkIGlzIGJlaW5nIGNvcGllZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRDbGlwYm9hcmRFdmVudCB7XG4gICAgLyoqIGBkYXRhYCBjYW4gYmUgb2YgYW55IHR5cGUgYW5kIHJlZmVycyB0byB0aGUgZGF0YSB0aGF0IGlzIGJlaW5nIGNvcGllZC9zdG9yZWQgdG8gdGhlIGNsaXBib2FyZCAqL1xuICAgIGRhdGE6IGFueVtdO1xuICAgIC8qKlxuICAgICAqIGBjYW5jZWxgIHJldHVybnMgd2hldGhlciBhbiBleHRlcm5hbCBldmVudCBoYXMgaW50ZXJjZXB0ZWQgdGhlIGNvcHlpbmdcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbnRpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXZlbnQgYXJndW1lbnQgcmVsYXRlZCB0byBncmlkIGNlbGwgaW50ZXJhY3Rpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZENlbGxFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgY2VsbCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQuICovXG4gICAgY2VsbDogQ2VsbFR5cGU7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQgdGhhdCBvY3VycmVkXG4gICAgICogRXhhbXBsZXMgb2Ygc3VjaCBldmVudHMgaW5jbHVkZTogc2VsZWN0aW5nLCBjbGlja2luZywgZG91YmxlIGNsaWNraW5nLCBldGMuXG4gICAgICovXG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBldmVudCBhcmd1bWVudCByZWxhdGVkIHRvIGdyaWQgcm93IGludGVyYWN0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRSb3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgcm93IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudC4gKi9cbiAgICByb3c6IFJvd1R5cGU7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQgdGhhdCBvY3VycmVkXG4gICAgICogRXhhbXBsZXMgb2Ygc3VjaCBldmVudHMgaW5jbHVkZTogc2VsZWN0aW5nLCBjbGlja2luZywgZG91YmxlIGNsaWNraW5nLCBldGMuXG4gICAgICovXG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byBncmlkIGVkaXRpbmcgY29tcGxldGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRFZGl0RG9uZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE3LjEuMC4gVXNlIHRoZSBgcm93S2V5YCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHJvd0lEOiBhbnk7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4xLjAuIFVzZSB0aGUgYHJvd0tleWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwcmltYXJ5S2V5OiBhbnk7XG4gICAgcm93S2V5OiBhbnk7XG4gICAgY2VsbElEPzoge1xuICAgICAgICByb3dJRDogYW55O1xuICAgICAgICBjb2x1bW5JRDogYW55O1xuICAgICAgICByb3dJbmRleDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogYHJvd0RhdGFgIHJlcHJlc2VudHMgdGhlIHVwZGF0ZWQvY29tbWl0dGVkIGRhdGEgb2YgdGhlIHJvdyBhZnRlciB0aGUgZWRpdCAobmV3VmFsdWUpXG4gICAgICogVGhlIG9ubHkgY2FzZSByb3dEYXRhIChvZiB0aGUgY3VycmVudCBvYmplY3QpIGlzIHVzZWQgZGlyZWN0bHksIGlzIHdoZW4gdGhlcmUgaXMgbm8gcm93RWRpdGluZyBvciB0cmFuc2FjdGlvbnMgZW5hYmxlZFxuICAgICAqL1xuICAgIHJvd0RhdGE6IGFueTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBwcmV2aW91cyAoYmVmb3JlIGVkaXRpbmcpIHZhbHVlIG9mIHRoZSBlZGl0ZWQgY2VsbC5cbiAgICAgKiBJdCdzIHVzZWQgd2hlbiB0aGUgZXZlbnQgaGFzIGJlZW4gc3RvcHBlZC9leGl0ZWQuXG4gICAgICovXG4gICAgb2xkVmFsdWU6IGFueTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIHZhbHVlLCB0aGF0IGlzIGJlaW5nIGVudGVyZWQgaW4gdGhlIGVkaXRlZCBjZWxsXG4gICAgICogV2hlbiB0aGVyZSBpcyBubyBgbmV3VmFsdWVgIGFuZCB0aGUgZXZlbnQgaGFzIGVuZGVkLCB0aGUgdmFsdWUgb2YgdGhlIGNlbGwgcmV0dXJucyB0byB0aGUgYG9sZFZhbHVlYFxuICAgICAqL1xuICAgIG5ld1ZhbHVlPzogYW55O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQsIHRoYXQgaGFzIHRyaWdnZXJlZCB0aGUgZWRpdFxuICAgICAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBjb2x1bW4gaW5mb3JtYXRpb24gb2YgdGhlIGVkaXRlZCBjZWxsXG4gICAgICovXG4gICAgY29sdW1uPzogQ29sdW1uVHlwZTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIGdyaWQgaW5zdGFuY2UgdGhhdCBvd25zIHRoZSBlZGl0IGV2ZW50LlxuICAgICAqL1xuICAgIG93bmVyPzogR3JpZFR5cGU7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGVkaXRpbmcgY29uc2lzdHMgb2YgYWRkaW5nIGEgbmV3IHJvd1xuICAgICAqL1xuICAgIGlzQWRkUm93PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgbmV3IHZhbHVlIHdvdWxkIGJlIHZhbGlkLlxuICAgICAqIEl0IGNhbiBiZSBzZXQgdG8gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIG1ldGhvZHMgZm9yIHZhbGlkYXRpb24gb2YgdGhlIGdyaWRcbiAgICAgKi9cbiAgICB2YWxpZD86IGJvb2xlYW47XG59XG5cblxuLyoqXG4gKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGdyaWQgZWRpdGluZy5cbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcm93IGFuZCB0aGUgY29sdW1uLCBhcyB3ZWxsIGFzIHRoZSBvbGQgYW5kIG53ZSB2YWx1ZSBvZiB0aGUgZWxlbWVudC9jZWxsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRFZGl0RXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUdyaWRFZGl0RG9uZUV2ZW50QXJncyB7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd0RhdGFDYW5jZWxhYmxlRXZlbnRBcmdzIGV4dGVuZHMgSVJvd0RhdGFFdmVudEFyZ3MsIElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBjZWxsSUQ/OiB7XG4gICAgICAgIHJvd0lEOiBhbnk7XG4gICAgICAgIGNvbHVtbklEOiBhbnk7XG4gICAgICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIG9sZFZhbHVlOiBhbnk7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBuZXdWYWx1ZT86IGFueTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIGlzQWRkUm93PzogYm9vbGVhbjtcbiAgICBvd25lcjogR3JpZFR5cGU7XG59XG5cbi8qKlxuICogVGhlIGV2ZW50IGFyZ3VtZW50cyBhZnRlciBhIGNvbHVtbidzIHBpbiBzdGF0ZSBpcyBjaGFuZ2VkLlxuICogYGluc2VydEF0SW5kZXhgc3BlY2lmaWVzIGF0IHdoaWNoIGluZGV4IGluIHRoZSBwaW5uZWQvdW5waW5uZWQgYXJlYSB0aGUgY29sdW1uIHdhcyBpbnNlcnRlZC5cbiAqIGBpc1Bpbm5lZGAgcmV0dXJucyB0aGUgYWN0dWFsIHBpbiBzdGF0ZSBvZiB0aGUgY29sdW1uIGFmdGVyIHRoZSBvcGVyYXRpb24gY29tcGxldGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQaW5Db2x1bW5FdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgY29sdW1uOiBDb2x1bW5UeXBlO1xuICAgIC8qKlxuICAgICAqIElmIHBpbm5lZCwgc3BlY2lmaWVzIGF0IHdoaWNoIGluZGV4IGluIHRoZSBwaW5uZWQgYXJlYSB0aGUgY29sdW1uIGlzIGluc2VydGVkLlxuICAgICAqIElmIHVucGlubmVkLCBzcGVjaWZpZXMgYXQgd2hpY2ggaW5kZXggaW4gdGhlIHVucGlubmVkIGFyZWEgdGhlIGNvbHVtbiBpcyBpbnNlcnRlZC5cbiAgICAgKi9cbiAgICBpbnNlcnRBdEluZGV4OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYWN0dWFsIHBpbiBzdGF0ZSBvZiB0aGUgY29sdW1uLlxuICAgICAqIElmIHBpbm5pbmcvdW5waW5uaW5nIGlzIHN1Y2Nlc3NmdWwsIHZhbHVlIG9mIGBpc1Bpbm5lZGAgd2lsbCBjaGFuZ2UgYWNjb3JkaW5nbHkgd2hlbiByZWFkIGluIHRoZSBcIi1pbmdcIiBhbmQgXCItZWRcIiBldmVudC5cbiAgICAgKi9cbiAgICBpc1Bpbm5lZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIGJlZm9yZSBhIGNvbHVtbidzIHBpbiBzdGF0ZSBpcyBjaGFuZ2VkLlxuICogYGluc2VydEF0SW5kZXhgc3BlY2lmaWVzIGF0IHdoaWNoIGluZGV4IGluIHRoZSBwaW5uZWQvdW5waW5uZWQgYXJlYSB0aGUgY29sdW1uIGlzIGluc2VydGVkLlxuICogQ2FuIGJlIGNoYW5nZWQgaW4gdGhlIGBjb2x1bW5QaW5gIGV2ZW50LlxuICogYGlzUGlubmVkYCByZXR1cm5zIHRoZSBhY3R1YWwgcGluIHN0YXRlIG9mIHRoZSBjb2x1bW4uIFdoZW4gcGlubmluZy91bnBpbm5pbmcgaXMgc3VjY2Vzc2Z1bCxcbiAqIHRoZSB2YWx1ZSBvZiBgaXNQaW5uZWRgIHdpbGwgY2hhbmdlIGFjY29yZGluZ2x5IHdoZW4gcmVhZCBpbiB0aGUgXCItaW5nXCIgYW5kIFwiLWVkXCIgZXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpbkNvbHVtbkNhbmNlbGxhYmxlRXZlbnRBcmdzIGV4dGVuZHMgSVBpbkNvbHVtbkV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byBldmVudHMsIHRoYXQgY2FuIG9jY3VyIGZvciByb3dzIGluIGEgZ3JpZFxuICogRXhhbXBsZSBmb3IgZXZlbnRzOiBhZGRpbmcsIGRlbGV0aW5nLCBzZWxlY3Rpb24sIHRyYW5zYWN0aW9uLCBldGMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd0RhdGFFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4xLjAuIFVzZSB0aGUgYHJvd0RhdGFgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgZGF0YTogYW55O1xuICAgIHJvd0RhdGE6IGFueVxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHVuaXF1ZSBrZXksIHRoZSByb3cgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aC5cbiAgICAgKiBBdmFpbGFibGUgaWYgYHByaW1hcnlLZXlgIGV4aXN0c1xuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dLZXlgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcHJpbWFyeUtleTogYW55O1xuICAgIHJvd0tleTogYW55O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBncmlkIGluc3RhbmNlIHRoYXQgb3ducyB0aGUgZWRpdCBldmVudC4gKi9cbiAgICBvd25lcjogR3JpZFR5cGU7XG59XG5cblxuLyoqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBhIGNvbHVtbiBpcyBiZWluZyByZXNpemVkICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5SZXNpemVFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBjb2x1bW4gdGhhdCBpcyBiZWluZyByZXNpemVkICovXG4gICAgY29sdW1uOiBDb2x1bW5UeXBlO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBvbGQgd2lkdGggb2YgdGhlIGNvbHVtbiBiZWZvcmUgdGhlIHJlc2l6aW5nICovXG4gICAgcHJldldpZHRoOiBzdHJpbmc7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5ldyB3aWR0aCwgdGhlIGNvbHVtbiBpcyBiZWluZyByZXNpemVkIHRvICovXG4gICAgbmV3V2lkdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIHdoZW4gYSBjb2x1bW4gaXMgYmVpbmcgcmVzaXplZFxuICogSXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbHVtbiwgaXQncyBvbGQgYW5kIG5ldyB3aWR0aFxuICogVGhlIGV2ZW50IGNhbiBiZSBjYW5jZWxlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5SZXNpemluZ0V2ZW50QXJncyBleHRlbmRzIElDb2x1bW5SZXNpemVFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xufVxuXG4vKipcbiAqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGEgcm93IGlzIGJlaW5nIGNoYW5nZWRcbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd1NlbGVjdGlvbkV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyBhbiBhcnJheSBvZiByb3dzLCB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNlbGVjdGVkICovXG4gICAgcmVhZG9ubHkgb2xkU2VsZWN0aW9uOiBhbnlbXTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbmV3bHkgc2VsZWN0ZWQgcm93cyAqL1xuICAgIG5ld1NlbGVjdGlvbjogYW55W107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBhbGwgYWRkZWQgcm93c1xuICAgICAqIFdoZW5ldmVyIGEgcm93IGhhcyBiZWVuIHNlbGVjdGVkLCB0aGUgYXJyYXkgaXMgXCJyZWZyZXNoZWRcIiB3aXRoIHRoZSBzZWxlY3RlZCByb3dzXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWRkZWQ6IGFueVtdO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgYWxsIHJvd3MsIHJlbW92ZWQgZnJvbSB0aGUgc2VsZWN0aW9uXG4gICAgICogV2hlbmV2ZXIgYSByb3cgaGFzIGJlZW4gZGVzZWxlY3RlZCwgdGhlIGFycmF5IGlzIFwicmVmcmVzaGVkXCIgd2l0aCB0aGUgcm93cyxcbiAgICAgKiB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5IHNlbGVjdGVkLCBidXQgYXJlIG5vIGxvbmdlclxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJlbW92ZWQ6IGFueVtdO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIG9yaWdpbmFsIGV2ZW50LCB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIHNlbGVjdGlvbiBjaGFuZ2VcbiAgICAgKiBzZWxlY3RpbmcsIGRlc2VsZWN0aW5nXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXZlbnQ/OiBFdmVudDtcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGFsbCByb3dzIG9mIHRoZSBncmlkIGhhdmUgYmVlbiBzZWxlY3RlZCAqL1xuICAgIHJlYWRvbmx5IGFsbFJvd3NTZWxlY3RlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIGV2ZW50IGFyZ3VtZW50cyB3aGVuIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgYSBjb2x1bW4gaXMgYmVpbmcgY2hhbmdlZFxuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uU2VsZWN0aW9uRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGNvbHVtbnMsIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gc2VsZWN0ZWQgKi9cbiAgICByZWFkb25seSBvbGRTZWxlY3Rpb246IHN0cmluZ1tdO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBuZXdseSBzZWxlY3RlZCBjb2x1bW5zICovXG4gICAgbmV3U2VsZWN0aW9uOiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGFsbCBhZGRlZCBjb2x1bW5zXG4gICAgICogV2hlbmV2ZXIgYSBjb2x1bW4gaGFzIGJlZW4gc2VsZWN0ZWQsIHRoZSBhcnJheSBpcyBcInJlZnJlc2hlZFwiIHdpdGggdGhlIHNlbGVjdGVkIGNvbHVtbnNcbiAgICAgKi9cbiAgICByZWFkb25seSBhZGRlZDogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBhbGwgY29sdW1ucywgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICAgKiBXaGVuZXZlciBhIGNvbHVtbiBoYXMgYmVlbiBkZXNlbGVjdGVkLCB0aGUgYXJyYXkgaXMgXCJyZWZyZXNoZWRcIiB3aXRoIHRoZSBjb2x1bW5zLCB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5IHNlbGVjdGVkLCBidXQgYXJlIG5vIGxvbmdlclxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJlbW92ZWQ6IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIG9yaWdpbmFsIGV2ZW50LCB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIHNlbGVjdGlvbiBjaGFuZ2VcbiAgICAgKiBzZWxlY3RpbmcsIGRlc2VsZWN0aW5nXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXZlbnQ/OiBFdmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoSW5mbyBleHRlbmRzIElCYXNlU2VhcmNoSW5mbyB7XG4gICAgbWF0Y2hJbmZvQ2FjaGU6IGFueVtdO1xuICAgIGFjdGl2ZU1hdGNoSW5kZXg6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBncmlkIHRvb2xiYXIgZXhwb3J0IGV2ZW50LlxuICogSXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdyaWQgaW5zdGFuY2UsIGV4cG9ydGVyIHNlcnZpY2UsIGV4cG9ydCBvcHRpb25zLFxuICogYW5kIGFsbG93cyB0aGUgZXZlbnQgdG8gYmUgY2FuY2VsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRUb29sYmFyRXhwb3J0RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBgZ3JpZGAgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byB0aGUgaW5zdGFuY2Ugb2YgdGhlIGdyaWQgdGUgZXZlbnQgb3JpZ2luYXRlZCBmcm9tICovXG4gICAgZ3JpZDogR3JpZFR5cGU7XG4gICAgLyoqXG4gICAgICogVGhlIGBleHBvcnRlcmAgaXMgYSBiYXNlIHNlcnZpY2UuXG4gICAgICogVGhlIHR5cGUgKGFuIGFic3RyYWN0IGNsYXNzIGBJZ3hCYXNlRXhwb3J0ZXJgKSBoYXMgaXQncyBvd24gcHJvcGVydGllcyBhbmQgbWV0aG9kc1xuICAgICAqIEl0IGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBmb3JtYXQgYW5kIG9wdGlvbnMgb2YgdGhlIGV4cG9ydCwgdGhlIGV4cG9ydGVkIGVsZW1lbnRcbiAgICAgKiBhbmQgbWV0aG9kcyBmb3IgcHJlcGFyaW5nIHRoZSBkYXRhIGZyb20gdGhlIGVsZW1lbnRzIGZvciBleHBvcnRpbmdcbiAgICAgKi9cbiAgICBleHBvcnRlcjogSWd4QmFzZUV4cG9ydGVyO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGRpZmZlcmVudCBzZXR0aW5ncywgdGhhdCBjYW4gYmUgZ2l2ZW4gdG8gYW4gZXhwb3J0XG4gICAgICogVGhlIHR5cGUgKGFuIGFic3RyYWN0IGNsYXNzIGBJZ3hFeHBvcnRlck9wdGlvbnNCYXNlYCkgaGFzIHByb3BlcnRpZXMgZm9yIGNvbHVtbiBzZXR0aW5nc1xuICAgICAqICh3aGV0aGVyIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQpIGFzIHdlbGwgYXMgbWV0aG9kIGZvciBnZW5lcmF0aW5nIGEgZmlsZSBuYW1lXG4gICAgICovXG4gICAgb3B0aW9uczogSWd4RXhwb3J0ZXJPcHRpb25zQmFzZTtcbiAgICAvKipcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyY2VwdGVkIGFuZCBzdG9wcGVkXG4gICAgICogSWYgdGhlIHZhbHVlIGJlY29tZXMgXCJ0cnVlXCIsIGl0IHJldHVybnMvZXhpdHMgZnJvbSB0aGUgbWV0aG9kLCBpbnN0YW50aWF0aW5nIHRoZSBpbnRlcmZhY2VcbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIHRoZSBzdGFydCBvZiBhIGNvbHVtbiBtb3Zpbmcgb3BlcmF0aW9uIGluIGEgZ3JpZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbk1vdmluZ1N0YXJ0RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGNvbHVtbiB0aGF0IGlzIGJlaW5nIG1vdmVkLlxuICAgICAqIFRoZSBgQ29sdW1uVHlwZWAgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uICh0aGUgZ3JpZCBpdCBiZWxvbmdzIHRvLCBjc3MgZGF0YSwgc2V0dGluZ3MsIGV0Yy4pIG9mIHRoZSBjb2x1bW4gaW4gaXRzIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBzb3VyY2U6IENvbHVtblR5cGU7XG59XG5cbi8qKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGEgY29sdW1uIG1vdmluZyBvcGVyYXRpb24gaW4gYSBncmlkICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5Nb3ZpbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29sdW1uIHRoYXQgaXMgYmVpbmcgbW92ZWQuXG4gICAgICogVGhlIGBDb2x1bW5UeXBlYCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gKHRoZSBncmlkIGl0IGJlbG9uZ3MgdG8sIGNzcyBkYXRhLCBzZXR0aW5ncywgZXRjLikgb2YgdGhlIGNvbHVtbiBpbiBpdHMgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHNvdXJjZTogQ29sdW1uVHlwZTtcbiAgICAvKipcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyY2VwdGVkIGFuZCBzdG9wcGVkXG4gICAgICogSWYgdGhlIHZhbHVlIGJlY29tZXMgXCJ0cnVlXCIsIGl0IHJldHVybnMvZXhpdHMgZnJvbSB0aGUgbWV0aG9kLCBpbnN0YW50aWF0aW5nIHRoZSBpbnRlcmZhY2VcbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIHRoZSBlbmQgb2YgYSBjb2x1bW4gbW92aW5nIG9wZXJhdGlvbiBpbiBhIGdyaWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbk1vdmluZ0VuZEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgc291cmNlIG9mIHRoZSBldmVudCByZXByZXNlbnRzIHRoZSBjb2x1bW4gdGhhdCBpcyBiZWluZyBtb3ZlZC5cbiAgICAgKiBUaGUgYENvbHVtblR5cGVgIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiAodGhlIGdyaWQgaXQgYmVsb25ncyB0bywgY3NzIGRhdGEsIHNldHRpbmdzLCBldGMuKSBvZiB0aGUgY29sdW1uIGluIGl0cyBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgc291cmNlOiBDb2x1bW5UeXBlO1xuICAgIC8qKlxuICAgICAqIFRoZSB0YXJnZXQgb2YgdGhlIGV2ZW50IHJlcHJlc2VudHMgdGhlIGNvbHVtbiwgdGhlIHNvdXJjZSBpcyBiZWluZyBtb3ZlZCB0by5cbiAgICAgKiBUaGUgYENvbHVtblR5cGVgIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiAodGhlIGdyaWQgaXQgYmVsb25ncyB0bywgY3NzIGRhdGEsIHNldHRpbmdzLCBldGMuKSBvZiB0aGUgY29sdW1uIGluIGl0cyBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgdGFyZ2V0OiBDb2x1bW5UeXBlO1xuICAgIC8qKlxuICAgICAqIGBjYW5jZWxgIHJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgaGFzIGJlZW4gaW50ZXJjZXB0ZWQgYW5kIHN0b3BwZWRcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbnRpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGV2ZW50LCBlbWl0dGVkIHdoZW4ga2V5ZG93biBpcyB0cmlnZ2VyZWQgb3ZlciBlbGVtZW50IGluc2lkZSBncmlkJ3MgYm9keVxuICogVGhpcyBldmVudCBpcyBmaXJlZCBvbmx5IGlmIHRoZSBrZXkgY29tYmluYXRpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBncmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkS2V5ZG93bkV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIGB0YXJnZXRUeXBlYCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXRlZCBvYmplY3QuIEZvciBleGFtcGxlIGEgY2VsbCBvciBhIHJvdyAqL1xuICAgIHRhcmdldFR5cGU6IEdyaWRLZXlkb3duVGFyZ2V0VHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24gYW5kIGRldGFpbHMgb2YgdGhlIG9iamVjdCBpdHNlbGYgKi9cbiAgICB0YXJnZXQ6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQsIHRoYXQgb2NjdXJyZWQuICovXG4gICAgZXZlbnQ6IEV2ZW50O1xuICAgIC8qKlxuICAgICAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gICAgICogYGNhbmNlbGAgcmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCBoYXMgYmVlbiBpbnRlcmNlcHRlZCBhbmQgc3RvcHBlZFxuICAgICAqIElmIHRoZSB2YWx1ZSBiZWNvbWVzIFwidHJ1ZVwiLCBpdCByZXR1cm5zL2V4aXRzIGZyb20gdGhlIG1ldGhvZCwgaW5zdGFudGlhdGluZyB0aGUgaW50ZXJmYWNlXG4gICAgICovXG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG4vKiogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIGdldHRpbmcgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgYSBjZXJ0YWluIGNlbGwgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNlbGxQb3NpdGlvbiB7XG4gICAgLyoqIEl0IHJldHVybnMgdGhlIHBvc2l0aW9uIChpbmRleCkgb2YgdGhlIHJvdywgdGhlIGNlbGwgaXMgaW4gKi9cbiAgICByb3dJbmRleDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIEl0IHJldHVybnMgdGhlIHBvc2l0aW9uIChpbmRleCkgb2YgdGhlIGNvbHVtbiwgdGhlIGNlbGwgaXMgaW5cbiAgICAgKiBDb3VudHMgb25seSB0aGUgdmlzaWJsZSAobm9uIGhpZGRlbikgY29sdW1uc1xuICAgICAqL1xuICAgIHZpc2libGVDb2x1bW5JbmRleDogbnVtYmVyO1xufVxuXG4vKiogRW1pdHRlZCB3aGVuIGEgZHJhZ2dpbmcgb3BlcmF0aW9uIGlzIGZpbmlzaGVkICh3aGVuIHRoZSByb3cgaXMgZHJvcHBlZCkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd0RyYWdFbmRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGRyYWcgZGlyZWN0aXZlIG9yIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZHJhZyBvcGVyYXRpb24gKi9cbiAgICBkcmFnRGlyZWN0aXZlOiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSByb3cgdGhhdCBpcyBiZWluZyBkcmFnZ2VkLiAqL1xuICAgIGRyYWdEYXRhOiBSb3dUeXBlO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBIVE1MIGVsZW1lbnQgaXRzZWxmICovXG4gICAgZHJhZ0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIC8qKiBgYW5pbWF0aW9uYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGlzIGFuaW1hdGVkICovXG4gICAgYW5pbWF0aW9uOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVtaXR0ZWQgd2hlbiBhIGRyYWdnaW5nIG9wZXJhdGlvbiBpcyBzdGFydGluZyAod2hlbiB0aGUgcm93IGlzIFwicGlja2VkXCIpXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3dEcmFnU3RhcnRFdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGRyYWcgZGlyZWN0aXZlIG9yIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZHJhZyBvcGVyYXRpb24gKi9cbiAgICBkcmFnRGlyZWN0aXZlOiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSByb3cgdGhhdCBpcyBiZWluZyBkcmFnZ2VkLiAqL1xuICAgIGRyYWdEYXRhOiBSb3dUeXBlO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBIVE1MIGVsZW1lbnQgaXRzZWxmICovXG4gICAgZHJhZ0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byB0aGUgcm93J3MgZXhwYW5zaW9uIHN0YXRlIGJlaW5nIGNoYW5nZWQgaW4gYSBncmlkICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3dUb2dnbGVFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgSUQgb2YgdGhlIHJvdyB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50ICh3aGljaCBzdGF0ZSBpcyBjaGFuZ2VkKVxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dLZXlgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcm93SUQ6IGFueTtcbiAgICByb3dLZXk6IGFueTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcm93IGFmdGVyIHRoZSBvcGVyYXRpb24gaGFzIGVuZGVkXG4gICAgICogSW5kaWNhdGluZyB3aGV0aGVyIHRoZSByb3cgaXMgYmVpbmcgZXhwYW5kZWQgKHRydWUpIG9yIGNvbGxhcHNlZCAoZmFsc2UpXG4gICAgICovXG4gICAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBvcmlnaW5hbCBldmVudCwgdGhhdCBoYXMgdHJpZ2dlcmVkIHRoZSBleHBhbnNpb24vY29sbGFwc2VcbiAgICAgKi9cbiAgICBldmVudD86IEV2ZW50O1xuICAgIC8qKlxuICAgICAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gICAgICogYGNhbmNlbGAgcmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCBoYXMgYmVlbiBpbnRlcmNlcHRlZCBhbmQgc3RvcHBlZFxuICAgICAqIElmIHRoZSB2YWx1ZSBiZWNvbWVzIFwidHJ1ZVwiLCBpdCByZXR1cm5zL2V4aXRzIGZyb20gdGhlIG1ldGhvZCwgaW5zdGFudGlhdGluZyB0aGUgaW50ZXJmYWNlXG4gICAgICovXG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHJvdydzIHBpbiBzdGF0ZSBjaGFuZ2VzLlxuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGluUm93RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFRoZSBJRCBvZiB0aGUgcm93LCB0aGF0IHdhcyBwaW5uZWQvdW5waW5uZWQuXG4gICAgICogSUQgaXMgZWl0aGVyIHRoZSBwcmltYXJ5S2V5IHZhbHVlIG9yIHRoZSBkYXRhIHJlY29yZCBpbnN0YW5jZS5cbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE3LjEuMC4gVXNlIHRoZSBgcm93S2V5YCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJvd0lEOiBhbnk7XG4gICAgcmVhZG9ubHkgcm93S2V5OiBhbnk7XG4gICAgcm93PzogUm93VHlwZTtcbiAgICAvKiogVGhlIGluZGV4IGF0IHdoaWNoIHRvIHBpbiB0aGUgcm93IGluIHRoZSBwaW5uZWQgcm93cyBjb2xsZWN0aW9uLiAqL1xuICAgIGluc2VydEF0SW5kZXg/OiBudW1iZXI7XG4gICAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSByb3cgaXMgcGlubmVkIG9yIHVucGlubmVkLiAqL1xuICAgIHJlYWRvbmx5IGlzUGlubmVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGdyaWQgaXMgc2Nyb2xsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRTY3JvbGxFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFRoZSBzY3JvbGwgZGlyZWN0aW9uIC0gdmVydGljYWwgb3IgaG9yaXpvbnRhbC4gKi9cbiAgICBkaXJlY3Rpb246IHN0cmluZztcbiAgICAvKiogVGhlIG9yaWdpbmFsIGJyb3dzZXIgc2Nyb2xsIGV2ZW50LiAqL1xuICAgIGV2ZW50OiBFdmVudDtcbiAgICAvKiogVGhlIG5ldyBzY3JvbGwgcG9zaXRpb24gKi9cbiAgICBzY3JvbGxQb3NpdGlvbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGNoZWNrYm94IGluIHRoZSBjaGVja2JveFxuICogbGlzdCBvZiBhbiBJZ3hDb2x1bW5BY3Rpb25zIGNvbXBvbmVudCBpcyBjbGlja2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5Ub2dnbGVkRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBUaGUgY29sdW1uIHRoYXQgaXMgdG9nZ2xlZC4gKi9cbiAgICBjb2x1bW46IENvbHVtblR5cGU7XG4gICAgLyoqIFRoZSBjaGVja2VkIHN0YXRlIGFmdGVyIHRoZSBhY3Rpb24uICovXG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbn1cblxuLyoqIEVtaXR0ZWQgd2hlbiB0aGUgYWN0aXZlIG5vZGUgaXMgY2hhbmdlZCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWN0aXZlTm9kZUNoYW5nZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgcm93IGluZGV4IG9mIHRoZSBhY3RpdmUgbm9kZSAqL1xuICAgIHJvdzogbnVtYmVyO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjb2x1bW4gaW5kZXggb2YgdGhlIGFjdGl2ZSBub2RlICovXG4gICAgY29sdW1uOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBoaWVyYXJjaGljYWwgbGV2ZWwgb2YgdGhlIGFjdGl2ZSBub2RlXG4gICAgICovXG4gICAgbGV2ZWw/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgdHlwZSBvZiB0aGUgYWN0aXZlIG5vZGUuXG4gICAgICogVGhlIEdyaWRLZXlkb3duVGFyZ2V0VHlwZSBpcyBhbiBlbnVtIG9yIHRoYXQgc3BlY2lmaWVzIHRoZSBwb3NzaWJsZSB0YXJnZXQgdHlwZXNcbiAgICAgKi9cbiAgICB0YWc6IEdyaWRLZXlkb3duVGFyZ2V0VHlwZTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIHNvcnRpbmcgYW5kIGdyb3VwaW5nIG9wZXJhdGlvbnNcbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNvcnRpbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBzb3J0aW5nIGV4cHJlc3Npb25zIGFwcGxpZWQgdG8gdGhlIGdyaWQuXG4gICAgICogSXQgY2FuIGJlIGEgc2luZ2xlIHNvcnRpbmcgZXhwcmVzc2lvbiBvciBhbiBhcnJheSBvZiB0aGVtXG4gICAgICogVGhlIGV4cHJlc3Npb24gY29udGFpbnMgaW5mb3JtYXRpb24gbGlrZSBmaWxlIG5hbWUsIHdoZXRoZXIgdGhlIGxldHRlciBjYXNlIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQsIGV0Yy5cbiAgICAgKi9cbiAgICBzb3J0aW5nRXhwcmVzc2lvbnM/OiBJU29ydGluZ0V4cHJlc3Npb24gfCBBcnJheTxJU29ydGluZ0V4cHJlc3Npb24+O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgYXBwbGllZCB0byB0aGUgZ3JpZC5cbiAgICAgKiBJdCBjYW4gYmUgYSBzaW5nbGUgZ3JvdXBpbmcgZXhwcmVzc2lvbiBvciBhbiBhcnJheSBvZiB0aGVtXG4gICAgICogVGhlIGV4cHJlc3Npb24gY29udGFpbnMgaW5mb3JtYXRpb24gbGlrZSB0aGUgc29ydGluZyBleHByZXNzaW9uIGFuZCBjcml0ZXJpYSBieSB3aGljaCB0aGUgZWxlbWVudHMgd2lsbCBiZSBncm91cGVkXG4gICAgICovXG4gICAgZ3JvdXBpbmdFeHByZXNzaW9ucz86IElHcm91cGluZ0V4cHJlc3Npb24gfCBBcnJheTxJR3JvdXBpbmdFeHByZXNzaW9uPjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGZpbHRlcmluZyBvcGVyYXRpb25zXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJpbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgZmlsdGVyaW5nIGV4cHJlc3Npb25zIGFwcGxpZWQgdG8gdGhlIGdyaWQuXG4gICAgICogVGhlIGV4cHJlc3Npb24gY29udGFpbnMgaW5mb3JtYXRpb24gbGlrZSBmaWx0ZXJpbmcgb3BlcmFuZHMgYW5kIG9wZXJhdG9yLCBhbiBleHByZXNzaW9uIG9yIGNvbmRpdGlvbiwgZXRjLlxuICAgICAqL1xuICAgIGZpbHRlcmluZ0V4cHJlc3Npb25zOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xufVxuXG4vKiogVGhlIGV2ZW50IGFyZ3VtZW50cyBhZnRlciBhIGNvbHVtbidzIHZpc2liaWxpdHkgaXMgY2hhbmdlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblZpc2liaWxpdHlDaGFuZ2VkRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjb2x1bW4gdGhlIGV2ZW50IG9yaWdpbmF0ZWQgZnJvbSAqL1xuICAgIGNvbHVtbjogYW55O1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgaGlkZGVuIHN0YXRlIHRoYXQgdGhlIGNvbHVtbiB3aWxsIGhhdmUsIGlmIG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLlxuICAgICAqIFdpbGwgYmUgYHRydWVgIHdoZW4gaGlkaW5nIGFuZCBgZmFsc2VgIHdoZW4gc2hvd2luZy5cbiAgICAgKi9cbiAgICBuZXdWYWx1ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIHdoZW4gYSBjb2x1bW4ncyB2aXNpYmlsaXR5IGlzIGNoYW5nZWQuXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICogSXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbHVtbiBhbmQgdGhlIGl0J3MgdmlzaWJpbGl0eSBhZnRlciB0aGUgb3BlcmF0aW9uICh3aWxsIGJlIGB0cnVlYCB3aGVuIGhpZGluZyBhbmQgYGZhbHNlYCB3aGVuIHNob3dpbmcpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblZpc2liaWxpdHlDaGFuZ2luZ0V2ZW50QXJncyBleHRlbmRzIElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG59XG5cbiJdfQ==