@taiga-ui/kit 2.35.0 → 2.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/bundles/taiga-ui-kit-components-combo-box.umd.js +1 -1
  2. package/bundles/taiga-ui-kit-components-combo-box.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-combo-box.umd.min.js +1 -1
  4. package/bundles/taiga-ui-kit-components-combo-box.umd.min.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-input-range.umd.js +2 -2
  6. package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-components-input-range.umd.min.js +1 -1
  8. package/bundles/taiga-ui-kit-components-input-range.umd.min.js.map +1 -1
  9. package/bundles/taiga-ui-kit-components-input-slider.umd.js +2 -2
  10. package/bundles/taiga-ui-kit-components-input-slider.umd.js.map +1 -1
  11. package/bundles/taiga-ui-kit-components-input-slider.umd.min.js +1 -1
  12. package/bundles/taiga-ui-kit-components-input-slider.umd.min.js.map +1 -1
  13. package/bundles/taiga-ui-kit-components-input-tag.umd.js +2 -2
  14. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  15. package/bundles/taiga-ui-kit-components-input-tag.umd.min.js +2 -2
  16. package/bundles/taiga-ui-kit-components-input-tag.umd.min.js.map +1 -1
  17. package/bundles/taiga-ui-kit-components-line-clamp.umd.js +1 -0
  18. package/bundles/taiga-ui-kit-components-line-clamp.umd.js.map +1 -1
  19. package/bundles/taiga-ui-kit-components-line-clamp.umd.min.js +1 -1
  20. package/bundles/taiga-ui-kit-components-line-clamp.umd.min.js.map +1 -1
  21. package/bundles/taiga-ui-kit-components-slider.umd.js +129 -12
  22. package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
  23. package/bundles/taiga-ui-kit-components-slider.umd.min.js +2 -2
  24. package/bundles/taiga-ui-kit-components-slider.umd.min.js.map +1 -1
  25. package/bundles/taiga-ui-kit-components-text-area.umd.js +50 -13
  26. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  27. package/bundles/taiga-ui-kit-components-text-area.umd.min.js +1 -1
  28. package/bundles/taiga-ui-kit-components-text-area.umd.min.js.map +1 -1
  29. package/bundles/taiga-ui-kit-directives-dropdown-selection.umd.js +22 -5
  30. package/bundles/taiga-ui-kit-directives-dropdown-selection.umd.js.map +1 -1
  31. package/bundles/taiga-ui-kit-directives-dropdown-selection.umd.min.js +1 -1
  32. package/bundles/taiga-ui-kit-directives-dropdown-selection.umd.min.js.map +1 -1
  33. package/components/input-range/taiga-ui-kit-components-input-range.metadata.json +1 -1
  34. package/components/input-slider/taiga-ui-kit-components-input-slider.metadata.json +1 -1
  35. package/components/input-tag/taiga-ui-kit-components-input-tag.metadata.json +1 -1
  36. package/components/slider/index.d.ts +2 -0
  37. package/components/slider/slider-key-steps.directive.d.ts +17 -0
  38. package/components/slider/slider-options.d.ts +9 -0
  39. package/components/slider/slider.component.d.ts +6 -3
  40. package/components/slider/taiga-ui-kit-components-slider.metadata.json +1 -1
  41. package/components/text-area/index.d.ts +1 -0
  42. package/components/text-area/taiga-ui-kit-components-text-area.metadata.json +1 -1
  43. package/components/text-area/text-area.component.d.ts +2 -1
  44. package/components/text-area/text-area.directive.d.ts +5 -0
  45. package/directives/dropdown-selection/dropdown-selection.directive.d.ts +2 -2
  46. package/directives/dropdown-selection/taiga-ui-kit-directives-dropdown-selection.metadata.json +1 -1
  47. package/esm2015/components/combo-box/combo-box.component.js +2 -2
  48. package/esm2015/components/input-range/input-range.component.js +3 -3
  49. package/esm2015/components/input-slider/input-slider.component.js +3 -3
  50. package/esm2015/components/input-tag/input-tag.component.js +3 -3
  51. package/esm2015/components/line-clamp/line-clamp.directive.js +2 -1
  52. package/esm2015/components/slider/index.js +3 -1
  53. package/esm2015/components/slider/slider-key-steps.directive.js +81 -0
  54. package/esm2015/components/slider/slider-options.js +11 -0
  55. package/esm2015/components/slider/slider.component.js +19 -11
  56. package/esm2015/components/slider/slider.module.js +4 -3
  57. package/esm2015/components/text-area/index.js +2 -1
  58. package/esm2015/components/text-area/text-area.component.js +21 -13
  59. package/esm2015/components/text-area/text-area.directive.js +22 -0
  60. package/esm2015/components/text-area/text-area.module.js +7 -6
  61. package/esm2015/components/text-area/text-area.providers.js +6 -2
  62. package/esm2015/directives/dropdown-selection/dropdown-selection.directive.js +23 -6
  63. package/esm5/components/combo-box/combo-box.component.js +2 -2
  64. package/esm5/components/input-range/input-range.component.js +3 -3
  65. package/esm5/components/input-slider/input-slider.component.js +3 -3
  66. package/esm5/components/input-tag/input-tag.component.js +3 -3
  67. package/esm5/components/line-clamp/line-clamp.directive.js +2 -1
  68. package/esm5/components/slider/index.js +3 -1
  69. package/esm5/components/slider/slider-key-steps.directive.js +102 -0
  70. package/esm5/components/slider/slider-options.js +12 -0
  71. package/esm5/components/slider/slider.component.js +19 -11
  72. package/esm5/components/slider/slider.module.js +4 -3
  73. package/esm5/components/text-area/index.js +2 -1
  74. package/esm5/components/text-area/text-area.component.js +21 -13
  75. package/esm5/components/text-area/text-area.directive.js +28 -0
  76. package/esm5/components/text-area/text-area.module.js +7 -6
  77. package/esm5/components/text-area/text-area.providers.js +6 -2
  78. package/esm5/directives/dropdown-selection/dropdown-selection.directive.js +23 -6
  79. package/fesm2015/taiga-ui-kit-components-combo-box.js +1 -1
  80. package/fesm2015/taiga-ui-kit-components-combo-box.js.map +1 -1
  81. package/fesm2015/taiga-ui-kit-components-input-range.js +2 -2
  82. package/fesm2015/taiga-ui-kit-components-input-range.js.map +1 -1
  83. package/fesm2015/taiga-ui-kit-components-input-slider.js +2 -2
  84. package/fesm2015/taiga-ui-kit-components-input-slider.js.map +1 -1
  85. package/fesm2015/taiga-ui-kit-components-input-tag.js +2 -2
  86. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  87. package/fesm2015/taiga-ui-kit-components-line-clamp.js +1 -0
  88. package/fesm2015/taiga-ui-kit-components-line-clamp.js.map +1 -1
  89. package/fesm2015/taiga-ui-kit-components-slider.js +107 -15
  90. package/fesm2015/taiga-ui-kit-components-slider.js.map +1 -1
  91. package/fesm2015/taiga-ui-kit-components-text-area.js +47 -17
  92. package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
  93. package/fesm2015/taiga-ui-kit-directives-dropdown-selection.js +22 -5
  94. package/fesm2015/taiga-ui-kit-directives-dropdown-selection.js.map +1 -1
  95. package/fesm5/taiga-ui-kit-components-combo-box.js +1 -1
  96. package/fesm5/taiga-ui-kit-components-combo-box.js.map +1 -1
  97. package/fesm5/taiga-ui-kit-components-input-range.js +2 -2
  98. package/fesm5/taiga-ui-kit-components-input-range.js.map +1 -1
  99. package/fesm5/taiga-ui-kit-components-input-slider.js +2 -2
  100. package/fesm5/taiga-ui-kit-components-input-slider.js.map +1 -1
  101. package/fesm5/taiga-ui-kit-components-input-tag.js +2 -2
  102. package/fesm5/taiga-ui-kit-components-input-tag.js.map +1 -1
  103. package/fesm5/taiga-ui-kit-components-line-clamp.js +1 -0
  104. package/fesm5/taiga-ui-kit-components-line-clamp.js.map +1 -1
  105. package/fesm5/taiga-ui-kit-components-slider.js +129 -16
  106. package/fesm5/taiga-ui-kit-components-slider.js.map +1 -1
  107. package/fesm5/taiga-ui-kit-components-text-area.js +53 -17
  108. package/fesm5/taiga-ui-kit-components-text-area.js.map +1 -1
  109. package/fesm5/taiga-ui-kit-directives-dropdown-selection.js +22 -5
  110. package/fesm5/taiga-ui-kit-directives-dropdown-selection.js.map +1 -1
  111. package/package.json +4 -4
@@ -7,6 +7,14 @@ import { AbstractTuiDropdown, TUI_DOCUMENT_OR_SHADOW_ROOT, TUI_DROPDOWN_DIRECTIV
7
7
  import { getWordRange } from '@taiga-ui/kit/utils/dom';
8
8
  import { merge } from 'rxjs';
9
9
  import { map, switchMapTo, takeUntil } from 'rxjs/operators';
10
+ const EMPTY_RECT = {
11
+ bottom: 0,
12
+ height: 0,
13
+ left: 0,
14
+ right: 0,
15
+ top: 0,
16
+ width: 0,
17
+ };
10
18
  // @dynamic
11
19
  let TuiDropdownSelectionDirective = TuiDropdownSelectionDirective_1 = class TuiDropdownSelectionDirective extends AbstractTuiDropdown {
12
20
  constructor(documentRef, componentFactoryResolver, injector, portalService, elementRef, activeZone, shadowRootRef, customElementRef, destroy$, refresh$, changeDetectorRef, ngZone, renderer, viewContainerRef) {
@@ -19,6 +27,10 @@ let TuiDropdownSelectionDirective = TuiDropdownSelectionDirective_1 = class TuiD
19
27
  this.visibilityHandler = ALWAYS_TRUE_HANDLER;
20
28
  this.position = 'selection';
21
29
  this.documentRef = shadowRootRef || documentRef;
30
+ // SSR protection
31
+ if (!this.documentRef.createRange) {
32
+ return;
33
+ }
22
34
  this.range = this.documentRef.createRange();
23
35
  const { nativeElement } = this.elementRef;
24
36
  merge(typedFromEvent(this.documentRef, 'mouseup'), typedFromEvent(nativeElement, 'mousedown').pipe(switchMapTo(typedFromEvent(nativeElement, 'mousemove').pipe(takeUntil(typedFromEvent(this.documentRef, 'mouseup'))))), typedFromEvent(nativeElement, 'keyup'))
@@ -36,15 +48,17 @@ let TuiDropdownSelectionDirective = TuiDropdownSelectionDirective_1 = class TuiD
36
48
  : this.range;
37
49
  }), takeUntil(destroy$))
38
50
  .subscribe(range => {
39
- const contained = nativeElement.contains(range.commonAncestorContainer);
51
+ const contained = !!range && nativeElement.contains(range.commonAncestorContainer);
40
52
  this.range = contained ? range : this.range;
41
53
  const valid = contained &&
42
- (!this.visibilityHandler || this.visibilityHandler(this.range));
43
- this.toggleDropdownBox(valid || this.inDropdown(range));
54
+ (!this.visibilityHandler ||
55
+ !this.range ||
56
+ this.visibilityHandler(this.range));
57
+ this.toggleDropdownBox(!!range && (valid || this.inDropdown(range)));
44
58
  });
45
59
  }
