master-control 0.3.28 → 0.3.30

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.
@@ -1,15 +1,89 @@
1
- import { Directive, HostListener, Input, } from '@angular/core';
1
+ import { Directive, HostListener, Input, Inject, } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
2
3
  import * as i0 from "@angular/core";
3
4
  export class CustomizedTooltipDirective {
4
5
  el;
5
6
  vcr;
7
+ document;
6
8
  template;
7
9
  tooltipElement = null;
8
10
  showTimeout = null;
9
11
  hideTimeout = null;
10
- constructor(el, vcr) {
12
+ static styleInjected = false;
13
+ constructor(el, vcr, document) {
11
14
  this.el = el;
12
15
  this.vcr = vcr;
16
+ this.document = document;
17
+ this.injectStyles();
18
+ }
19
+ injectStyles() {
20
+ // Only inject styles once per application
21
+ if (CustomizedTooltipDirective.styleInjected) {
22
+ return;
23
+ }
24
+ const style = this.document.createElement('style');
25
+ style.id = 'tooltip-styles';
26
+ style.textContent = `
27
+ .tooltip-container {
28
+ position: relative;
29
+ display: inline-block;
30
+ }
31
+
32
+ .tooltip-text {
33
+ max-width: 328px !important;
34
+ min-height: 100px;
35
+ background-color: white;
36
+ border: 1px solid #ffaa013d !important;
37
+ color: #444444 !important;
38
+ text-align: left;
39
+ border-radius: 12px;
40
+ padding: 12px;
41
+ font-size: 12px;
42
+ position: absolute;
43
+ z-index: 1;
44
+ top: 100%;
45
+ left: 50%;
46
+ transform: translateX(-10%);
47
+ transition: opacity 0.3s;
48
+ box-shadow: 0px 2px 15px 2px #e3e6ec99;
49
+ letter-spacing: 0px;
50
+ line-height: 150%;
51
+ }
52
+ .tooltip-text, p {
53
+ font-weight: 400 !important;
54
+ }
55
+
56
+ .tooltip-container:hover .tooltip-text {
57
+ visibility: visible;
58
+ opacity: 1;
59
+ }
60
+
61
+ .tooltip-text::after {
62
+ content: "";
63
+ position: absolute;
64
+ bottom: 100%;
65
+ left: var(--arrow-left-position, 10%);
66
+ transform: translateX(-50%);
67
+ border-width: 10px;
68
+ border-style: solid;
69
+ border-color: transparent transparent #ffaa013d transparent;
70
+ z-index: 2;
71
+ }
72
+
73
+ .tooltip-text::before {
74
+ content: "";
75
+ position: absolute;
76
+ bottom: calc(100% - 0px);
77
+ left: var(--arrow-left-position, 10%);
78
+ transform: translateX(-50%);
79
+ border-width: 9px;
80
+ border-style: solid;
81
+ border-color: transparent transparent #fff transparent;
82
+ z-index: 3;
83
+ }
84
+ `;
85
+ this.document.head.appendChild(style);
86
+ CustomizedTooltipDirective.styleInjected = true;
13
87
  }
14
88
  showTooltip() {
15
89
  // Clear any existing hide timeout
@@ -25,7 +99,7 @@ export class CustomizedTooltipDirective {
25
99
  this.showTimeout = setTimeout(() => {
26
100
  if (!this.tooltipElement && this.template) {
27
101
  // Create tooltip container
28
- this.tooltipElement = document.createElement('div');
102
+ this.tooltipElement = this.document.createElement('div');
29
103
  this.tooltipElement.className = 'tooltip-text';
30
104
  // Add pointer-events none to prevent mouse interference
31
105
  this.tooltipElement.style.pointerEvents = 'none';
@@ -36,7 +110,7 @@ export class CustomizedTooltipDirective {
36
110
  this.tooltipElement?.appendChild(node);
37
111
  });
38
112
  // Position the tooltip
39
- document.body.appendChild(this.tooltipElement);
113
+ this.document.body.appendChild(this.tooltipElement);
40
114
  const rect = this.el.nativeElement.getBoundingClientRect();
41
115
  this.tooltipElement.style.position = 'absolute';
42
116
  this.tooltipElement.style.top = (rect.bottom + 10) + 'px';
@@ -75,7 +149,7 @@ export class CustomizedTooltipDirective {
75
149
  // Small delay before hiding to prevent flickering
76
150
  this.hideTimeout = setTimeout(() => {
77
151
  if (this.tooltipElement) {
78
- document.body.removeChild(this.tooltipElement);
152
+ this.document.body.removeChild(this.tooltipElement);
79
153
  this.tooltipElement = null;
80
154
  this.vcr.clear();
81
155
  }
@@ -91,11 +165,11 @@ export class CustomizedTooltipDirective {
91
165
  }
92
166
  // Clean up tooltip
93
167
  if (this.tooltipElement) {
94
- document.body.removeChild(this.tooltipElement);
168
+ this.document.body.removeChild(this.tooltipElement);
95
169
  this.tooltipElement = null;
96
170
  }
97
171
  }
98
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomizedTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
172
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomizedTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
99
173
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CustomizedTooltipDirective, isStandalone: true, selector: "[appTooltipTemplate]", inputs: { template: ["appTooltipTemplate", "template"] }, host: { listeners: { "mouseenter": "showTooltip()", "mouseleave": "hideTooltip()" } }, ngImport: i0 });
100
174
  }
101
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomizedTooltipDirective, decorators: [{
@@ -104,7 +178,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104
178
  selector: '[appTooltipTemplate]',
105
179
  standalone: true,
106
180
  }]
107
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }], propDecorators: { template: [{
181
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: Document, decorators: [{
182
+ type: Inject,
183
+ args: [DOCUMENT]
184
+ }] }], propDecorators: { template: [{
108
185
  type: Input,
109
186
  args: ['appTooltipTemplate']
110
187
  }], showTooltip: [{
@@ -114,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
114
191
  type: HostListener,
115
192
  args: ['mouseleave']
116
193
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXplZC50b29sdGlwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvZGlyZWN0aXZlcy9jdXN0b21pemVkLnRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQzs7QUFNdkIsTUFBTSxPQUFPLDBCQUEwQjtJQU9qQjtJQUF3QjtJQU5mLFFBQVEsQ0FBb0I7SUFFakQsY0FBYyxHQUF1QixJQUFJLENBQUM7SUFDMUMsV0FBVyxHQUFRLElBQUksQ0FBQztJQUN4QixXQUFXLEdBQVEsSUFBSSxDQUFDO0lBRWhDLFlBQW9CLEVBQWMsRUFBVSxHQUFxQjtRQUE3QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBa0I7SUFBRyxDQUFDO0lBR3JFLFdBQVc7UUFDVCxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDO1FBRUQsa0RBQWtEO1FBQ2xELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLE9BQU87UUFDVCxDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzFDLDJCQUEyQjtnQkFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7Z0JBRS9DLHdEQUF3RDtnQkFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztnQkFFakQsOEJBQThCO2dCQUM5QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEUsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM3QixZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFO29CQUMxQyxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsdUJBQXVCO2dCQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQy9DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFFeEMscUVBQXFFO2dCQUNyRSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7b0JBQ3pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUN4QixzRUFBc0U7d0JBQ3RFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDOUQsSUFBSSxXQUFtQixDQUFDO3dCQUV4QixJQUFJLFVBQVUsRUFBRSxDQUFDOzRCQUNmLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDOzRCQUNuRCxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ25ELENBQUM7NkJBQU0sQ0FBQzs0QkFDTiw0Q0FBNEM7NEJBQzVDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDN0MsQ0FBQzt3QkFFRCxzREFBc0Q7d0JBQ3RELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQzt3QkFDaEUsTUFBTSxhQUFhLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7d0JBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLGFBQWEsSUFBSSxDQUFDLENBQUM7b0JBQ3ZGLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUdELFdBQVc7UUFDVCxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDO1FBRUQsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELFdBQVc7UUFDVCxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsbUJBQW1CO1FBQ25CLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzt3R0F4R1UsMEJBQTBCOzRGQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhHQUU4QixRQUFRO3NCQUFwQyxLQUFLO3VCQUFDLG9CQUFvQjtnQkFTM0IsV0FBVztzQkFEWCxZQUFZO3VCQUFDLFlBQVk7Z0JBaUV6QixXQUFXO3NCQURWLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBUb29sdGlwVGVtcGxhdGVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9taXplZFRvb2x0aXBEaXJlY3RpdmUge1xyXG4gIEBJbnB1dCgnYXBwVG9vbHRpcFRlbXBsYXRlJykgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIHRvb2x0aXBFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgc2hvd1RpbWVvdXQ6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBoaWRlVGltZW91dDogYW55ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSB2Y3I6IFZpZXdDb250YWluZXJSZWYpIHt9XHJcblxyXG4gQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXHJcbiAgc2hvd1Rvb2x0aXAoKSB7XHJcbiAgICAvLyBDbGVhciBhbnkgZXhpc3RpbmcgaGlkZSB0aW1lb3V0XHJcbiAgICBpZiAodGhpcy5oaWRlVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZW91dCk7XHJcbiAgICAgIHRoaXMuaGlkZVRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHRvb2x0aXAgYWxyZWFkeSBleGlzdHMsIGRvbid0IGNyZWF0ZSBhbm90aGVyXHJcbiAgICBpZiAodGhpcy50b29sdGlwRWxlbWVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU21hbGwgZGVsYXkgdG8gcHJldmVudCBmbGlja2VyaW5nXHJcbiAgICB0aGlzLnNob3dUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy50b29sdGlwRWxlbWVudCAmJiB0aGlzLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgLy8gQ3JlYXRlIHRvb2x0aXAgY29udGFpbmVyXHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQuY2xhc3NOYW1lID0gJ3Rvb2x0aXAtdGV4dCc7XHJcblxyXG4gICAgICAgIC8vIEFkZCBwb2ludGVyLWV2ZW50cyBub25lIHRvIHByZXZlbnQgbW91c2UgaW50ZXJmZXJlbmNlXHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xyXG5cclxuICAgICAgICAvLyBSZW5kZXIgdGhlIHRlbXBsYXRlIGNvbnRlbnRcclxuICAgICAgICBjb25zdCBlbWJlZGRlZFZpZXcgPSB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk7XHJcbiAgICAgICAgZW1iZWRkZWRWaWV3LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBlbWJlZGRlZFZpZXcucm9vdE5vZGVzLmZvckVhY2goKG5vZGU6YW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50Py5hcHBlbmRDaGlsZChub2RlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gUG9zaXRpb24gdGhlIHRvb2x0aXBcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcEVsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5zdHlsZS50b3AgPSAocmVjdC5ib3R0b20gKyAxMCkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQuc3R5bGUubGVmdCA9IChyZWN0LmxlZnQgLSAxMCkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcclxuICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAnMSc7XHJcblxyXG4gICAgICAgIC8vIFdhaXQgYSBmcmFtZSBmb3IgdGhlIHRvb2x0aXAgdG8gYmUgZnVsbHkgcmVuZGVyZWQgd2l0aCBpdHMgY29udGVudFxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50b29sdGlwRWxlbWVudCkge1xyXG4gICAgICAgICAgICAvLyBGaW5kIHRoZSBpbWFnZSBlbGVtZW50IGluc2lkZSB0aGUgc3BhbiB0byBnZXQgaXRzIGFjdHVhbCBkaW1lbnNpb25zXHJcbiAgICAgICAgICAgIGNvbnN0IGltZ0VsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW1nJyk7XHJcbiAgICAgICAgICAgIGxldCBpY29uQ2VudGVyWDogbnVtYmVyO1xyXG5cclxuICAgICAgICAgICAgaWYgKGltZ0VsZW1lbnQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbWdSZWN0ID0gaW1nRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgICBpY29uQ2VudGVyWCA9IGltZ1JlY3QubGVmdCArIChpbWdSZWN0LndpZHRoIC8gMik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gc3BhbiBjZW50ZXIgaWYgbm8gaW1hZ2UgZm91bmRcclxuICAgICAgICAgICAgICBpY29uQ2VudGVyWCA9IHJlY3QubGVmdCArIChyZWN0LndpZHRoIC8gMik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRvb2x0aXAgcG9zaXRpb24gYWZ0ZXIgaXQncyByZW5kZXJlZFxyXG4gICAgICAgICAgICBjb25zdCB0b29sdGlwUmVjdCA9IHRoaXMudG9vbHRpcEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFycm93UG9zaXRpb24gPSBpY29uQ2VudGVyWCAtIHRvb2x0aXBSZWN0LmxlZnQ7XHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXJyb3ctbGVmdC1wb3NpdGlvbicsIGAke2Fycm93UG9zaXRpb259cHhgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxyXG4gIGhpZGVUb29sdGlwKCkge1xyXG4gICAgLy8gQ2xlYXIgYW55IGV4aXN0aW5nIHNob3cgdGltZW91dFxyXG4gICAgaWYgKHRoaXMuc2hvd1RpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVvdXQpO1xyXG4gICAgICB0aGlzLnNob3dUaW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTbWFsbCBkZWxheSBiZWZvcmUgaGlkaW5nIHRvIHByZXZlbnQgZmxpY2tlcmluZ1xyXG4gICAgdGhpcy5oaWRlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50b29sdGlwRWxlbWVudCkge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwRWxlbWVudCk7XHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy52Y3IuY2xlYXIoKTtcclxuICAgICAgfVxyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCB0aW1lb3V0c1xyXG4gICAgaWYgKHRoaXMuc2hvd1RpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVvdXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaGlkZVRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVvdXQpO1xyXG4gICAgfVxyXG4gICAgLy8gQ2xlYW4gdXAgdG9vbHRpcFxyXG4gICAgaWYgKHRoaXMudG9vbHRpcEVsZW1lbnQpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXBFbGVtZW50KTtcclxuICAgICAgdGhpcy50b29sdGlwRWxlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXplZC50b29sdGlwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvZGlyZWN0aXZlcy9jdXN0b21pemVkLnRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQU0zQyxNQUFNLE9BQU8sMEJBQTBCO0lBUzNCO0lBQ0E7SUFDa0I7SUFWQyxRQUFRLENBQW9CO0lBRWpELGNBQWMsR0FBdUIsSUFBSSxDQUFDO0lBQzFDLFdBQVcsR0FBUSxJQUFJLENBQUM7SUFDeEIsV0FBVyxHQUFRLElBQUksQ0FBQztJQUN4QixNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUVyQyxZQUNVLEVBQWMsRUFDZCxHQUFxQixFQUNILFFBQWtCO1FBRnBDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNILGFBQVEsR0FBUixRQUFRLENBQVU7UUFFNUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLDBDQUEwQztRQUMxQyxJQUFJLDBCQUEwQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsS0FBSyxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQztRQUM1QixLQUFLLENBQUMsV0FBVyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM7WUFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsbUJBQW1CO1FBQ25CLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7d0dBdkxVLDBCQUEwQiw0RUFXM0IsUUFBUTs0RkFYUCwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFZSSxNQUFNOzJCQUFDLFFBQVE7eUNBVlcsUUFBUTtzQkFBcEMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBd0YzQixXQUFXO3NCQURWLFlBQVk7dUJBQUMsWUFBWTtnQkFpRTFCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBUb29sdGlwVGVtcGxhdGVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9taXplZFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnYXBwVG9vbHRpcFRlbXBsYXRlJykgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIHRvb2x0aXBFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgc2hvd1RpbWVvdXQ6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBoaWRlVGltZW91dDogYW55ID0gbnVsbDtcclxuICBwcml2YXRlIHN0YXRpYyBzdHlsZUluamVjdGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgdmNyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnRcclxuICApIHtcclxuICAgIHRoaXMuaW5qZWN0U3R5bGVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluamVjdFN0eWxlcygpIHtcclxuICAgIC8vIE9ubHkgaW5qZWN0IHN0eWxlcyBvbmNlIHBlciBhcHBsaWNhdGlvblxyXG4gICAgaWYgKEN1c3RvbWl6ZWRUb29sdGlwRGlyZWN0aXZlLnN0eWxlSW5qZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgc3R5bGUuaWQgPSAndG9vbHRpcC1zdHlsZXMnO1xyXG4gICAgc3R5bGUudGV4dENvbnRlbnQgPSBgXHJcbiAgICAgLnRvb2x0aXAtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4udG9vbHRpcC10ZXh0IHtcclxuICBtYXgtd2lkdGg6IDMyOHB4ICFpbXBvcnRhbnQ7XHJcbiAgbWluLWhlaWdodDogMTAwcHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2ZmYWEwMTNkICFpbXBvcnRhbnQ7XHJcbiAgY29sb3I6ICM0NDQ0NDQgIWltcG9ydGFudDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XHJcbiAgcGFkZGluZzogMTJweDtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgdG9wOiAxMDAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwJSk7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xyXG4gIGJveC1zaGFkb3c6IDBweCAycHggMTVweCAycHggI2UzZTZlYzk5O1xyXG4gIGxldHRlci1zcGFjaW5nOiAwcHg7XHJcbiAgbGluZS1oZWlnaHQ6IDE1MCU7XHJcbn1cclxuLnRvb2x0aXAtdGV4dCwgcCB7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udG9vbHRpcC1jb250YWluZXI6aG92ZXIgLnRvb2x0aXAtdGV4dCB7XHJcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICBvcGFjaXR5OiAxO1xyXG59XHJcblxyXG4udG9vbHRpcC10ZXh0OjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAxMDAlO1xyXG4gIGxlZnQ6IHZhcigtLWFycm93LWxlZnQtcG9zaXRpb24sIDEwJSk7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gIGJvcmRlci13aWR0aDogMTBweDtcclxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmYWEwMTNkIHRyYW5zcGFyZW50O1xyXG4gIHotaW5kZXg6IDI7XHJcbn1cclxuXHJcbi50b29sdGlwLXRleHQ6OmJlZm9yZSB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiBjYWxjKDEwMCUgLSAwcHgpO1xyXG4gIGxlZnQ6IHZhcigtLWFycm93LWxlZnQtcG9zaXRpb24sIDEwJSk7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gIGJvcmRlci13aWR0aDogOXB4O1xyXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZmZmIHRyYW5zcGFyZW50O1xyXG4gIHotaW5kZXg6IDM7XHJcbn1cclxuICAgIGA7XHJcblxyXG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcclxuICAgIEN1c3RvbWl6ZWRUb29sdGlwRGlyZWN0aXZlLnN0eWxlSW5qZWN0ZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXHJcbiAgc2hvd1Rvb2x0aXAoKSB7XHJcbiAgICAvLyBDbGVhciBhbnkgZXhpc3RpbmcgaGlkZSB0aW1lb3V0XHJcbiAgICBpZiAodGhpcy5oaWRlVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZW91dCk7XHJcbiAgICAgIHRoaXMuaGlkZVRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHRvb2x0aXAgYWxyZWFkeSBleGlzdHMsIGRvbid0IGNyZWF0ZSBhbm90aGVyXHJcbiAgICBpZiAodGhpcy50b29sdGlwRWxlbWVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU21hbGwgZGVsYXkgdG8gcHJldmVudCBmbGlja2VyaW5nXHJcbiAgICB0aGlzLnNob3dUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy50b29sdGlwRWxlbWVudCAmJiB0aGlzLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgLy8gQ3JlYXRlIHRvb2x0aXAgY29udGFpbmVyXHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5jbGFzc05hbWUgPSAndG9vbHRpcC10ZXh0JztcclxuXHJcbiAgICAgICAgLy8gQWRkIHBvaW50ZXItZXZlbnRzIG5vbmUgdG8gcHJldmVudCBtb3VzZSBpbnRlcmZlcmVuY2VcclxuICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XHJcblxyXG4gICAgICAgIC8vIFJlbmRlciB0aGUgdGVtcGxhdGUgY29udGVudFxyXG4gICAgICAgIGNvbnN0IGVtYmVkZGVkVmlldyA9IHRoaXMudmNyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlKTtcclxuICAgICAgICBlbWJlZGRlZFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGVtYmVkZGVkVmlldy5yb290Tm9kZXMuZm9yRWFjaCgobm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50Py5hcHBlbmRDaGlsZChub2RlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gUG9zaXRpb24gdGhlIHRvb2x0aXBcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwRWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50LnN0eWxlLnRvcCA9IChyZWN0LmJvdHRvbSArIDEwKSArICdweCc7XHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5zdHlsZS5sZWZ0ID0gKHJlY3QubGVmdCAtIDEwKSArICdweCc7XHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICcxJztcclxuXHJcbiAgICAgICAgLy8gV2FpdCBhIGZyYW1lIGZvciB0aGUgdG9vbHRpcCB0byBiZSBmdWxseSByZW5kZXJlZCB3aXRoIGl0cyBjb250ZW50XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnRvb2x0aXBFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGltYWdlIGVsZW1lbnQgaW5zaWRlIHRoZSBzcGFuIHRvIGdldCBpdHMgYWN0dWFsIGRpbWVuc2lvbnNcclxuICAgICAgICAgICAgY29uc3QgaW1nRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbWcnKTtcclxuICAgICAgICAgICAgbGV0IGljb25DZW50ZXJYOiBudW1iZXI7XHJcblxyXG4gICAgICAgICAgICBpZiAoaW1nRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGltZ1JlY3QgPSBpbWdFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICAgIGljb25DZW50ZXJYID0gaW1nUmVjdC5sZWZ0ICsgKGltZ1JlY3Qud2lkdGggLyAyKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBzcGFuIGNlbnRlciBpZiBubyBpbWFnZSBmb3VuZFxyXG4gICAgICAgICAgICAgIGljb25DZW50ZXJYID0gcmVjdC5sZWZ0ICsgKHJlY3Qud2lkdGggLyAyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdG9vbHRpcCBwb3NpdGlvbiBhZnRlciBpdCdzIHJlbmRlcmVkXHJcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXBSZWN0ID0gdGhpcy50b29sdGlwRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgY29uc3QgYXJyb3dQb3NpdGlvbiA9IGljb25DZW50ZXJYIC0gdG9vbHRpcFJlY3QubGVmdDtcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1hcnJvdy1sZWZ0LXBvc2l0aW9uJywgYCR7YXJyb3dQb3NpdGlvbn1weGApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXHJcbiAgaGlkZVRvb2x0aXAoKSB7XHJcbiAgICAvLyBDbGVhciBhbnkgZXhpc3Rpbmcgc2hvdyB0aW1lb3V0XHJcbiAgICBpZiAodGhpcy5zaG93VGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dCk7XHJcbiAgICAgIHRoaXMuc2hvd1RpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNtYWxsIGRlbGF5IGJlZm9yZSBoaWRpbmcgdG8gcHJldmVudCBmbGlja2VyaW5nXHJcbiAgICB0aGlzLmhpZGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBFbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMudG9vbHRpcEVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmNyLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4gdXAgdGltZW91dHNcclxuICAgIGlmICh0aGlzLnNob3dUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lb3V0KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhpZGVUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lb3V0KTtcclxuICAgIH1cclxuICAgIC8vIENsZWFuIHVwIHRvb2x0aXBcclxuICAgIGlmICh0aGlzLnRvb2x0aXBFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXBFbGVtZW50KTtcclxuICAgICAgdGhpcy50b29sdGlwRWxlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==