@gipisistemas/ng-core 1.1.3 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. package/assets/styles/colors.scss +5 -1
  2. package/bundles/gipisistemas-ng-core.umd.js +2098 -1285
  3. package/bundles/gipisistemas-ng-core.umd.js.map +1 -1
  4. package/bundles/gipisistemas-ng-core.umd.min.js +10 -9
  5. package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -1
  6. package/core/gipi-components/models/sort.model.d.ts +3 -3
  7. package/core/utils/array.util.d.ts +2 -2
  8. package/core/utils/object.util.d.ts +3 -5
  9. package/core/utils/string.util.d.ts +4 -0
  10. package/esm2015/core/gipi-components/models/sort.model.js +1 -1
  11. package/esm2015/core/gipi-components/services/abstract-crud.service.js +18 -24
  12. package/esm2015/core/utils/array.util.js +4 -2
  13. package/esm2015/core/utils/object.util.js +5 -9
  14. package/esm2015/core/utils/string.util.js +27 -1
  15. package/esm2015/gipi-components.js +11 -1
  16. package/esm2015/shared/components/input/input.component.js +46 -23
  17. package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +2 -2
  18. package/esm2015/shared/components/table/table.component.js +1 -1
  19. package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +1 -1
  20. package/esm2015/shared/gipi-components/button/button.component.js +18 -2
  21. package/esm2015/shared/gipi-components/card/card.component.js +113 -0
  22. package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +8 -3
  23. package/esm2015/shared/gipi-components/empty-state/empty-state.component.js +30 -0
  24. package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +2 -2
  25. package/esm2015/shared/gipi-components/layout-grid/col.directive.js +4 -4
  26. package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +2 -2
  27. package/esm2015/shared/gipi-components/notification/notification.component.js +8 -3
  28. package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +4 -4
  29. package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +35 -3
  30. package/esm2015/shared/gipi-components/slide-toggle/slide-toggle.component.js +113 -0
  31. package/esm2015/shared/gipi-components/split-button/split-button.component.js +243 -0
  32. package/esm2015/shared/gipi-components/tabs/shared/dynamic-tab.directive.js +18 -0
  33. package/esm2015/shared/gipi-components/tabs/shared/tab.model.js +8 -0
  34. package/esm2015/shared/gipi-components/tabs/tab/tab.component.js +66 -0
  35. package/esm2015/shared/gipi-components/tabs/tab-group/tab-group.component.js +123 -0
  36. package/esm2015/shared/gipi-components/textarea/textarea.component.js +298 -0
  37. package/esm2015/shared/shared.module.js +22 -16
  38. package/esm2015/shared.js +1 -5
  39. package/esm5/core/gipi-components/models/sort.model.js +1 -1
  40. package/esm5/core/gipi-components/services/abstract-crud.service.js +18 -24
  41. package/esm5/core/utils/array.util.js +4 -3
  42. package/esm5/core/utils/object.util.js +5 -9
  43. package/esm5/core/utils/string.util.js +27 -1
  44. package/esm5/gipi-components.js +11 -1
  45. package/esm5/shared/components/input/input.component.js +46 -23
  46. package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +2 -2
  47. package/esm5/shared/components/table/table.component.js +1 -1
  48. package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +1 -1
  49. package/esm5/shared/gipi-components/button/button.component.js +22 -2
  50. package/esm5/shared/gipi-components/card/card.component.js +135 -0
  51. package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +8 -3
  52. package/esm5/shared/gipi-components/empty-state/empty-state.component.js +33 -0
  53. package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +2 -2
  54. package/esm5/shared/gipi-components/layout-grid/col.directive.js +4 -4
  55. package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +2 -2
  56. package/esm5/shared/gipi-components/notification/notification.component.js +8 -3
  57. package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +4 -4
  58. package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +35 -3
  59. package/esm5/shared/gipi-components/slide-toggle/slide-toggle.component.js +127 -0
  60. package/esm5/shared/gipi-components/split-button/split-button.component.js +249 -0
  61. package/esm5/shared/gipi-components/tabs/shared/dynamic-tab.directive.js +19 -0
  62. package/esm5/shared/gipi-components/tabs/shared/tab.model.js +10 -0
  63. package/esm5/shared/gipi-components/tabs/tab/tab.component.js +67 -0
  64. package/esm5/shared/gipi-components/tabs/tab-group/tab-group.component.js +131 -0
  65. package/esm5/shared/gipi-components/textarea/textarea.component.js +352 -0
  66. package/esm5/shared/shared.module.js +22 -16
  67. package/esm5/shared.js +1 -5
  68. package/fesm2015/gipisistemas-ng-core.js +1991 -1274
  69. package/fesm2015/gipisistemas-ng-core.js.map +1 -1
  70. package/fesm5/gipisistemas-ng-core.js +2088 -1281
  71. package/fesm5/gipisistemas-ng-core.js.map +1 -1
  72. package/gipi-components.d.ts +9 -0
  73. package/gipisistemas-ng-core.metadata.json +1 -1
  74. package/package.json +1 -2
  75. package/shared/components/input/input.component.d.ts +13 -11
  76. package/shared/components/table/table.component.d.ts +3 -3
  77. package/shared/gipi-components/button/button.component.d.ts +14 -0
  78. package/shared/gipi-components/card/card.component.d.ts +23 -0
  79. package/shared/gipi-components/empty-state/empty-state.component.d.ts +5 -0
  80. package/shared/gipi-components/notification/notification.component.d.ts +1 -0
  81. package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +7 -0
  82. package/shared/gipi-components/slide-toggle/slide-toggle.component.d.ts +27 -0
  83. package/shared/gipi-components/split-button/split-button.component.d.ts +60 -0
  84. package/shared/{directives → gipi-components/tabs/shared}/dynamic-tab.directive.d.ts +1 -1
  85. package/shared/gipi-components/tabs/shared/tab.model.d.ts +12 -0
  86. package/shared/{components → gipi-components/tabs}/tab/tab.component.d.ts +4 -2
  87. package/shared/gipi-components/tabs/tab-group/tab-group.component.d.ts +22 -0
  88. package/shared/gipi-components/textarea/textarea.component.d.ts +68 -0
  89. package/shared.d.ts +0 -4
  90. package/esm2015/shared/components/select-button/select-button.component.js +0 -181
  91. package/esm2015/shared/components/tab/tab.component.js +0 -57
  92. package/esm2015/shared/components/tab-group/tab-group.component.js +0 -117
  93. package/esm2015/shared/directives/dynamic-tab.directive.js +0 -18
  94. package/esm5/shared/components/select-button/select-button.component.js +0 -195
  95. package/esm5/shared/components/tab/tab.component.js +0 -58
  96. package/esm5/shared/components/tab-group/tab-group.component.js +0 -125
  97. package/esm5/shared/directives/dynamic-tab.directive.js +0 -19
  98. package/shared/components/select-button/select-button.component.d.ts +0 -35
  99. package/shared/components/tab-group/tab-group.component.d.ts +0 -22