46
60
  set tuiDropdownSelection(handler) {
47
- if (!handler) {
61
+ if (!handler || !this.range) {
48
62
  return;
49
63
  }
50
64
  const inHostAndValid = this.elementRef.nativeElement.contains(this.range.commonAncestorContainer) &&
@@ -79,6 +93,9 @@ let TuiDropdownSelectionDirective = TuiDropdownSelectionDirective_1 = class TuiD
79
93
  * get ClientRect of current Range according to provided position
80
94
  */
81
95
  get rangeRect() {
96
+ if (!this.range) {
97
+ return EMPTY_RECT;
98
+ }
82
99
  switch (this.position) {
83
100
  case 'tag': {
84
101
  const { commonAncestorContainer } = this.range;
@@ -115,7 +132,7 @@ let TuiDropdownSelectionDirective = TuiDropdownSelectionDirective_1 = class TuiD
115
132
  this.dropdownBoxRef.location.nativeElement.contains(node));
116
133
  }
117
134
  /**
118
- * Check if given range is at leaset partially inside dropdown
135
+ * Check if given range is at least partially inside dropdown
119
136
  */
120
137
  inDropdown(range) {
121
138
  const { startContainer, endContainer } = range;
@@ -217,4 +234,4 @@ TuiDropdownSelectionDirective = TuiDropdownSelectionDirective_1 = __decorate([
217
234
  __param(13, Inject(ViewContainerRef))
218
235
  ], TuiDropdownSelectionDirective);
219
236
  export { TuiDropdownSelectionDirective };
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvZGlyZWN0aXZlcy9kcm9wZG93bi1zZWxlY3Rpb24vIiwic291cmNlcyI6WyJkcm9wZG93bi1zZWxlY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsRUFBRSxFQUNGLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDJCQUEyQixFQUMzQixzQkFBc0IsRUFDdEIsZUFBZSxHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNELFdBQVc7QUFZWCxJQUFhLDZCQUE2QixxQ0FBMUMsTUFBYSw2QkFDVCxTQUFRLG1CQUFtQjtJQXlCM0IsWUFDc0IsV0FBcUIsRUFFdkMsd0JBQWtE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SUFDakIsWUFBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtHQWhEcEIsNkJBQTZCLENBb1B6QztTQXBQWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQUxXQVlTX1RSVUVfSEFORExFUixcbiAgICBDSEFSX05PX0JSRUFLX1NQQUNFLFxuICAgIENIQVJfWkVST19XSURUSF9TUEFDRSxcbiAgICBnZXROYXRpdmVGb2N1c2VkLFxuICAgIHB4LFxuICAgIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgVHVpUGFyZW50c1Njcm9sbFNlcnZpY2UsXG4gICAgVHVpUG9ydGFsU2VydmljZSxcbiAgICB0eXBlZEZyb21FdmVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpRHJvcGRvd24sXG4gICAgVFVJX0RPQ1VNRU5UX09SX1NIQURPV19ST09ULFxuICAgIFRVSV9EUk9QRE9XTl9ESVJFQ1RJVkUsXG4gICAgVFVJX0VMRU1FTlRfUkVGLFxuICAgIFR1aURyb3Bkb3duLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge2dldFdvcmRSYW5nZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscy9kb20nO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc3dpdGNoTWFwVG8sIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdHVpRHJvcGRvd25TZWxlY3Rpb25dOm5vdChuZy1jb250YWluZXIpJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0RST1BET1dOX0RJUkVDVElWRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aURyb3Bkb3duU2VsZWN0aW9uRGlyZWN0aXZlKSxcbiAgICAgICAgfSxcbiAgICAgICAgVHVpUGFyZW50c1Njcm9sbFNlcnZpY2UsXG4gICAgICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duU2VsZWN0aW9uRGlyZWN0aXZlXG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aURyb3Bkb3duXG4gICAgaW1wbGVtZW50cyBUdWlEcm9wZG93biwgT25EZXN0cm95XG57XG4gICAgcHJpdmF0ZSB2aXNpYmlsaXR5SGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8UmFuZ2U+ID0gQUxXQVlTX1RSVUVfSEFORExFUjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50UmVmOiBEb2N1bWVudDtcbiAgICBwcml2YXRlIGdob3N0PzogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSByYW5nZTogUmFuZ2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCB0dWlEcm9wZG93blNlbGVjdGlvbihoYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxSYW5nZT4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbkhvc3RBbmRWYWxpZCA9XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0aGlzLnJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKSAmJlxuICAgICAgICAgICAgaGFuZGxlcih0aGlzLnJhbmdlKTtcblxuICAgICAgICB0aGlzLnZpc2liaWxpdHlIYW5kbGVyID0gaGFuZGxlcjtcbiAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bkJveChpbkhvc3RBbmRWYWxpZCk7XG4gICAgfVxuXG4gICAgQElucHV0KCd0dWlEcm9wZG93blNlbGVjdGlvblBvc2l0aW9uJylcbiAgICBwb3NpdGlvbjogJ3NlbGVjdGlvbicgfCAnd29yZCcgfCAndGFnJyA9ICdzZWxlY3Rpb24nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50UmVmOiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpXG4gICAgICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBASW5qZWN0KEluamVjdG9yKSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoVHVpUG9ydGFsU2VydmljZSkgcG9ydGFsU2VydmljZTogVHVpUG9ydGFsU2VydmljZSxcbiAgICAgICAgQEhvc3QoKSBASW5qZWN0KEVsZW1lbnRSZWYpIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUpXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIGFjdGl2ZVpvbmU6IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9ET0NVTUVOVF9PUl9TSEFET1dfUk9PVClcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgc2hhZG93Um9vdFJlZjogRG9jdW1lbnQgfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9FTEVNRU5UX1JFRilcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgY3VzdG9tRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKVxuICAgICAgICBkZXN0cm95JDogVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoVHVpUGFyZW50c1Njcm9sbFNlcnZpY2UpIHJlYWRvbmx5IHJlZnJlc2gkOiBUdWlQYXJlbnRzU2Nyb2xsU2VydmljZSxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoTmdab25lKSBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFJlbmRlcmVyMikgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBASW5qZWN0KFZpZXdDb250YWluZXJSZWYpIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgICBpbmplY3RvcixcbiAgICAgICAgICAgIHBvcnRhbFNlcnZpY2UsXG4gICAgICAgICAgICBjdXN0b21FbGVtZW50UmVmIHx8IGVsZW1lbnRSZWYsXG4gICAgICAgICAgICBhY3RpdmVab25lLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRvY3VtZW50UmVmID0gc2hhZG93Um9vdFJlZiB8fCBkb2N1bWVudFJlZjtcbiAgICAgICAgdGhpcy5yYW5nZSA9IHRoaXMuZG9jdW1lbnRSZWYuY3JlYXRlUmFuZ2UoKTtcblxuICAgICAgICBjb25zdCB7bmF0aXZlRWxlbWVudH0gPSB0aGlzLmVsZW1lbnRSZWY7XG5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0eXBlZEZyb21FdmVudCh0aGlzLmRvY3VtZW50UmVmLCAnbW91c2V1cCcpLFxuICAgICAgICAgICAgdHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwVG8oXG4gICAgICAgICAgICAgICAgICAgIHR5cGVkRnJvbUV2ZW50KG5hdGl2ZUVsZW1lbnQsICdtb3VzZW1vdmUnKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHR5cGVkRnJvbUV2ZW50KHRoaXMuZG9jdW1lbnRSZWYsICdtb3VzZXVwJykpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgJ2tleXVwJyksXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGdldE5hdGl2ZUZvY3VzZWQodGhpcy5kb2N1bWVudFJlZik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZG9jdW1lbnRSZWYuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogaWZyYW1lIHdhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2ZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlRWxlbWVudC5jb250YWlucyhhY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmVyeVZlcnlTYWRJbnB1dEZpeChhY3RpdmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnJhbmdlO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJhbmdlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZWQgPSBuYXRpdmVFbGVtZW50LmNvbnRhaW5zKHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UgPSBjb250YWluZWQgPyByYW5nZSA6IHRoaXMucmFuZ2U7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZCA9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAoIXRoaXMudmlzaWJpbGl0eUhhbmRsZXIgfHwgdGhpcy52aXNpYmlsaXR5SGFuZGxlcih0aGlzLnJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duQm94KHZhbGlkIHx8IHRoaXMuaW5Ecm9wZG93bihyYW5nZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGNsaWVudFJlY3QoKTogQ2xpZW50UmVjdCB7XG4gICAgICAgIGNvbnN0IHtkZWZhdWx0Vmlld30gPSB0aGlzLmRvY3VtZW50UmVmO1xuICAgICAgICBjb25zdCB7cmFuZ2VSZWN0fSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGZyYW1lRWxlbWVudCA9IGRlZmF1bHRWaWV3ID8gZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50IDogbnVsbDtcblxuICAgICAgICBpZiAoIWZyYW1lRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHJhbmdlUmVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50UmVjdCA9IGZyYW1lRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiByYW5nZVJlY3QudG9wICsgZG9jdW1lbnRSZWN0LnRvcCxcbiAgICAgICAgICAgIGxlZnQ6IHJhbmdlUmVjdC5sZWZ0ICsgZG9jdW1lbnRSZWN0LmxlZnQsXG4gICAgICAgICAgICByaWdodDogcmFuZ2VSZWN0LmxlZnQgKyBkb2N1bWVudFJlY3QubGVmdCArIHJhbmdlUmVjdC53aWR0aCxcbiAgICAgICAgICAgIGJvdHRvbTogcmFuZ2VSZWN0LnRvcCArIGRvY3VtZW50UmVjdC50b3AgKyByYW5nZVJlY3QuaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHJhbmdlUmVjdC53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogcmFuZ2VSZWN0LmhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duQm94KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2hvc3QpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0aGlzLmdob3N0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCBDbGllbnRSZWN0IG9mIGN1cnJlbnQgUmFuZ2UgYWNjb3JkaW5nIHRvIHByb3ZpZGVkIHBvc2l0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXQgcmFuZ2VSZWN0KCk6IENsaWVudFJlY3Qge1xuICAgICAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RhZyc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7Y29tbW9uQW5jZXN0b3JDb250YWluZXJ9ID0gdGhpcy5yYW5nZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgY29tbW9uQW5jZXN0b3JDb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLnBhcmVudE5vZGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGVsZW1lbnQgYXMgRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICd3b3JkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0V29yZFJhbmdlKHRoaXMucmFuZ2UpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSBkcm9wZG93biB2aXNpYmlsaXR5IChoYXMgdG8gYmUgaW4gbmdab25lLnJ1biBiZWNhdXNlIGl0IGNvdWxkIGJlIGluaXRpYXRlZCBpbnNpZGUgaWZyYW1lIGluIEVkaXRvcilcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvZ2dsZURyb3Bkb3duQm94KHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd25Cb3goKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duQm94KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIE5vZGUgaXMgaW5zaWRlIGRyb3Bkb3duXG4gICAgICovXG4gICAgcHJpdmF0ZSBib3hDb250YWlucyhub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMuZHJvcGRvd25Cb3hSZWYgJiZcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Cb3hSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhub2RlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGdpdmVuIHJhbmdlIGlzIGF0IGxlYXNldCBwYXJ0aWFsbHkgaW5zaWRlIGRyb3Bkb3duXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbkRyb3Bkb3duKHJhbmdlOiBSYW5nZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7c3RhcnRDb250YWluZXIsIGVuZENvbnRhaW5lcn0gPSByYW5nZTtcbiAgICAgICAgY29uc3QgaW5Ecm9wZG93biA9IHRoaXMuYm94Q29udGFpbnMocmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIpO1xuICAgICAgICBjb25zdCBob3N0VG9Ecm9wZG93biA9XG4gICAgICAgICAgICB0aGlzLmJveENvbnRhaW5zKGVuZENvbnRhaW5lcikgJiZcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHN0YXJ0Q29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25Ub0hvc3QgPVxuICAgICAgICAgICAgdGhpcy5ib3hDb250YWlucyhzdGFydENvbnRhaW5lcikgJiZcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGVuZENvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuIGluRHJvcGRvd24gfHwgaG9zdFRvRHJvcGRvd24gfHwgZHJvcGRvd25Ub0hvc3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gaW52aXNpYmxlIERJViBhbmQgY3JlYXRlIFJhbmdlIHNpbWlsYXIgdG8gc2VsZWN0ZWQgcmFuZ2UgaW5zaWRlIGlucHV0L3RleHRhcmVhXG4gICAgICovXG4gICAgcHJpdmF0ZSB2ZXJ5VmVyeVNhZElucHV0Rml4KGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogUmFuZ2Uge1xuICAgICAgICBjb25zdCB7Z2hvc3QgPSB0aGlzLmluaXRHaG9zdChlbGVtZW50KX0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7dG9wLCBsZWZ0LCB3aWR0aCwgaGVpZ2h0fSA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHtzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kfSA9IGVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5kb2N1bWVudFJlZi5jcmVhdGVSYW5nZSgpO1xuICAgICAgICBjb25zdCBob3N0UmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGdob3N0LnN0eWxlLnRvcCA9IHB4KHRvcCAtIGhvc3RSZWN0LnRvcCk7XG4gICAgICAgIGdob3N0LnN0eWxlLmxlZnQgPSBweChsZWZ0IC0gaG9zdFJlY3QubGVmdCk7XG4gICAgICAgIGdob3N0LnN0eWxlLndpZHRoID0gcHgod2lkdGgpO1xuICAgICAgICBnaG9zdC5zdHlsZS5oZWlnaHQgPSBweChoZWlnaHQpO1xuICAgICAgICBnaG9zdC50ZXh0Q29udGVudCA9IENIQVJfWkVST19XSURUSF9TUEFDRSArIGVsZW1lbnQudmFsdWUgKyBDSEFSX05PX0JSRUFLX1NQQUNFO1xuXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KGdob3N0LmZpcnN0Q2hpbGQhLCBzZWxlY3Rpb25TdGFydCB8fCAwKTtcbiAgICAgICAgcmFuZ2Uuc2V0RW5kKGdob3N0LmZpcnN0Q2hpbGQhLCBzZWxlY3Rpb25FbmQgfHwgMCk7XG5cbiAgICAgICAgcmV0dXJuIHJhbmdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhbiBpbnZpc2libGUgRElWIHN0eWxlZCBleGFjdGx5IGxpa2UgaW5wdXQvdGV4dGFyZWEgZWxlbWVudCBpbnNpZGUgZGlyZWN0aXZlXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0R2hvc3QoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGdob3N0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY29uc3Qge25hdGl2ZUVsZW1lbnR9ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHtmb250LCBsZXR0ZXJTcGFjaW5nLCB0ZXh0VHJhbnNmb3JtLCBwYWRkaW5nfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICAgICAgZ2hvc3Quc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICBnaG9zdC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICBnaG9zdC5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgICAgICBnaG9zdC5zdHlsZS53aGl0ZVNwYWNlID0gJ3ByZS13cmFwJztcbiAgICAgICAgZ2hvc3Quc3R5bGUuZm9udCA9IGZvbnQ7XG4gICAgICAgIGdob3N0LnN0eWxlLmxldHRlclNwYWNpbmcgPSBsZXR0ZXJTcGFjaW5nO1xuICAgICAgICBnaG9zdC5zdHlsZS50ZXh0VHJhbnNmb3JtID0gdGV4dFRyYW5zZm9ybTtcbiAgICAgICAgZ2hvc3Quc3R5bGUucGFkZGluZyA9IHBhZGRpbmc7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChuYXRpdmVFbGVtZW50LCBnaG9zdCk7XG4gICAgICAgIHRoaXMuZ2hvc3QgPSBnaG9zdDtcblxuICAgICAgICByZXR1cm4gZ2hvc3Q7XG4gICAgfVxufVxuIl19
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvZGlyZWN0aXZlcy9kcm9wZG93bi1zZWxlY3Rpb24vIiwic291cmNlcyI6WyJkcm9wZG93bi1zZWxlY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsRUFBRSxFQUNGLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDJCQUEyQixFQUMzQixzQkFBc0IsRUFDdEIsZUFBZSxHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE1BQU0sVUFBVSxHQUFlO0lBQzNCLE1BQU0sRUFBRSxDQUFDO0lBQ1QsTUFBTSxFQUFFLENBQUM7SUFDVCxJQUFJLEVBQUUsQ0FBQztJQUNQLEtB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QUMsVUFBVSxDQUFDLENBQUE7SUFDMUIsV0FBQSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUM5QixXQUFBLFFBQVEsRUFBRSxDQUFBO0lBRVYsV0FBQSxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtJQUNuQyxXQUFBLFFBQVEsRUFBRSxDQUFBO0lBRVYsV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDdkIsV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUVWLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFFekIsV0FBQSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtJQUMvQixZQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3pCLFlBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2QsWUFBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDakIsWUFBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtHQWhEcEIsNkJBQTZCLENBaVF6QztTQWpRWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQUxXQVlTX1RSVUVfSEFORExFUixcbiAgICBDSEFSX05PX0JSRUFLX1NQQUNFLFxuICAgIENIQVJfWkVST19XSURUSF9TUEFDRSxcbiAgICBnZXROYXRpdmVGb2N1c2VkLFxuICAgIHB4LFxuICAgIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgVHVpUGFyZW50c1Njcm9sbFNlcnZpY2UsXG4gICAgVHVpUG9ydGFsU2VydmljZSxcbiAgICB0eXBlZEZyb21FdmVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpRHJvcGRvd24sXG4gICAgVFVJX0RPQ1VNRU5UX09SX1NIQURPV19ST09ULFxuICAgIFRVSV9EUk9QRE9XTl9ESVJFQ1RJVkUsXG4gICAgVFVJX0VMRU1FTlRfUkVGLFxuICAgIFR1aURyb3Bkb3duLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge2dldFdvcmRSYW5nZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscy9kb20nO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc3dpdGNoTWFwVG8sIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBFTVBUWV9SRUNUOiBDbGllbnRSZWN0ID0ge1xuICAgIGJvdHRvbTogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgbGVmdDogMCxcbiAgICByaWdodDogMCxcbiAgICB0b3A6IDAsXG4gICAgd2lkdGg6IDAsXG59O1xuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdHVpRHJvcGRvd25TZWxlY3Rpb25dOm5vdChuZy1jb250YWluZXIpJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0RST1BET1dOX0RJUkVDVElWRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aURyb3Bkb3duU2VsZWN0aW9uRGlyZWN0aXZlKSxcbiAgICAgICAgfSxcbiAgICAgICAgVHVpUGFyZW50c1Njcm9sbFNlcnZpY2UsXG4gICAgICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duU2VsZWN0aW9uRGlyZWN0aXZlXG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aURyb3Bkb3duXG4gICAgaW1wbGVtZW50cyBUdWlEcm9wZG93biwgT25EZXN0cm95XG57XG4gICAgcHJpdmF0ZSB2aXNpYmlsaXR5SGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8UmFuZ2U+ID0gQUxXQVlTX1RSVUVfSEFORExFUjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50UmVmOiBEb2N1bWVudDtcbiAgICBwcml2YXRlIGdob3N0PzogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSByYW5nZT86IFJhbmdlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgdHVpRHJvcGRvd25TZWxlY3Rpb24oaGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8UmFuZ2U+IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghaGFuZGxlciB8fCAhdGhpcy5yYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5Ib3N0QW5kVmFsaWQgPVxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5yYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcikgJiZcbiAgICAgICAgICAgIGhhbmRsZXIodGhpcy5yYW5nZSk7XG5cbiAgICAgICAgdGhpcy52aXNpYmlsaXR5SGFuZGxlciA9IGhhbmRsZXI7XG4gICAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd25Cb3goaW5Ib3N0QW5kVmFsaWQpO1xuICAgIH1cblxuICAgIEBJbnB1dCgndHVpRHJvcGRvd25TZWxlY3Rpb25Qb3NpdGlvbicpXG4gICAgcG9zaXRpb246ICdzZWxlY3Rpb24nIHwgJ3dvcmQnIHwgJ3RhZycgPSAnc2VsZWN0aW9uJztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudFJlZjogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKVxuICAgICAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgQEluamVjdChJbmplY3RvcikgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFR1aVBvcnRhbFNlcnZpY2UpIHBvcnRhbFNlcnZpY2U6IFR1aVBvcnRhbFNlcnZpY2UsXG4gICAgICAgIEBIb3N0KCkgQEluamVjdChFbGVtZW50UmVmKSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgQEluamVjdChUdWlBY3RpdmVab25lRGlyZWN0aXZlKVxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBhY3RpdmVab25lOiBUdWlBY3RpdmVab25lRGlyZWN0aXZlIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChUVUlfRE9DVU1FTlRfT1JfU0hBRE9XX1JPT1QpXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHNoYWRvd1Jvb3RSZWY6IERvY3VtZW50IHwgbnVsbCxcbiAgICAgICAgQEluamVjdChUVUlfRUxFTUVOVF9SRUYpXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIGN1c3RvbUVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbCxcbiAgICAgICAgQEluamVjdChUdWlEZXN0cm95U2VydmljZSlcbiAgICAgICAgZGVzdHJveSQ6IFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFR1aVBhcmVudHNTY3JvbGxTZXJ2aWNlKSByZWFkb25seSByZWZyZXNoJDogVHVpUGFyZW50c1Njcm9sbFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KE5nWm9uZSkgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChSZW5kZXJlcjIpIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKSBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgICAgICBwb3J0YWxTZXJ2aWNlLFxuICAgICAgICAgICAgY3VzdG9tRWxlbWVudFJlZiB8fCBlbGVtZW50UmVmLFxuICAgICAgICAgICAgYWN0aXZlWm9uZSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFJlZiA9IHNoYWRvd1Jvb3RSZWYgfHwgZG9jdW1lbnRSZWY7XG5cbiAgICAgICAgLy8gU1NSIHByb3RlY3Rpb25cbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50UmVmLmNyZWF0ZVJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJhbmdlID0gdGhpcy5kb2N1bWVudFJlZi5jcmVhdGVSYW5nZSgpO1xuXG4gICAgICAgIGNvbnN0IHtuYXRpdmVFbGVtZW50fSA9IHRoaXMuZWxlbWVudFJlZjtcblxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIHR5cGVkRnJvbUV2ZW50KHRoaXMuZG9jdW1lbnRSZWYsICdtb3VzZXVwJyksXG4gICAgICAgICAgICB0eXBlZEZyb21FdmVudChuYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJykucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXBUbyhcbiAgICAgICAgICAgICAgICAgICAgdHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgJ21vdXNlbW92ZScpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodHlwZWRGcm9tRXZlbnQodGhpcy5kb2N1bWVudFJlZiwgJ21vdXNldXAnKSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0eXBlZEZyb21FdmVudChuYXRpdmVFbGVtZW50LCAna2V5dXAnKSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gZ2V0TmF0aXZlRm9jdXNlZCh0aGlzLmRvY3VtZW50UmVmKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5kb2N1bWVudFJlZi5nZXRTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBpZnJhbWUgd2FybmluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZlIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50LmNvbnRhaW5zKGFjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52ZXJ5VmVyeVNhZElucHV0Rml4KGFjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMucmFuZ2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lZCA9XG4gICAgICAgICAgICAgICAgICAgICEhcmFuZ2UgJiYgbmF0aXZlRWxlbWVudC5jb250YWlucyhyYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJhbmdlID0gY29udGFpbmVkID8gcmFuZ2UgOiB0aGlzLnJhbmdlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWQgPVxuICAgICAgICAgICAgICAgICAgICBjb250YWluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKCF0aGlzLnZpc2liaWxpdHlIYW5kbGVyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5yYW5nZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5SGFuZGxlcih0aGlzLnJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duQm94KCEhcmFuZ2UgJiYgKHZhbGlkIHx8IHRoaXMuaW5Ecm9wZG93bihyYW5nZSkpKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBjbGllbnRSZWN0KCk6IENsaWVudFJlY3Qge1xuICAgICAgICBjb25zdCB7ZGVmYXVsdFZpZXd9ID0gdGhpcy5kb2N1bWVudFJlZjtcbiAgICAgICAgY29uc3Qge3JhbmdlUmVjdH0gPSB0aGlzO1xuICAgICAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBkZWZhdWx0VmlldyA/IGRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCA6IG51bGw7XG5cbiAgICAgICAgaWYgKCFmcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiByYW5nZVJlY3Q7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkb2N1bWVudFJlY3QgPSBmcmFtZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcDogcmFuZ2VSZWN0LnRvcCArIGRvY3VtZW50UmVjdC50b3AsXG4gICAgICAgICAgICBsZWZ0OiByYW5nZVJlY3QubGVmdCArIGRvY3VtZW50UmVjdC5sZWZ0LFxuICAgICAgICAgICAgcmlnaHQ6IHJhbmdlUmVjdC5sZWZ0ICsgZG9jdW1lbnRSZWN0LmxlZnQgKyByYW5nZVJlY3Qud2lkdGgsXG4gICAgICAgICAgICBib3R0b206IHJhbmdlUmVjdC50b3AgKyBkb2N1bWVudFJlY3QudG9wICsgcmFuZ2VSZWN0LmhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiByYW5nZVJlY3Qud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHJhbmdlUmVjdC5oZWlnaHQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bkJveCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmdob3N0KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKFxuICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgdGhpcy5naG9zdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgQ2xpZW50UmVjdCBvZiBjdXJyZW50IFJhbmdlIGFjY29yZGluZyB0byBwcm92aWRlZCBwb3NpdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0IHJhbmdlUmVjdCgpOiBDbGllbnRSZWN0IHtcbiAgICAgICAgaWYgKCF0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfUkVDVDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5wb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSAndGFnJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHtjb21tb25BbmNlc3RvckNvbnRhaW5lcn0gPSB0aGlzLnJhbmdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICBjb21tb25BbmNlc3RvckNvbnRhaW5lci5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gY29tbW9uQW5jZXN0b3JDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY29tbW9uQW5jZXN0b3JDb250YWluZXIucGFyZW50Tm9kZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoZWxlbWVudCBhcyBFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3dvcmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRXb3JkUmFuZ2UodGhpcy5yYW5nZSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGRyb3Bkb3duIHZpc2liaWxpdHkgKGhhcyB0byBiZSBpbiBuZ1pvbmUucnVuIGJlY2F1c2UgaXQgY291bGQgYmUgaW5pdGlhdGVkIGluc2lkZSBpZnJhbWUgaW4gRWRpdG9yKVxuICAgICAqL1xuICAgIHByaXZhdGUgdG9nZ2xlRHJvcGRvd25Cb3godmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bkJveCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd25Cb3goKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgTm9kZSBpcyBpbnNpZGUgZHJvcGRvd25cbiAgICAgKi9cbiAgICBwcml2YXRlIGJveENvbnRhaW5zKG5vZGU6IE5vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5kcm9wZG93bkJveFJlZiAmJlxuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkJveFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKG5vZGUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgZ2l2ZW4gcmFuZ2UgaXMgYXQgbGVhc3QgcGFydGlhbGx5IGluc2lkZSBkcm9wZG93blxuICAgICAqL1xuICAgIHByaXZhdGUgaW5Ecm9wZG93bihyYW5nZTogUmFuZ2UpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qge3N0YXJ0Q29udGFpbmVyLCBlbmRDb250YWluZXJ9ID0gcmFuZ2U7XG4gICAgICAgIGNvbnN0IGluRHJvcGRvd24gPSB0aGlzLmJveENvbnRhaW5zKHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgaG9zdFRvRHJvcGRvd24gPVxuICAgICAgICAgICAgdGhpcy5ib3hDb250YWlucyhlbmRDb250YWluZXIpICYmXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhzdGFydENvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duVG9Ib3N0ID1cbiAgICAgICAgICAgIHRoaXMuYm94Q29udGFpbnMoc3RhcnRDb250YWluZXIpICYmXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhlbmRDb250YWluZXIpO1xuXG4gICAgICAgIHJldHVybiBpbkRyb3Bkb3duIHx8IGhvc3RUb0Ryb3Bkb3duIHx8IGRyb3Bkb3duVG9Ib3N0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIGludmlzaWJsZSBESVYgYW5kIGNyZWF0ZSBSYW5nZSBzaW1pbGFyIHRvIHNlbGVjdGVkIHJhbmdlIGluc2lkZSBpbnB1dC90ZXh0YXJlYVxuICAgICAqL1xuICAgIHByaXZhdGUgdmVyeVZlcnlTYWRJbnB1dEZpeChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IFJhbmdlIHtcbiAgICAgICAgY29uc3Qge2dob3N0ID0gdGhpcy5pbml0R2hvc3QoZWxlbWVudCl9ID0gdGhpcztcbiAgICAgICAgY29uc3Qge3RvcCwgbGVmdCwgd2lkdGgsIGhlaWdodH0gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB7c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZH0gPSBlbGVtZW50O1xuICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMuZG9jdW1lbnRSZWYuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBnaG9zdC5zdHlsZS50b3AgPSBweCh0b3AgLSBob3N0UmVjdC50b3ApO1xuICAgICAgICBnaG9zdC5zdHlsZS5sZWZ0ID0gcHgobGVmdCAtIGhvc3RSZWN0LmxlZnQpO1xuICAgICAgICBnaG9zdC5zdHlsZS53aWR0aCA9IHB4KHdpZHRoKTtcbiAgICAgICAgZ2hvc3Quc3R5bGUuaGVpZ2h0ID0gcHgoaGVpZ2h0KTtcbiAgICAgICAgZ2hvc3QudGV4dENvbnRlbnQgPSBDSEFSX1pFUk9fV0lEVEhfU1BBQ0UgKyBlbGVtZW50LnZhbHVlICsgQ0hBUl9OT19CUkVBS19TUEFDRTtcblxuICAgICAgICByYW5nZS5zZXRTdGFydChnaG9zdC5maXJzdENoaWxkISwgc2VsZWN0aW9uU3RhcnQgfHwgMCk7XG4gICAgICAgIHJhbmdlLnNldEVuZChnaG9zdC5maXJzdENoaWxkISwgc2VsZWN0aW9uRW5kIHx8IDApO1xuXG4gICAgICAgIHJldHVybiByYW5nZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYW4gaW52aXNpYmxlIERJViBzdHlsZWQgZXhhY3RseSBsaWtlIGlucHV0L3RleHRhcmVhIGVsZW1lbnQgaW5zaWRlIGRpcmVjdGl2ZVxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdEdob3N0KGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBnaG9zdCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGNvbnN0IHtuYXRpdmVFbGVtZW50fSA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50O1xuICAgICAgICBjb25zdCB7Zm9udCwgbGV0dGVyU3BhY2luZywgdGV4dFRyYW5zZm9ybSwgcGFkZGluZ30gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgICAgIGdob3N0LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgZ2hvc3Quc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgZ2hvc3Quc3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICAgICAgZ2hvc3Quc3R5bGUud2hpdGVTcGFjZSA9ICdwcmUtd3JhcCc7XG4gICAgICAgIGdob3N0LnN0eWxlLmZvbnQgPSBmb250O1xuICAgICAgICBnaG9zdC5zdHlsZS5sZXR0ZXJTcGFjaW5nID0gbGV0dGVyU3BhY2luZztcbiAgICAgICAgZ2hvc3Quc3R5bGUudGV4dFRyYW5zZm9ybSA9IHRleHRUcmFuc2Zvcm07XG4gICAgICAgIGdob3N0LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobmF0aXZlRWxlbWVudCwgZ2hvc3QpO1xuICAgICAgICB0aGlzLmdob3N0ID0gZ2hvc3Q7XG5cbiAgICAgICAgcmV0dXJuIGdob3N0O1xuICAgIH1cbn1cbiJdfQ==
@@ -17,7 +17,7 @@ var TuiComboBoxComponent = /** @class */ (function (_super) {
17
17
  _this.identityMatcher = _this.itemsHandlers.identityMatcher;
18
18
  _this.valueContent = '';
19
19
  _this.strict = true;
20
- _this.search = '';
20
+ _this.search = null;
21
21
  _this.searchChange = new EventEmitter();
22
22
  _this.datalist = '';
23
23
  _this.open = false;
@@ -218,4 +218,4 @@ var TuiComboBoxComponent = /** @class */ (function (_super) {
218
218
  return TuiComboBoxComponent;
219
219
  }(AbstractTuiNullableControl));
220
220
  export { TuiComboBoxComponent };
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8tYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9jb21iby1ib3gvIiwic291cmNlcyI6WyJjb21iby1ib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZCxPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHNCQUFzQixFQUV0QixvQkFBb0IsRUFFcEIsMEJBQTBCLEVBQzFCLDhCQUE4QixHQUVqQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxjQUFjLEVBQWUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQW1CLE1BQU0sc0JBQXNCLENBQUM7QUFHMUUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFTOUQ7SUFDWSx3Q0FBNkI7SUE2Q3JDLDhCQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRTlDLFNBQXVCLEVBRXZCLGFBQWtDO1FBVHZELFlBV0ksa0JBQU0sT0FBTyxFQUFFLGlCQUFpQixDQUFDLFNBQ3BDO1FBTG9CLGVBQVMsR0FBVCxTQUFTLENBQWM7UUFFdkIsbUJBQWEsR0FBYixhQUFhLENBQXFCO1FBeEN2RCxlQUFTLEdBQXFDLEtBQUksQ0FBQyxhQUFhLENBQUMs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a01oQztJQUFELDJCQUFDO0NBQUEsQUFsTUQsQ0FDWSwwQkFBMEIsR0FpTXJDO1NBbE1ZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBpc05hdGl2ZUZvY3VzZWQsXG4gICAgaXNQcmVzZW50LFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX1NUUklDVF9NQVRDSEVSLFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlQdXJlLFxuICAgIFR1aVN0cmluZ01hdGNoZXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfREFUQV9MSVNUX0FDQ0VTU09SLFxuICAgIFR1aURhdGFMaXN0QWNjZXNzb3IsXG4gICAgVHVpRGF0YUxpc3REaXJlY3RpdmUsXG4gICAgVHVpRGF0YUxpc3RIb3N0LFxuICAgIFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50LFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlWYWx1ZUNvbnRlbnRDb250ZXh0LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1RVSV9BUlJPV19NT0RFLCBUdWlBcnJvd01vZGV9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9hcnJvdyc7XG5pbXBvcnQge1RVSV9JVEVNU19IQU5ETEVSUywgVHVpSXRlbXNIYW5kbGVyc30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG5pbXBvcnQge1RVSV9DT01CT19CT1hfUFJPVklERVJTfSBmcm9tICcuL2NvbWJvLWJveC5wcm92aWRlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1jb21iby1ib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21iby1ib3gudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29tYm8tYm94LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRVSV9DT01CT19CT1hfUFJPVklERVJTLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlDb21ib0JveENvbXBvbmVudDxUPlxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VD5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvciwgVHVpRGF0YUxpc3RIb3N0PFQ+XG57XG4gICAgQENvbnRlbnRDaGlsZChUVUlfREFUQV9MSVNUX0FDQ0VTU09SIGFzIGFueSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc29yPzogVHVpRGF0YUxpc3RBY2Nlc3NvcjxUPjtcblxuICAgIEBWaWV3Q2hpbGQoVHVpSG9zdGVkRHJvcGRvd25Db21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0ZWREcm9wZG93bj86IFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc3RyaW5naWZ5OiBUdWlJdGVtc0hhbmRsZXJzPFQ+WydzdHJpbmdpZnknXSA9IHRoaXMuaXRlbXNIYW5kbGVycy5zdHJpbmdpZnk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc3RyaWN0TWF0Y2hlcjogVHVpU3RyaW5nTWF0Y2hlcjxUPiA9IFRVSV9TVFJJQ1RfTUFUQ0hFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBpZGVudGl0eU1hdGNoZXI6IFR1aUl0ZW1zSGFuZGxlcnM8VD5bJ2lkZW50aXR5TWF0Y2hlciddID1cbiAgICAgICAgdGhpcy5pdGVtc0hhbmRsZXJzLmlkZW50aXR5TWF0Y2hlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB2YWx1ZUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpVmFsdWVDb250ZW50Q29udGV4dDxUPj4gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzdHJpY3QgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNlYXJjaDogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc2VhcmNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChUdWlEYXRhTGlzdERpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSlcbiAgICByZWFkb25seSBkYXRhbGlzdDogUG9seW1vcnBoZXVzQ29udGVudCA9ICcnO1xuXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfQVJST1dfTU9ERSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcnJvd01vZGU6IFR1aUFycm93TW9kZSxcbiAgICAgICAgQEluamVjdChUVUlfSVRFTVNfSEFORExFUlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaXRlbXNIYW5kbGVyczogVHVpSXRlbXNIYW5kbGVyczxUPixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIGdldCBhcnJvdygpOiBQb2x5bW9ycGhldXNDb250ZW50IHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmludGVyYWN0aXZlID8gdGhpcy5hcnJvd01vZGUuZGlzYWJsZWQgOiB0aGlzLmFycm93TW9kZS5pbnRlcmFjdGl2ZTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZCA/IHRoaXMudGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkgfHxcbiAgICAgICAgICAgICghIXRoaXMuaG9zdGVkRHJvcGRvd24gJiYgdGhpcy5ob3N0ZWREcm9wZG93bi5mb2N1c2VkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gbnVsbCA/IHRoaXMuc2VhcmNoIHx8ICcnIDogdGhpcy5zdHJpbmdpZnkodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dWYWx1ZVRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMudmFsdWUpICYmICF0aGlzLmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQ29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aVZhbHVlQ29udGVudENvbnRleHQ8VD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVDb250ZW50IHx8IHRoaXMubmF0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBjb21wdXRlQ29udGV4dChcbiAgICAgICAgJGltcGxpY2l0OiBUIHwgbnVsbCxcbiAgICAgICAgYWN0aXZlOiBib29sZWFuLFxuICAgICk6IFR1aVZhbHVlQ29udGVudENvbnRleHQ8VCB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRpbXBsaWNpdCxcbiAgICAgICAgICAgIGFjdGl2ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZVpvbmUoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChhY3RpdmUpO1xuICAgIH1cblxuICAgIGNoZWNrT3B0aW9uKG9wdGlvbjogVCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNTdHJpY3RNYXRjaChvcHRpb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG9wdGlvbik7XG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKG51bGwpO1xuICAgIH1cblxuICAgIGhhbmRsZU9wdGlvbihpdGVtOiBUKSB7XG4gICAgICAgIHRoaXMuc2V0TmF0aXZlVmFsdWUodGhpcy5zdHJpbmdpZnkoaXRlbSkpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaChudWxsKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShpdGVtKTtcbiAgICB9XG5cbiAgICBvbkZpZWxkS2V5RG93bkVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hY2Nlc3Nvcj8uZ2V0T3B0aW9ucygpIHx8IFtdO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShvcHRpb25zWzBdKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2gobnVsbCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2godmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5hY2Nlc3Nvcj8uZ2V0T3B0aW9ucygpLmZpbmQoaXRlbSA9PiB0aGlzLmlzU3RyaWN0TWF0Y2goaXRlbSkpO1xuXG4gICAgICAgIGlmIChtYXRjaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG1hdGNoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zdHJpY3QgfHwgdGhpcy5zZWFyY2ggPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ob3N0ZWREcm9wZG93bj8udXBkYXRlT3Blbih0cnVlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVWYWx1ZSh2YWx1ZTogVCB8IG51bGwpIHtcbiAgICAgICAgc3VwZXIudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIG9uSG92ZXJlZChob3ZlcmVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSG92ZXJlZChob3ZlcmVkKTtcbiAgICB9XG5cbiAgICB0b2dnbGUoKSB7XG4gICAgICAgIHRoaXMuaG9zdGVkRHJvcGRvd24/LnVwZGF0ZU9wZW4oIXRoaXMub3Blbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1N0cmljdE1hdGNoKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaWN0TWF0Y2hlcihpdGVtLCB0aGlzLnNlYXJjaCB8fCAnJywgdGhpcy5zdHJpbmdpZnkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuaG9zdGVkRHJvcGRvd24/LnVwZGF0ZU9wZW4oZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VhcmNoKHNlYXJjaDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2ggPT09IHNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2ggPSBzZWFyY2g7XG4gICAgICAgIHRoaXMuc2VhcmNoQ2hhbmdlLmVtaXQoc2VhcmNoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE5hdGl2ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LCB0cnVlLCBwcmV2ZW50U2Nyb2xsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8tYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9jb21iby1ib3gvIiwic291cmNlcyI6WyJjb21iby1ib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZCxPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHNCQUFzQixFQUV0QixvQkFBb0IsRUFFcEIsMEJBQTBCLEVBQzFCLDhCQUE4QixHQUVqQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxjQUFjLEVBQWUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQW1CLE1BQU0sc0JBQXNCLENBQUM7QUFHMUUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFTOUQ7SUFDWSx3Q0FBNkI7SUE2Q3JDLDhCQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRTlDLFNBQXVCLEVBRXZCLGFBQWtDO1FBVHZELFlBV0ksa0JBQU0sT0FBTyxFQUFFLGlCQUFpQixDQUFDLFNBQ3BDO1FBTG9CLGVBQVMsR0FBVCxTQUFTLENBQWM7UUFFdkIsbUJBQWEsR0FBYixhQUFhLENBQXFCO1FBeEN2RCxlQUFTLEdBQXFDLEtBQUksQ0FBQyxhQUFhLENBQUMs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a01oQztJQUFELDJCQUFDO0NBQUEsQUFsTUQsQ0FDWSwwQkFBMEIsR0FpTXJDO1NBbE1ZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBpc05hdGl2ZUZvY3VzZWQsXG4gICAgaXNQcmVzZW50LFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX1NUUklDVF9NQVRDSEVSLFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlQdXJlLFxuICAgIFR1aVN0cmluZ01hdGNoZXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfREFUQV9MSVNUX0FDQ0VTU09SLFxuICAgIFR1aURhdGFMaXN0QWNjZXNzb3IsXG4gICAgVHVpRGF0YUxpc3REaXJlY3RpdmUsXG4gICAgVHVpRGF0YUxpc3RIb3N0LFxuICAgIFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50LFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlWYWx1ZUNvbnRlbnRDb250ZXh0LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1RVSV9BUlJPV19NT0RFLCBUdWlBcnJvd01vZGV9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9hcnJvdyc7XG5pbXBvcnQge1RVSV9JVEVNU19IQU5ETEVSUywgVHVpSXRlbXNIYW5kbGVyc30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG5pbXBvcnQge1RVSV9DT01CT19CT1hfUFJPVklERVJTfSBmcm9tICcuL2NvbWJvLWJveC5wcm92aWRlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1jb21iby1ib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21iby1ib3gudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29tYm8tYm94LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRVSV9DT01CT19CT1hfUFJPVklERVJTLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlDb21ib0JveENvbXBvbmVudDxUPlxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VD5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvciwgVHVpRGF0YUxpc3RIb3N0PFQ+XG57XG4gICAgQENvbnRlbnRDaGlsZChUVUlfREFUQV9MSVNUX0FDQ0VTU09SIGFzIGFueSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc29yPzogVHVpRGF0YUxpc3RBY2Nlc3NvcjxUPjtcblxuICAgIEBWaWV3Q2hpbGQoVHVpSG9zdGVkRHJvcGRvd25Db21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0ZWREcm9wZG93bj86IFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc3RyaW5naWZ5OiBUdWlJdGVtc0hhbmRsZXJzPFQ+WydzdHJpbmdpZnknXSA9IHRoaXMuaXRlbXNIYW5kbGVycy5zdHJpbmdpZnk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc3RyaWN0TWF0Y2hlcjogVHVpU3RyaW5nTWF0Y2hlcjxUPiA9IFRVSV9TVFJJQ1RfTUFUQ0hFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBpZGVudGl0eU1hdGNoZXI6IFR1aUl0ZW1zSGFuZGxlcnM8VD5bJ2lkZW50aXR5TWF0Y2hlciddID1cbiAgICAgICAgdGhpcy5pdGVtc0hhbmRsZXJzLmlkZW50aXR5TWF0Y2hlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB2YWx1ZUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpVmFsdWVDb250ZW50Q29udGV4dDxUPj4gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzdHJpY3QgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNlYXJjaDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKFR1aURhdGFMaXN0RGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWZ9KVxuICAgIHJlYWRvbmx5IGRhdGFsaXN0OiBQb2x5bW9ycGhldXNDb250ZW50ID0gJyc7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9BUlJPV19NT0RFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFycm93TW9kZTogVHVpQXJyb3dNb2RlLFxuICAgICAgICBASW5qZWN0KFRVSV9JVEVNU19IQU5ETEVSUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpdGVtc0hhbmRsZXJzOiBUdWlJdGVtc0hhbmRsZXJzPFQ+LFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IGFycm93KCk6IFBvbHltb3JwaGV1c0NvbnRlbnQge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgPyB0aGlzLmFycm93TW9kZS5kaXNhYmxlZCA6IHRoaXMuYXJyb3dNb2RlLmludGVyYWN0aXZlO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkID8gdGhpcy50ZXh0ZmllbGQubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB8fFxuICAgICAgICAgICAgKCEhdGhpcy5ob3N0ZWREcm9wZG93biAmJiB0aGlzLmhvc3RlZERyb3Bkb3duLmZvY3VzZWQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBudWxsID8gdGhpcy5zZWFyY2ggfHwgJycgOiB0aGlzLnN0cmluZ2lmeSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd1ZhbHVlVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgIXRoaXMuZm9jdXNlZDtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDb250ZW50KCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpVmFsdWVDb250ZW50Q29udGV4dDxUPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZUNvbnRlbnQgfHwgdGhpcy5uYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGNvbXB1dGVDb250ZXh0KFxuICAgICAgICAkaW1wbGljaXQ6IFQgfCBudWxsLFxuICAgICAgICBhY3RpdmU6IGJvb2xlYW4sXG4gICAgKTogVHVpVmFsdWVDb250ZW50Q29udGV4dDxUIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJGltcGxpY2l0LFxuICAgICAgICAgICAgYWN0aXZlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZShhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgY2hlY2tPcHRpb24ob3B0aW9uOiBUKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1N0cmljdE1hdGNoKG9wdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUob3B0aW9uKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2gobnVsbCk7XG4gICAgfVxuXG4gICAgaGFuZGxlT3B0aW9uKGl0ZW06IFQpIHtcbiAgICAgICAgdGhpcy5zZXROYXRpdmVWYWx1ZSh0aGlzLnN0cmluZ2lmeShpdGVtKSk7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKG51bGwpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGl0ZW0pO1xuICAgIH1cblxuICAgIG9uRmllbGRLZXlEb3duRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFjY2Vzc29yPy5nZXRPcHRpb25zKCkgfHwgW107XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG9wdGlvbnNbMF0pO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaChudWxsKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaCh2YWx1ZSk7XG5cbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmFjY2Vzc29yPy5nZXRPcHRpb25zKCkuZmluZChpdGVtID0+IHRoaXMuaXNTdHJpY3RNYXRjaChpdGVtKSk7XG5cbiAgICAgICAgaWYgKG1hdGNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobWF0Y2gpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWFyY2gobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnN0cmljdCB8fCB0aGlzLnNlYXJjaCA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhvc3RlZERyb3Bkb3duPy51cGRhdGVPcGVuKHRydWUpO1xuICAgIH1cblxuICAgIHVwZGF0ZVZhbHVlKHZhbHVlOiBUIHwgbnVsbCkge1xuICAgICAgICBzdXBlci51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25Ib3ZlcmVkKGhvdmVyZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVIb3ZlcmVkKGhvdmVyZWQpO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgdGhpcy5ob3N0ZWREcm9wZG93bj8udXBkYXRlT3BlbighdGhpcy5vcGVuKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RyaWN0TWF0Y2goaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJpY3RNYXRjaGVyKGl0ZW0sIHRoaXMuc2VhcmNoIHx8ICcnLCB0aGlzLnN0cmluZ2lmeSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5ob3N0ZWREcm9wZG93bj8udXBkYXRlT3BlbihmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWFyY2goc2VhcmNoOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaCA9PT0gc2VhcmNoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaCA9IHNlYXJjaDtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdChzZWFyY2gpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNJbnB1dChwcmV2ZW50U2Nyb2xsOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsIHRydWUsIHByZXZlbnRTY3JvbGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -232,7 +232,7 @@ var TuiInputRangeComponent = /** @class */ (function (_super) {
232
232
  TuiInputRangeComponent = TuiInputRangeComponent_1 = __decorate([
233
233
  Component({
234
234
  selector: 'tui-input-range',
235
- template: "<div class=\"zone\" (tuiActiveZoneChange)=\"onActiveZone($event)\">\n <tui-wrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [invalid]=\"computedInvalid\"\n >\n <span\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-range__placeholder\"\n class=\"placeholder placeholder_raised\"\n >\n <ng-content></ng-content>\n </span>\n <div class=\"content\">\n <span *ngIf=\"!showMinLabel\" class=\"label\">\n <span class=\"value\">{{ inputValueLeft }}</span>\n <span\n *ngIf=\"pluralizeMap\"\n automation-id=\"tui-input-range__pluralize-left\"\n class=\"pluralize\"\n >\n {{ value[0] | i18nPlural: pluralizeMap }}\n </span>\n </span>\n <span\n *ngIf=\"showMinLabel\"\n automation-id=\"tui-input-range__min-label\"\n class=\"label\"\n >\n {{ minLabel }}\n </span>\n <span\n *ngIf=\"showMaxLabel\"\n automation-id=\"tui-input-range__max-label\"\n class=\"max\"\n >\n {{ maxLabel }}\n </span>\n </div>\n <tui-range\n class=\"slider\"\n [min]=\"min\"\n [max]=\"max\"\n [steps]=\"computedSteps\"\n [segments]=\"segments\"\n [keySteps]=\"keySteps\"\n [pluralize]=\"segmentsPluralize\"\n [focusable]=\"false\"\n [disabled]=\"readOnly || disabled\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onRangeValue($event)\"\n (mousedown.prevent)=\"onMouseDown()\"\n ></tui-range>\n </tui-wrapper>\n\n <div class=\"native-wrapper\" (tuiHoveredChange)=\"onHovered($event)\">\n <input\n #nativeLeft\n automation-id=\"tui-input-range__native-left\"\n class=\"native\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [class.native_hidden]=\"showMinLabel\"\n [tuiInputMode]=\"inputMode\"\n [tuiFocusable]=\"focusable\"\n [textMask]=\"quantum | tuiMapper: mask:min\"\n [ngModel]=\"computedValueLeft\"\n (ngModelChange)=\"onInputLeft()\"\n (tuiFocusedChange)=\"onLeftFocused($event)\"\n (keydown.arrowUp)=\"onKeyDownArrowUpLeft($event)\"\n (keydown.arrowDown)=\"onKeyDownArrowDownLeft($event)\"\n />\n <input\n #nativeRight\n automation-id=\"tui-input-range__native-right\"\n class=\"native native_right\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [class.native_hidden]=\"showMaxLabel\"\n [tuiInputMode]=\"inputMode\"\n [tuiFocusable]=\"focusable\"\n [textMask]=\"quantum | tuiMapper: mask:min\"\n [ngModel]=\"computedValueRight\"\n (ngModelChange)=\"onInputRight()\"\n (tuiFocusedChange)=\"onRightFocused($event)\"\n (keydown.arrowUp)=\"onKeyDownArrowUpRight($event)\"\n (keydown.arrowDown)=\"onKeyDownArrowDownRight($event)\"\n />\n <span\n *ngIf=\"pluralizeMap && !showMaxLabel\"\n automation-id=\"tui-input-range__pluralize-right\"\n class=\"pluralize pluralize_right\"\n (mousedown)=\"onMouseDown()\"\n >\n {{ value[1] | i18nPlural: pluralizeMap }}\n </span>\n </div>\n</div>\n",
235
+ template: "<div class=\"t-zone\" (tuiActiveZoneChange)=\"onActiveZone($event)\">\n <tui-wrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [invalid]=\"computedInvalid\"\n >\n <span\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-range__placeholder\"\n class=\"t-placeholder t-placeholder_raised\"\n >\n <ng-content></ng-content>\n </span>\n <div class=\"t-content\">\n <span *ngIf=\"!showMinLabel\" class=\"t-label\">\n <span class=\"t-value\">{{ inputValueLeft }}</span>\n <span\n *ngIf=\"pluralizeMap\"\n automation-id=\"tui-input-range__pluralize-left\"\n class=\"t-pluralize\"\n >\n {{ value[0] | i18nPlural: pluralizeMap }}\n </span>\n </span>\n <span\n *ngIf=\"showMinLabel\"\n automation-id=\"tui-input-range__min-label\"\n class=\"t-label\"\n >\n {{ minLabel }}\n </span>\n <span\n *ngIf=\"showMaxLabel\"\n automation-id=\"tui-input-range__max-label\"\n class=\"t-max\"\n >\n {{ maxLabel }}\n </span>\n </div>\n <tui-range\n class=\"t-slider\"\n [min]=\"min\"\n [max]=\"max\"\n [steps]=\"computedSteps\"\n [segments]=\"segments\"\n [keySteps]=\"keySteps\"\n [pluralize]=\"segmentsPluralize\"\n [focusable]=\"false\"\n [disabled]=\"readOnly || disabled\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onRangeValue($event)\"\n (mousedown.prevent)=\"onMouseDown()\"\n ></tui-range>\n </tui-wrapper>\n\n <div class=\"t-native-wrapper\" (tuiHoveredChange)=\"onHovered($event)\">\n <input\n #nativeLeft\n automation-id=\"tui-input-range__native-left\"\n class=\"t-native\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [class.t-native_hidden]=\"showMinLabel\"\n [tuiInputMode]=\"inputMode\"\n [tuiFocusable]=\"focusable\"\n [textMask]=\"quantum | tuiMapper: mask:min\"\n [ngModel]=\"computedValueLeft\"\n (ngModelChange)=\"onInputLeft()\"\n (tuiFocusedChange)=\"onLeftFocused($event)\"\n (keydown.arrowUp)=\"onKeyDownArrowUpLeft($event)\"\n (keydown.arrowDown)=\"onKeyDownArrowDownLeft($event)\"\n />\n <input\n #nativeRight\n automation-id=\"tui-input-range__native-right\"\n class=\"t-native t-native_right\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [class.t-native_hidden]=\"showMaxLabel\"\n [tuiInputMode]=\"inputMode\"\n [tuiFocusable]=\"focusable\"\n [textMask]=\"quantum | tuiMapper: mask:min\"\n [ngModel]=\"computedValueRight\"\n (ngModelChange)=\"onInputRight()\"\n (tuiFocusedChange)=\"onRightFocused($event)\"\n (keydown.arrowUp)=\"onKeyDownArrowUpRight($event)\"\n (keydown.arrowDown)=\"onKeyDownArrowDownRight($event)\"\n />\n <span\n *ngIf=\"pluralizeMap && !showMaxLabel\"\n automation-id=\"tui-input-range__pluralize-right\"\n class=\"t-pluralize t-pluralize_right\"\n (mousedown)=\"onMouseDown()\"\n >\n {{ value[1] | i18nPlural: pluralizeMap }}\n </span>\n </div>\n</div>\n",
236
236
  changeDetection: ChangeDetectionStrategy.OnPush,
237
237
  providers: [
238
238
  {
@@ -240,7 +240,7 @@ var TuiInputRangeComponent = /** @class */ (function (_super) {
240
240
  useExisting: forwardRef(function () { return TuiInputRangeComponent_1; }),
241
241
  },
242
242
  ],
243
- styles: [":host{position:relative;z-index:0;display:block;font:var(--tui-font-text-m);border-radius:var(--tui-radius-m);color:var(--tui-text-01)}:host._segmented{border-bottom:26px solid transparent}:host[data-mode=onDark]{color:var(--tui-base-01)}.zone{border-radius:inherit}.native-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;display:flex}.pluralize{display:flex;align-items:center;padding-right:.75rem;margin-left:-.5rem}.pluralize_right{margin-left:-.75rem}:host[data-size='l'] .pluralize_right{padding-top:1.25rem}:host._disabled .pluralize_right{color:var(--tui-text-03)}:host[data-mode=onDark]._disabled .pluralize_right{color:var(--tui-text-03-night)}.native{padding:0 1rem;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;flex:1;min-width:0;color:var(--tui-text-01);box-sizing:border-box;outline:0}.native:-webkit-autofill,.native:-webkit-autofill:focus,.native:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}.native_right{text-align:right}.native_hidden{opacity:0}:host._disabled .native{color:var(--tui-text-03);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host[data-size='l'] .native{padding:1.25rem 1rem 0}:host[data-mode=onDark] .native{color:var(--tui-text-01-night)}:host[data-mode=onDark]._disabled .native{color:var(--tui-text-03-night)}.content{display:flex;height:var(--tui-height-m);padding:0 1rem;justify-content:space-between;align-items:center}:host[data-size='l'] .content{height:var(--tui-height-l);padding:0 1rem}:host[data-size='l']._disabled .content{color:var(--tui-text-03)}:host[data-size='l'][data-mode=onDark]._disabled .content{color:var(--tui-text-03-night)}.placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;font-size:.8125rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);pointer-events:none;position:absolute;top:0;width:100%;height:100%;left:1rem;line-height:var(--tui-height-l)}.placeholder_raised{transform:translateY(-.625rem)}:host[data-size='m'] .placeholder_raised{font-size:.69rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .placeholder_raised,:host._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .placeholder,:host[data-size='l']._focused._label-outside .placeholder,:host[data-size='m']._focused._label-outside .placeholder{color:var(--tui-text-03)}:host[data-size='l'] .placeholder{font-size:.9375rem}:host[data-size='l'] .placeholder_raised{font-size:.8156rem}:host[data-size='l']._focused:not(._label-outside) .placeholder,:host[data-size='m']._focused:not(._label-outside) .placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .placeholder{color:var(--tui-text-02-night)}:host[data-size='l'][data-mode=onDark]._focused:not(._label-outside) .placeholder,:host[data-size='m'][data-mode=onDark]._focused:not(._label-outside) .placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .placeholder,:host[data-size='l'][data-mode=onDark]._focused._label-outside .placeholder,:host[data-size='m'][data-mode=onDark]._focused._label-outside .placeholder{color:var(--tui-text-02-night)}.value{visibility:hidden;overflow:hidden;padding-right:.75rem}:host._disabled .value{color:var(--tui-text-03)}.label{display:flex;width:50%}:host[data-size='l'] .label{padding-top:1.25rem}.max{text-align:right;flex:1}:host[data-size='l'] .max{padding-top:1.25rem;line-height:calc(var(--tui-height-l) - 1.25rem)}.slider{position:absolute;top:100%;left:0;right:0;z-index:1;border-top-left-radius:0;border-top-right-radius:0;margin:-.5625rem 0 0;color:transparent}:host._disabled .slider,:host._readonly .slider{pointer-events:none}"]
243
+ styles: [":host{position:relative;z-index:0;display:block;font:var(--tui-font-text-m);border-radius:var(--tui-radius-m);color:var(--tui-text-01)}:host._segmented{border-bottom:26px solid transparent}:host[data-mode=onDark]{color:var(--tui-base-01)}.t-zone{border-radius:inherit}.t-native-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;display:flex}.t-pluralize{display:flex;align-items:center;padding-right:.75rem;margin-left:-.5rem}.t-pluralize_right{margin-left:-.75rem}:host[data-size='l'] .t-pluralize_right{padding-top:1.25rem}:host._disabled .t-pluralize_right{color:var(--tui-text-03)}:host[data-mode=onDark]._disabled .t-pluralize_right{color:var(--tui-text-03-night)}.t-native{padding:0 1rem;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;flex:1;min-width:0;color:var(--tui-text-01);box-sizing:border-box;outline:0}.t-native:-webkit-autofill,.t-native:-webkit-autofill:focus,.t-native:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}.t-native_right{text-align:right}.t-native_hidden{opacity:0}:host._disabled .t-native{color:var(--tui-text-03);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host[data-size='l'] .t-native{padding:1.25rem 1rem 0}:host[data-mode=onDark] .t-native{color:var(--tui-text-01-night)}:host[data-mode=onDark]._disabled .t-native{color:var(--tui-text-03-night)}.t-content{display:flex;height:var(--tui-height-m);padding:0 1rem;justify-content:space-between;align-items:center}:host[data-size='l'] .t-content{height:var(--tui-height-l);padding:0 1rem}:host[data-size='l']._disabled .t-content{color:var(--tui-text-03)}:host[data-size='l'][data-mode=onDark]._disabled .t-content{color:var(--tui-text-03-night)}.t-placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;font-size:.8125rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);pointer-events:none;position:absolute;top:0;width:100%;height:100%;left:1rem;line-height:var(--tui-height-l)}.t-placeholder_raised{transform:translateY(-.625rem)}:host[data-size='m'] .t-placeholder_raised{font-size:.69rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .t-placeholder_raised,:host._invalid:not(._focused)._hovered .t-placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .t-placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .t-placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .t-placeholder,:host[data-size='l']._focused._label-outside .t-placeholder,:host[data-size='m']._focused._label-outside .t-placeholder{color:var(--tui-text-03)}:host[data-size='l'] .t-placeholder{font-size:.9375rem}:host[data-size='l'] .t-placeholder_raised{font-size:.8156rem}:host[data-size='l']._focused:not(._label-outside) .t-placeholder,:host[data-size='m']._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}:host[data-size='l'][data-mode=onDark]._focused:not(._label-outside) .t-placeholder,:host[data-size='m'][data-mode=onDark]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .t-placeholder,:host[data-size='l'][data-mode=onDark]._focused._label-outside .t-placeholder,:host[data-size='m'][data-mode=onDark]._focused._label-outside .t-placeholder{color:var(--tui-text-02-night)}.t-value{visibility:hidden;overflow:hidden;padding-right:.75rem}:host._disabled .t-value{color:var(--tui-text-03)}.t-label{display:flex;width:50%}:host[data-size='l'] .t-label{padding-top:1.25rem}.t-max{text-align:right;flex:1}:host[data-size='l'] .t-max{padding-top:1.25rem;line-height:calc(var(--tui-height-l) - 1.25rem)}.t-slider{position:absolute;top:100%;left:0;right:0;z-index:1;border-top-left-radius:0;border-top-right-radius:0;margin:-.5625rem 0 0;color:transparent}:host._disabled .t-slider,:host._readonly .t-slider{pointer-events:none}"]
244
244
  }),
245
245
  __param(0, Optional()),
246
246
  __param(0, Self()),
@@ -255,4 +255,4 @@ var TuiInputRangeComponent = /** @class */ (function (_super) {
255
255
  return TuiInputRangeComponent;
256
256
  }(AbstractTuiInputSlider));
257
257
  export { TuiInputRangeComponent };
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LXJhbmdlLyIsInNvdXJjZXMiOlsiaW5wdXQtcmFuZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQiwyQkFBMkIsRUFDM0IsYUFBYSxHQUdoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsWUFBWSxFQUNaLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEdBQ25CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsV0FBVztBQWFYO0lBQ1ksMENBQXdDO0lBU2hELGdDQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRzVDLGFBQXNDLEVBRXhDLFFBQWlCLEVBRWYsWUFBa0MsRUFFNUMsVUFBa0I7UUFkL0IsWUFnQkksa0JBQU0sT0FBTyxFQUFFLGlCQUFpQixDQUFDLFNBQ3BDO1FBVHNCLG1CQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUV4QyxjQUFRLEdBQVIsUUFBUSxDQUFTO1FBRWYsa0JBQVksR0FBWixZQUFZLENBQXNCO1FBRTVDLGdCQUFVLEdBQVYsVUFBVSxDQUFROztJQUcvQixDQUFDOytCQTNCUSxzQkFBc0I7SUE2Qi9CLHNCQUFJLDBEQUFzQjthQUEx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QTtRQUNWLFdBQUEsSUFBSSxFQUFFLENBQUE7UUFDTixXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVqQixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pCLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRXhCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRXJCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFFekIsV0FBQSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtPQXZCNUIsc0JBQXNCLENBeVBsQztJQUFELDZCQUFDO0NBQUEsQUF6UEQsQ0FDWSxzQkFBc0IsR0F3UGpDO1NBelBZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBmb3JtYXROdW1iZXIsXG4gICAgbWFza2VkTW9uZXlWYWx1ZUlzRW1wdHksXG4gICAgbWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIsXG4gICAgTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgVFVJX05VTUJFUl9GT1JNQVQsXG4gICAgVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFLFxuICAgIFR1aU1vZGVEaXJlY3RpdmUsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RUdWlJbnB1dFNsaWRlcn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9hYnN0cmFjdCc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXJhbmdlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRSYW5nZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlJbnB1dFNsaWRlcjxbbnVtYmVyLCBudW1iZXJdPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnbmF0aXZlTGVmdCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmVMZWZ0PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ25hdGl2ZVJpZ2h0JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZVJpZ2h0PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpTW9kZURpcmVjdGl2ZSlcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGVEaXJlY3RpdmU6IFR1aU1vZGVEaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBudW1iZXJGb3JtYXQ6IE51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfQVBQRUFSQU5DRSlcbiAgICAgICAgcmVhZG9ubHkgYXBwZWFyYW5jZTogc3RyaW5nLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMubmF0aXZlTGVmdCB8fCB0aGlzLmRpc2FibGVkID8gbnVsbCA6IHRoaXMubmF0aXZlTGVmdC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkTGVmdCB8fCB0aGlzLmZvY3VzZWRSaWdodDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZExlZnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubmF0aXZlTGVmdCAmJiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVMZWZ0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubmF0aXZlUmlnaHQgJiYgaXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlUmlnaHQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fbWluLWxhYmVsJylcbiAgICBnZXQgc2hvd01pbkxhYmVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNlZExlZnQgJiYgISF0aGlzLm1pbkxhYmVsICYmIHRoaXMudmFsdWVbMF0gPT09IHRoaXMubWluO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX21heC1sYWJlbCcpXG4gICAgZ2V0IHNob3dNYXhMYWJlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmZvY3VzZWRSaWdodCAmJiAhIXRoaXMubWF4TGFiZWwgJiYgdGhpcy52YWx1ZVsxXSA9PT0gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0VmFsdWVMZWZ0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUxlZnQgPyB0aGlzLm5hdGl2ZUxlZnQubmF0aXZlRWxlbWVudC52YWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIGdldCBpbnB1dFZhbHVlUmlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlUmlnaHQgPyB0aGlzLm5hdGl2ZVJpZ2h0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZUxlZnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWVbMF0pO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFZhbHVlUmlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWVbMV0pO1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZShhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgb25Nb3VzZURvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZVJpZ2h0ICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlUmlnaHQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleURvd25BcnJvd1VwTGVmdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcCh0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgb25LZXlEb3duQXJyb3dEb3duTGVmdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcChmYWxzZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIG9uS2V5RG93bkFycm93VXBSaWdodChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcCh0cnVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBvbktleURvd25BcnJvd0Rvd25SaWdodChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcChmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgb25JbnB1dExlZnQoKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dFZhbHVlTGVmdDtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBJbnB1dFZhbHVlKHZhbHVlLCB0aGlzLnZhbHVlWzFdKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9IHZhbHVlLnNsaWNlKC0xKVswXSA9PT0gJywnID8gJywnIDogJyc7XG5cbiAgICAgICAgaWYgKG1hc2tlZE1vbmV5VmFsdWVJc0VtcHR5KHZhbHVlKSB8fCBjYXBwZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIoY2FwcGVkKSArIHBvc3RmaXg7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlTGVmdCAmJiB0aGlzLmlucHV0VmFsdWVMZWZ0ICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVMZWZ0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoW2NhcHBlZCwgdGhpcy52YWx1ZVsxXV0pO1xuICAgIH1cblxuICAgIG9uSW5wdXRSaWdodCgpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0VmFsdWVSaWdodDtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9IHZhbHVlLnNsaWNlKC0xKVswXSA9PT0gJywnID8gJywnIDogJyc7XG5cbiAgICAgICAgaWYgKG1hc2tlZE1vbmV5VmFsdWVJc0VtcHR5KHZhbHVlKSB8fCBjYXBwZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIoY2FwcGVkKSArIHBvc3RmaXg7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlUmlnaHQgJiYgdGhpcy5pbnB1dFZhbHVlUmlnaHQgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVJpZ2h0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYXBwZWQgPj0gdGhpcy52YWx1ZVswXSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShbdGhpcy52YWx1ZVswXSwgY2FwcGVkXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJhbmdlVmFsdWUodmFsdWU6IFtudW1iZXIsIG51bWJlcl0pIHtcbiAgICAgICAgY29uc3QgZ3VhcmRlZFZhbHVlID0gdmFsdWUubWFwKGl0ZW0gPT4gdGhpcy52YWx1ZUd1YXJkKGl0ZW0pKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLm5hdGl2ZUxlZnQgfHxcbiAgICAgICAgICAgICF0aGlzLm5hdGl2ZVJpZ2h0IHx8XG4gICAgICAgICAgICAoZ3VhcmRlZFZhbHVlWzBdID09PSB0aGlzLnZhbHVlWzBdICYmIGd1YXJkZWRWYWx1ZVsxXSA9PT0gdGhpcy52YWx1ZVsxXSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPVxuICAgICAgICAgICAgICAgIGd1YXJkZWRWYWx1ZVswXSAhPT0gdGhpcy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMubmF0aXZlTGVmdC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5uYXRpdmVSaWdodC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKGVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShndWFyZGVkVmFsdWUpO1xuICAgICAgICB0aGlzLm5hdGl2ZUxlZnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKGd1YXJkZWRWYWx1ZVswXSk7XG4gICAgfVxuXG4gICAgb25MZWZ0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChmb2N1c2VkIHx8ICF0aGlzLm5hdGl2ZUxlZnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBtYXNrZWROdW1iZXJTdHJpbmdUb051bWJlcihcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRWYWx1ZUxlZnQsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaXNOYU4oaW5wdXRWYWx1ZSkgPyB0aGlzLm1pbiA6IHRoaXMudmFsdWVHdWFyZChpbnB1dFZhbHVlKTtcblxuICAgICAgICB0aGlzLm5hdGl2ZUxlZnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWVbMF0pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoW3ZhbHVlLCB0aGlzLnZhbHVlWzFdXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJpZ2h0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChmb2N1c2VkIHx8ICF0aGlzLm5hdGl2ZVJpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gbWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIoXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkVmFsdWVSaWdodCxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWx1ZSA9IGlzTmFOKGlucHV0VmFsdWUpXG4gICAgICAgICAgICA/IHRoaXMudmFsdWVbMF1cbiAgICAgICAgICAgIDogdGhpcy52YWx1ZUd1YXJkKE1hdGgubWF4KGlucHV0VmFsdWUsIHRoaXMudmFsdWVbMF0pKTtcblxuICAgICAgICB0aGlzLm5hdGl2ZVJpZ2h0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlWzFdKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFt0aGlzLnZhbHVlWzBdLCB2YWx1ZV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgICAgIHJldHVybiBbMCwgMF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBmb3JtYXROdW1iZXIoXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3RlcChpbmNyZW1lbnQ6IGJvb2xlYW4sIHJpZ2h0OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy52YWx1ZUd1YXJkKFxuICAgICAgICAgICAgaW5jcmVtZW50ID8gdGhpcy52YWx1ZVswXSArIHRoaXMuc3RlcCA6IHRoaXMudmFsdWVbMF0gLSB0aGlzLnN0ZXAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMudmFsdWVHdWFyZChcbiAgICAgICAgICAgIGluY3JlbWVudCA/IHRoaXMudmFsdWVbMV0gKyB0aGlzLnN0ZXAgOiB0aGlzLnZhbHVlWzFdIC0gdGhpcy5zdGVwLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB2YWx1ZTogW251bWJlciwgbnVtYmVyXSA9IFtcbiAgICAgICAgICAgIHJpZ2h0ID8gdGhpcy52YWx1ZVswXSA6IE1hdGgubWluKHN0YXJ0LCB0aGlzLnZhbHVlWzFdKSxcbiAgICAgICAgICAgIHJpZ2h0ID8gTWF0aC5tYXgoZW5kLCB0aGlzLnZhbHVlWzBdKSA6IHRoaXMudmFsdWVbMV0sXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHZhbHVlWzBdICE9PSB0aGlzLnZhbHVlWzBdIHx8IHZhbHVlWzFdICE9PSB0aGlzLnZhbHVlWzFdKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LXJhbmdlLyIsInNvdXJjZXMiOlsiaW5wdXQtcmFuZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQiwyQkFBMkIsRUFDM0IsYUFBYSxHQUdoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsWUFBWSxFQUNaLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEdBQ25CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsV0FBVztBQWFYO0lBQ1ksMENBQXdDO0lBU2hELGdDQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRzVDLGFBQXNDLEVBRXhDLFFBQWlCLEVBRWYsWUFBa0MsRUFFNUMsVUFBa0I7UUFkL0IsWUFnQkksa0JBQU0sT0FBTyxFQUFFLGlCQUFpQixDQUFDLFNBQ3BDO1FBVHNCLG1CQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUV4QyxjQUFRLEdBQVIsUUFBUSxDQUFTO1FBRWYsa0JBQVksR0FBWixZQUFZLENBQXNCO1FBRTVDLGdCQUFVLEdBQVYsVUFBVSxDQUFROztJQUcvQixDQUFDOytCQTNCUSxzQkFBc0I7SUE2Qi9CLHNCQUFJLDBEQUFzQjthQUEx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QTtRQUNWLFdBQUEsSUFBSSxFQUFFLENBQUE7UUFDTixXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVqQixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pCLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRXhCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRXJCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFFekIsV0FBQSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtPQXZCNUIsc0JBQXNCLENBeVBsQztJQUFELDZCQUFDO0NBQUEsQUF6UEQsQ0FDWSxzQkFBc0IsR0F3UGpDO1NBelBZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBmb3JtYXROdW1iZXIsXG4gICAgbWFza2VkTW9uZXlWYWx1ZUlzRW1wdHksXG4gICAgbWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIsXG4gICAgTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgVFVJX05VTUJFUl9GT1JNQVQsXG4gICAgVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFLFxuICAgIFR1aU1vZGVEaXJlY3RpdmUsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RUdWlJbnB1dFNsaWRlcn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9hYnN0cmFjdCc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXJhbmdlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRSYW5nZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlJbnB1dFNsaWRlcjxbbnVtYmVyLCBudW1iZXJdPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnbmF0aXZlTGVmdCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmVMZWZ0PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ25hdGl2ZVJpZ2h0JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZVJpZ2h0PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpTW9kZURpcmVjdGl2ZSlcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGVEaXJlY3RpdmU6IFR1aU1vZGVEaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBudW1iZXJGb3JtYXQ6IE51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfQVBQRUFSQU5DRSlcbiAgICAgICAgcmVhZG9ubHkgYXBwZWFyYW5jZTogc3RyaW5nLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMubmF0aXZlTGVmdCB8fCB0aGlzLmRpc2FibGVkID8gbnVsbCA6IHRoaXMubmF0aXZlTGVmdC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkTGVmdCB8fCB0aGlzLmZvY3VzZWRSaWdodDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZExlZnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubmF0aXZlTGVmdCAmJiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVMZWZ0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubmF0aXZlUmlnaHQgJiYgaXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlUmlnaHQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5fbWluLWxhYmVsJylcbiAgICBnZXQgc2hvd01pbkxhYmVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNlZExlZnQgJiYgISF0aGlzLm1pbkxhYmVsICYmIHRoaXMudmFsdWVbMF0gPT09IHRoaXMubWluO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX21heC1sYWJlbCcpXG4gICAgZ2V0IHNob3dNYXhMYWJlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmZvY3VzZWRSaWdodCAmJiAhIXRoaXMubWF4TGFiZWwgJiYgdGhpcy52YWx1ZVsxXSA9PT0gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0VmFsdWVMZWZ0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUxlZnQgPyB0aGlzLm5hdGl2ZUxlZnQubmF0aXZlRWxlbWVudC52YWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIGdldCBpbnB1dFZhbHVlUmlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlUmlnaHQgPyB0aGlzLm5hdGl2ZVJpZ2h0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZUxlZnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWVbMF0pO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFZhbHVlUmlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWVbMV0pO1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZShhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgb25Nb3VzZURvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZVJpZ2h0ICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlUmlnaHQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleURvd25BcnJvd1VwTGVmdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcCh0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgb25LZXlEb3duQXJyb3dEb3duTGVmdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcChmYWxzZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIG9uS2V5RG93bkFycm93VXBSaWdodChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcCh0cnVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBvbktleURvd25BcnJvd0Rvd25SaWdodChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcChmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgb25JbnB1dExlZnQoKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dFZhbHVlTGVmdDtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBJbnB1dFZhbHVlKHZhbHVlLCB0aGlzLnZhbHVlWzFdKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9IHZhbHVlLnNsaWNlKC0xKVswXSA9PT0gJywnID8gJywnIDogJyc7XG5cbiAgICAgICAgaWYgKG1hc2tlZE1vbmV5VmFsdWVJc0VtcHR5KHZhbHVlKSB8fCBjYXBwZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIoY2FwcGVkKSArIHBvc3RmaXg7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlTGVmdCAmJiB0aGlzLmlucHV0VmFsdWVMZWZ0ICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVMZWZ0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoW2NhcHBlZCwgdGhpcy52YWx1ZVsxXV0pO1xuICAgIH1cblxuICAgIG9uSW5wdXRSaWdodCgpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0VmFsdWVSaWdodDtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9IHZhbHVlLnNsaWNlKC0xKVswXSA9PT0gJywnID8gJywnIDogJyc7XG5cbiAgICAgICAgaWYgKG1hc2tlZE1vbmV5VmFsdWVJc0VtcHR5KHZhbHVlKSB8fCBjYXBwZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIoY2FwcGVkKSArIHBvc3RmaXg7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlUmlnaHQgJiYgdGhpcy5pbnB1dFZhbHVlUmlnaHQgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVJpZ2h0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYXBwZWQgPj0gdGhpcy52YWx1ZVswXSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShbdGhpcy52YWx1ZVswXSwgY2FwcGVkXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJhbmdlVmFsdWUodmFsdWU6IFtudW1iZXIsIG51bWJlcl0pIHtcbiAgICAgICAgY29uc3QgZ3VhcmRlZFZhbHVlID0gdmFsdWUubWFwKGl0ZW0gPT4gdGhpcy52YWx1ZUd1YXJkKGl0ZW0pKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLm5hdGl2ZUxlZnQgfHxcbiAgICAgICAgICAgICF0aGlzLm5hdGl2ZVJpZ2h0IHx8XG4gICAgICAgICAgICAoZ3VhcmRlZFZhbHVlWzBdID09PSB0aGlzLnZhbHVlWzBdICYmIGd1YXJkZWRWYWx1ZVsxXSA9PT0gdGhpcy52YWx1ZVsxXSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPVxuICAgICAgICAgICAgICAgIGd1YXJkZWRWYWx1ZVswXSAhPT0gdGhpcy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMubmF0aXZlTGVmdC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5uYXRpdmVSaWdodC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKGVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShndWFyZGVkVmFsdWUpO1xuICAgICAgICB0aGlzLm5hdGl2ZUxlZnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKGd1YXJkZWRWYWx1ZVswXSk7XG4gICAgfVxuXG4gICAgb25MZWZ0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChmb2N1c2VkIHx8ICF0aGlzLm5hdGl2ZUxlZnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBtYXNrZWROdW1iZXJTdHJpbmdUb051bWJlcihcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRWYWx1ZUxlZnQsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaXNOYU4oaW5wdXRWYWx1ZSkgPyB0aGlzLm1pbiA6IHRoaXMudmFsdWVHdWFyZChpbnB1dFZhbHVlKTtcblxuICAgICAgICB0aGlzLm5hdGl2ZUxlZnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWVbMF0pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoW3ZhbHVlLCB0aGlzLnZhbHVlWzFdXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJpZ2h0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChmb2N1c2VkIHx8ICF0aGlzLm5hdGl2ZVJpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gbWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIoXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkVmFsdWVSaWdodCxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWx1ZSA9IGlzTmFOKGlucHV0VmFsdWUpXG4gICAgICAgICAgICA/IHRoaXMudmFsdWVbMF1cbiAgICAgICAgICAgIDogdGhpcy52YWx1ZUd1YXJkKE1hdGgubWF4KGlucHV0VmFsdWUsIHRoaXMudmFsdWVbMF0pKTtcblxuICAgICAgICB0aGlzLm5hdGl2ZVJpZ2h0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlWzFdKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFt0aGlzLnZhbHVlWzBdLCB2YWx1ZV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgICAgIHJldHVybiBbMCwgMF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBmb3JtYXROdW1iZXIoXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3RlcChpbmNyZW1lbnQ6IGJvb2xlYW4sIHJpZ2h0OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy52YWx1ZUd1YXJkKFxuICAgICAgICAgICAgaW5jcmVtZW50ID8gdGhpcy52YWx1ZVswXSArIHRoaXMuc3RlcCA6IHRoaXMudmFsdWVbMF0gLSB0aGlzLnN0ZXAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMudmFsdWVHdWFyZChcbiAgICAgICAgICAgIGluY3JlbWVudCA/IHRoaXMudmFsdWVbMV0gKyB0aGlzLnN0ZXAgOiB0aGlzLnZhbHVlWzFdIC0gdGhpcy5zdGVwLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB2YWx1ZTogW251bWJlciwgbnVtYmVyXSA9IFtcbiAgICAgICAgICAgIHJpZ2h0ID8gdGhpcy52YWx1ZVswXSA6IE1hdGgubWluKHN0YXJ0LCB0aGlzLnZhbHVlWzFdKSxcbiAgICAgICAgICAgIHJpZ2h0ID8gTWF0aC5tYXgoZW5kLCB0aGlzLnZhbHVlWzBdKSA6IHRoaXMudmFsdWVbMV0sXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHZhbHVlWzBdICE9PSB0aGlzLnZhbHVlWzBdIHx8IHZhbHVlWzFdICE9PSB0aGlzLnZhbHVlWzFdKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -190,7 +190,7 @@ var TuiInputSliderComponent = /** @class */ (function (_super) {
190
190
  TuiInputSliderComponent = TuiInputSliderComponent_1 = __decorate([
191
191
  Component({
192
192
  selector: 'tui-input-slider',
193
- template: "<tui-wrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [invalid]=\"computedInvalid\"\n>\n <span\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-slider__placeholder\"\n class=\"placeholder placeholder_raised\"\n >\n <ng-content></ng-content>\n </span>\n <input\n #focusableElement\n automation-id=\"tui-input-slider__native\"\n class=\"native\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [tuiInputMode]=\"inputMode\"\n [tuiFocusable]=\"focusable\"\n [textMask]=\"quantum | tuiMapper: mask:min\"\n [ngModel]=\"computedValue\"\n (ngModelChange)=\"onValue($event)\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (keydown.arrowUp)=\"onKeyDownArrowUp($event)\"\n (keydown.arrowDown)=\"onKeyDownArrowDown($event)\"\n />\n <div class=\"content\">\n <span *ngIf=\"showValue\" class=\"label\">\n <span class=\"value\">{{ computedValue }}</span>\n <span\n *ngIf=\"pluralizeMap\"\n automation-id=\"tui-input-slider__pluralize\"\n >\n {{ value | i18nPlural: pluralizeMap }}\n </span>\n </span>\n <span\n *ngIf=\"showMinLabel\"\n automation-id=\"tui-input-slider__min-label\"\n class=\"label\"\n >\n {{ minLabel }}\n </span>\n <span\n *ngIf=\"showMaxLabel\"\n automation-id=\"tui-input-slider__max-label\"\n class=\"label\"\n >\n {{ maxLabel }}\n </span>\n <span automation-id=\"tui-input-slider__secondary\" class=\"secondary\">\n {{ secondary }}\n <tui-tooltip\n *ngIf=\"hasTooltip\"\n automation-id=\"tui-input-slider__tooltip\"\n describeId=\"placeholer_until_accesibility_is_added\"\n class=\"tooltip\"\n [content]=\"hintController.content\"\n [direction]=\"hintController.direction\"\n [mode]=\"hintController.mode\"\n [showDelay]=\"hintController.showDelay\"\n [hideDelay]=\"hintController.hideDelay\"\n (mousedown.prevent)=\"onMouseDown()\"\n ></tui-tooltip>\n </span>\n </div>\n</tui-wrapper>\n<tui-slider\n class=\"slider\"\n [min]=\"min\"\n [max]=\"max\"\n [steps]=\"computedSteps\"\n [segments]=\"segments\"\n [keySteps]=\"keySteps\"\n [pluralize]=\"segmentsPluralize\"\n [focusable]=\"false\"\n [disabled]=\"readOnly || disabled\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onSliderValue($event)\"\n (mousedown)=\"onMouseDown()\"\n></tui-slider>\n",
193
+ template: "<tui-wrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [invalid]=\"computedInvalid\"\n>\n <span\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-slider__placeholder\"\n class=\"t-placeholder t-placeholder_raised\"\n >\n <ng-content></ng-content>\n </span>\n <input\n #focusableElement\n automation-id=\"tui-input-slider__native\"\n class=\"t-native\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n [tuiInputMode]=\"inputMode\"\n [tuiFocusable]=\"focusable\"\n [textMask]=\"quantum | tuiMapper: mask:min\"\n [ngModel]=\"computedValue\"\n (ngModelChange)=\"onValue($event)\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (tuiHoveredChange)=\"onHovered($event)\"\n (keydown.arrowUp)=\"onKeyDownArrowUp($event)\"\n (keydown.arrowDown)=\"onKeyDownArrowDown($event)\"\n />\n <div class=\"t-content\">\n <span *ngIf=\"showValue\" class=\"t-label\">\n <span class=\"t-value\">{{ computedValue }}</span>\n <span\n *ngIf=\"pluralizeMap\"\n automation-id=\"tui-input-slider__pluralize\"\n >\n {{ value | i18nPlural: pluralizeMap }}\n </span>\n </span>\n <span\n *ngIf=\"showMinLabel\"\n automation-id=\"tui-input-slider__min-label\"\n class=\"t-label\"\n >\n {{ minLabel }}\n </span>\n <span\n *ngIf=\"showMaxLabel\"\n automation-id=\"tui-input-slider__max-label\"\n class=\"t-label\"\n >\n {{ maxLabel }}\n </span>\n <span automation-id=\"tui-input-slider__secondary\" class=\"t-secondary\">\n {{ secondary }}\n <tui-tooltip\n *ngIf=\"hasTooltip\"\n automation-id=\"tui-input-slider__tooltip\"\n describeId=\"placeholer_until_accesibility_is_added\"\n class=\"t-tooltip\"\n [content]=\"hintController.content\"\n [direction]=\"hintController.direction\"\n [mode]=\"hintController.mode\"\n [showDelay]=\"hintController.showDelay\"\n [hideDelay]=\"hintController.hideDelay\"\n (mousedown.prevent)=\"onMouseDown()\"\n ></tui-tooltip>\n </span>\n </div>\n</tui-wrapper>\n<tui-slider\n class=\"t-slider\"\n [min]=\"min\"\n [max]=\"max\"\n [steps]=\"computedSteps\"\n [segments]=\"segments\"\n [keySteps]=\"keySteps\"\n [pluralize]=\"segmentsPluralize\"\n [focusable]=\"false\"\n [disabled]=\"readOnly || disabled\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onSliderValue($event)\"\n (mousedown)=\"onMouseDown()\"\n></tui-slider>\n",
194
194
  changeDetection: ChangeDetectionStrategy.OnPush,
195
195
  providers: [
196
196
  {
@@ -199,7 +199,7 @@ var TuiInputSliderComponent = /** @class */ (function (_super) {
199
199
  },
200
200
  HINT_CONTROLLER_PROVIDER,
201
201
  ],
202
- styles: [":host{position:relative;z-index:0;display:block;font:var(--tui-font-text-m);border-radius:var(--tui-radius-m);color:var(--tui-text-01)}:host._segmented{border-bottom:26px solid transparent}.native{position:absolute;top:0;left:0;height:100%;padding:0 1rem;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;width:100%;color:var(--tui-text-01);box-sizing:border-box;outline:0}.native:-webkit-autofill,.native:-webkit-autofill:focus,.native:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}:host._disabled .native{color:var(--tui-text-03);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host._max-label .native,:host._min-label .native{opacity:0}:host[data-size='l'] .native{padding:1.25rem 1rem 0}:host[data-mode=onDark] .native{color:var(--tui-text-01-night)}:host[data-mode=onDark]._disabled .native{color:var(--tui-text-03-night)}.content{display:flex;align-items:center;height:var(--tui-height-m);padding:0 1rem;justify-content:space-between}:host[data-size='l'] .content{height:var(--tui-height-l);padding:0 1rem}.placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;font-size:.8125rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-l);line-height:var(--tui-height-l);box-sizing:border-box;pointer-events:none}.placeholder_raised{transform:translateY(-.625rem)}:host[data-size='m'] .placeholder_raised{font-size:.69rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .placeholder_raised,:host._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .placeholder,:host[data-size='l']._focused._label-outside .placeholder,:host[data-size='m']._focused._label-outside .placeholder{color:var(--tui-text-03)}:host[data-size='l'] .placeholder{font-size:.9375rem}:host[data-size='l'] .placeholder_raised{font-size:.8156rem}:host[data-size='l']._focused:not(._label-outside) .placeholder,:host[data-size='m']._focused:not(._label-outside) .placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .placeholder{color:var(--tui-text-02-night)}:host[data-size='l'][data-mode=onDark]._focused:not(._label-outside) .placeholder,:host[data-size='m'][data-mode=onDark]._focused:not(._label-outside) .placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .placeholder,:host[data-size='l'][data-mode=onDark]._focused._label-outside .placeholder,:host[data-size='m'][data-mode=onDark]._focused._label-outside .placeholder{color:var(--tui-text-02-night)}:host._has-tooltip .placeholder{max-width:calc(100% - 1.75rem)}.value{visibility:hidden}.label{overflow:hidden;text-overflow:ellipsis}:host[data-size='l'] .label{padding-top:1.25rem}.secondary{color:var(--tui-text-01)}:host._disabled .secondary{color:var(--tui-text-03)}:host[data-mode=onDark]._disabled .secondary{color:var(--tui-text-03-night)}.tooltip{margin-left:.75rem}.slider{position:absolute;top:100%;left:0;right:0;border-top-left-radius:0;border-top-right-radius:0;margin:-.5625rem 0 0;color:transparent}:host._disabled .slider,:host._readonly .slider{pointer-events:none}"]
202
+ styles: [":host{position:relative;z-index:0;display:block;font:var(--tui-font-text-m);border-radius:var(--tui-radius-m);color:var(--tui-text-01)}:host._segmented{border-bottom:26px solid transparent}.t-native{position:absolute;top:0;left:0;height:100%;padding:0 1rem;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;width:100%;color:var(--tui-text-01);box-sizing:border-box;outline:0}.t-native:-webkit-autofill,.t-native:-webkit-autofill:focus,.t-native:-webkit-autofill:hover{border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}:host._disabled .t-native{color:var(--tui-text-03);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host._max-label .t-native,:host._min-label .t-native{opacity:0}:host[data-size='l'] .t-native{padding:1.25rem 1rem 0}:host[data-mode=onDark] .t-native{color:var(--tui-text-01-night)}:host[data-mode=onDark]._disabled .t-native{color:var(--tui-text-03-night)}.t-content{display:flex;align-items:center;height:var(--tui-height-m);padding:0 1rem;justify-content:space-between}:host[data-size='l'] .t-content{height:var(--tui-height-l);padding:0 1rem}.t-placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;font-size:.8125rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-l);line-height:var(--tui-height-l);box-sizing:border-box;pointer-events:none}.t-placeholder_raised{transform:translateY(-.625rem)}:host[data-size='m'] .t-placeholder_raised{font-size:.69rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .t-placeholder_raised,:host._invalid:not(._focused)._hovered .t-placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .t-placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .t-placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .t-placeholder,:host[data-size='l']._focused._label-outside .t-placeholder,:host[data-size='m']._focused._label-outside .t-placeholder{color:var(--tui-text-03)}:host[data-size='l'] .t-placeholder{font-size:.9375rem}:host[data-size='l'] .t-placeholder_raised{font-size:.8156rem}:host[data-size='l']._focused:not(._label-outside) .t-placeholder,:host[data-size='m']._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}:host[data-size='l'][data-mode=onDark]._focused:not(._label-outside) .t-placeholder,:host[data-size='m'][data-mode=onDark]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .t-placeholder,:host[data-size='l'][data-mode=onDark]._focused._label-outside .t-placeholder,:host[data-size='m'][data-mode=onDark]._focused._label-outside .t-placeholder{color:var(--tui-text-02-night)}:host._has-tooltip .t-placeholder{max-width:calc(100% - 1.75rem)}.t-value{visibility:hidden}.t-label{overflow:hidden;text-overflow:ellipsis}:host[data-size='l'] .t-label{padding-top:1.25rem}.t-secondary{color:var(--tui-text-01)}:host._disabled .t-secondary{color:var(--tui-text-03)}:host[data-mode=onDark]._disabled .t-secondary{color:var(--tui-text-03-night)}.t-tooltip{margin-left:.75rem}.t-slider{position:absolute;top:100%;left:0;right:0;border-top-left-radius:0;border-top-right-radius:0;margin:-.5625rem 0 0;color:transparent}:host._disabled .t-slider,:host._readonly .t-slider{pointer-events:none}"]
203
203
  }),
204
204
  __param(0, Optional()),
205
205
  __param(0, Self()),
@@ -214,4 +214,4 @@ var TuiInputSliderComponent = /** @class */ (function (_super) {
214
214
  return TuiInputSliderComponent;
215
215
  }(AbstractTuiInputSlider));
216
216
  export { TuiInputSliderComponent };
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9pbnB1dC1zbGlkZXIvIiwic291cmNlcyI6WyJpbnB1dC1zbGlkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsMkJBQTJCLEVBQzNCLGNBQWMsR0FHakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFlBQVksRUFDWix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLGdCQUFnQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTlELFdBQVc7QUFjWDtJQUNZLDJDQUE4QjtJQVV0QyxpQ0FJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUc1QyxhQUFzQyxFQUVoRCxjQUEwQyxFQUVoQyxZQUFrQyxFQUU1QyxVQUFrQjtRQWQvQixZQWdCSSxrQkFBTSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FDcEM7UUFUc0IsbUJBQWEsR0FBYixhQUFhLENBQXlCO1FBRWhELG9CQUFjLEdBQWQsY0FBYyxDQUE0QjtRQUVoQyxrQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFFNUMsZ0JBQVUsR0FBVixVQUFV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V0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFakIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QixXQUFBLFFBQVEsRUFBRSxDQUFBO1FBQ1YsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUV4QixXQUFBLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO1FBRW5DLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFFekIsV0FBQSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtPQXhCNUIsdUJBQXVCLENBeUxuQztJQUFELDhCQUFDO0NBQUEsQUF6TEQsQ0FDWSxzQkFBc0IsR0F3TGpDO1NBekxZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgZm9ybWF0TnVtYmVyLFxuICAgIEhJTlRfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBtYXNrZWRNb25leVZhbHVlSXNFbXB0eSxcbiAgICBtYXNrZWROdW1iZXJTdHJpbmdUb051bWJlcixcbiAgICBOdW1iZXJGb3JtYXRTZXR0aW5ncyxcbiAgICBUVUlfSElOVF9XQVRDSEVEX0NPTlRST0xMRVIsXG4gICAgVFVJX05VTUJFUl9GT1JNQVQsXG4gICAgVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFLFxuICAgIFR1aUhpbnRDb250cm9sbGVyRGlyZWN0aXZlLFxuICAgIFR1aU1vZGVEaXJlY3RpdmUsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RUdWlJbnB1dFNsaWRlcn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9hYnN0cmFjdCc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1zbGlkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1zbGlkZXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtc2xpZGVyLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICBISU5UX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRTbGlkZXJDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpSW5wdXRTbGlkZXI8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnZm9jdXNhYmxlRWxlbWVudCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c2FibGVFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzZWNvbmRhcnkgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpTW9kZURpcmVjdGl2ZSlcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGVEaXJlY3RpdmU6IFR1aU1vZGVEaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9ISU5UX1dBVENIRURfQ09OVFJPTExFUilcbiAgICAgICAgcmVhZG9ubHkgaGludENvbnRyb2xsZXI6IFR1aUhpbnRDb250cm9sbGVyRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9OVU1CRVJfRk9STUFUKVxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbnVtYmVyRm9ybWF0OiBOdW1iZXJGb3JtYXRTZXR0aW5ncyxcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UpXG4gICAgICAgIHJlYWRvbmx5IGFwcGVhcmFuY2U6IHN0cmluZyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmZvY3VzYWJsZUVsZW1lbnQgfHwgdGhpcy5jb21wdXRlZERpc2FibGVkXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDogdGhpcy5mb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9oYXMtdG9vbHRpcCcpXG4gICAgZ2V0IGhhc1Rvb2x0aXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuaGludENvbnRyb2xsZXIuY29udGVudCAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9taW4tbGFiZWwnKVxuICAgIGdldCBzaG93TWluTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb2N1c2VkICYmIHRoaXMudmFsdWUgPT09IHRoaXMubWluICYmICEhdGhpcy5taW5MYWJlbDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9tYXgtbGFiZWwnKVxuICAgIGdldCBzaG93TWF4TGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb2N1c2VkICYmIHRoaXMudmFsdWUgPT09IHRoaXMubWF4ICYmICEhdGhpcy5tYXhMYWJlbDtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkICYmIHRoaXMuaXNJbnB1dFZhbHVlTm90RmluaXNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuc2hvd01pbkxhYmVsICYmICF0aGlzLnNob3dNYXhMYWJlbDtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2FibGVFbGVtZW50ID8gdGhpcy5mb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBzZXQgaW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlRG93bigpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleURvd25BcnJvd1VwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnByb2Nlc3NTdGVwKHRydWUpO1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIG9uS2V5RG93bkFycm93RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcChmYWxzZSk7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gbWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIoXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkVmFsdWUsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaXNOYU4oaW5wdXRWYWx1ZSkgPyB0aGlzLm1pbiA6IHRoaXMudmFsdWVHdWFyZChpbnB1dFZhbHVlKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBvblZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9IHZhbHVlLnNsaWNlKC0xKVswXSA9PT0gJywnID8gJywnIDogJyc7XG5cbiAgICAgICAgaWYgKG1hc2tlZE1vbmV5VmFsdWVJc0VtcHR5KHZhbHVlKSB8fCBjYXBwZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIoY2FwcGVkKSArIHBvc3RmaXg7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNhcHBlZCk7XG4gICAgfVxuXG4gICAgb25TbGlkZXJWYWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy52YWx1ZUd1YXJkKHZhbHVlKSk7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzSW5wdXRWYWx1ZU5vdEZpbmlzaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pbnB1dFZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuYXRpdmVOdW1iZXJWYWx1ZSA9IG1hc2tlZE51bWJlclN0cmluZ1RvTnVtYmVyKFxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBuYXRpdmVOdW1iZXJWYWx1ZSA8IDBcbiAgICAgICAgICAgID8gbmF0aXZlTnVtYmVyVmFsdWUgPiB0aGlzLm1heFxuICAgICAgICAgICAgOiBuYXRpdmVOdW1iZXJWYWx1ZSA8IHRoaXMubWluO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N0ZXAoaW5jcmVtZW50OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZUd1YXJkKFxuICAgICAgICAgICAgaW5jcmVtZW50ID8gdGhpcy52YWx1ZSArIHRoaXMuc3RlcCA6IHRoaXMudmFsdWUgLSB0aGlzLnN0ZXAsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9pbnB1dC1zbGlkZXIvIiwic291cmNlcyI6WyJpbnB1dC1zbGlkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsMkJBQTJCLEVBQzNCLGNBQWMsR0FHakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFlBQVksRUFDWix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLGdCQUFnQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTlELFdBQVc7QUFjWDtJQUNZLDJDQUE4QjtJQVV0QyxpQ0FJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUc1QyxhQUFzQyxFQUVoRCxjQUEwQyxFQUVoQyxZQUFrQyxFQUU1QyxVQUFrQjtRQWQvQixZQWdCSSxrQkFBTSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FDcEM7UUFUc0IsbUJBQWEsR0FBYixhQUFhLENBQXlCO1FBRWhELG9CQUFjLEdBQWQsY0FBYyxDQUE0QjtRQUVoQyxrQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFFNUMsZ0JBQVUsR0FBVixVQUFVLENBQVE7UUFoQi9CLGVBQVMsR0FBRyxFQUFFLENBQUM7O0lBbUJmLENBQUM7Z0NBNUJRLHVCQUF1QjtJQThCaEMsc0JBQUksMkRBQXNCO2FBQTFCO1lBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCO2dCQUNsRCxDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztRQUM5QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRDQUFPO2FBQVg7WUFDSSxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4RCxDQUFDOzs7T0FBQTtJQUdELHNCQUFJLCtDQUFVO2FBQWQ7WUFDSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDM0QsQ0FBQzs7O09BQUE7SUFHRCxzQkFBSSxpREFBWTthQUFoQjtZQUNJLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2RSxDQUFDOzs7T0FBQTtJQUdELHNCQUFJLGlEQUFZO2FBQWhCO1lBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZFLENBQUM7OztPQUFBO0lBRUQsc0JBQUksa0RBQWE7YUFBakI7WUFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO2dCQUM5QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDMUI7WUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDL0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw4Q0FBUzthQUFiO1lBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3BELENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0NBQVU7YUFBZDtZQUNJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xGLENBQUM7YUFFRCxVQUFlLEtBQWE7WUFDeEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNyRDtRQUNMLENBQUM7OztPQU5BO0lBUUQsNkNBQVcsR0FBWDtRQUNJLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN6RDtJQUNMLENBQUM7SUFFRCxrREFBZ0IsR0FBaEIsVUFBaUIsS0FBb0I7UUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFDLENBQUM7SUFFRCxvREFBa0IsR0FBbEIsVUFBbUIsS0FBb0I7UUFDbkMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFDLENBQUM7SUFFRCwyQ0FBUyxHQUFULFVBQVUsT0FBZ0I7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1QixJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU87U0FDVjtRQUVELElBQU0sVUFBVSxHQUFHLDBCQUEwQixDQUN6QyxJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUN0QyxDQUFDO1FBQ0YsSUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFDLENBQUM7SUFFRCx5Q0FBTyxHQUFQLFVBQVEsS0FBYTtRQUNqQixJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXRELElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNuRCxPQUFPO1NBQ1Y7UUFFRCxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUVyRCxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCwrQ0FBYSxHQUFiLFVBQWMsS0FBYTtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDMUMsQ0FBQztJQUVTLGtEQUFnQixHQUExQjtRQUNJLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELHNCQUFZLG1EQUFjO2FBQTFCO1lBQ0ksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFZLDREQUF1QjthQUFuQztZQUNJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxJQUFNLGlCQUFpQixHQUFHLDBCQUEwQixDQUNoRCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQ3RDLENBQUM7WUFFRixPQUFPLGlCQUFpQixHQUFHLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsR0FBRztnQkFDOUIsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDdkMsQ0FBQzs7O09BQUE7SUFFTyw2Q0FBVyxHQUFuQixVQUFvQixTQUFrQjtRQUNsQyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUN6QixTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUM5RCxDQUFDO1FBRUYsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVPLDhDQUFZLEdBQXBCLFVBQXFCLEtBQWE7UUFDOUIsT0FBTyxZQUFZLENBQ2YsS0FBSyxFQUNMLElBQUksRUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUN0QyxDQUFDO0lBQ04sQ0FBQzs7O2dCQXpLWSxTQUFTLHVCQUhqQixRQUFRLFlBQ1IsSUFBSSxZQUNKLE1BQU0sU0FBQyxTQUFTO2dCQUU2QixpQkFBaUIsdUJBQTlELE1BQU0sU0FBQyxpQkFBaUI7Z0JBR1MsZ0JBQWdCLHVCQUZqRCxRQUFRLFlBQ1IsTUFBTSxTQUFDLGdCQUFnQjtnQkFHQywwQkFBMEIsdUJBRGxELE1BQU0sU0FBQywyQkFBMkI7Z0RBRWxDLE1BQU0sU0FBQyxpQkFBaUI7NkNBRXhCLE1BQU0sU0FBQyx3QkFBd0I7O0lBbkJwQztRQURDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztxRUFDbUM7SUFJakU7UUFGQyxLQUFLLEVBQUU7UUFDUCxjQUFjLEVBQUU7OERBQ0Y7SUFnQ2Y7UUFEQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7NkRBR2pDO0lBR0Q7UUFEQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7K0RBRy9CO0lBR0Q7UUFEQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7K0RBRy9CO0lBckRRLHVCQUF1QjtRQWJuQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLGc2RkFBMkM7WUFFM0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSwyQkFBMkI7b0JBQ3BDLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLHlCQUF1QixFQUF2QixDQUF1QixDQUFDO2lCQUN6RDtnQkFDRCx3QkFBd0I7YUFDM0I7O1NBQ0osQ0FBQztRQWFPLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLElBQUksRUFBRSxDQUFBO1FBQ04sV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFakIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QixXQUFBLFFBQVEsRUFBRSxDQUFBO1FBQ1YsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUV4QixXQUFBLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO1FBRW5DLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFFekIsV0FBQSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtPQXhCNUIsdUJBQXVCLENBeUxuQztJQUFELDhCQUFDO0NBQUEsQUF6TEQsQ0FDWSxzQkFBc0IsR0F3TGpDO1NBekxZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgaXNOYXRpdmVGb2N1c2VkLFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgZm9ybWF0TnVtYmVyLFxuICAgIEhJTlRfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBtYXNrZWRNb25leVZhbHVlSXNFbXB0eSxcbiAgICBtYXNrZWROdW1iZXJTdHJpbmdUb051bWJlcixcbiAgICBOdW1iZXJGb3JtYXRTZXR0aW5ncyxcbiAgICBUVUlfSElOVF9XQVRDSEVEX0NPTlRST0xMRVIsXG4gICAgVFVJX05VTUJFUl9GT1JNQVQsXG4gICAgVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFLFxuICAgIFR1aUhpbnRDb250cm9sbGVyRGlyZWN0aXZlLFxuICAgIFR1aU1vZGVEaXJlY3RpdmUsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RUdWlJbnB1dFNsaWRlcn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9hYnN0cmFjdCc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1zbGlkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1zbGlkZXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtc2xpZGVyLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICBISU5UX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRTbGlkZXJDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpSW5wdXRTbGlkZXI8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnZm9jdXNhYmxlRWxlbWVudCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c2FibGVFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzZWNvbmRhcnkgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpTW9kZURpcmVjdGl2ZSlcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGVEaXJlY3RpdmU6IFR1aU1vZGVEaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9ISU5UX1dBVENIRURfQ09OVFJPTExFUilcbiAgICAgICAgcmVhZG9ubHkgaGludENvbnRyb2xsZXI6IFR1aUhpbnRDb250cm9sbGVyRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9OVU1CRVJfRk9STUFUKVxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbnVtYmVyRm9ybWF0OiBOdW1iZXJGb3JtYXRTZXR0aW5ncyxcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UpXG4gICAgICAgIHJlYWRvbmx5IGFwcGVhcmFuY2U6IHN0cmluZyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmZvY3VzYWJsZUVsZW1lbnQgfHwgdGhpcy5jb21wdXRlZERpc2FibGVkXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDogdGhpcy5mb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9oYXMtdG9vbHRpcCcpXG4gICAgZ2V0IGhhc1Rvb2x0aXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuaGludENvbnRyb2xsZXIuY29udGVudCAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9taW4tbGFiZWwnKVxuICAgIGdldCBzaG93TWluTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb2N1c2VkICYmIHRoaXMudmFsdWUgPT09IHRoaXMubWluICYmICEhdGhpcy5taW5MYWJlbDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9tYXgtbGFiZWwnKVxuICAgIGdldCBzaG93TWF4TGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5mb2N1c2VkICYmIHRoaXMudmFsdWUgPT09IHRoaXMubWF4ICYmICEhdGhpcy5tYXhMYWJlbDtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkICYmIHRoaXMuaXNJbnB1dFZhbHVlTm90RmluaXNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuc2hvd01pbkxhYmVsICYmICF0aGlzLnNob3dNYXhMYWJlbDtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2FibGVFbGVtZW50ID8gdGhpcy5mb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBzZXQgaW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlRG93bigpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleURvd25BcnJvd1VwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnByb2Nlc3NTdGVwKHRydWUpO1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIG9uS2V5RG93bkFycm93RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RlcChmYWxzZSk7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gbWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIoXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkVmFsdWUsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaXNOYU4oaW5wdXRWYWx1ZSkgPyB0aGlzLm1pbiA6IHRoaXMudmFsdWVHdWFyZChpbnB1dFZhbHVlKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBvblZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9IHZhbHVlLnNsaWNlKC0xKVswXSA9PT0gJywnID8gJywnIDogJyc7XG5cbiAgICAgICAgaWYgKG1hc2tlZE1vbmV5VmFsdWVJc0VtcHR5KHZhbHVlKSB8fCBjYXBwZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIoY2FwcGVkKSArIHBvc3RmaXg7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNhcHBlZCk7XG4gICAgfVxuXG4gICAgb25TbGlkZXJWYWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy52YWx1ZUd1YXJkKHZhbHVlKSk7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzSW5wdXRWYWx1ZU5vdEZpbmlzaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pbnB1dFZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuYXRpdmVOdW1iZXJWYWx1ZSA9IG1hc2tlZE51bWJlclN0cmluZ1RvTnVtYmVyKFxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBuYXRpdmVOdW1iZXJWYWx1ZSA8IDBcbiAgICAgICAgICAgID8gbmF0aXZlTnVtYmVyVmFsdWUgPiB0aGlzLm1heFxuICAgICAgICAgICAgOiBuYXRpdmVOdW1iZXJWYWx1ZSA8IHRoaXMubWluO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N0ZXAoaW5jcmVtZW50OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZUd1YXJkKFxuICAgICAgICAgICAgaW5jcmVtZW50ID8gdGhpcy52YWx1ZSArIHRoaXMuc3RlcCA6IHRoaXMudmFsdWUgLSB0aGlzLnN0ZXAsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==