@@ -187,7 +187,7 @@ var GIPIPopoverTrigger = /** @class */ (function () {
187
187
  var _this = this;
188
188
  if (this._overlayRef) {
189
189
  /** Only subscribe to backdrop if trigger event is click */
190
- if (this.triggerEvent === 'click' && this.backdropCloseOnClick === true) {
190
+ if (this.triggerEvent !== 'hover' && this.backdropCloseOnClick) {
191
191
  this._overlayRef.backdropClick()
192
192
  .pipe(takeUntil(this.popoverClosed), takeUntil(this._onDestroy))
193
193
  .subscribe(function () {
@@ -271,8 +271,8 @@ var GIPIPopoverTrigger = /** @class */ (function () {
271
271
  GIPIPopoverTrigger.prototype._getOverlayConfig = function () {
272
272
  var overlayState = new OverlayConfig();
273
273
  overlayState.positionStrategy = this._getPosition();
274
- /** Display overlay backdrop if trigger event is click */
275
- if (this.triggerEvent === 'click') {
274
+ /** Display overlay backdrop if trigger event is different of hover */
275
+ if (this.triggerEvent !== 'hover') {
276
276
  overlayState.hasBackdrop = true;
277
277
  overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';
278
278
  }
@@ -526,4 +526,4 @@ var GIPIPopoverTrigger = /** @class */ (function () {
526
526
  return GIPIPopoverTrigger;
527
527
  }());
528
528
  export { GIPIPopoverTrigger };
529
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9wb3BvdmVyL3NoYXJlZC9wb3BvdmVyLXRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk1RDs7O0dBR0c7QUFNSDtJQTBFSSw0QkFDWSxRQUFpQixFQUNsQixXQUF1QixFQUN0QixpQkFB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L0IsUUFBUSxFQUFFLGdCQUFnQjtTQUM3QixDQUFDO1FBK0VPLFdBQUEsUUFBUSxFQUFFLENBQUE7eUNBSE8sT0FBTztZQUNMLFVBQVU7WUFDSCxnQkFBZ0I7WUFDakIsY0FBYztZQUNaLGlCQUFpQjtPQS9FeEMsa0JBQWtCLENBK2Y5QjtJQUFELHlCQUFDO0NBQUEsQUEvZkQsSUErZkM7U0EvZlksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbiwgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIEhvcml6b250YWxDb25uZWN0aW9uUG9zLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmLCBTY3JvbGxTdHJhdGVneSwgVmVydGljYWxDb25uZWN0aW9uUG9zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NvbnRhaW5lclJlZiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9vYmplY3QudXRpbCc7XG5pbXBvcnQgeyBTdHJpbmdVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9zdHJpbmcudXRpbCc7XG5pbXBvcnQgeyBHSVBJRG9tSGFuZGxlciB9IGZyb20gJy4uLy4uL2RvbS9kb20taGFuZGxlcic7XG5pbXBvcnQgeyB0aHJvd1BvcG92ZXJNaXNzaW5nRXJyb3IgfSBmcm9tICcuL3BvcG92ZXItZXJyb3JzJztcbmltcG9ydCB7IFBvcG92ZXJQYW5lbCwgVGFyZ2V0IH0gZnJvbSAnLi9wb3BvdmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgUG9wb3ZlclBvc2l0aW9uWCwgUG9wb3ZlclBvc2l0aW9uWSwgUG9wb3ZlclNjcm9sbFN0cmF0ZWd5LCBQb3BvdmVyVHJpZ2dlckV2ZW50IH0gZnJvbSAnLi9wb3BvdmVyLXR5cGVzJztcblxuLyoqXG4gKiBFc3RhIGRpcmV0aXZhIGRlc3RpbmEtc2UgYSBzZXIgdXNhZGEgZW0gY29uanVudG8gY29tIHVtYSB0YWcgZ2lwaS1wb3BvdmVyLlxuICogRWxlIMOpIHJlc3BvbnPDoXZlbCBwb3IgYWx0ZXJuYXIgYSBleGliacOnw6NvIGRhIGluc3TDom5jaWEgcG9wb3ZlciBmb3JuZWNpZGEuXG4gKi9cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcG9wb3ZlclRyaWdnZXJGb3JdJyxcbiAgICBleHBvcnRBczogJ3BvcG92ZXJUcmlnZ2VyJ1xufSlcbmV4cG9ydCBjbGFzcyBHSVBJUG9wb3ZlclRyaWdnZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kgeyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lOmRpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJykgYXJpYUhhc3BvcHVwOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHBvcG92ZXJPcGVuZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHBvcG92ZXJDbG9zZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBfcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xuICAgIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9wb3BvdmVyT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2hhbHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9iYWNrZHJvcFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX3Bvc2l0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfZGV0YWNobWVudHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgX21vdXNlb3ZlclRpbWVyOiBhbnk7XG5cbiAgICAvLyB0cmFja2luZyBpbnB1dCB0eXBlIGlzIG5lY2Vzc2FyeSBzbyBpdCdzIHBvc3NpYmxlIHRvIG9ubHkgYXV0by1mb2N1c1xuICAgIC8vIHRoZSBmaXJzdCBpdGVtIG9mIHRoZSBsaXN0IHdoZW4gdGhlIHBvcG92ZXIgaXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmRcbiAgICBwcml2YXRlIF9vcGVuZWRCeU1vdXNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9vbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIFJlZmVyZW5jZXMgdGhlIHBvcG92ZXIgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gICAgQElucHV0KCdwb3BvdmVyVHJpZ2dlckZvcicpIHBvcG92ZXI6IFBvcG92ZXJQYW5lbDtcblxuICAgIC8qKiBSZWZlcmVuY2VzIHRoZSBwb3BvdmVyIHRhcmdldCBpbnN0YW5jZSB0aGF0IHRoZSB0cmlnZ2VyIGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJUYXJnZXRBdCcpIHRhcmdldEVsZW1lbnQ6IFRhcmdldDtcblxuICAgIC8qKiBQb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBpbiB0aGUgWCBheGlzICovXG4gICAgQElucHV0KCdwb3BvdmVyUG9zaXRpb25YJykgcG9zaXRpb25YOiBQb3BvdmVyUG9zaXRpb25YO1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBwb3BvdmVyIGluIHRoZSBZIGF4aXMgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJQb3NpdGlvblknKSBwb3NpdGlvblk6IFBvcG92ZXJQb3NpdGlvblk7XG5cbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50ICovXG4gICAgQElucHV0KCdwb3BvdmVyVHJpZ2dlck9uJykgdHJpZ2dlckV2ZW50OiBQb3BvdmVyVHJpZ2dlckV2ZW50O1xuXG4gICAgLyoqIFBvcG92ZXIgZGVsYXkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJFbnRlckRlbGF5JykgZW50ZXJEZWxheTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgZGVsYXkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJMZWF2ZURlbGF5JykgbGVhdmVEZWxheTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgb3ZlcmxhcCB0cmlnZ2VyICovXG4gICAgQElucHV0KCdwb3BvdmVyT3ZlcmxhcFRyaWdnZXInKSBvdmVybGFwVHJpZ2dlcjogYm9vbGVhbjtcblxuICAgIC8qKiBQb3BvdmVyIHRhcmdldCBvZmZzZXQgeCAqL1xuICAgIEBJbnB1dCgncG9wb3Zlck9mZnNldFgnKSB0YXJnZXRPZmZzZXRYOiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJPZmZzZXRZJykgdGFyZ2V0T2Zmc2V0WTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgYXJyb3cgb2Zmc2V0IHggKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJBcnJvd09mZnNldFgnKSBhcnJvd09mZnNldFg6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGFycm93IHdpZHRoICovXG4gICAgQElucHV0KCdwb3BvdmVyQXJyb3dXaWR0aCcpIGFycm93V2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGFycm93IGNvbG9yICovXG4gICAgQElucHV0KCdwb3BvdmVyQXJyb3dDb2xvcicpIGFycm93Q29sb3I6IHN0cmluZztcblxuICAgIC8qKiBQb3BvdmVyIGNvbnRhaW5lciBjbG9zZSBvbiBjbGljayAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckNsb3NlT25DbGljaycpIGNsb3NlT25DbGljazogYm9vbGVhbjtcblxuICAgIC8qKiBQb3BvdmVyIGJhY2tkcm9wIGNsb3NlIG9uIGNsaWNrICovXG4gICAgQElucHV0KCdwb3BvdmVyQmFja2Ryb3BDbG9zZU9uQ2xpY2snKSBiYWNrZHJvcENsb3NlT25DbGljazogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIHBvcG92ZXIgaXMgb3BlbmVkLiAqL1xuICAgIEBPdXRwdXQoKSBvcGVuZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgcG9wb3ZlciBpcyBjbG9zZWQuICovXG4gICAgQE91dHB1dCgpIGNsb3NlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hlY2tQb3BvdmVyKCk7XG4gICAgICAgIHRoaXMuX3NldEN1cnJlbnRDb25maWcoKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlUG9wb3ZlcigpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95UG9wb3ZlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEN1cnJlbnRDb25maWcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uWCA9PT0gJ2JlZm9yZScgfHwgdGhpcy5wb3NpdGlvblggPT09ICdhZnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPSB0aGlzLnBvc2l0aW9uWDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uWSA9PT0gJ2Fib3ZlJyB8fCB0aGlzLnBvc2l0aW9uWSA9PT0gJ2JlbG93Jykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9IHRoaXMucG9zaXRpb25ZO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID0gdGhpcy50cmlnZ2VyRXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lbnRlckRlbGF5KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuZW50ZXJEZWxheSA9IHRoaXMuZW50ZXJEZWxheTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxlYXZlRGVsYXkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5sZWF2ZURlbGF5ID0gdGhpcy5sZWF2ZURlbGF5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxhcFRyaWdnZXIgPT09IHRydWUgfHwgdGhpcy5vdmVybGFwVHJpZ2dlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlciA9IHRoaXMub3ZlcmxhcFRyaWdnZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YXJnZXRPZmZzZXRYKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCA9IHRoaXMudGFyZ2V0T2Zmc2V0WDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldE9mZnNldFkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZID0gdGhpcy50YXJnZXRPZmZzZXRZO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJyb3dPZmZzZXRYKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYXJyb3dPZmZzZXRYID0gdGhpcy5hcnJvd09mZnNldFg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcnJvd1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYXJyb3dXaWR0aCA9IHRoaXMuYXJyb3dXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFycm93Q29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5hcnJvd0NvbG9yID0gdGhpcy5hcnJvd0NvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VPbkNsaWNrID09PSB0cnVlIHx8IHRoaXMuY2xvc2VPbkNsaWNrID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlT25DbGljayA9IHRoaXMuY2xvc2VPbkNsaWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMoKTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBpcyBvcGVuLiAqL1xuICAgIGdldCBwb3BvdmVyT3BlbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3BvcG92ZXJPcGVuOyB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBvbk1vdXNlRW50ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGFsdCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIuZW50ZXJEZWxheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcbiAgICBvbk1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9tb3VzZW92ZXJUaW1lcikge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9tb3VzZW92ZXJUaW1lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyLmNsb3NlRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIubGVhdmVEZWxheSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIHBvcG92ZXIgYmV0d2VlbiB0aGUgb3BlbiBhbmQgY2xvc2VkIHN0YXRlcy4gKi9cbiAgICB0b2dnbGVQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9wb3Zlck9wZW4gPyB0aGlzLmNsb3NlUG9wb3ZlcigpIDogdGhpcy5vcGVuUG9wb3ZlcigpO1xuICAgIH1cblxuICAgIC8qKiBPcGVucyB0aGUgcG9wb3Zlci4gKi9cbiAgICBvcGVuUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wb3BvdmVyT3BlbiAmJiAhdGhpcy5faGFsdCkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlT3ZlcmxheSgpLmF0dGFjaCh0aGlzLl9wb3J0YWwpO1xuXG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX3ZpZXdDb250YWluZXJSZWYpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGg6IG51bWJlciA9IEdJUElEb21IYW5kbGVyLmdldFdpZHRoKCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkodGhpcy5wb3BvdmVyLnBvcG92ZXJXaWR0aCkgfHwgKHRoaXMucG9wb3Zlci5wb3BvdmVyV2lkdGggPT09ICdhdXRvJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvcG92ZXJXaWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvQmFja2Ryb3AoKTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvRGV0YWNobWVudHMoKTtcblxuICAgICAgICAgICAgdGhpcy5faW5pdFBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDbG9zZXMgdGhlIHBvcG92ZXIuICovXG4gICAgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0UG9wb3ZlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZXMgdGhlIHBvcG92ZXIgZnJvbSB0aGUgRE9NLiAqL1xuICAgIGRlc3Ryb3lQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbW91c2VvdmVyVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9tb3VzZW92ZXJUaW1lcik7XG4gICAgICAgICAgICB0aGlzLl9tb3VzZW92ZXJUaW1lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9jbGVhblVwU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzZXMgdGhlIHBvcG92ZXIgdHJpZ2dlci4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBhcHAuICovXG4gICAgZ2V0IGRpcigpOiBEaXJlY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlyICYmIHRoaXMuX2Rpci52YWx1ZSA9PT0gJ3J0bCcgPyAncnRsJyA6ICdsdHInO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgZW5zdXJlcyB0aGF0IHRoZSBwb3BvdmVyIGNsb3NlcyB3aGVuIHRoZSBvdmVybGF5IGJhY2tkcm9wIGlzIGNsaWNrZWQuXG4gICAgKiBXZSBkbyBub3QgdXNlIGZpcnN0KCkgaGVyZSBiZWNhdXNlIGRvaW5nIHNvIHdvdWxkIG5vdCBjYXRjaCBjbGlja3MgZnJvbSB3aXRoaW5cbiAgICAqIHRoZSBwb3BvdmVyLCBhbmQgaXQgd291bGQgZmFpbCB0byB1bnN1YnNjcmliZSBwcm9wZXJseS4gSW5zdGVhZCwgd2UgdW5zdWJzY3JpYmVcbiAgICAqIGV4cGxpY2l0bHkgd2hlbiB0aGUgcG9wb3ZlciBpcyBjbG9zZWQgb3IgZGVzdHJveWVkLlxuICAgICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9CYWNrZHJvcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIC8qKiBPbmx5IHN1YnNjcmliZSB0byBiYWNrZHJvcCBpZiB0cmlnZ2VyIGV2ZW50IGlzIGNsaWNrICovXG4gICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycgJiYgdGhpcy5iYWNrZHJvcENsb3NlT25DbGljayA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMucG9wb3ZlckNsb3NlZCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5fZW1pdENsb3NlRXZlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb0RldGFjaG1lbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFBvcG92ZXJDbG9zZWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgcG9wb3ZlciBzdGF0ZSB0byBvcGVuIGFuZCBmb2N1c2VzIHRoZSBmaXJzdCBpdGVtIGlmXG4gICAgKiB0aGUgcG9wb3ZlciB3YXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmQuXG4gICAgKi9cbiAgICBwcml2YXRlIF9pbml0UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0UG9wb3Zlck9wZW5lZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgcmVzZXRzIHRoZSBwb3BvdmVyIHdoZW4gaXQncyBjbG9zZWQsIG1vc3QgaW1wb3J0YW50bHkgcmVzdG9yaW5nXG4gICAgKiBmb2N1cyB0byB0aGUgcG9wb3ZlciB0cmlnZ2VyIGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX3Jlc2V0UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0UG9wb3ZlckNsb3NlZCgpO1xuXG4gICAgICAgIC8vIEZvY3VzIG9ubHkgbmVlZHMgdG8gYmUgcmVzZXQgdG8gdGhlIGhvc3QgZWxlbWVudCBpZiB0aGUgcG9wb3ZlciB3YXMgb3BlbmVkXG4gICAgICAgIC8vIGJ5IHRoZSBrZXlib2FyZCBhbmQgbWFudWFsbHkgc2hpZnRlZCB0byB0aGUgZmlyc3QgcG9wb3ZlciBpdGVtLlxuICAgICAgICBpZiAoIXRoaXMuX29wZW5lZEJ5TW91c2UpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vcGVuZWRCeU1vdXNlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIHNldCBzdGF0ZSByYXRoZXIgdGhhbiB0b2dnbGUgdG8gc3VwcG9ydCB0cmlnZ2VycyBzaGFyaW5nIGEgcG9wb3ZlciAqL1xuICAgIHByaXZhdGUgX3NldFBvcG92ZXJPcGVuZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyT3BlbmVkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBzZXQgc3RhdGUgcmF0aGVyIHRoYW4gdG9nZ2xlIHRvIHN1cHBvcnQgdHJpZ2dlcnMgc2hhcmluZyBhIHBvcG92ZXIgKi9cbiAgICBwcml2YXRlIF9zZXRQb3BvdmVyQ2xvc2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNsb3NlZC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqICBUaGlzIG1ldGhvZCBjaGVja3MgdGhhdCBhIHZhbGlkIGluc3RhbmNlIG9mIE1kUG9wb3ZlciBoYXMgYmVlbiBwYXNzZWQgaW50b1xuICAgICogIG1kUG9wb3ZlclRyaWdnZXJGb3IuIElmIG5vdCwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5cbiAgICAqL1xuICAgIHByaXZhdGUgX2NoZWNrUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXIpIHtcbiAgICAgICAgICAgIHRocm93UG9wb3Zlck1pc3NpbmdFcnJvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiAgVGhpcyBtZXRob2QgY3JlYXRlcyB0aGUgb3ZlcmxheSBmcm9tIHRoZSBwcm92aWRlZCBwb3BvdmVyJ3MgdGVtcGxhdGUgYW5kIHNhdmVzIGl0c1xuICAgICogIE92ZXJsYXlSZWYgc28gdGhhdCBpdCBjYW4gYmUgYXR0YWNoZWQgdG8gdGhlIERPTSB3aGVuIG9wZW5Qb3BvdmVyIGlzIGNhbGxlZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMucG9wb3Zlci50ZW1wbGF0ZVJlZiwgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLl9nZXRPdmVybGF5Q29uZmlnKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1Bvc2l0aW9ucyhjb25maWcucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIGJ1aWxkcyB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgb3ZlcmxheSwgdGhlIE92ZXJsYXlDb25maWcuXG4gICAgKiBAcmV0dXJucyBPdmVybGF5Q29uZmlnXG4gICAgKi9cbiAgICBwcml2YXRlIF9nZXRPdmVybGF5Q29uZmlnKCk6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBvdmVybGF5U3RhdGUgPSBuZXcgT3ZlcmxheUNvbmZpZygpO1xuICAgICAgICBvdmVybGF5U3RhdGUucG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX2dldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgLyoqIERpc3BsYXkgb3ZlcmxheSBiYWNrZHJvcCBpZiB0cmlnZ2VyIGV2ZW50IGlzIGNsaWNrICovXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgb3ZlcmxheVN0YXRlLmhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgIG92ZXJsYXlTdGF0ZS5iYWNrZHJvcENsYXNzID0gJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIG92ZXJsYXlTdGF0ZS5kaXJlY3Rpb24gPSB0aGlzLmRpcjtcbiAgICAgICAgb3ZlcmxheVN0YXRlLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5fZ2V0T3ZlcmxheVNjcm9sbFN0cmF0ZWd5KHRoaXMucG9wb3Zlci5zY3JvbGxTdHJhdGVneSk7XG5cbiAgICAgICAgcmV0dXJuIG92ZXJsYXlTdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzY3JvbGwgc3RyYXRlZ3kgdXNlZCBieSB0aGUgY2RrL292ZXJsYXkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0T3ZlcmxheVNjcm9sbFN0cmF0ZWd5KHN0cmF0ZWd5OiBQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpOiBTY3JvbGxTdHJhdGVneSB7XG4gICAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ25vb3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpO1xuICAgICAgICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCk7XG4gICAgICAgICAgICBjYXNlICdyZXBvc2l0aW9uJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIExpc3RlbnMgdG8gY2hhbmdlcyBpbiB0aGUgcG9zaXRpb24gb2YgdGhlIG92ZXJsYXkgYW5kIHNldHMgdGhlIGNvcnJlY3QgY2xhc3Nlc1xuICAgICogb24gdGhlIHBvcG92ZXIgYmFzZWQgb24gdGhlIG5ldyBwb3NpdGlvbi4gVGhpcyBlbnN1cmVzIHRoZSBhbmltYXRpb24gb3JpZ2luIGlzIGFsd2F5c1xuICAgICogY29ycmVjdCwgZXZlbiBpZiBhIGZhbGxiYWNrIHBvc2l0aW9uIGlzIHVzZWQgZm9yIHRoZSBvdmVybGF5LlxuICAgICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Qb3NpdGlvbnMocG9zaXRpb246IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbiA9IHBvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2lzaW9uWDogUG9wb3ZlclBvc2l0aW9uWCA9IGNoYW5nZS5jb25uZWN0aW9uUGFpci5vdmVybGF5WCA9PT0gJ3N0YXJ0JyA/ICdhZnRlcicgOiAnYmVmb3JlJztcbiAgICAgICAgICAgIGxldCBwb3Npc2lvblk6IFBvcG92ZXJQb3NpdGlvblkgPSBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVkgPT09ICd0b3AnID8gJ2JlbG93JyA6ICdhYm92ZSc7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyLm92ZXJsYXBUcmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgcG9zaXNpb25ZID0gcG9zaXNpb25ZID09PSAnYmVsb3cnID8gJ2Fib3ZlJyA6ICdiZWxvdyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlcXVpcmVkIGZvciBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPSBwb3Npc2lvblg7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9IHBvc2lzaW9uWTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIuc2V0Q3VycmVudFN0eWxlcygpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldFBvc2l0aW9uQ2xhc3Nlcyhwb3Npc2lvblgsIHBvc2lzaW9uWSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IGZvciB0aGUgb3ZlcmxheSwgc28gdGhlIHBvcG92ZXIgaXMgcHJvcGVybHkgY29ubmVjdGVkXG4gICAgKiB0byB0aGUgdHJpZ2dlci5cbiAgICAqIEByZXR1cm5zIENvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lcbiAgICAqL1xuICAgIHByaXZhdGUgX2dldFBvc2l0aW9uKCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGNvbnN0IFtvcmlnaW5YLCBvcmlnaW5GYWxsYmFja1hdOiBIb3Jpem9udGFsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPT09ICdiZWZvcmUnID8gWydlbmQnLCAnc3RhcnQnXSA6IFsnc3RhcnQnLCAnZW5kJ107XG5cbiAgICAgICAgY29uc3QgW292ZXJsYXlZLCBvdmVybGF5RmFsbGJhY2tZXTogVmVydGljYWxDb25uZWN0aW9uUG9zW10gPVxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9PT0gJ2Fib3ZlJyA/IFsnYm90dG9tJywgJ3RvcCddIDogWyd0b3AnLCAnYm90dG9tJ107XG5cbiAgICAgICAgLy8gbGV0IG9yaWdpblkgPSBvdmVybGF5WTtcbiAgICAgICAgLy8gbGV0IGZhbGxiYWNrT3JpZ2luWSA9IG92ZXJsYXlGYWxsYmFja1k7XG5cbiAgICAgICAgbGV0IG9yaWdpblk6ICd0b3AnIHwgJ2JvdHRvbScgPSBvdmVybGF5WTtcbiAgICAgICAgbGV0IG9yaWdpbkZhbGxiYWNrWTogJ3RvcCcgfCAnYm90dG9tJyA9IG92ZXJsYXlGYWxsYmFja1k7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheVg6ICdzdGFydCcgfCAnZW5kJyA9IG9yaWdpblg7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlGYWxsYmFja1g6ICdzdGFydCcgfCAnZW5kJyA9IG9yaWdpbkZhbGxiYWNrWDtcblxuICAgICAgICAvKiogUmV2ZXJzZSBvdmVybGF5WSBhbmQgZmFsbGJhY2tPdmVybGF5WSB3aGVuIG92ZXJsYXBUcmlnZ2VyIGlzIGZhbHNlICovXG4gICAgICAgIGlmICghdGhpcy5wb3BvdmVyLm92ZXJsYXBUcmlnZ2VyKSB7XG4gICAgICAgICAgICBvcmlnaW5ZID0gb3ZlcmxheVkgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgICAgIG9yaWdpbkZhbGxiYWNrWSA9IG92ZXJsYXlGYWxsYmFja1kgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvZmZzZXRYOiBudW1iZXIgPSAwO1xuICAgICAgICBsZXQgb2Zmc2V0WTogbnVtYmVyID0gMDtcblxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFggJiYgIWlzTmFOKE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCkpKSB7XG4gICAgICAgICAgICBvZmZzZXRYID0gTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRYKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WSAmJiAhaXNOYU4oTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZKSkpIHtcbiAgICAgICAgICAgIG9mZnNldFkgPSBOdW1iZXIodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvciBvdmVycmlkaW5nIHBvc2l0aW9uIGVsZW1lbnQsIHdoZW4gcG9wb3ZlclRhcmdldEF0IGhhcyBhIHZhbGlkIGVsZW1lbnQgcmVmZXJlbmNlLlxuICAgICAgICAgKiBVc2VmdWwgZm9yIHN0aWNraW5nIHBvcG92ZXIgdG8gcGFyZW50IGVsZW1lbnQgYW5kIG9mZnNldHRpbmcgYXJyb3cgdG8gdHJpZ2dlciBlbGVtZW50LlxuICAgICAgICAgKiBJZiB1bmRlZmluZWQgZGVmYXVsdHMgdG8gdGhlIHRyaWdnZXIgZWxlbWVudCByZWZlcmVuY2UuXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgZWxlbWVudDogRWxlbWVudFJlZjxhbnk+ID0gdGhpcy5fZWxlbWVudFJlZjtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhcmdldEVsZW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuY29udGFpbmVyUG9zaXRpb25pbmcgPSB0cnVlO1xuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMudGFyZ2V0RWxlbWVudC5fZWxlbWVudFJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aExvY2tlZFBvc2l0aW9uKHRydWUpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luRmFsbGJhY2tYLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFgob2Zmc2V0WClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFkob2Zmc2V0WSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xlYW5VcFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RldGFjaG1lbnRzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXRhY2htZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSkgX2hhbmRsZU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQgJiYgIWlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIoZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLl9vcGVuZWRCeU1vdXNlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
529
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9wb3BvdmVyL3NoYXJlZC9wb3BvdmVyLXRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk1RDs7O0dBR0c7QUFNSDtJQTBFSSw0QkFDWSxRQUFpQixFQUNsQixXQUF1QixFQUN0QixpQkFBbUMsRUFDdkIsSUFBb0IsRUFDaEMsa0JBQXFDO1FBSnJDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUN2QixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNoQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBN0VkLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRWhFLGtCQUFhLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbkQsa0JBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUczQyxnQkFBVyxHQUFzQixJQUFJLENBQUM7UUFDdEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsVUFBSyxHQUFZLEtBQUssQ0FBQztRQU8vQix1RUFBdUU7UUFDdkUseUVBQXlFO1FBQ2pFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQTRDeEQsc0NBQXNDO1FBQ0EseUJBQW9CLEdBQVksSUFBSSxDQUFDO1FBRTNFLDJEQUEyRDtRQUNqRCxXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFaEUsMkRBQTJEO1FBQ2pELFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQVE1RCxDQUFDO0lBRUwsNENBQWUsR0FBZjtRQUFBLGlCQUlDO1FBSEcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLFlBQVksRUFBRSxFQUFuQixDQUFtQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELHdDQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLDhDQUFpQixHQUF6QjtRQUNJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUMzQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUMzQztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDN0M7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUM3QztRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLEVBQUU7WUFDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUNyRDtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ25EO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDbkQ7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUNqRDtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzdDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDN0M7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUFFO1lBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDakQ7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUdELHNCQUFJLDJDQUFXO1FBRGYsbUNBQW1DO2FBQ25DLGNBQTZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBR3hELG9DQUFPLEdBQVAsVUFBUSxLQUFpQjtRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRTtZQUN2QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBR0QseUNBQVksR0FBWixVQUFhLEtBQWlCO1FBRDlCLGlCQVFDO1FBTkcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxPQUFPLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUM7Z0JBQzlCLEtBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMvQjtJQUNMLENBQUM7SUFHRCx5Q0FBWSxHQUFaLFVBQWEsS0FBaUI7UUFEOUIsaUJBaUJDO1FBZkcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxPQUFPLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzthQUMvQjtZQUNELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsVUFBVSxDQUFDO29CQUNQLElBQUksQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTt3QkFDN0IsS0FBSSxDQUFDLFlBQVksRUFBRSxDQUFDO3FCQUN2QjtnQkFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMvQjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCwwQ0FBYSxHQUFiO1FBQ0ksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLHdDQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbEcsSUFBTSxLQUFLLEdBQVcsY0FBYyxDQUFDLFFBQVEsQ0FBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGFBQTZCLENBQUMsQ0FBQztnQkFDN0csSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsRUFBRTtvQkFDekYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQU0sS0FBSyxPQUFJLENBQUM7aUJBQzVDO2FBQ0o7WUFFRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUUvQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLHlDQUFZLEdBQVo7UUFDSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLDJDQUFjLEdBQWQ7UUFDSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUMvQjtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsa0NBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFHRCxzQkFBSSxtQ0FBRztRQURQLGdEQUFnRDthQUNoRDtZQUNJLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xFLENBQUM7OztPQUFBO0lBRUQ7Ozs7O01BS0U7SUFDTSxpREFBb0IsR0FBNUI7UUFBQSxpQkFjQztRQWJHLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQiwyREFBMkQ7WUFDM0QsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO3FCQUMzQixJQUFJLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDN0I7cUJBQ0EsU0FBUyxDQUFDO29CQUNQLEtBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDO2FBQ1Y7U0FDSjtJQUNMLENBQUM7SUFFTyxvREFBdUIsR0FBL0I7UUFBQSxpQkFXQztRQVZHLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtpQkFDekIsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzdCO2lCQUNBLFNBQVMsQ0FBQztnQkFDUCxLQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNWO0lBQ0wsQ0FBQztJQUVEOzs7TUFHRTtJQUNNLHlDQUFZLEdBQXBCO1FBQ0ksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7TUFHRTtJQUNNLDBDQUFhLEdBQXJCO1FBQ0ksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsNkVBQTZFO1FBQzdFLGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQseUVBQXlFO0lBQ2pFLDhDQUFpQixHQUF6QjtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBRXpCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRCx5RUFBeUU7SUFDakUsOENBQWlCLEdBQXpCO1FBQ0ksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBRTFCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRDs7O01BR0U7SUFDTSwwQ0FBYSxHQUFyQjtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2Ysd0JBQXdCLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRDs7O01BR0U7SUFDTSwyQ0FBYyxHQUF0QjtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDcEYsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxnQkFBcUQsQ0FBQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7TUFHRTtJQUNNLDhDQUFpQixHQUF6QjtRQUNJLElBQU0sWUFBWSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDekMsWUFBWSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwRCxzRUFBc0U7UUFDdEUsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRTtZQUMvQixZQUFZLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNoQyxZQUFZLENBQUMsYUFBYSxHQUFHLGtDQUFrQyxDQUFDO1NBQ25FO1FBRUQsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ2xDLFlBQVksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFMUYsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0RBQXlCLEdBQWpDLFVBQWtDLFFBQStCO1FBQzdELFFBQVEsUUFBUSxFQUFFO1lBQ2QsS0FBSyxNQUFNO2dCQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqRCxLQUFLLE9BQU87Z0JBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xELEtBQUssT0FBTztnQkFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEQsS0FBSyxZQUFZLENBQUM7WUFDbEI7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQzFEO0lBQ0wsQ0FBQztJQUVEOzs7O01BSUU7SUFDTSxrREFBcUIsR0FBN0IsVUFBOEIsUUFBMkM7UUFBekUsaUJBb0JDO1FBbkJHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxVQUFBLE1BQU07WUFDbEUsSUFBTSxTQUFTLEdBQXFCLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDcEcsSUFBSSxTQUFTLEdBQXFCLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFFL0YsSUFBSSxDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO2dCQUM5QixTQUFTLEdBQUcsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDekQ7WUFFRCw4Q0FBOEM7WUFDOUMsS0FBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXZDLEtBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDbEIsS0FBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2dCQUNuQyxLQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQ25DLEtBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFFaEMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztNQUlFO0lBQ00seUNBQVksR0FBcEI7UUFDVSxJQUFBLEtBQUEsT0FDRixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBQSxFQUR0RSxPQUFPLFFBQUEsRUFBRSxlQUFlLFFBQzhDLENBQUM7UUFFeEUsSUFBQSxLQUFBLE9BQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUEsRUFEdkUsUUFBUSxRQUFBLEVBQUUsZ0JBQWdCLFFBQzZDLENBQUM7UUFFL0UsMEJBQTBCO1FBQzFCLDBDQUEwQztRQUUxQyxJQUFJLE9BQU8sR0FBcUIsUUFBUSxDQUFDO1FBQ3pDLElBQUksZUFBZSxHQUFxQixnQkFBZ0IsQ0FBQztRQUV6RCxJQUFNLFFBQVEsR0FBb0IsT0FBTyxDQUFDO1FBQzFDLElBQU0sZ0JBQWdCLEdBQW9CLGVBQWUsQ0FBQztRQUUxRCx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQzlCLE9BQU8sR0FBRyxRQUFRLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNoRCxlQUFlLEdBQUcsZ0JBQWdCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNuRTtRQUVELElBQUksT0FBTyxHQUFXLENBQUMsQ0FBQztRQUN4QixJQUFJLE9BQU8sR0FBVyxDQUFDLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFO1lBQzFFLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRTtZQUMxRSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEQ7UUFFRDs7OztXQUlHO1FBQ0gsSUFBSSxPQUFPLEdBQW9CLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDaEQsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssV0FBVyxFQUFFO1lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztTQUM1QztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7YUFDMUIsbUJBQW1CLENBQUMsT0FBTyxDQUFDO2FBQzVCLGtCQUFrQixDQUFDLElBQUksQ0FBQzthQUN4QixhQUFhLENBQUM7WUFDWDtnQkFDSSxPQUFPLFNBQUE7Z0JBQ1AsT0FBTyxTQUFBO2dCQUNQLFFBQVEsVUFBQTtnQkFDUixRQUFRLFVBQUE7Z0JBQ1IsT0FBTyxTQUFBO2FBQ1Y7WUFDRDtnQkFDSSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsT0FBTyxTQUFBO2dCQUNQLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsVUFBQTtnQkFDUixPQUFPLFNBQUE7YUFDVjtZQUNEO2dCQUNJLE9BQU8sU0FBQTtnQkFDUCxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsUUFBUSxVQUFBO2dCQUNSLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLE9BQU8sRUFBRSxDQUFDLE9BQU87YUFDcEI7WUFDRDtnQkFDSSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLE9BQU8sRUFBRSxDQUFDLE9BQU87YUFDcEI7U0FDSixDQUFDO2FBQ0Qsa0JBQWtCLENBQUMsT0FBTyxDQUFDO2FBQzNCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxrREFBcUIsR0FBN0I7UUFDSSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUM7UUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUM7UUFDRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUMvQixJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0M7SUFDTCxDQUFDO0lBRXNDLDZDQUFnQixHQUFoQixVQUFpQixLQUFpQjtRQUNyRSxJQUFJLEtBQUssSUFBSSxDQUFDLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQzs7Z0JBbmJxQixPQUFPO2dCQUNMLFVBQVU7Z0JBQ0gsZ0JBQWdCO2dCQUNqQixjQUFjLHVCQUF2QyxRQUFRO2dCQUNtQixpQkFBaUI7O0lBN0VkO1FBQWxDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQzs7NERBQThCO0lBc0JwQztRQUEzQixLQUFLLENBQUMsbUJBQW1CLENBQUM7O3VEQUF1QjtJQUd4QjtRQUF6QixLQUFLLENBQUMsaUJBQWlCLENBQUM7OzZEQUF1QjtJQUdyQjtRQUExQixLQUFLLENBQUMsa0JBQWtCLENBQUM7O3lEQUE2QjtJQUc1QjtRQUExQixLQUFLLENBQUMsa0JBQWtCLENBQUM7O3lEQUE2QjtJQUc1QjtRQUExQixLQUFLLENBQUMsa0JBQWtCLENBQUM7OzREQUFtQztJQUdqQztRQUEzQixLQUFLLENBQUMsbUJBQW1CLENBQUM7OzBEQUFvQjtJQUduQjtRQUEzQixLQUFLLENBQUMsbUJBQW1CLENBQUM7OzBEQUFvQjtJQUdmO1FBQS9CLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQzs7OERBQXlCO0lBRy9CO1FBQXhCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs7NkRBQXVCO0lBR3RCO1FBQXhCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs7NkRBQXVCO0lBR2pCO1FBQTdCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzs7NERBQXNCO0lBR3ZCO1FBQTNCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQzs7MERBQW9CO0lBR25CO1FBQTNCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQzs7MERBQW9CO0lBR2pCO1FBQTdCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzs7NERBQXVCO0lBR2Q7UUFBckMsS0FBSyxDQUFDLDZCQUE2QixDQUFDOztvRUFBc0M7SUFHakU7UUFBVCxNQUFNLEVBQUU7a0NBQVMsWUFBWTtzREFBa0M7SUFHdEQ7UUFBVCxNQUFNLEVBQUU7a0NBQVMsWUFBWTtzREFBa0M7SUE0RWhFO1FBREMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzt5Q0FDbkIsVUFBVTs7cURBSXhCO0lBR0Q7UUFEQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3lDQUNuQixVQUFVOzswREFPN0I7SUFHRDtRQURDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7eUNBQ25CLFVBQVU7OzBEQWdCN0I7SUFxVXNDO1FBQXRDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7eUNBQXlCLFVBQVU7OzhEQUl4RTtJQTlmUSxrQkFBa0I7UUFKOUIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixRQUFRLEVBQUUsZ0JBQWdCO1NBQzdCLENBQUM7UUErRU8sV0FBQSxRQUFRLEVBQUUsQ0FBQTt5Q0FITyxPQUFPO1lBQ0wsVUFBVTtZQUNILGdCQUFnQjtZQUNqQixjQUFjO1lBQ1osaUJBQWlCO09BL0V4QyxrQkFBa0IsQ0ErZjlCO0lBQUQseUJBQUM7Q0FBQSxBQS9mRCxJQStmQztTQS9mWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSwgSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3MsIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYsIFNjcm9sbFN0cmF0ZWd5LCBWZXJ0aWNhbENvbm5lY3Rpb25Qb3MgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q29udGFpbmVyUmVmLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE9iamVjdFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL29iamVjdC51dGlsJztcbmltcG9ydCB7IFN0cmluZ1V0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL3N0cmluZy51dGlsJztcbmltcG9ydCB7IEdJUElEb21IYW5kbGVyIH0gZnJvbSAnLi4vLi4vZG9tL2RvbS1oYW5kbGVyJztcbmltcG9ydCB7IHRocm93UG9wb3Zlck1pc3NpbmdFcnJvciB9IGZyb20gJy4vcG9wb3Zlci1lcnJvcnMnO1xuaW1wb3J0IHsgUG9wb3ZlclBhbmVsLCBUYXJnZXQgfSBmcm9tICcuL3BvcG92ZXItaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQb3BvdmVyUG9zaXRpb25YLCBQb3BvdmVyUG9zaXRpb25ZLCBQb3BvdmVyU2Nyb2xsU3RyYXRlZ3ksIFBvcG92ZXJUcmlnZ2VyRXZlbnQgfSBmcm9tICcuL3BvcG92ZXItdHlwZXMnO1xuXG4vKipcbiAqIEVzdGEgZGlyZXRpdmEgZGVzdGluYS1zZSBhIHNlciB1c2FkYSBlbSBjb25qdW50byBjb20gdW1hIHRhZyBnaXBpLXBvcG92ZXIuXG4gKiBFbGUgw6kgcmVzcG9uc8OhdmVsIHBvciBhbHRlcm5hciBhIGV4aWJpw6fDo28gZGEgaW5zdMOibmNpYSBwb3BvdmVyIGZvcm5lY2lkYS5cbiAqL1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twb3BvdmVyVHJpZ2dlckZvcl0nLFxuICAgIGV4cG9ydEFzOiAncG9wb3ZlclRyaWdnZXInXG59KVxuZXhwb3J0IGNsYXNzIEdJUElQb3BvdmVyVHJpZ2dlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7IC8vIHRzbGludDpkaXNhYmxlLWxpbmU6ZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKSBhcmlhSGFzcG9wdXA6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcG9wb3Zlck9wZW5lZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcG9wb3ZlckNsb3NlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIF9wb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT47XG4gICAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX3BvcG92ZXJPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaGFsdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2JhY2tkcm9wU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfcG9zaXRpb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9kZXRhY2htZW50c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSBfbW91c2VvdmVyVGltZXI6IGFueTtcblxuICAgIC8vIHRyYWNraW5nIGlucHV0IHR5cGUgaXMgbmVjZXNzYXJ5IHNvIGl0J3MgcG9zc2libGUgdG8gb25seSBhdXRvLWZvY3VzXG4gICAgLy8gdGhlIGZpcnN0IGl0ZW0gb2YgdGhlIGxpc3Qgd2hlbiB0aGUgcG9wb3ZlciBpcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZFxuICAgIHByaXZhdGUgX29wZW5lZEJ5TW91c2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX29uRGVzdHJveTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogUmVmZXJlbmNlcyB0aGUgcG9wb3ZlciBpbnN0YW5jZSB0aGF0IHRoZSB0cmlnZ2VyIGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJUcmlnZ2VyRm9yJykgcG9wb3ZlcjogUG9wb3ZlclBhbmVsO1xuXG4gICAgLyoqIFJlZmVyZW5jZXMgdGhlIHBvcG92ZXIgdGFyZ2V0IGluc3RhbmNlIHRoYXQgdGhlIHRyaWdnZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiAqL1xuICAgIEBJbnB1dCgncG9wb3ZlclRhcmdldEF0JykgdGFyZ2V0RWxlbWVudDogVGFyZ2V0O1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBwb3BvdmVyIGluIHRoZSBYIGF4aXMgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJQb3NpdGlvblgnKSBwb3NpdGlvblg6IFBvcG92ZXJQb3NpdGlvblg7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIHBvcG92ZXIgaW4gdGhlIFkgYXhpcyAqL1xuICAgIEBJbnB1dCgncG9wb3ZlclBvc2l0aW9uWScpIHBvc2l0aW9uWTogUG9wb3ZlclBvc2l0aW9uWTtcblxuICAgIC8qKiBQb3BvdmVyIHRyaWdnZXIgZXZlbnQgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJUcmlnZ2VyT24nKSB0cmlnZ2VyRXZlbnQ6IFBvcG92ZXJUcmlnZ2VyRXZlbnQ7XG5cbiAgICAvKiogUG9wb3ZlciBkZWxheSAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckVudGVyRGVsYXknKSBlbnRlckRlbGF5OiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciBkZWxheSAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckxlYXZlRGVsYXknKSBsZWF2ZURlbGF5OiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciBvdmVybGFwIHRyaWdnZXIgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJPdmVybGFwVHJpZ2dlcicpIG92ZXJsYXBUcmlnZ2VyOiBib29sZWFuO1xuXG4gICAgLyoqIFBvcG92ZXIgdGFyZ2V0IG9mZnNldCB4ICovXG4gICAgQElucHV0KCdwb3BvdmVyT2Zmc2V0WCcpIHRhcmdldE9mZnNldFg6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIHRhcmdldCBvZmZzZXQgeSAqL1xuICAgIEBJbnB1dCgncG9wb3Zlck9mZnNldFknKSB0YXJnZXRPZmZzZXRZOiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciBhcnJvdyBvZmZzZXQgeCAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckFycm93T2Zmc2V0WCcpIGFycm93T2Zmc2V0WDogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgYXJyb3cgd2lkdGggKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJBcnJvd1dpZHRoJykgYXJyb3dXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgYXJyb3cgY29sb3IgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJBcnJvd0NvbG9yJykgYXJyb3dDb2xvcjogc3RyaW5nO1xuXG4gICAgLyoqIFBvcG92ZXIgY29udGFpbmVyIGNsb3NlIG9uIGNsaWNrICovXG4gICAgQElucHV0KCdwb3BvdmVyQ2xvc2VPbkNsaWNrJykgY2xvc2VPbkNsaWNrOiBib29sZWFuO1xuXG4gICAgLyoqIFBvcG92ZXIgYmFja2Ryb3AgY2xvc2Ugb24gY2xpY2sgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJCYWNrZHJvcENsb3NlT25DbGljaycpIGJhY2tkcm9wQ2xvc2VPbkNsaWNrOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgcG9wb3ZlciBpcyBvcGVuZWQuICovXG4gICAgQE91dHB1dCgpIG9wZW5lZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBwb3BvdmVyIGlzIGNsb3NlZC4gKi9cbiAgICBAT3V0cHV0KCkgY2xvc2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHVibGljIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHsgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGVja1BvcG92ZXIoKTtcbiAgICAgICAgdGhpcy5fc2V0Q3VycmVudENvbmZpZygpO1xuICAgICAgICB0aGlzLnBvcG92ZXIuY2xvc2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VQb3BvdmVyKCkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3lQb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0Q3VycmVudENvbmZpZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25YID09PSAnYmVmb3JlJyB8fCB0aGlzLnBvc2l0aW9uWCA9PT0gJ2FmdGVyJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWCA9IHRoaXMucG9zaXRpb25YO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25ZID09PSAnYWJvdmUnIHx8IHRoaXMucG9zaXRpb25ZID09PSAnYmVsb3cnKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25ZID0gdGhpcy5wb3NpdGlvblk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPSB0aGlzLnRyaWdnZXJFdmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVudGVyRGVsYXkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5lbnRlckRlbGF5ID0gdGhpcy5lbnRlckRlbGF5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGVhdmVEZWxheSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmxlYXZlRGVsYXkgPSB0aGlzLmxlYXZlRGVsYXk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGFwVHJpZ2dlciA9PT0gdHJ1ZSB8fCB0aGlzLm92ZXJsYXBUcmlnZ2VyID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLm92ZXJsYXBUcmlnZ2VyID0gdGhpcy5vdmVybGFwVHJpZ2dlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldE9mZnNldFgpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRYID0gdGhpcy50YXJnZXRPZmZzZXRYO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0T2Zmc2V0WSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFkgPSB0aGlzLnRhcmdldE9mZnNldFk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcnJvd09mZnNldFgpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5hcnJvd09mZnNldFggPSB0aGlzLmFycm93T2Zmc2V0WDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFycm93V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5hcnJvd1dpZHRoID0gdGhpcy5hcnJvd1dpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJyb3dDb2xvcikge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmFycm93Q29sb3IgPSB0aGlzLmFycm93Q29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jbG9zZU9uQ2xpY2sgPT09IHRydWUgfHwgdGhpcy5jbG9zZU9uQ2xpY2sgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuY2xvc2VPbkNsaWNrID0gdGhpcy5jbG9zZU9uQ2xpY2s7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcG92ZXIuc2V0Q3VycmVudFN0eWxlcygpO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBwb3BvdmVyIGlzIG9wZW4uICovXG4gICAgZ2V0IHBvcG92ZXJPcGVuKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcG9wb3Zlck9wZW47IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID09PSAnY2xpY2snKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxuICAgIG9uTW91c2VFbnRlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYWx0ID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgICB0aGlzLl9tb3VzZW92ZXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlblBvcG92ZXIoKTtcbiAgICAgICAgICAgIH0sIHRoaXMucG9wb3Zlci5lbnRlckRlbGF5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxuICAgIG9uTW91c2VMZWF2ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX21vdXNlb3ZlclRpbWVyKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlb3ZlclRpbWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3VzZW92ZXJUaW1lciA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5fcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXIuY2xvc2VEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHRoaXMucG9wb3Zlci5sZWF2ZURlbGF5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGFsdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgcG9wb3ZlciBiZXR3ZWVuIHRoZSBvcGVuIGFuZCBjbG9zZWQgc3RhdGVzLiAqL1xuICAgIHRvZ2dsZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3BvdmVyT3BlbiA/IHRoaXMuY2xvc2VQb3BvdmVyKCkgOiB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBwb3BvdmVyLiAqL1xuICAgIG9wZW5Qb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXJPcGVuICYmICF0aGlzLl9oYWx0KSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVPdmVybGF5KCkuYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG5cbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fdmlld0NvbnRhaW5lclJlZikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aWR0aDogbnVtYmVyID0gR0lQSURvbUhhbmRsZXIuZ2V0V2lkdGgoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eSh0aGlzLnBvcG92ZXIucG9wb3ZlcldpZHRoKSB8fCAodGhpcy5wb3BvdmVyLnBvcG92ZXJXaWR0aCA9PT0gJ2F1dG8nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9wb3ZlcldpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9CYWNrZHJvcCgpO1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9EZXRhY2htZW50cygpO1xuXG4gICAgICAgICAgICB0aGlzLl9pbml0UG9wb3ZlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENsb3NlcyB0aGUgcG9wb3Zlci4gKi9cbiAgICBjbG9zZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmVtb3ZlcyB0aGUgcG9wb3ZlciBmcm9tIHRoZSBET00uICovXG4gICAgZGVzdHJveVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9tb3VzZW92ZXJUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlb3ZlclRpbWVyKTtcbiAgICAgICAgICAgIHRoaXMuX21vdXNlb3ZlclRpbWVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2NsZWFuVXBTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgcG9wb3ZlciB0cmlnZ2VyLiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBjb250YWluaW5nIGFwcC4gKi9cbiAgICBnZXQgZGlyKCk6IERpcmVjdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXIgJiYgdGhpcy5fZGlyLnZhbHVlID09PSAncnRsJyA/ICdydGwnIDogJ2x0cic7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGlzIG1ldGhvZCBlbnN1cmVzIHRoYXQgdGhlIHBvcG92ZXIgY2xvc2VzIHdoZW4gdGhlIG92ZXJsYXkgYmFja2Ryb3AgaXMgY2xpY2tlZC5cbiAgICAqIFdlIGRvIG5vdCB1c2UgZmlyc3QoKSBoZXJlIGJlY2F1c2UgZG9pbmcgc28gd291bGQgbm90IGNhdGNoIGNsaWNrcyBmcm9tIHdpdGhpblxuICAgICogdGhlIHBvcG92ZXIsIGFuZCBpdCB3b3VsZCBmYWlsIHRvIHVuc3Vic2NyaWJlIHByb3Blcmx5LiBJbnN0ZWFkLCB3ZSB1bnN1YnNjcmliZVxuICAgICogZXhwbGljaXRseSB3aGVuIHRoZSBwb3BvdmVyIGlzIGNsb3NlZCBvciBkZXN0cm95ZWQuXG4gICAgKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb0JhY2tkcm9wKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgLyoqIE9ubHkgc3Vic2NyaWJlIHRvIGJhY2tkcm9wIGlmIHRyaWdnZXIgZXZlbnQgaXMgY2xpY2sgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCAhPT0gJ2hvdmVyJyAmJiB0aGlzLmJhY2tkcm9wQ2xvc2VPbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5wb3BvdmVyQ2xvc2VkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLl9lbWl0Q2xvc2VFdmVudCgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvRGV0YWNobWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaG1lbnRzKClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMucG9wb3ZlckNsb3NlZCksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0UG9wb3ZlckNsb3NlZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBwb3BvdmVyIHN0YXRlIHRvIG9wZW4gYW5kIGZvY3VzZXMgdGhlIGZpcnN0IGl0ZW0gaWZcbiAgICAqIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX2luaXRQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRQb3BvdmVyT3BlbmVkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGlzIG1ldGhvZCByZXNldHMgdGhlIHBvcG92ZXIgd2hlbiBpdCdzIGNsb3NlZCwgbW9zdCBpbXBvcnRhbnRseSByZXN0b3JpbmdcbiAgICAqIGZvY3VzIHRvIHRoZSBwb3BvdmVyIHRyaWdnZXIgaWYgdGhlIHBvcG92ZXIgd2FzIG9wZW5lZCB2aWEgdGhlIGtleWJvYXJkLlxuICAgICovXG4gICAgcHJpdmF0ZSBfcmVzZXRQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRQb3BvdmVyQ2xvc2VkKCk7XG5cbiAgICAgICAgLy8gRm9jdXMgb25seSBuZWVkcyB0byBiZSByZXNldCB0byB0aGUgaG9zdCBlbGVtZW50IGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWRcbiAgICAgICAgLy8gYnkgdGhlIGtleWJvYXJkIGFuZCBtYW51YWxseSBzaGlmdGVkIHRvIHRoZSBmaXJzdCBwb3BvdmVyIGl0ZW0uXG4gICAgICAgIGlmICghdGhpcy5fb3BlbmVkQnlNb3VzZSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wZW5lZEJ5TW91c2UgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogc2V0IHN0YXRlIHJhdGhlciB0aGFuIHRvZ2dsZSB0byBzdXBwb3J0IHRyaWdnZXJzIHNoYXJpbmcgYSBwb3BvdmVyICovXG4gICAgcHJpdmF0ZSBfc2V0UG9wb3Zlck9wZW5lZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wb3BvdmVyT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3Zlck9wZW4gPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJPcGVuZWQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIHNldCBzdGF0ZSByYXRoZXIgdGhhbiB0b2dnbGUgdG8gc3VwcG9ydCB0cmlnZ2VycyBzaGFyaW5nIGEgcG9wb3ZlciAqL1xuICAgIHByaXZhdGUgX3NldFBvcG92ZXJDbG9zZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9wb3BvdmVyT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3Zlck9wZW4gPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ2xvc2VkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICogIFRoaXMgbWV0aG9kIGNoZWNrcyB0aGF0IGEgdmFsaWQgaW5zdGFuY2Ugb2YgTWRQb3BvdmVyIGhhcyBiZWVuIHBhc3NlZCBpbnRvXG4gICAgKiAgbWRQb3BvdmVyVHJpZ2dlckZvci4gSWYgbm90LCBhbiBleGNlcHRpb24gaXMgdGhyb3duLlxuICAgICovXG4gICAgcHJpdmF0ZSBfY2hlY2tQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucG9wb3Zlcikge1xuICAgICAgICAgICAgdGhyb3dQb3BvdmVyTWlzc2luZ0Vycm9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqICBUaGlzIG1ldGhvZCBjcmVhdGVzIHRoZSBvdmVybGF5IGZyb20gdGhlIHByb3ZpZGVkIHBvcG92ZXIncyB0ZW1wbGF0ZSBhbmQgc2F2ZXMgaXRzXG4gICAgKiAgT3ZlcmxheVJlZiBzbyB0aGF0IGl0IGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIHdoZW4gb3BlblBvcG92ZXIgaXMgY2FsbGVkLlxuICAgICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3BvdmVyLnRlbXBsYXRlUmVmLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX2dldE92ZXJsYXlDb25maWcoKTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUG9zaXRpb25zKGNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5IGFzIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBuZWVkZWQgdG8gY3JlYXRlIHRoZSBvdmVybGF5LCB0aGUgT3ZlcmxheUNvbmZpZy5cbiAgICAqIEByZXR1cm5zIE92ZXJsYXlDb25maWdcbiAgICAqL1xuICAgIHByaXZhdGUgX2dldE92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlTdGF0ZSA9IG5ldyBPdmVybGF5Q29uZmlnKCk7XG4gICAgICAgIG92ZXJsYXlTdGF0ZS5wb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fZ2V0UG9zaXRpb24oKTtcblxuICAgICAgICAvKiogRGlzcGxheSBvdmVybGF5IGJhY2tkcm9wIGlmIHRyaWdnZXIgZXZlbnQgaXMgZGlmZmVyZW50IG9mIGhvdmVyICovXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCAhPT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgb3ZlcmxheVN0YXRlLmhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgIG92ZXJsYXlTdGF0ZS5iYWNrZHJvcENsYXNzID0gJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIG92ZXJsYXlTdGF0ZS5kaXJlY3Rpb24gPSB0aGlzLmRpcjtcbiAgICAgICAgb3ZlcmxheVN0YXRlLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5fZ2V0T3ZlcmxheVNjcm9sbFN0cmF0ZWd5KHRoaXMucG9wb3Zlci5zY3JvbGxTdHJhdGVneSk7XG5cbiAgICAgICAgcmV0dXJuIG92ZXJsYXlTdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzY3JvbGwgc3RyYXRlZ3kgdXNlZCBieSB0aGUgY2RrL292ZXJsYXkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0T3ZlcmxheVNjcm9sbFN0cmF0ZWd5KHN0cmF0ZWd5OiBQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpOiBTY3JvbGxTdHJhdGVneSB7XG4gICAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ25vb3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpO1xuICAgICAgICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCk7XG4gICAgICAgICAgICBjYXNlICdyZXBvc2l0aW9uJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIExpc3RlbnMgdG8gY2hhbmdlcyBpbiB0aGUgcG9zaXRpb24gb2YgdGhlIG92ZXJsYXkgYW5kIHNldHMgdGhlIGNvcnJlY3QgY2xhc3Nlc1xuICAgICogb24gdGhlIHBvcG92ZXIgYmFzZWQgb24gdGhlIG5ldyBwb3NpdGlvbi4gVGhpcyBlbnN1cmVzIHRoZSBhbmltYXRpb24gb3JpZ2luIGlzIGFsd2F5c1xuICAgICogY29ycmVjdCwgZXZlbiBpZiBhIGZhbGxiYWNrIHBvc2l0aW9uIGlzIHVzZWQgZm9yIHRoZSBvdmVybGF5LlxuICAgICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Qb3NpdGlvbnMocG9zaXRpb246IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbiA9IHBvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2lzaW9uWDogUG9wb3ZlclBvc2l0aW9uWCA9IGNoYW5nZS5jb25uZWN0aW9uUGFpci5vdmVybGF5WCA9PT0gJ3N0YXJ0JyA/ICdhZnRlcicgOiAnYmVmb3JlJztcbiAgICAgICAgICAgIGxldCBwb3Npc2lvblk6IFBvcG92ZXJQb3NpdGlvblkgPSBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVkgPT09ICd0b3AnID8gJ2JlbG93JyA6ICdhYm92ZSc7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyLm92ZXJsYXBUcmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgcG9zaXNpb25ZID0gcG9zaXNpb25ZID09PSAnYmVsb3cnID8gJ2Fib3ZlJyA6ICdiZWxvdyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlcXVpcmVkIGZvciBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPSBwb3Npc2lvblg7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9IHBvc2lzaW9uWTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIuc2V0Q3VycmVudFN0eWxlcygpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldFBvc2l0aW9uQ2xhc3Nlcyhwb3Npc2lvblgsIHBvc2lzaW9uWSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IGZvciB0aGUgb3ZlcmxheSwgc28gdGhlIHBvcG92ZXIgaXMgcHJvcGVybHkgY29ubmVjdGVkXG4gICAgKiB0byB0aGUgdHJpZ2dlci5cbiAgICAqIEByZXR1cm5zIENvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lcbiAgICAqL1xuICAgIHByaXZhdGUgX2dldFBvc2l0aW9uKCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGNvbnN0IFtvcmlnaW5YLCBvcmlnaW5GYWxsYmFja1hdOiBIb3Jpem9udGFsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPT09ICdiZWZvcmUnID8gWydlbmQnLCAnc3RhcnQnXSA6IFsnc3RhcnQnLCAnZW5kJ107XG5cbiAgICAgICAgY29uc3QgW292ZXJsYXlZLCBvdmVybGF5RmFsbGJhY2tZXTogVmVydGljYWxDb25uZWN0aW9uUG9zW10gPVxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9PT0gJ2Fib3ZlJyA/IFsnYm90dG9tJywgJ3RvcCddIDogWyd0b3AnLCAnYm90dG9tJ107XG5cbiAgICAgICAgLy8gbGV0IG9yaWdpblkgPSBvdmVybGF5WTtcbiAgICAgICAgLy8gbGV0IGZhbGxiYWNrT3JpZ2luWSA9IG92ZXJsYXlGYWxsYmFja1k7XG5cbiAgICAgICAgbGV0IG9yaWdpblk6ICd0b3AnIHwgJ2JvdHRvbScgPSBvdmVybGF5WTtcbiAgICAgICAgbGV0IG9yaWdpbkZhbGxiYWNrWTogJ3RvcCcgfCAnYm90dG9tJyA9IG92ZXJsYXlGYWxsYmFja1k7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheVg6ICdzdGFydCcgfCAnZW5kJyA9IG9yaWdpblg7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlGYWxsYmFja1g6ICdzdGFydCcgfCAnZW5kJyA9IG9yaWdpbkZhbGxiYWNrWDtcblxuICAgICAgICAvKiogUmV2ZXJzZSBvdmVybGF5WSBhbmQgZmFsbGJhY2tPdmVybGF5WSB3aGVuIG92ZXJsYXBUcmlnZ2VyIGlzIGZhbHNlICovXG4gICAgICAgIGlmICghdGhpcy5wb3BvdmVyLm92ZXJsYXBUcmlnZ2VyKSB7XG4gICAgICAgICAgICBvcmlnaW5ZID0gb3ZlcmxheVkgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgICAgIG9yaWdpbkZhbGxiYWNrWSA9IG92ZXJsYXlGYWxsYmFja1kgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvZmZzZXRYOiBudW1iZXIgPSAwO1xuICAgICAgICBsZXQgb2Zmc2V0WTogbnVtYmVyID0gMDtcblxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFggJiYgIWlzTmFOKE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCkpKSB7XG4gICAgICAgICAgICBvZmZzZXRYID0gTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRYKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WSAmJiAhaXNOYU4oTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZKSkpIHtcbiAgICAgICAgICAgIG9mZnNldFkgPSBOdW1iZXIodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvciBvdmVycmlkaW5nIHBvc2l0aW9uIGVsZW1lbnQsIHdoZW4gcG9wb3ZlclRhcmdldEF0IGhhcyBhIHZhbGlkIGVsZW1lbnQgcmVmZXJlbmNlLlxuICAgICAgICAgKiBVc2VmdWwgZm9yIHN0aWNraW5nIHBvcG92ZXIgdG8gcGFyZW50IGVsZW1lbnQgYW5kIG9mZnNldHRpbmcgYXJyb3cgdG8gdHJpZ2dlciBlbGVtZW50LlxuICAgICAgICAgKiBJZiB1bmRlZmluZWQgZGVmYXVsdHMgdG8gdGhlIHRyaWdnZXIgZWxlbWVudCByZWZlcmVuY2UuXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgZWxlbWVudDogRWxlbWVudFJlZjxhbnk+ID0gdGhpcy5fZWxlbWVudFJlZjtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhcmdldEVsZW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuY29udGFpbmVyUG9zaXRpb25pbmcgPSB0cnVlO1xuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMudGFyZ2V0RWxlbWVudC5fZWxlbWVudFJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aExvY2tlZFBvc2l0aW9uKHRydWUpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luRmFsbGJhY2tYLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFgob2Zmc2V0WClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFkob2Zmc2V0WSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xlYW5VcFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RldGFjaG1lbnRzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXRhY2htZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSkgX2hhbmRsZU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQgJiYgIWlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIoZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLl9vcGVuZWRCeU1vdXNlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -21,8 +21,12 @@ var GIPISidenavComponent = /** @class */ (function () {
21
21
  this._mouseEnter = false;
22
22
  this.menuItems = [];
23
23
  this.labelToggle = 'Retrair menu';
24
+ this.showTagNewIntegration = false;
25
+ this.showIntegration = false;
24
26
  this.showConfiguration = false;
25
27
  this.onClickMenuItem = new EventEmitter();
28
+ this.onClickMenuIntegration = new EventEmitter();
29
+ this.onClickMenuConfiguration = new EventEmitter();
26
30
  }
27
31
  GIPISidenavComponent_1 = GIPISidenavComponent;
28
32
  GIPISidenavComponent.prototype.ngOnInit = function () { };
@@ -212,6 +216,26 @@ var GIPISidenavComponent = /** @class */ (function () {
212
216
  Input(),
213
217
  __metadata("design:type", String)
214
218
  ], GIPISidenavComponent.prototype, "labelToggle", void 0);
219
+ __decorate([
220
+ Input(),
221
+ __metadata("design:type", Boolean)
222
+ ], GIPISidenavComponent.prototype, "showTagNewIntegration", void 0);
223
+ __decorate([
224
+ Input(),
225
+ __metadata("design:type", String)
226
+ ], GIPISidenavComponent.prototype, "iconIntegration", void 0);
227
+ __decorate([
228
+ Input(),
229
+ __metadata("design:type", String)
230
+ ], GIPISidenavComponent.prototype, "svgIconIntegration", void 0);
231
+ __decorate([
232
+ Input(),
233
+ __metadata("design:type", String)
234
+ ], GIPISidenavComponent.prototype, "labelIntegration", void 0);
235
+ __decorate([
236
+ Input(),
237
+ __metadata("design:type", Boolean)
238
+ ], GIPISidenavComponent.prototype, "showIntegration", void 0);
215
239
  __decorate([
216
240
  Input(),
217
241
  __metadata("design:type", String)
@@ -232,11 +256,19 @@ var GIPISidenavComponent = /** @class */ (function () {
232
256
  Output(),
233
257
  __metadata("design:type", EventEmitter)
234
258
  ], GIPISidenavComponent.prototype, "onClickMenuItem", void 0);
259
+ __decorate([
260
+ Output(),
261
+ __metadata("design:type", EventEmitter)
262
+ ], GIPISidenavComponent.prototype, "onClickMenuIntegration", void 0);
263
+ __decorate([
264
+ Output(),
265
+ __metadata("design:type", EventEmitter)
266
+ ], GIPISidenavComponent.prototype, "onClickMenuConfiguration", void 0);
235
267
  GIPISidenavComponent = GIPISidenavComponent_1 = __decorate([
236
268
  Component({
237
269
  selector: "gipi-sidenav",
238
270
  exportAs: 'gipiSidenav',
239
- template: "<mat-sidenav #sidenav\n [mode]=\"(isScreenLarge | async) ? 'side' : 'over'\"\n class=\"sidenav\"\n [class.large-sidenav]=\"(isOpened | async)\"\n [class.small-sidenav]=\"!(isOpened | async)\"\n [disableClose]=\"(isScreenLarge | async)\"\n opened=\"true\">\n\n <div [ngClass]=\"{'sidenav-content-menu': true,\n 'show-configuration': showConfiguration}\">\n\n <!-- Bot\u00E3o expandir e retrair o menu -->\n <button id=\"buttonToogleSidenav\"\n name=\"toggleSidenav\"\n class=\"toggle-sidenav\"\n (click)=\"toggleSidenav(); _mouseEnter = false;\">\n <mat-icon [@indicatorRotate]=\"(isOpened | async) ? 'opened': 'closed'\">\n chevron_right\n </mat-icon>\n\n {{ ((labelToggle) && (isOpened | async)) ? labelToggle : '' }}\n </button>\n\n <!-- Bot\u00E3o voltar do submenu -->\n <div class=\"sidenav-action-menu sidenav-menu-collapsable\">\n <a *ngIf=\"(isOpened | async) && (_levelOneMenuCollapsableSelected || _levelTwoMenuCollapsableSelected)\"\n (click)=\"onMenuCollapsableGoBack()\"\n (mouseenter)=\"!_mouseEnter && onMouseEnter()\"\n (mouseleave)=\"_mouseEnter && onMouseLeave()\">\n <mat-icon>\n arrow_back\n </mat-icon>\n <span>\n {{ (submenuBackButtonName | async) }}\n </span>\n </a>\n </div>\n\n <!-- Se o menu item for do tipo submenu -->\n <mat-nav-list class=\"sidenav-menu-list\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\">\n <div *ngFor=\"let menu of (levelMenuCollapsableSelected | async)\"\n class=\"sidenav-action-menu\">\n\n <a *ngIf=\"menu.type === 'ITEM'\"\n [routerLink]=\"menu.route\"\n [class.menu-active]=\"isMenuActive(menu)\"\n (click)=\"onMenuItemSelected(menu)\">\n <mat-icon *ngIf=\"menu.icon\">\n {{ menu.icon }}\n </mat-icon>\n <mat-icon *ngIf=\"menu.svgIcon\"\n [svgIcon]=\"menu.svgIcon\">\n </mat-icon>\n <span *ngIf=\"(isOpened | async)\">\n {{ getMenuName(menu.name) }}\n </span>\n </a>\n\n <a *ngIf=\"menu.type === 'COLLAPSABLE'\"\n [class.menu-active]=\"isMenuCollapsableActive(menu)\"\n (click)=\"onMenuCollapsableSelected(menu); onMenuItemSelected(menu, false)\">\n <mat-icon *ngIf=\"menu.icon\">\n {{ menu.icon }}\n </mat-icon>\n <mat-icon *ngIf=\"menu.svgIcon\"\n [svgIcon]=\"menu.svgIcon\">\n </mat-icon>\n <span *ngIf=\"(isOpened | async)\">\n {{ getMenuName(menu.name) }}\n </span>\n <mat-icon *ngIf=\"(isOpened | async)\">\n chevron_right\n </mat-icon>\n </a>\n\n </div>\n </mat-nav-list>\n </div>\n\n <div *ngIf=\"showConfiguration\"\n class=\"sidenav-action-menu sidenav-configuration-menu\">\n <a (click)=\"onMenuItemSelected(null)\">\n <mat-icon *ngIf=\"iconConfiguration\">\n {{ iconConfiguration }}\n </mat-icon>\n <mat-icon *ngIf=\"svgIconConfiguration\"\n [svgIcon]=\"svgIconConfiguration\">\n </mat-icon>\n <span *ngIf=\"(labelConfiguration) && (isOpened | async)\">\n {{ labelConfiguration }}\n </span>\n </a>\n </div>\n</mat-sidenav>\n",
271
+ template: "<mat-sidenav #sidenav\n [mode]=\"(isScreenLarge | async) ? 'side' : 'over'\"\n class=\"sidenav\"\n [class.large-sidenav]=\"(isOpened | async)\"\n [class.small-sidenav]=\"!(isOpened | async)\"\n [disableClose]=\"(isScreenLarge | async)\"\n opened=\"true\">\n\n <div [ngClass]=\"{'sidenav-content-menu': true,\n 'show-bottom': (showConfiguration || showIntegration)}\">\n\n <!-- Bot\u00E3o expandir e retrair o menu -->\n <button id=\"buttonToogleSidenav\"\n name=\"toggleSidenav\"\n class=\"toggle-sidenav\"\n (click)=\"toggleSidenav(); _mouseEnter = false;\">\n <mat-icon [@indicatorRotate]=\"(isOpened | async) ? 'opened': 'closed'\">\n chevron_right\n </mat-icon>\n\n {{ ((labelToggle) && (isOpened | async)) ? labelToggle : '' }}\n </button>\n\n <!-- Bot\u00E3o voltar do submenu -->\n <div class=\"sidenav-action-menu sidenav-menu-collapsable\">\n <a *ngIf=\"(isOpened | async) && (_levelOneMenuCollapsableSelected || _levelTwoMenuCollapsableSelected)\"\n (click)=\"onMenuCollapsableGoBack()\"\n (mouseenter)=\"!_mouseEnter && onMouseEnter()\"\n (mouseleave)=\"_mouseEnter && onMouseLeave()\">\n <mat-icon>\n arrow_back\n </mat-icon>\n <span>\n {{ (submenuBackButtonName | async) }}\n </span>\n </a>\n </div>\n\n <!-- Se o menu item for do tipo submenu -->\n <mat-nav-list class=\"sidenav-menu-list\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\">\n <div *ngFor=\"let menu of (levelMenuCollapsableSelected | async)\"\n class=\"sidenav-action-menu\">\n\n <a *ngIf=\"menu.type === 'ITEM'\"\n [routerLink]=\"menu.route\"\n [class.menu-active]=\"isMenuActive(menu)\"\n (click)=\"onMenuItemSelected(menu)\">\n <mat-icon *ngIf=\"menu.icon\">\n {{ menu.icon }}\n </mat-icon>\n <mat-icon *ngIf=\"menu.svgIcon\"\n [svgIcon]=\"menu.svgIcon\">\n </mat-icon>\n <span *ngIf=\"(isOpened | async)\">\n {{ getMenuName(menu.name) }}\n </span>\n </a>\n\n <a *ngIf=\"menu.type === 'COLLAPSABLE'\"\n [class.menu-active]=\"isMenuCollapsableActive(menu)\"\n (click)=\"onMenuCollapsableSelected(menu); onMenuItemSelected(menu, false)\">\n <mat-icon *ngIf=\"menu.icon\">\n {{ menu.icon }}\n </mat-icon>\n <mat-icon *ngIf=\"menu.svgIcon\"\n [svgIcon]=\"menu.svgIcon\">\n </mat-icon>\n <span *ngIf=\"(isOpened | async)\">\n {{ getMenuName(menu.name) }}\n </span>\n <mat-icon *ngIf=\"(isOpened | async)\">\n chevron_right\n </mat-icon>\n </a>\n\n </div>\n </mat-nav-list>\n </div>\n\n <div class=\"sidenav-action-menu sidenav-bottom-menu\">\n <a *ngIf=\"showIntegration\"\n (click)=\"onMenuItemSelected(null); onClickMenuIntegration.emit()\">\n <mat-icon *ngIf=\"iconIntegration\">\n {{ iconIntegration }}\n </mat-icon>\n <mat-icon *ngIf=\"svgIconIntegration\"\n [svgIcon]=\"svgIconIntegration\">\n </mat-icon>\n <span *ngIf=\"(labelIntegration) && (isOpened | async)\">\n {{ labelIntegration }}\n </span>\n <div class=\"tag-new\"\n *ngIf=\"showTagNewIntegration\">\n Novo\n </div>\n </a>\n\n <a *ngIf=\"showConfiguration\"\n (click)=\"onMenuItemSelected(null); onClickMenuConfiguration.emit()\">\n <mat-icon *ngIf=\"iconConfiguration\">\n {{ iconConfiguration }}\n </mat-icon>\n <mat-icon *ngIf=\"svgIconConfiguration\"\n [svgIcon]=\"svgIconConfiguration\">\n </mat-icon>\n <span *ngIf=\"(labelConfiguration) && (isOpened | async)\">\n {{ labelConfiguration }}\n </span>\n </a>\n </div>\n</mat-sidenav>\n",
240
272
  encapsulation: ViewEncapsulation.None,
241
273
  providers: [
242
274
  {
@@ -255,7 +287,7 @@ var GIPISidenavComponent = /** @class */ (function () {
255
287
  transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)')),
256
288
  ])
257
289
  ],
258
- styles: [".sidenav{padding:.8rem 1.2rem;border-radius:5px;background-color:#fff;position:fixed!important;top:66px!important;bottom:8px!important;border:0!important}.sidenav.small-sidenav{overflow-y:auto;width:76px}.sidenav.small-sidenav .sidenav-configuration-menu,.sidenav.small-sidenav .sidenav-content-menu .sidenav-menu-list .action-sidenav,.sidenav.small-sidenav .sidenav-content-menu .toggle-sidenav{text-align:center!important}.sidenav.large-sidenav{overflow-y:auto;width:248px}.sidenav .sidenav-content-menu{width:100%;background-color:#f5f5f6;border-radius:4px;display:flex;flex-direction:column;align-items:stretch;height:100%}.sidenav .sidenav-content-menu.show-configuration{height:calc(100% - 18px - 52px)!important}.sidenav .sidenav-content-menu .toggle-sidenav{all:unset;border-radius:4px;border:none;text-align:left;cursor:pointer;background-color:#e0313e;color:#fff;display:flex;align-items:center;gap:8px;padding:10px 16px}.sidenav .sidenav-content-menu .toggle-sidenav>mat-icon{width:2rem;height:2rem;font-size:2rem}.sidenav .sidenav-content-menu .toggle-sidenav:hover{background-color:#cc2d38}.sidenav .sidenav-content-menu .sidenav-menu-list{overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.sidenav .sidenav-content-menu .sidenav-menu-list::-webkit-scrollbar{display:none}.menu-active{color:#e0313e!important;background-color:#e0e1e2!important}.menu-active>mat-icon,.menu-active>mat-icon svg,.menu-active>mat-icon svg path{color:#e0313e!important;fill:#e0313e!important}.sidenav-action-menu{cursor:pointer;display:flex}.sidenav-action-menu a{flex:1;padding:16px;background-color:#f5f5f6;display:flex;align-items:center;gap:8px;cursor:pointer;font-size:1.4rem;font-weight:600}.sidenav-action-menu a:hover{background-color:#e0e1e2}.sidenav-action-menu a>span{flex:1;line-height:2rem}.sidenav-action-menu a>mat-icon{width:2rem;height:2rem;font-size:2rem;line-height:2rem;color:#595959;fill:#595959}.sidenav-action-menu a>mat-icon svg,.sidenav-action-menu a>mat-icon svg path{color:#595959;fill:#595959}.sidenav-configuration-menu a{border-radius:4px}.sidenav-menu-collapsable a{background-color:#e0e1e2}.sidenav-menu-collapsable a:hover{background-color:#d1d2d4}.mat-list-base{padding-top:0!important}.mat-drawer-inner-container{display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;overflow:hidden!important}.mat-drawer:not(.mat-drawer-side){box-shadow:none!important}"]
290
+ styles: [".sidenav{padding:.8rem 1.2rem;border-radius:5px;background-color:#fff;position:fixed!important;top:66px!important;bottom:8px!important;border:0!important}.sidenav.small-sidenav{overflow-y:auto;width:76px}.sidenav.small-sidenav .sidenav-bottom-menu,.sidenav.small-sidenav .sidenav-content-menu .sidenav-menu-list .action-sidenav,.sidenav.small-sidenav .sidenav-content-menu .toggle-sidenav{text-align:center!important}.sidenav.large-sidenav{overflow-y:auto;width:248px}.sidenav .sidenav-content-menu{width:100%;background-color:#f5f5f6;border-radius:4px;display:flex;flex-direction:column;align-items:stretch;height:100%}.sidenav .sidenav-content-menu.show-bottom{height:calc(100% - 18px - 52px)!important}.sidenav .sidenav-content-menu .toggle-sidenav{all:unset;border-radius:4px;border:none;text-align:left;cursor:pointer;background-color:#e0313e;color:#fff;display:flex;align-items:center;gap:8px;padding:10px 16px}.sidenav .sidenav-content-menu .toggle-sidenav>mat-icon{width:2rem;height:2rem;font-size:2rem}.sidenav .sidenav-content-menu .toggle-sidenav:hover{background-color:#cc2d38}.sidenav .sidenav-content-menu .sidenav-menu-list{overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.sidenav .sidenav-content-menu .sidenav-menu-list::-webkit-scrollbar{display:none}.menu-active{color:#e0313e!important;background-color:#e0e1e2!important}.menu-active>mat-icon,.menu-active>mat-icon svg,.menu-active>mat-icon svg path{color:#e0313e!important;fill:#e0313e!important}.sidenav-action-menu{cursor:pointer;display:flex}.sidenav-action-menu.sidenav-bottom-menu{flex-direction:column;gap:1rem;margin-top:1rem}.sidenav-action-menu a{flex:1;padding:16px;background-color:#f5f5f6;display:flex;align-items:center;gap:8px;cursor:pointer;font-size:1.4rem;font-weight:600}.sidenav-action-menu a:hover{background-color:#e0e1e2}.sidenav-action-menu a>span{flex:1;line-height:2rem}.sidenav-action-menu a>mat-icon{width:2rem;height:2rem;font-size:2rem;line-height:2rem;color:#595959;fill:#595959}.sidenav-action-menu a>mat-icon svg,.sidenav-action-menu a>mat-icon svg path{color:#595959;fill:#595959}.sidenav-bottom-menu a{border-radius:4px}.sidenav-menu-collapsable a{background-color:#e0e1e2}.sidenav-menu-collapsable a:hover{background-color:#d1d2d4}.mat-list-base{padding-top:0!important}.mat-drawer-inner-container{display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;overflow:hidden!important}.mat-drawer:not(.mat-drawer-side){box-shadow:none!important}.tag-new{display:flex;align-items:center;justify-content:center;background-color:#e0313e;color:#fff;padding:.2rem .6rem;font-size:1rem;line-height:1.2rem;border-radius:.4rem}"]
259
291
  }),
260
292
  __metadata("design:paramtypes", [NavService,
261
293
  BreakpointObserverService,
@@ -264,4 +296,4 @@ var GIPISidenavComponent = /** @class */ (function () {
264
296
  return GIPISidenavComponent;
265
297
  }());
266
298
  export { GIPISidenavComponent };
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL3NpZGViYXIvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBMEJoRTtJQXVCSSw4QkFDWSxXQUF1QixFQUN2QiwwQkFBcUQsRUFDckQsT0FBZTtRQUZmLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLCtCQUEwQixHQUExQiwwQkFB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VTtZQUNLLHlCQUF5QjtZQUM1QyxNQUFNO09BMUJsQixvQkFBb0IsQ0FrTWhDO0lBQUQsMkJBQUM7Q0FBQSxBQWxNRCxJQWtNQztTQWxNWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE1lbnVEVE8gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVscy9kdG8vbWVudS5kdG8nO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvYnJlYWtwb2ludC1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdlNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL25hdi5zZXJ2aWNlJztcbmltcG9ydCB7IEFycmF5VXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvYXJyYXkudXRpbCc7XG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9vYmplY3QudXRpbCc7XG5pbXBvcnQgeyBTdHJpbmdVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9zdHJpbmcudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBgZ2lwaS1zaWRlbmF2YCxcbiAgICBleHBvcnRBczogJ2dpcGlTaWRlbmF2JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2lkZW5hdi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2lkZW5hdi5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBHSVBJU2lkZW5hdkNvbXBvbmVudCA9PiBHSVBJU2lkZW5hdkNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdnaXBpLXNpZGVuYXYnLFxuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdpbmRpY2F0b3JSb3RhdGUnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnY2xvc2VkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMGRlZyknIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdvcGVuZWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgxODBkZWcpJyB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpJykpLFxuICAgICAgICBdKVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgR0lQSVNpZGVuYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gICAgQFZpZXdDaGlsZCgnc2lkZW5hdicsIHsgc3RhdGljOiBmYWxzZSB9KSBzaWRlbmF2OiBNYXRTaWRlbmF2O1xuXG4gICAgcHVibGljIF9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkOiBNZW51RFRPID0gbnVsbDtcbiAgICBwdWJsaWMgX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQ6IE1lbnVEVE8gPSBudWxsO1xuXG4gICAgcHVibGljIF9tb3VzZUVudGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBtZW51SXRlbXM6IE1lbnVEVE9bXSA9IFtdO1xuXG4gICAgQElucHV0KCkgbGFiZWxUb2dnbGU6IHN0cmluZyA9ICdSZXRyYWlyIG1lbnUnO1xuXG4gICAgQElucHV0KCkgaWNvbkNvbmZpZ3VyYXRpb246IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN2Z0ljb25Db25maWd1cmF0aW9uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBsYWJlbENvbmZpZ3VyYXRpb246IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNob3dDb25maWd1cmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgb25DbGlja01lbnVJdGVtOiBFdmVudEVtaXR0ZXI8TWVudURUTyB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxNZW51RFRPIHwgbnVsbD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9uYXZTZXJ2aWNlOiBOYXZTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlOiBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbmF2U2VydmljZS5zaWRlbmF2ID0gdGhpcy5zaWRlbmF2O1xuICAgICAgICB0aGlzLl9uYXZTZXJ2aWNlLm1lbnVJdGVtcyA9IHRoaXMubWVudUl0ZW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNPcGVuZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBvZih0aGlzLl9uYXZTZXJ2aWNlLmlzT3BlbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU2NyZWVuTGFyZ2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLnNpemUkLnBpcGUoXG4gICAgICAgICAgICBtYXAoc2l6ZSA9PiAoc2l6ZSAhPT0gJ3hzJykgJiYgKHNpemUgIT09ICdzbScpICYmIChzaXplICE9PSAnbWQnKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1Ym1lbnVCYWNrQnV0dG9uTmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCkgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZignVm9sdGFyJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsT25lTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZC5uYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoYCR7dGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZC5uYW1lfSAvICR7dGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZC5uYW1lfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsZXZlbE1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKCk6IE9ic2VydmFibGU8TWVudURUT1tdPiB7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMubWVudUl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCkgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkLm1lbnVMaXN0KTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZC5tZW51TGlzdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlU2lkZW5hdigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBudWxsO1xuICAgICAgICB0aGlzLm9uTWVudUNvbGxhcHNhYmxlUmVzZXQodGhpcy5tZW51SXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX25hdlNlcnZpY2UudG9nZ2xlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQobWVudTogTWVudURUTyk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fbmF2U2VydmljZS5pc09wZW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX25hdlNlcnZpY2Uub3BlbigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fbmF2U2VydmljZS5pc09wZW5lZCkge1xuICAgICAgICAgICAgICAgIG1lbnUuZXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogU2UgbyBtZW51TGlzdCBlc3TDoSBjYXJyZWdhZG8gZSBvICh0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkID09PSBudWxsKSBzaWduaWZpY2EgcXVlIHBvc3N1aSBtYWlzIG5pdmVpcywgcG9ydGFudG8gZXN0ZSDDqSBvIG5pdmVsIDEuXG4gICAgICAgICAgICAgICAgICogU2UgbyBtZW51TGlzdCBlc3TDoSBjYXJyZWdhZG8gZSBvICh0aGlzLl9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkID09PSBudWxsKSBzaWduaWZpY2EgcXVlIGVzdGUgw6kgbyDDunRpbW8gbsOtdmVsLCBwb3J0YW50byBlc3RlIMOpIG8gbml2ZWwgMi5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5VXRpbC5pc0VtcHR5KG1lbnUubWVudUxpc3QpICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsT25lTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xldmVsT25lTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBPYmplY3RVdGlsLmNsb25lKG1lbnUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUFycmF5VXRpbC5pc0VtcHR5KG1lbnUubWVudUxpc3QpICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBPYmplY3RVdGlsLmNsb25lKG1lbnUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUNvbGxhcHNhYmxlUmVzZXQobWVudUxpc3Q6IE1lbnVEVE9bXSk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVudUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtZW51TGlzdFtpXS5leHBhbmRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheVV0aWwuaXNFbXB0eShtZW51TGlzdFtpXS5tZW51TGlzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1lbnVDb2xsYXBzYWJsZVJlc2V0KG1lbnVMaXN0W2ldLm1lbnVMaXN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1lbnVDb2xsYXBzYWJsZUdvQmFjaygpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZCA9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xldmVsT25lTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTWVudUNvbGxhcHNhYmxlUmVzZXQodGhpcy5tZW51SXRlbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNNZW51QWN0aXZlKG1lbnU6IE1lbnVEVE8pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlci51cmwuc3RhcnRzV2l0aChtZW51LnJvdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNNZW51Q29sbGFwc2FibGVBY3RpdmUobWVudTogTWVudURUTyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KG1lbnUucm91dGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleGlzdEluUm91dGU6IGJvb2xlYW4gPSB0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKG1lbnUucm91dGUpO1xuXG4gICAgICAgIGxldCBtZW51TGlzdDogTWVudURUT1tdID0gQXJyYXlVdGlsLmNsb25lKHRoaXMubWVudUl0ZW1zKTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSkge1xuICAgICAgICAgICAgbWVudUxpc3QgPSBBcnJheVV0aWwuY2xvbmUodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZC5tZW51TGlzdCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICBtZW51TGlzdCA9IEFycmF5VXRpbC5jbG9uZSh0aGlzLl9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkLm1lbnVMaXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxldmVsWmVyb0FjdGl2ZTogTWVudURUTyA9IG1lbnVMaXN0XG4gICAgICAgICAgICAuZmlsdGVyKG1pID0+ICFBcnJheVV0aWwuaXNFbXB0eShtaS5tZW51TGlzdCkpXG4gICAgICAgICAgICAuZmluZChtaSA9PiAoKG1pLnJvdXRlID09PSBtZW51LnJvdXRlKSAmJiAobWkuaW5kZXggPT09IG1lbnUuaW5kZXgpICYmIChtaS50eXBlICYmIG1lbnUudHlwZSkpKTtcblxuICAgICAgICBpZiAoZXhpc3RJblJvdXRlICYmICFPYmplY3RVdGlsLmlzTnVsbChsZXZlbFplcm9BY3RpdmUpICYmICFBcnJheVV0aWwuaXNFbXB0eShsZXZlbFplcm9BY3RpdmUubWVudUxpc3QpKSB7XG4gICAgICAgICAgICBjb25zdCBsZXZlbE9uZUFjdGl2ZTogTWVudURUTyA9IGxldmVsWmVyb0FjdGl2ZS5tZW51TGlzdC5maW5kKG1pID0+IHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXMobWkucm91dGUpKTtcbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwobGV2ZWxPbmVBY3RpdmUpICYmICFBcnJheVV0aWwuaXNFbXB0eShsZXZlbE9uZUFjdGl2ZS5tZW51TGlzdCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZXZlbFR3b0FjdGl2ZTogTWVudURUTyA9IGxldmVsT25lQWN0aXZlLm1lbnVMaXN0LmZpbmQobWkgPT4gdGhpcy5fcm91dGVyLnVybC5pbmNsdWRlcyhtaS5yb3V0ZSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhT2JqZWN0VXRpbC5pc051bGwobGV2ZWxUd29BY3RpdmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIU9iamVjdFV0aWwuaXNOdWxsKGxldmVsT25lQWN0aXZlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25NZW51SXRlbVNlbGVjdGVkKG1lbnU6IE1lbnVEVE8gPSBudWxsLCBjbG9zZU5hdjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNsb3NlTmF2KSB7XG4gICAgICAgICAgICB0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBudWxsO1xuXG4gICAgICAgICAgICB0aGlzLm9uTWVudUNvbGxhcHNhYmxlUmVzZXQodGhpcy5tZW51SXRlbXMpO1xuXG4gICAgICAgICAgICB0aGlzLmlzU2NyZWVuTGFyZ2Uuc3Vic2NyaWJlKGlzU2NyZWVuTGFyZ2UgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNTY3JlZW5MYXJnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9uYXZTZXJ2aWNlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2xpY2tNZW51SXRlbS5lbWl0KG1lbnUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNZW51TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKG5hbWUubGVuZ3RoIDw9IDM1KSA/IG5hbWUgOiAobmFtZS5zbGljZSgwLCAzNSkgKyAnLi4uJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5lZC50b1Byb21pc2UoKS50aGVuKGlzT3BlbmVkID0+IHtcbiAgICAgICAgICAgIGlmICghaXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVNpZGVuYXYoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5lZC50b1Byb21pc2UoKS50aGVuKGlzT3BlbmVkID0+IHtcbiAgICAgICAgICAgIGlmIChpc09wZW5lZCAmJiB0aGlzLl9tb3VzZUVudGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlU2lkZW5hdigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxufVxuIl19
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL3NpZGViYXIvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBMEJoRTtJQTZCSSw4QkFDWSxXQUF1QixFQUN2QiwwQkFBcUQsRUFDckQsT0FBZTtRQUZmLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLCtCQUEwQixHQUExQiwwQkFB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QkFDaEYsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDSjtZQUNELElBQUksRUFBRTtnQkFDRixPQUFPLEVBQUUsY0FBYzthQUMxQjtZQUNELFVBQVUsRUFBRTtnQkFDUixPQUFPLENBQUMsaUJBQWlCLEVBQUU7b0JBQ3ZCLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7b0JBQ3JELEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztvQkFDdkQsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2lCQUNyRixDQUFDO2FBQ0w7O1NBQ0osQ0FBQzt5Q0ErQjJCLFVBQVU7WUFDSyx5QkFBeUI7WUFDNUMsTUFBTTtPQWhDbEIsb0JBQW9CLENBd01oQztJQUFELDJCQUFDO0NBQUEsQUF4TUQsSUF3TUM7U0F4TVksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNZW51RFRPIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvZHRvL21lbnUuZHRvJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2JyZWFrcG9pbnQtb2JzZXJ2ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9uYXYuc2VydmljZSc7XG5pbXBvcnQgeyBBcnJheVV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL2FycmF5LnV0aWwnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvc3RyaW5nLnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogYGdpcGktc2lkZW5hdmAsXG4gICAgZXhwb3J0QXM6ICdnaXBpU2lkZW5hdicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpZGVuYXYuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NpZGVuYXYuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpOiB0eXBlb2YgR0lQSVNpZGVuYXZDb21wb25lbnQgPT4gR0lQSVNpZGVuYXZDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnZ2lwaS1zaWRlbmF2JyxcbiAgICB9LFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignaW5kaWNhdG9yUm90YXRlJywgW1xuICAgICAgICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDBkZWcpJyB9KSksXG4gICAgICAgICAgICBzdGF0ZSgnb3BlbmVkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMTgwZGVnKScgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsMC4wLDAuMiwxKScpKSxcbiAgICAgICAgXSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEdJUElTaWRlbmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAgIEBWaWV3Q2hpbGQoJ3NpZGVuYXYnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2lkZW5hdjogTWF0U2lkZW5hdjtcblxuICAgIHB1YmxpYyBfbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZDogTWVudURUTyA9IG51bGw7XG4gICAgcHVibGljIF9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkOiBNZW51RFRPID0gbnVsbDtcblxuICAgIHB1YmxpYyBfbW91c2VFbnRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgbWVudUl0ZW1zOiBNZW51RFRPW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGxhYmVsVG9nZ2xlOiBzdHJpbmcgPSAnUmV0cmFpciBtZW51JztcblxuICAgIEBJbnB1dCgpIHNob3dUYWdOZXdJbnRlZ3JhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaWNvbkludGVncmF0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3ZnSWNvbkludGVncmF0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbGFiZWxJbnRlZ3JhdGlvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNob3dJbnRlZ3JhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaWNvbkNvbmZpZ3VyYXRpb246IHN0cmluZztcbiAgICBASW5wdXQoKSBzdmdJY29uQ29uZmlndXJhdGlvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxhYmVsQ29uZmlndXJhdGlvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNob3dDb25maWd1cmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgb25DbGlja01lbnVJdGVtOiBFdmVudEVtaXR0ZXI8TWVudURUTyB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxNZW51RFRPIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgb25DbGlja01lbnVJbnRlZ3JhdGlvbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBvbkNsaWNrTWVudUNvbmZpZ3VyYXRpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9uYXZTZXJ2aWNlOiBOYXZTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlOiBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbmF2U2VydmljZS5zaWRlbmF2ID0gdGhpcy5zaWRlbmF2O1xuICAgICAgICB0aGlzLl9uYXZTZXJ2aWNlLm1lbnVJdGVtcyA9IHRoaXMubWVudUl0ZW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNPcGVuZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBvZih0aGlzLl9uYXZTZXJ2aWNlLmlzT3BlbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU2NyZWVuTGFyZ2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLnNpemUkLnBpcGUoXG4gICAgICAgICAgICBtYXAoc2l6ZSA9PiAoc2l6ZSAhPT0gJ3hzJykgJiYgKHNpemUgIT09ICdzbScpICYmIChzaXplICE9PSAnbWQnKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1Ym1lbnVCYWNrQnV0dG9uTmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCkgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZignVm9sdGFyJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsT25lTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZC5uYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoYCR7dGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZC5uYW1lfSAvICR7dGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZC5uYW1lfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsZXZlbE1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKCk6IE9ic2VydmFibGU8TWVudURUT1tdPiB7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMubWVudUl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCkgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkLm1lbnVMaXN0KTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZC5tZW51TGlzdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlU2lkZW5hdigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBudWxsO1xuICAgICAgICB0aGlzLm9uTWVudUNvbGxhcHNhYmxlUmVzZXQodGhpcy5tZW51SXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX25hdlNlcnZpY2UudG9nZ2xlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQobWVudTogTWVudURUTyk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fbmF2U2VydmljZS5pc09wZW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX25hdlNlcnZpY2Uub3BlbigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fbmF2U2VydmljZS5pc09wZW5lZCkge1xuICAgICAgICAgICAgICAgIG1lbnUuZXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogU2UgbyBtZW51TGlzdCBlc3TDoSBjYXJyZWdhZG8gZSBvICh0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkID09PSBudWxsKSBzaWduaWZpY2EgcXVlIHBvc3N1aSBtYWlzIG5pdmVpcywgcG9ydGFudG8gZXN0ZSDDqSBvIG5pdmVsIDEuXG4gICAgICAgICAgICAgICAgICogU2UgbyBtZW51TGlzdCBlc3TDoSBjYXJyZWdhZG8gZSBvICh0aGlzLl9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkID09PSBudWxsKSBzaWduaWZpY2EgcXVlIGVzdGUgw6kgbyDDunRpbW8gbsOtdmVsLCBwb3J0YW50byBlc3RlIMOpIG8gbml2ZWwgMi5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5VXRpbC5pc0VtcHR5KG1lbnUubWVudUxpc3QpICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsT25lTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xldmVsT25lTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBPYmplY3RVdGlsLmNsb25lKG1lbnUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUFycmF5VXRpbC5pc0VtcHR5KG1lbnUubWVudUxpc3QpICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBPYmplY3RVdGlsLmNsb25lKG1lbnUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUNvbGxhcHNhYmxlUmVzZXQobWVudUxpc3Q6IE1lbnVEVE9bXSk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVudUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtZW51TGlzdFtpXS5leHBhbmRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheVV0aWwuaXNFbXB0eShtZW51TGlzdFtpXS5tZW51TGlzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1lbnVDb2xsYXBzYWJsZVJlc2V0KG1lbnVMaXN0W2ldLm1lbnVMaXN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1lbnVDb2xsYXBzYWJsZUdvQmFjaygpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGV2ZWxUd29NZW51Q29sbGFwc2FibGVTZWxlY3RlZCA9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xldmVsT25lTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTWVudUNvbGxhcHNhYmxlUmVzZXQodGhpcy5tZW51SXRlbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNNZW51QWN0aXZlKG1lbnU6IE1lbnVEVE8pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlci51cmwuc3RhcnRzV2l0aChtZW51LnJvdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNNZW51Q29sbGFwc2FibGVBY3RpdmUobWVudTogTWVudURUTyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KG1lbnUucm91dGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleGlzdEluUm91dGU6IGJvb2xlYW4gPSB0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKG1lbnUucm91dGUpO1xuXG4gICAgICAgIGxldCBtZW51TGlzdDogTWVudURUT1tdID0gQXJyYXlVdGlsLmNsb25lKHRoaXMubWVudUl0ZW1zKTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkKSkge1xuICAgICAgICAgICAgbWVudUxpc3QgPSBBcnJheVV0aWwuY2xvbmUodGhpcy5fbGV2ZWxPbmVNZW51Q29sbGFwc2FibGVTZWxlY3RlZC5tZW51TGlzdCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICBtZW51TGlzdCA9IEFycmF5VXRpbC5jbG9uZSh0aGlzLl9sZXZlbFR3b01lbnVDb2xsYXBzYWJsZVNlbGVjdGVkLm1lbnVMaXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxldmVsWmVyb0FjdGl2ZTogTWVudURUTyA9IG1lbnVMaXN0XG4gICAgICAgICAgICAuZmlsdGVyKG1pID0+ICFBcnJheVV0aWwuaXNFbXB0eShtaS5tZW51TGlzdCkpXG4gICAgICAgICAgICAuZmluZChtaSA9PiAoKG1pLnJvdXRlID09PSBtZW51LnJvdXRlKSAmJiAobWkuaW5kZXggPT09IG1lbnUuaW5kZXgpICYmIChtaS50eXBlICYmIG1lbnUudHlwZSkpKTtcblxuICAgICAgICBpZiAoZXhpc3RJblJvdXRlICYmICFPYmplY3RVdGlsLmlzTnVsbChsZXZlbFplcm9BY3RpdmUpICYmICFBcnJheVV0aWwuaXNFbXB0eShsZXZlbFplcm9BY3RpdmUubWVudUxpc3QpKSB7XG4gICAgICAgICAgICBjb25zdCBsZXZlbE9uZUFjdGl2ZTogTWVudURUTyA9IGxldmVsWmVyb0FjdGl2ZS5tZW51TGlzdC5maW5kKG1pID0+IHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXMobWkucm91dGUpKTtcbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwobGV2ZWxPbmVBY3RpdmUpICYmICFBcnJheVV0aWwuaXNFbXB0eShsZXZlbE9uZUFjdGl2ZS5tZW51TGlzdCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZXZlbFR3b0FjdGl2ZTogTWVudURUTyA9IGxldmVsT25lQWN0aXZlLm1lbnVMaXN0LmZpbmQobWkgPT4gdGhpcy5fcm91dGVyLnVybC5pbmNsdWRlcyhtaS5yb3V0ZSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhT2JqZWN0VXRpbC5pc051bGwobGV2ZWxUd29BY3RpdmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIU9iamVjdFV0aWwuaXNOdWxsKGxldmVsT25lQWN0aXZlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25NZW51SXRlbVNlbGVjdGVkKG1lbnU6IE1lbnVEVE8gPSBudWxsLCBjbG9zZU5hdjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNsb3NlTmF2KSB7XG4gICAgICAgICAgICB0aGlzLl9sZXZlbE9uZU1lbnVDb2xsYXBzYWJsZVNlbGVjdGVkID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2xldmVsVHdvTWVudUNvbGxhcHNhYmxlU2VsZWN0ZWQgPSBudWxsO1xuXG4gICAgICAgICAgICB0aGlzLm9uTWVudUNvbGxhcHNhYmxlUmVzZXQodGhpcy5tZW51SXRlbXMpO1xuXG4gICAgICAgICAgICB0aGlzLmlzU2NyZWVuTGFyZ2Uuc3Vic2NyaWJlKGlzU2NyZWVuTGFyZ2UgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNTY3JlZW5MYXJnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9uYXZTZXJ2aWNlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2xpY2tNZW51SXRlbS5lbWl0KG1lbnUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNZW51TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKG5hbWUubGVuZ3RoIDw9IDM1KSA/IG5hbWUgOiAobmFtZS5zbGljZSgwLCAzNSkgKyAnLi4uJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5lZC50b1Byb21pc2UoKS50aGVuKGlzT3BlbmVkID0+IHtcbiAgICAgICAgICAgIGlmICghaXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVNpZGVuYXYoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5lZC50b1Byb21pc2UoKS50aGVuKGlzT3BlbmVkID0+IHtcbiAgICAgICAgICAgIGlmIChpc09wZW5lZCAmJiB0aGlzLl9tb3VzZUVudGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW91c2VFbnRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlU2lkZW5hdigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxufVxuIl19
@@ -0,0 +1,127 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnInit } from '@angular/core';
4
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
+ var nextUniqueId = 0;
6
+ var GIPISlideToggleComponent = /** @class */ (function () {
7
+ function GIPISlideToggleComponent(_changeDetectorRef) {
8
+ this._changeDetectorRef = _changeDetectorRef;
9
+ this._name = "gipi-slide-toggle-" + nextUniqueId++;
10
+ this._slideToggleValue = false;
11
+ this.id = this._name;
12
+ this.name = this._name;
13
+ this.label = '';
14
+ this.help = '';
15
+ this._required = false;
16
+ this._disabled = false;
17
+ this.onChange = function () { };
18
+ this.onTouched = function () { };
19
+ }
20
+ GIPISlideToggleComponent_1 = GIPISlideToggleComponent;
21
+ Object.defineProperty(GIPISlideToggleComponent.prototype, "slideToggleValue", {
22
+ get: function () {
23
+ return this._slideToggleValue;
24
+ },
25
+ set: function (value) {
26
+ this._slideToggleValue = value;
27
+ this.onChange(value);
28
+ this.onTouched();
29
+ },
30
+ enumerable: false,
31
+ configurable: true
32
+ });
33
+ Object.defineProperty(GIPISlideToggleComponent.prototype, "required", {
34
+ get: function () {
35
+ return this._required;
36
+ },
37
+ set: function (value) {
38
+ if (this.required !== value) {
39
+ this._required = coerceBooleanProperty(value);
40
+ this._changeDetectorRef.markForCheck();
41
+ }
42
+ },
43
+ enumerable: false,
44
+ configurable: true
45
+ });
46
+ Object.defineProperty(GIPISlideToggleComponent.prototype, "disabled", {
47
+ get: function () {
48
+ return this._disabled;
49
+ },
50
+ set: function (value) {
51
+ if (this.disabled !== value) {
52
+ this._disabled = coerceBooleanProperty(value);
53
+ this._changeDetectorRef.markForCheck();
54
+ }
55
+ },
56
+ enumerable: false,
57
+ configurable: true
58
+ });
59
+ GIPISlideToggleComponent.prototype.ngOnInit = function () { };
60
+ GIPISlideToggleComponent.prototype.writeValue = function (value) {
61
+ this.slideToggleValue = value;
62
+ this._changeDetectorRef.markForCheck();
63
+ };
64
+ GIPISlideToggleComponent.prototype.registerOnChange = function (fn) {
65
+ this.onChange = fn;
66
+ };
67
+ GIPISlideToggleComponent.prototype.registerOnTouched = function (fn) {
68
+ this.onTouched = fn;
69
+ };
70
+ GIPISlideToggleComponent.prototype.setDisabledState = function (isDisabled) {
71
+ this.disabled = isDisabled;
72
+ this._changeDetectorRef.markForCheck();
73
+ };
74
+ var GIPISlideToggleComponent_1;
75
+ GIPISlideToggleComponent.ctorParameters = function () { return [
76
+ { type: ChangeDetectorRef }
77
+ ]; };
78
+ __decorate([
79
+ Input(),
80
+ __metadata("design:type", String)
81
+ ], GIPISlideToggleComponent.prototype, "id", void 0);
82
+ __decorate([
83
+ Input(),
84
+ __metadata("design:type", String)
85
+ ], GIPISlideToggleComponent.prototype, "name", void 0);
86
+ __decorate([
87
+ Input(),
88
+ __metadata("design:type", String)
89
+ ], GIPISlideToggleComponent.prototype, "label", void 0);
90
+ __decorate([
91
+ Input(),
92
+ __metadata("design:type", String)
93
+ ], GIPISlideToggleComponent.prototype, "help", void 0);
94
+ __decorate([
95
+ Input(),
96
+ __metadata("design:type", Boolean),
97
+ __metadata("design:paramtypes", [Boolean])
98
+ ], GIPISlideToggleComponent.prototype, "required", null);
99
+ __decorate([
100
+ Input(),
101
+ __metadata("design:type", Boolean),
102
+ __metadata("design:paramtypes", [Boolean])
103
+ ], GIPISlideToggleComponent.prototype, "disabled", null);
104
+ GIPISlideToggleComponent = GIPISlideToggleComponent_1 = __decorate([
105
+ Component({
106
+ selector: 'gipi-slide-toggle',
107
+ exportAs: 'gipiSlideToggle',
108
+ template: "<input class=\"toggle toggle-light\"\n type=\"checkbox\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [(ngModel)]=\"slideToggleValue\" />\n<label class=\"toggle-btn\"\n [attr.for]=\"id\">\n</label>\n<label class=\"toggle-label\"\n *ngIf=\"label\"\n [attr.for]=\"id\">\n {{ label }}\n</label>",
109
+ providers: [
110
+ {
111
+ provide: NG_VALUE_ACCESSOR,
112
+ useExisting: forwardRef(function () { return GIPISlideToggleComponent_1; }),
113
+ multi: true,
114
+ },
115
+ ],
116
+ changeDetection: ChangeDetectionStrategy.OnPush,
117
+ host: {
118
+ 'class': 'gipi-slide-toggle',
119
+ },
120
+ styles: [":host{display:flex;align-items:center;cursor:pointer}.toggle-label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-left:1rem;cursor:pointer}.toggle{display:none}.toggle ::-moz-selection,.toggle :after::-moz-selection,.toggle :before::-moz-selection,.toggle+.toggle-btn::-moz-selection,.toggle::-moz-selection,.toggle:after::-moz-selection,.toggle:before::-moz-selection{background:0 0}.toggle ::selection,.toggle :after::selection,.toggle :before::selection,.toggle+.toggle-btn::selection,.toggle::selection,.toggle:after::selection,.toggle:before::selection{background:0 0}.toggle+.toggle-btn{display:block;width:40px;height:24px;outline:0;background:#e0e1e2;border-radius:22px;padding:4px;transition:.4s;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.toggle+.toggle-btn:after,.toggle+.toggle-btn:before{content:\"\";display:block;width:16px;height:16px;position:relative}.toggle+.toggle-btn:after{left:0;background:#8c8f93;border-radius:50%;transition:.2s}.toggle+.toggle-btn:before{display:none}.toggle:checked+.toggle-btn:after{left:50%;background:#414244}"]
121
+ }),
122
+ __metadata("design:paramtypes", [ChangeDetectorRef])
123
+ ], GIPISlideToggleComponent);
124
+ return GIPISlideToggleComponent;
125
+ }());
126
+ export { GIPISlideToggleComponent };
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvc2xpZGUtdG9nZ2xlL3NsaWRlLXRvZ2dsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQW1CckI7SUErQ0ksa0NBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBN0NqRCxVQUFLLEdBQVcsdUJBQXFCLFlBQVksRUFBSSxDQUFDO1FBRXRELHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQVVsQyxPQUFFLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV4QixTQUFJLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUUxQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5CLFNBQUksR0FBVyxFQUFFLENBQUM7UUFFbkIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVczQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBV25DLGFBQVEsR0FBYSxjQUFRLENBQUMsQ0FBQztRQUMvQixjQUFTLEdBQWEsY0FBUSxDQUFDLENBQUM7SUFFNkIsQ0FBQztpQ0EvQ3JELHdCQUF3QjtJQUtqQyxzQkFBSSxzREFBZ0I7YUFBcEI7WUFDSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNsQyxDQUFDO2FBQ0QsVUFBcUIsS0FBYztZQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLENBQUM7OztPQUxBO0lBZ0JRLHNCQUFJLDhDQUFRO2FBQVo7WUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQzthQUNELFVBQWEsS0FBYztZQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO2dCQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDMUM7UUFDTCxDQUFDOzs7T0FOQTtJQVNRLHNCQUFJLDhDQUFRO2FBQVo7WUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQzthQUNELFVBQWEsS0FBYztZQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO2dCQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDMUM7UUFDTCxDQUFDOzs7T0FOQTtJQWFELDJDQUFRLEdBQVIsY0FBbUIsQ0FBQztJQUVwQiw2Q0FBVSxHQUFWLFVBQVcsS0FBYztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsbURBQWdCLEdBQWhCLFVBQWlCLEVBQU87UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELG9EQUFpQixHQUFqQixVQUFrQixFQUFPO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxtREFBZ0IsR0FBaEIsVUFBa0IsVUFBbUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7OztnQkFwQnVDLGlCQUFpQjs7SUFqQ2hEO1FBQVIsS0FBSyxFQUFFOzt3REFBeUI7SUFFeEI7UUFBUixLQUFLLEVBQUU7OzBEQUEyQjtJQUUxQjtRQUFSLEtBQUssRUFBRTs7MkRBQW9CO0lBRW5CO1FBQVIsS0FBSyxFQUFFOzswREFBbUI7SUFHbEI7UUFBUixLQUFLLEVBQUU7Ozs0REFFUDtJQVNRO1FBQVIsS0FBSyxFQUFFOzs7NERBRVA7SUFwQ1Esd0JBQXdCO1FBakJwQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsMlZBQTRDO1lBRTVDLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQU0sT0FBQSwwQkFBd0IsRUFBeEIsQ0FBd0IsQ0FBQztvQkFDdkQsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDSjtZQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1lBQy9DLElBQUksRUFBRTtnQkFDRixPQUFPLEVBQUUsbUJBQW1CO2FBQy9COztTQUNKLENBQUM7eUNBZ0QwQyxpQkFBaUI7T0EvQ2hELHdCQUF3QixDQXFFcEM7SUFBRCwrQkFBQztDQUFBLEFBckVELElBcUVDO1NBckVZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnaXBpLXNsaWRlLXRvZ2dsZScsXG4gICAgZXhwb3J0QXM6ICdnaXBpU2xpZGVUb2dnbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbGlkZS10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NsaWRlLXRvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdJUElTbGlkZVRvZ2dsZUNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktc2xpZGUtdG9nZ2xlJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHSVBJU2xpZGVUb2dnbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyA9IGBnaXBpLXNsaWRlLXRvZ2dsZS0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICBwcml2YXRlIF9zbGlkZVRvZ2dsZVZhbHVlOiBib29sZWFuID0gZmFsc2U7XG4gICAgZ2V0IHNsaWRlVG9nZ2xlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zbGlkZVRvZ2dsZVZhbHVlO1xuICAgIH1cbiAgICBzZXQgc2xpZGVUb2dnbGVWYWx1ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zbGlkZVRvZ2dsZVZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSB0aGlzLl9uYW1lO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gdGhpcy5fbmFtZTtcblxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIGhlbHA6IHN0cmluZyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG4gICAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcbiAgICBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQgeyB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2xpZGVUb2dnbGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbn1cbiJdfQ==