@datarailsshared/datarailsshared 1.6.71 → 1.6.75
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.
- package/datarailsshared-datarailsshared-1.6.75.tgz +0 -0
- package/esm2022/lib/dr-gallery/dr-gallery.component.mjs +155 -49
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +2 -1
- package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +8 -4
- package/fesm2022/datarailsshared-datarailsshared.mjs +220 -108
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/dr-gallery/dr-gallery.component.d.ts +17 -7
- package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +1 -1
- package/package.json +1 -1
- package/datarailsshared-datarailsshared-1.6.71.tgz +0 -0
|
Binary file
|
|
@@ -1,28 +1,45 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Input, TemplateRef, } from '@angular/core';
|
|
3
|
-
import { take as _take, takeRight as _takeRight } from 'lodash';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, Input, QueryList, TemplateRef, ViewChild, ViewChildren, } from '@angular/core';
|
|
4
3
|
import { DrInputsModule } from '../dr-inputs/dr-inputs.module';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
import * as i1 from "@angular/common";
|
|
7
6
|
import * as i2 from "../dr-inputs/button/button.component";
|
|
8
|
-
|
|
7
|
+
const _c0 = ["carouselContainer"];
|
|
8
|
+
const _c1 = ["carouselItem"];
|
|
9
|
+
function DrGalleryComponent_dr_button_0_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵelementStart(0, "dr-button", 5);
|
|
12
|
+
i0.ɵɵlistener("click", function DrGalleryComponent_dr_button_0_Template_dr_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.prev()); });
|
|
13
|
+
i0.ɵɵelementEnd();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
i0.ɵɵproperty("icon", "dr-icon-arrow-left");
|
|
16
|
+
} }
|
|
17
|
+
function DrGalleryComponent_div_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
9
18
|
i0.ɵɵelementContainer(0);
|
|
10
19
|
} }
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
i0.ɵɵ
|
|
20
|
+
const _c2 = function (a0) { return { "dr-gallery-item_active": a0 }; };
|
|
21
|
+
const _c3 = function () { return {}; };
|
|
22
|
+
const _c4 = function (a0) { return { $implicit: a0 }; };
|
|
23
|
+
function DrGalleryComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelementStart(0, "div", 6, 7);
|
|
25
|
+
i0.ɵɵtemplate(2, DrGalleryComponent_div_4_ng_container_2_Template, 1, 0, "ng-container", 8);
|
|
16
26
|
i0.ɵɵelementEnd();
|
|
17
27
|
} if (rf & 2) {
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
i0.ɵɵ
|
|
22
|
-
i0.ɵɵ
|
|
23
|
-
i0.ɵɵ
|
|
24
|
-
i0.ɵɵ
|
|
25
|
-
|
|
28
|
+
const item_r6 = ctx.$implicit;
|
|
29
|
+
const i_r7 = ctx.index;
|
|
30
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
31
|
+
i0.ɵɵstyleProp("transition", ctx_r2.transition);
|
|
32
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(6, _c2, ctx_r2.centerIndex === i_r7))("ngStyle", ctx_r2.modeType === "loop" ? ctx_r2.getStyle() : i0.ɵɵpureFunction0(8, _c3));
|
|
33
|
+
i0.ɵɵadvance(2);
|
|
34
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.template)("ngTemplateOutletContext", i0.ɵɵpureFunction1(9, _c4, item_r6));
|
|
35
|
+
} }
|
|
36
|
+
function DrGalleryComponent_dr_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
38
|
+
i0.ɵɵelementStart(0, "dr-button", 9);
|
|
39
|
+
i0.ɵɵlistener("click", function DrGalleryComponent_dr_button_5_Template_dr_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.next()); });
|
|
40
|
+
i0.ɵɵelementEnd();
|
|
41
|
+
} if (rf & 2) {
|
|
42
|
+
i0.ɵɵproperty("iconSize", "24px")("icon", "dr-icon-arrow-right");
|
|
26
43
|
} }
|
|
27
44
|
export class DrGalleryComponent {
|
|
28
45
|
set items(value) {
|
|
@@ -47,25 +64,57 @@ export class DrGalleryComponent {
|
|
|
47
64
|
get centerIndex() {
|
|
48
65
|
return this.itemsCount > 1 && this.itemsCount % 2 !== 0 ? this.activeIndex + Math.floor(this.itemsCount / 2) : null;
|
|
49
66
|
}
|
|
50
|
-
ngOnChanges() {
|
|
51
|
-
this.activeIndex = this.itemsCount;
|
|
52
|
-
this.initializeCarousel();
|
|
53
|
-
this.updateTransform();
|
|
54
|
-
}
|
|
55
67
|
constructor(cdr) {
|
|
56
68
|
this.cdr = cdr;
|
|
57
69
|
this._items = [];
|
|
58
70
|
this._itemsCount = 3;
|
|
59
71
|
this.defaultTransition = '250ms ease-in-out';
|
|
60
72
|
this.noTransition = '0ms';
|
|
73
|
+
this.modeType = 'loop';
|
|
74
|
+
this.isOutsideBtns = false;
|
|
61
75
|
this.activeIndex = 0;
|
|
62
76
|
this.carouselItems = [];
|
|
63
|
-
this.transform =
|
|
77
|
+
this.transform = 'translateX(0%)';
|
|
64
78
|
this.transition = this.defaultTransition;
|
|
79
|
+
this.itemOffsets = [];
|
|
80
|
+
this.itemWidths = [];
|
|
81
|
+
}
|
|
82
|
+
ngAfterViewInit() {
|
|
83
|
+
// Wait for initial render
|
|
84
|
+
setTimeout(() => {
|
|
85
|
+
this.calculateItemOffsets();
|
|
86
|
+
this.updateTransform();
|
|
87
|
+
});
|
|
65
88
|
}
|
|
66
89
|
initializeCarousel() {
|
|
67
|
-
|
|
68
|
-
|
|
90
|
+
if (this.modeType === 'loop') {
|
|
91
|
+
this.carouselItems = [
|
|
92
|
+
...this._items.slice(-this.itemsCount),
|
|
93
|
+
...this._items,
|
|
94
|
+
...this._items.slice(0, this.itemsCount),
|
|
95
|
+
];
|
|
96
|
+
this.activeIndex = this.itemsCount;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.carouselItems = [...this._items];
|
|
100
|
+
this.activeIndex = 0;
|
|
101
|
+
}
|
|
102
|
+
setTimeout(() => {
|
|
103
|
+
this.calculateItemOffsets();
|
|
104
|
+
this.updateTransform();
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
calculateItemOffsets() {
|
|
108
|
+
this.itemOffsets = [];
|
|
109
|
+
this.itemWidths = [];
|
|
110
|
+
let offset = 0;
|
|
111
|
+
const elements = this.itemElements.toArray();
|
|
112
|
+
for (const el of elements) {
|
|
113
|
+
const width = el.nativeElement.offsetWidth;
|
|
114
|
+
this.itemOffsets.push(offset);
|
|
115
|
+
this.itemWidths.push(width);
|
|
116
|
+
offset += width;
|
|
117
|
+
}
|
|
69
118
|
}
|
|
70
119
|
getStyle() {
|
|
71
120
|
const percent = `calc(${100 / this.itemsCount}%)`;
|
|
@@ -76,20 +125,54 @@ export class DrGalleryComponent {
|
|
|
76
125
|
};
|
|
77
126
|
}
|
|
78
127
|
prev() {
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
128
|
+
if (this.modeType === 'loop') {
|
|
129
|
+
this.activeIndex--;
|
|
130
|
+
this.transition = this.defaultTransition;
|
|
131
|
+
this.updateTransform();
|
|
132
|
+
if (this.activeIndex <= 0) {
|
|
133
|
+
this.resetIndexAfterDelay(this.carouselItems.length - this.items.length);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
if (this.activeIndex > 0) {
|
|
138
|
+
this.activeIndex--;
|
|
139
|
+
this.updateTransform();
|
|
140
|
+
}
|
|
84
141
|
}
|
|
85
142
|
}
|
|
86
143
|
next() {
|
|
87
|
-
this.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
this.
|
|
144
|
+
if (this.modeType === 'loop') {
|
|
145
|
+
this.activeIndex++;
|
|
146
|
+
this.transition = this.defaultTransition;
|
|
147
|
+
this.updateTransform();
|
|
148
|
+
if (this.activeIndex + this.itemsCount > this.carouselItems.length - 1) {
|
|
149
|
+
this.resetIndexAfterDelay(this.itemsCount);
|
|
150
|
+
}
|
|
92
151
|
}
|
|
152
|
+
else {
|
|
153
|
+
if (this.activeIndex + 1 < this.carouselItems.length) {
|
|
154
|
+
this.activeIndex++;
|
|
155
|
+
this.updateTransform();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
navigate(index) {
|
|
160
|
+
this.activeIndex = index;
|
|
161
|
+
this.updateTransform();
|
|
162
|
+
}
|
|
163
|
+
get canGoPrev() {
|
|
164
|
+
if (this.modeType === 'loop')
|
|
165
|
+
return true;
|
|
166
|
+
return !!(this.activeIndex > 0);
|
|
167
|
+
}
|
|
168
|
+
get canGoNext() {
|
|
169
|
+
if (this.modeType === 'loop')
|
|
170
|
+
return true;
|
|
171
|
+
const containerWidth = this.containerRef?.nativeElement?.offsetWidth || 0;
|
|
172
|
+
const currentOffset = this.itemOffsets[this.activeIndex] || 0;
|
|
173
|
+
const lastIndex = this.itemOffsets.length - 1;
|
|
174
|
+
const totalContentWidth = this.itemOffsets[lastIndex] + this.itemWidths[lastIndex];
|
|
175
|
+
return currentOffset + containerWidth < totalContentWidth - 1;
|
|
93
176
|
}
|
|
94
177
|
resetIndexAfterDelay(newIndex) {
|
|
95
178
|
setTimeout(() => {
|
|
@@ -99,9 +182,17 @@ export class DrGalleryComponent {
|
|
|
99
182
|
}, 250);
|
|
100
183
|
}
|
|
101
184
|
updateTransform(skipTransition = false) {
|
|
102
|
-
|
|
185
|
+
if (this.modeType === 'loop') {
|
|
186
|
+
this.transform = `translateX(${-100 * (this.activeIndex / this.itemsCount)}%)`;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
const offset = this.itemOffsets[this.activeIndex] || 0;
|
|
190
|
+
this.transform = `translateX(-${offset}px)`;
|
|
191
|
+
}
|
|
103
192
|
if (skipTransition)
|
|
104
193
|
this.transition = this.noTransition;
|
|
194
|
+
else
|
|
195
|
+
this.transition = this.defaultTransition;
|
|
105
196
|
this.cdr.markForCheck();
|
|
106
197
|
}
|
|
107
198
|
/** @nocollapse */ static { this.ɵfac = function DrGalleryComponent_Factory(t) { return new (t || DrGalleryComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
@@ -110,35 +201,50 @@ export class DrGalleryComponent {
|
|
|
110
201
|
} if (rf & 2) {
|
|
111
202
|
let _t;
|
|
112
203
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);
|
|
113
|
-
} },
|
|
114
|
-
i0.ɵɵ
|
|
115
|
-
i0.ɵɵ
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
i0.ɵɵ
|
|
204
|
+
} }, viewQuery: function DrGalleryComponent_Query(rf, ctx) { if (rf & 1) {
|
|
205
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
206
|
+
i0.ɵɵviewQuery(_c1, 5);
|
|
207
|
+
} if (rf & 2) {
|
|
208
|
+
let _t;
|
|
209
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerRef = _t.first);
|
|
210
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemElements = _t);
|
|
211
|
+
} }, inputs: { modeType: "modeType", isOutsideBtns: "isOutsideBtns", items: "items", itemsCount: "itemsCount" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 6, vars: 10, consts: [["class", "dr-gallery-btn dr-gallery-btn_left", "theme", "icon", 3, "icon", "click", 4, "ngIf"], ["carouselContainer", ""], [1, "dr-gallery-items"], ["class", "dr-gallery-item", 3, "transition", "ngClass", "ngStyle", 4, "ngFor", "ngForOf"], ["class", "dr-gallery-btn dr-gallery-btn_right", "theme", "icon", 3, "iconSize", "icon", "click", 4, "ngIf"], ["theme", "icon", 1, "dr-gallery-btn", "dr-gallery-btn_left", 3, "icon", "click"], [1, "dr-gallery-item", 3, "ngClass", "ngStyle"], ["carouselItem", ""], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["theme", "icon", 1, "dr-gallery-btn", "dr-gallery-btn_right", 3, "iconSize", "icon", "click"]], template: function DrGalleryComponent_Template(rf, ctx) { if (rf & 1) {
|
|
212
|
+
i0.ɵɵtemplate(0, DrGalleryComponent_dr_button_0_Template, 1, 1, "dr-button", 0);
|
|
213
|
+
i0.ɵɵelementStart(1, "div", null, 1)(3, "div", 2);
|
|
214
|
+
i0.ɵɵtemplate(4, DrGalleryComponent_div_4_Template, 3, 11, "div", 3);
|
|
119
215
|
i0.ɵɵelementEnd()();
|
|
120
|
-
i0.ɵɵ
|
|
121
|
-
i0.ɵɵlistener("click", function DrGalleryComponent_Template_dr_button_click_4_listener() { return ctx.next(); });
|
|
122
|
-
i0.ɵɵelementEnd();
|
|
216
|
+
i0.ɵɵtemplate(5, DrGalleryComponent_dr_button_5_Template, 1, 2, "dr-button", 4);
|
|
123
217
|
} if (rf & 2) {
|
|
124
|
-
i0.ɵɵproperty("
|
|
218
|
+
i0.ɵɵproperty("ngIf", !ctx.isOutsideBtns);
|
|
219
|
+
i0.ɵɵadvance(1);
|
|
220
|
+
i0.ɵɵclassMapInterpolate1("dr-gallery-caroousel dr-gallery-caroousel_", ctx.modeType, "");
|
|
125
221
|
i0.ɵɵadvance(2);
|
|
126
222
|
i0.ɵɵstyleProp("transition", ctx.transition)("transform", ctx.transform);
|
|
127
223
|
i0.ɵɵadvance(1);
|
|
128
224
|
i0.ɵɵproperty("ngForOf", ctx.carouselItems);
|
|
129
225
|
i0.ɵɵadvance(1);
|
|
130
|
-
i0.ɵɵproperty("
|
|
131
|
-
} }, dependencies: [CommonModule, i1.NgClass, i1.NgForOf, i1.NgTemplateOutlet, DrInputsModule, i2.DrButtonComponent], styles: [".dr-gallery-caroousel[_ngcontent-%COMP%]{display:block;position:relative;overflow:hidden}.dr-gallery-items[_ngcontent-%COMP%]{display:flex;position:relative;align-items:flex-end;will-change:transform}.dr-gallery-item[_ngcontent-%COMP%]{box-sizing:border-box;position:relative;padding:42px 24px;margin-top:-8px;flex-grow:1
|
|
226
|
+
i0.ɵɵproperty("ngIf", !ctx.isOutsideBtns);
|
|
227
|
+
} }, dependencies: [CommonModule, i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, DrInputsModule, i2.DrButtonComponent], styles: [".dr-gallery-caroousel[_ngcontent-%COMP%]{display:block;position:relative;overflow:hidden}.dr-gallery-items[_ngcontent-%COMP%]{display:flex;position:relative;align-items:flex-end;will-change:transform}.dr-gallery-item[_ngcontent-%COMP%]{box-sizing:border-box;position:relative;padding:42px 24px;margin-top:-8px;flex-grow:1}.dr-gallery-btn[_ngcontent-%COMP%]{position:absolute;top:50%;transform:translateY(-50%);z-index:9999;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:50%;box-shadow:0 4px 4px #00000040}.dr-gallery-btn[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:40px!important;height:40px!important}.dr-gallery-btn[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{border-radius:50%}.dr-gallery-btn_left[_ngcontent-%COMP%]{left:0}.dr-gallery-btn_right[_ngcontent-%COMP%]{right:0}.dr-gallery-caroousel_loop[_ngcontent-%COMP%] .dr-gallery-item[_ngcontent-%COMP%]{width:100%;min-height:240px}.dr-gallery-caroousel_loop[_ngcontent-%COMP%] .dr-gallery-item_active[_ngcontent-%COMP%]{transform:scale(1.2)}"], changeDetection: 0 }); }
|
|
132
228
|
}
|
|
133
229
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrGalleryComponent, [{
|
|
134
230
|
type: Component,
|
|
135
|
-
args: [{ selector: 'dr-gallery', imports: [CommonModule, DrInputsModule], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<dr-button
|
|
231
|
+
args: [{ selector: 'dr-gallery', imports: [CommonModule, DrInputsModule], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<dr-button\n *ngIf=\"!isOutsideBtns\"\n class=\"dr-gallery-btn dr-gallery-btn_left\"\n (click)=\"prev()\"\n theme=\"icon\"\n [icon]=\"'dr-icon-arrow-left'\">\n</dr-button>\n\n<div #carouselContainer class=\"dr-gallery-caroousel dr-gallery-caroousel_{{ modeType }}\">\n <div class=\"dr-gallery-items\" [style.transition]=\"transition\" [style.transform]=\"transform\">\n <div\n #carouselItem\n *ngFor=\"let item of carouselItems; let i = index\"\n class=\"dr-gallery-item\"\n [style.transition]=\"transition\"\n [ngClass]=\"{ 'dr-gallery-item_active': centerIndex === i }\"\n [ngStyle]=\"modeType === 'loop' ? getStyle() : {}\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: item }\"></ng-container>\n </div>\n </div>\n</div>\n\n<dr-button\n *ngIf=\"!isOutsideBtns\"\n class=\"dr-gallery-btn dr-gallery-btn_right\"\n (click)=\"next()\"\n [iconSize]=\"'24px'\"\n theme=\"icon\"\n [icon]=\"'dr-icon-arrow-right'\">\n</dr-button>\n", styles: [".dr-gallery-caroousel{display:block;position:relative;overflow:hidden}.dr-gallery-items{display:flex;position:relative;align-items:flex-end;will-change:transform}.dr-gallery-item{box-sizing:border-box;position:relative;padding:42px 24px;margin-top:-8px;flex-grow:1}.dr-gallery-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:9999;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:50%;box-shadow:0 4px 4px #00000040}.dr-gallery-btn button{width:40px!important;height:40px!important}.dr-gallery-btn button:hover{border-radius:50%}.dr-gallery-btn_left{left:0}.dr-gallery-btn_right{right:0}.dr-gallery-caroousel_loop .dr-gallery-item{width:100%;min-height:240px}.dr-gallery-caroousel_loop .dr-gallery-item_active{transform:scale(1.2)}\n"] }]
|
|
136
232
|
}], function () { return [{ type: i0.ChangeDetectorRef }]; }, { template: [{
|
|
137
233
|
type: ContentChild,
|
|
138
234
|
args: [TemplateRef]
|
|
235
|
+
}], modeType: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], isOutsideBtns: [{
|
|
238
|
+
type: Input
|
|
139
239
|
}], items: [{
|
|
140
240
|
type: Input
|
|
141
241
|
}], itemsCount: [{
|
|
142
242
|
type: Input
|
|
243
|
+
}], containerRef: [{
|
|
244
|
+
type: ViewChild,
|
|
245
|
+
args: ['carouselContainer']
|
|
246
|
+
}], itemElements: [{
|
|
247
|
+
type: ViewChildren,
|
|
248
|
+
args: ['carouselItem']
|
|
143
249
|
}] }); })();
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1nYWxsZXJ5L2RyLWdhbGxlcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZ2FsbGVyeS9kci1nYWxsZXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsU0FBUyxJQUFJLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7O0lDSG5ELHdCQUF3Rjs7Ozs7SUFONUYsOEJBS3lCO0lBQ3JCLDJGQUF3RjtJQUM1RixpQkFBTTs7Ozs7SUFGRixnQ0FBb0I7SUFGcEIsK0NBQStCO0lBQy9CLGlGQUEyRDtJQUU1QyxlQUE0QjtJQUE1QixrREFBNEIsZ0VBQUE7O0FEWXZELE1BQU0sT0FBTyxrQkFBa0I7SUFPM0IsSUFDSSxLQUFLLENBQUMsS0FBWTtRQUNsQixJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUM3QjtJQUNMLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxLQUFhO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4SCxDQUFDO0lBT0QsV0FBVztRQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBN0NsQyxXQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2Ysc0JBQWlCLEdBQUcsbUJBQW1CLENBQUM7UUFDeEMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUErQjlCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBUVMsQ0FBQztJQUV0QyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sT0FBTyxHQUFHLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQztRQUNsRCxPQUFPO1lBQ0gsUUFBUSxFQUFFLE9BQU87WUFDakIsUUFBUSxFQUFFLE9BQU87WUFDakIsU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVFO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzlDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFFBQWdCO1FBQ3pDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU8sZUFBZSxDQUFDLGNBQWMsR0FBRyxLQUFLO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDL0UsSUFBSSxjQUFjO1lBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztzR0EvRlEsa0JBQWtCO21HQUFsQixrQkFBa0I7d0NBQ2IsV0FBVzs7Ozs7WUN0QjdCLG9DQUFrSDtZQUE1RCxrR0FBUyxVQUFNLElBQUM7WUFBNkMsaUJBQVk7WUFDL0gsOEJBQWtDLGFBQUE7WUFFMUIsb0VBT007WUFDVixpQkFBTSxFQUFBO1lBR1Ysb0NBS21DO1lBSC9CLGtHQUFTLFVBQU0sSUFBQztZQUdlLGlCQUFZOztZQW5CcUMsMkNBQTZCO1lBRS9FLGVBQStCO1lBQS9CLDRDQUErQiw0QkFBQTtZQUVwQyxlQUFrQjtZQUFsQiwyQ0FBa0I7WUFhM0MsZUFBbUI7WUFBbkIsaUNBQW1CLCtCQUFBOzRCREFULFlBQVksK0NBQUUsY0FBYzs7dUZBSTdCLGtCQUFrQjtjQVI5QixTQUFTOzJCQUNJLFlBQVksV0FHYixDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsY0FDM0IsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNO29FQUdwQixRQUFRO2tCQUFsQyxZQUFZO21CQUFDLFdBQVc7WUFPckIsS0FBSztrQkFEUixLQUFLO1lBUU8sVUFBVTtrQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSBhcyBfdGFrZSwgdGFrZVJpZ2h0IGFzIF90YWtlUmlnaHQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRHJJbnB1dHNNb2R1bGUgfSBmcm9tICcuLi9kci1pbnB1dHMvZHItaW5wdXRzLm1vZHVsZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWdhbGxlcnknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1nYWxsZXJ5LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1nYWxsZXJ5LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHJJbnB1dHNNb2R1bGVdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyR2FsbGVyeUNvbXBvbmVudDxUID0gYW55PiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBUIH0+O1xuICAgIHByaXZhdGUgX2l0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgX2l0ZW1zQ291bnQgPSAzO1xuICAgIHJlYWRvbmx5IGRlZmF1bHRUcmFuc2l0aW9uID0gJzI1MG1zIGVhc2UtaW4tb3V0JztcbiAgICByZWFkb25seSBub1RyYW5zaXRpb24gPSAnMG1zJztcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zKHZhbHVlOiBhbnlbXSkge1xuICAgICAgICBpZiAodmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNhcm91c2VsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgaXRlbXNDb3VudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICghdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtc0NvdW50ID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pdGVtc0NvdW50ID0gdmFsdWUgPiB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgPyB0aGlzLml0ZW1zLmxlbmd0aCA6IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgICB9XG5cbiAgICBnZXQgaXRlbXNDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zQ291bnQ7XG4gICAgfVxuXG4gICAgZ2V0IGNlbnRlckluZGV4KCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtc0NvdW50ID4gMSAmJiB0aGlzLml0ZW1zQ291bnQgJSAyICE9PSAwID8gdGhpcy5hY3RpdmVJbmRleCArIE1hdGguZmxvb3IodGhpcy5pdGVtc0NvdW50IC8gMikgOiBudWxsO1xuICAgIH1cblxuICAgIGFjdGl2ZUluZGV4ID0gMDtcbiAgICBjYXJvdXNlbEl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIHRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKDAlKWA7XG4gICAgdHJhbnNpdGlvbiA9IHRoaXMuZGVmYXVsdFRyYW5zaXRpb247XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMuaXRlbXNDb3VudDtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplQ2Fyb3VzZWwoKTtcbiAgICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVDYXJvdXNlbCgpIHtcbiAgICAgICAgdGhpcy5jYXJvdXNlbEl0ZW1zID0gWy4uLl90YWtlUmlnaHQodGhpcy5pdGVtcywgdGhpcy5pdGVtc0NvdW50KSwgLi4udGhpcy5pdGVtcywgLi4uX3Rha2UodGhpcy5pdGVtcywgdGhpcy5pdGVtc0NvdW50KV07XG4gICAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgfVxuXG4gICAgZ2V0U3R5bGUoKTogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPiB7XG4gICAgICAgIGNvbnN0IHBlcmNlbnQgPSBgY2FsYygkezEwMCAvIHRoaXMuaXRlbXNDb3VudH0lKWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtaW5XaWR0aDogcGVyY2VudCxcbiAgICAgICAgICAgIG1heFdpZHRoOiBwZXJjZW50LFxuICAgICAgICAgICAgZmxleEJhc2lzOiBwZXJjZW50LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByZXYoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXgtLTtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uID0gdGhpcy5kZWZhdWx0VHJhbnNpdGlvbjtcbiAgICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA8PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0SW5kZXhBZnRlckRlbGF5KHRoaXMuY2Fyb3VzZWxJdGVtcy5sZW5ndGggLSB0aGlzLml0ZW1zLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0KCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4Kys7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvbiA9IHRoaXMuZGVmYXVsdFRyYW5zaXRpb247XG4gICAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggKyB0aGlzLml0ZW1zQ291bnQgPiB0aGlzLmNhcm91c2VsSXRlbXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldEluZGV4QWZ0ZXJEZWxheSh0aGlzLml0ZW1zQ291bnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldEluZGV4QWZ0ZXJEZWxheShuZXdJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uID0gdGhpcy5ub1RyYW5zaXRpb247XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSh0cnVlKTtcbiAgICAgICAgfSwgMjUwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVRyYW5zZm9ybShza2lwVHJhbnNpdGlvbiA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHstMTAwICogKHRoaXMuYWN0aXZlSW5kZXggLyB0aGlzLml0ZW1zQ291bnQpfSUpYDtcbiAgICAgICAgaWYgKHNraXBUcmFuc2l0aW9uKSB0aGlzLnRyYW5zaXRpb24gPSB0aGlzLm5vVHJhbnNpdGlvbjtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPGRyLWJ1dHRvbiBjbGFzcz1cImRyLWdhbGxlcnktYnRuIGRyLWdhbGxlcnktYnRuX2xlZnRcIiAoY2xpY2spPVwicHJldigpXCIgdGhlbWU9XCJpY29uXCIgW2ljb25dPVwiJ2RyLWljb24tYXJyb3ctbGVmdCdcIj4gPC9kci1idXR0b24+XG48ZGl2IGNsYXNzPVwiZHItZ2FsbGVyeS1jYXJvb3VzZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHItZ2FsbGVyeS1pdGVtc1wiIFtzdHlsZS50cmFuc2l0aW9uXT1cInRyYW5zaXRpb25cIiBbc3R5bGUudHJhbnNmb3JtXT1cInRyYW5zZm9ybVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjYXJvdXNlbEl0ZW1zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHItZ2FsbGVyeS1pdGVtXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uXT1cInRyYW5zaXRpb25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZHItZ2FsbGVyeS1pdGVtX2FjdGl2ZSc6IGNlbnRlckluZGV4ID09PSBpIH1cIlxuICAgICAgICAgICAgW3N0eWxlXT1cImdldFN0eWxlKClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZHItYnV0dG9uXG4gICAgY2xhc3M9XCJkci1nYWxsZXJ5LWJ0biBkci1nYWxsZXJ5LWJ0bl9yaWdodFwiXG4gICAgKGNsaWNrKT1cIm5leHQoKVwiXG4gICAgW2ljb25TaXplXT1cIicyNHB4J1wiXG4gICAgdGhlbWU9XCJpY29uXCJcbiAgICBbaWNvbl09XCInZHItaWNvbi1hcnJvdy1yaWdodCdcIj48L2RyLWJ1dHRvbj5cbiJdfQ==
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1nYWxsZXJ5L2RyLWdhbGxlcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZ2FsbGVyeS9kci1nYWxsZXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7SUNkL0Qsb0NBS2tDO0lBRjlCLHdLQUFTLGVBQUEsYUFBTSxDQUFBLElBQUM7SUFHcEIsaUJBQVk7O0lBRFIsMkNBQTZCOzs7SUFZckIsd0JBQXdGOzs7Ozs7SUFQNUYsaUNBTXNEO0lBQ2xELDJGQUF3RjtJQUM1RixpQkFBTTs7Ozs7SUFKRiwrQ0FBK0I7SUFDL0IsaUZBQTJELHdGQUFBO0lBRTVDLGVBQTRCO0lBQTVCLGtEQUE0QixnRUFBQTs7OztJQUt2RCxvQ0FNbUM7SUFIL0IsMEtBQVMsZUFBQSxjQUFNLENBQUEsSUFBQztJQUlwQixpQkFBWTs7SUFIUixpQ0FBbUIsK0JBQUE7O0FESHZCLE1BQU0sT0FBTyxrQkFBa0I7SUFXM0IsSUFDSSxLQUFLLENBQUMsS0FBVTtRQUNoQixJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENB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QUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7c0dBaExRLGtCQUFrQjttR0FBbEIsa0JBQWtCO3dDQUNiLFdBQVc7Ozs7Ozs7Ozs7OztZQ3hCN0IsK0VBTVk7WUFFWixvQ0FBeUYsYUFBQTtZQUVqRixvRUFRTTtZQUNWLGlCQUFNLEVBQUE7WUFHViwrRUFPWTs7WUE1QlAseUNBQW9CO1lBT0QsZUFBZ0U7WUFBaEUseUZBQWdFO1lBQ3RELGVBQStCO1lBQS9CLDRDQUErQiw0QkFBQTtZQUdwQyxlQUFrQjtZQUFsQiwyQ0FBa0I7WUFXMUMsZUFBb0I7WUFBcEIseUNBQW9COzRCREpYLFlBQVksb0VBQUUsY0FBYzs7dUZBSTdCLGtCQUFrQjtjQVI5QixTQUFTOzJCQUNJLFlBQVksV0FHYixDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsY0FDM0IsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNO29FQUdwQixRQUFRO2tCQUFsQyxZQUFZO21CQUFDLFdBQVc7WUFPaEIsUUFBUTtrQkFBaEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFHRixLQUFLO2tCQURSLEtBQUs7WUFTRixVQUFVO2tCQURiLEtBQUs7WUEyQjBCLFlBQVk7a0JBQTNDLFNBQVM7bUJBQUMsbUJBQW1CO1lBQ0EsWUFBWTtrQkFBekMsWUFBWTttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2UgYXMgX3Rha2UsIHRha2VSaWdodCBhcyBfdGFrZVJpZ2h0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERySW5wdXRzTW9kdWxlIH0gZnJvbSAnLi4vZHItaW5wdXRzL2RyLWlucHV0cy5tb2R1bGUnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1nYWxsZXJ5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItZ2FsbGVyeS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHItZ2FsbGVyeS5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERySW5wdXRzTW9kdWxlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEckdhbGxlcnlDb21wb25lbnQ8VCA9IGFueT4ge1xuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFQgfT47XG5cbiAgICBwcml2YXRlIF9pdGVtczogVFtdID0gW107XG4gICAgcHJpdmF0ZSBfaXRlbXNDb3VudCA9IDM7XG4gICAgcmVhZG9ubHkgZGVmYXVsdFRyYW5zaXRpb24gPSAnMjUwbXMgZWFzZS1pbi1vdXQnO1xuICAgIHJlYWRvbmx5IG5vVHJhbnNpdGlvbiA9ICcwbXMnO1xuXG4gICAgQElucHV0KCkgbW9kZVR5cGU6ICdsb29wJyB8ICdkeW5hbWljJyA9ICdsb29wJztcbiAgICBASW5wdXQoKSBpc091dHNpZGVCdG5zID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtcyh2YWx1ZTogVFtdKSB7XG4gICAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ2Fyb3VzZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zQ291bnQodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXNDb3VudCA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXRlbXNDb3VudCA9IHZhbHVlID4gdGhpcy5pdGVtcy5sZW5ndGggLSAxID8gdGhpcy5pdGVtcy5sZW5ndGggOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaXRlbXMoKTogVFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICAgIH1cblxuICAgIGdldCBpdGVtc0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc0NvdW50O1xuICAgIH1cblxuICAgIGdldCBjZW50ZXJJbmRleCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXNDb3VudCA+IDEgJiYgdGhpcy5pdGVtc0NvdW50ICUgMiAhPT0gMCA/IHRoaXMuYWN0aXZlSW5kZXggKyBNYXRoLmZsb29yKHRoaXMuaXRlbXNDb3VudCAvIDIpIDogbnVsbDtcbiAgICB9XG5cbiAgICBhY3RpdmVJbmRleCA9IDA7XG4gICAgY2Fyb3VzZWxJdGVtczogVFtdID0gW107XG4gICAgdHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCUpJztcbiAgICB0cmFuc2l0aW9uID0gdGhpcy5kZWZhdWx0VHJhbnNpdGlvbjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Nhcm91c2VsQ29udGFpbmVyJykgY29udGFpbmVyUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZHJlbignY2Fyb3VzZWxJdGVtJykgaXRlbUVsZW1lbnRzITogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcbiAgICBwcml2YXRlIGl0ZW1PZmZzZXRzOiBudW1iZXJbXSA9IFtdO1xuICAgIHByaXZhdGUgaXRlbVdpZHRoczogbnVtYmVyW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gV2FpdCBmb3IgaW5pdGlhbCByZW5kZXJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUl0ZW1PZmZzZXRzKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVDYXJvdXNlbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZVR5cGUgPT09ICdsb29wJykge1xuICAgICAgICAgICAgdGhpcy5jYXJvdXNlbEl0ZW1zID0gW1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2l0ZW1zLnNsaWNlKC10aGlzLml0ZW1zQ291bnQpLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2l0ZW1zLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2l0ZW1zLnNsaWNlKDAsIHRoaXMuaXRlbXNDb3VudCksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMuaXRlbXNDb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2Fyb3VzZWxJdGVtcyA9IFsuLi50aGlzLl9pdGVtc107XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVJdGVtT2Zmc2V0cygpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVJdGVtT2Zmc2V0cygpIHtcbiAgICAgICAgdGhpcy5pdGVtT2Zmc2V0cyA9IFtdO1xuICAgICAgICB0aGlzLml0ZW1XaWR0aHMgPSBbXTtcblxuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLml0ZW1FbGVtZW50cy50b0FycmF5KCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBlbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgdGhpcy5pdGVtT2Zmc2V0cy5wdXNoKG9mZnNldCk7XG4gICAgICAgICAgICB0aGlzLml0ZW1XaWR0aHMucHVzaCh3aWR0aCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gd2lkdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTdHlsZSgpOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+IHtcbiAgICAgICAgY29uc3QgcGVyY2VudCA9IGBjYWxjKCR7MTAwIC8gdGhpcy5pdGVtc0NvdW50fSUpYDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pbldpZHRoOiBwZXJjZW50LFxuICAgICAgICAgICAgbWF4V2lkdGg6IHBlcmNlbnQsXG4gICAgICAgICAgICBmbGV4QmFzaXM6IHBlcmNlbnQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJldigpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZVR5cGUgPT09ICdsb29wJykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleC0tO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uID0gdGhpcy5kZWZhdWx0VHJhbnNpdGlvbjtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4IDw9IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0SW5kZXhBZnRlckRlbGF5KHRoaXMuY2Fyb3VzZWxJdGVtcy5sZW5ndGggLSB0aGlzLml0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4LS07XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5leHQoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGVUeXBlID09PSAnbG9vcCcpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXgrKztcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbiA9IHRoaXMuZGVmYXVsdFRyYW5zaXRpb247XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCArIHRoaXMuaXRlbXNDb3VudCA+IHRoaXMuY2Fyb3VzZWxJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEluZGV4QWZ0ZXJEZWxheSh0aGlzLml0ZW1zQ291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggKyAxIDwgdGhpcy5jYXJvdXNlbEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXgrKztcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmF2aWdhdGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNhbkdvUHJldigpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZVR5cGUgPT09ICdsb29wJykgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiAhISh0aGlzLmFjdGl2ZUluZGV4ID4gMCk7XG4gICAgfVxuXG4gICAgZ2V0IGNhbkdvTmV4dCgpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZVR5cGUgPT09ICdsb29wJykgcmV0dXJuIHRydWU7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoIHx8IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPZmZzZXQgPSB0aGlzLml0ZW1PZmZzZXRzW3RoaXMuYWN0aXZlSW5kZXhdIHx8IDA7XG4gICAgICAgIGNvbnN0IGxhc3RJbmRleCA9IHRoaXMuaXRlbU9mZnNldHMubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgdG90YWxDb250ZW50V2lkdGggPSB0aGlzLml0ZW1PZmZzZXRzW2xhc3RJbmRleF0gKyB0aGlzLml0ZW1XaWR0aHNbbGFzdEluZGV4XTtcblxuICAgICAgICByZXR1cm4gY3VycmVudE9mZnNldCArIGNvbnRhaW5lcldpZHRoIDwgdG90YWxDb250ZW50V2lkdGggLSAxO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRJbmRleEFmdGVyRGVsYXkobmV3SW5kZXg6IG51bWJlcikge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbiA9IHRoaXMubm9UcmFuc2l0aW9uO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IG5ld0luZGV4O1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0odHJ1ZSk7XG4gICAgICAgIH0sIDI1MCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUcmFuc2Zvcm0oc2tpcFRyYW5zaXRpb24gPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5tb2RlVHlwZSA9PT0gJ2xvb3AnKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7LTEwMCAqICh0aGlzLmFjdGl2ZUluZGV4IC8gdGhpcy5pdGVtc0NvdW50KX0lKWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLml0ZW1PZmZzZXRzW3RoaXMuYWN0aXZlSW5kZXhdIHx8IDA7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKC0ke29mZnNldH1weClgO1xuICAgICAgICB9XG4gICAgICAgIGlmIChza2lwVHJhbnNpdGlvbikgdGhpcy50cmFuc2l0aW9uID0gdGhpcy5ub1RyYW5zaXRpb247XG4gICAgICAgIGVsc2UgdGhpcy50cmFuc2l0aW9uID0gdGhpcy5kZWZhdWx0VHJhbnNpdGlvbjtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPGRyLWJ1dHRvblxuICAgICpuZ0lmPVwiIWlzT3V0c2lkZUJ0bnNcIlxuICAgIGNsYXNzPVwiZHItZ2FsbGVyeS1idG4gZHItZ2FsbGVyeS1idG5fbGVmdFwiXG4gICAgKGNsaWNrKT1cInByZXYoKVwiXG4gICAgdGhlbWU9XCJpY29uXCJcbiAgICBbaWNvbl09XCInZHItaWNvbi1hcnJvdy1sZWZ0J1wiPlxuPC9kci1idXR0b24+XG5cbjxkaXYgI2Nhcm91c2VsQ29udGFpbmVyIGNsYXNzPVwiZHItZ2FsbGVyeS1jYXJvb3VzZWwgZHItZ2FsbGVyeS1jYXJvb3VzZWxfe3sgbW9kZVR5cGUgfX1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHItZ2FsbGVyeS1pdGVtc1wiIFtzdHlsZS50cmFuc2l0aW9uXT1cInRyYW5zaXRpb25cIiBbc3R5bGUudHJhbnNmb3JtXT1cInRyYW5zZm9ybVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjY2Fyb3VzZWxJdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjYXJvdXNlbEl0ZW1zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHItZ2FsbGVyeS1pdGVtXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uXT1cInRyYW5zaXRpb25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZHItZ2FsbGVyeS1pdGVtX2FjdGl2ZSc6IGNlbnRlckluZGV4ID09PSBpIH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwibW9kZVR5cGUgPT09ICdsb29wJyA/IGdldFN0eWxlKCkgOiB7fVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkci1idXR0b25cbiAgICAqbmdJZj1cIiFpc091dHNpZGVCdG5zXCJcbiAgICBjbGFzcz1cImRyLWdhbGxlcnktYnRuIGRyLWdhbGxlcnktYnRuX3JpZ2h0XCJcbiAgICAoY2xpY2spPVwibmV4dCgpXCJcbiAgICBbaWNvblNpemVdPVwiJzI0cHgnXCJcbiAgICB0aGVtZT1cImljb25cIlxuICAgIFtpY29uXT1cIidkci1pY29uLWFycm93LXJpZ2h0J1wiPlxuPC9kci1idXR0b24+XG4iXX0=
|
|
@@ -344,6 +344,7 @@ export class DrDatePickerComponent {
|
|
|
344
344
|
timeframe = this.datePickerService.getTimeframe(format);
|
|
345
345
|
}
|
|
346
346
|
this.datePickerService.timeframe = timeframe;
|
|
347
|
+
this.datePickerService.format$.next(format);
|
|
347
348
|
}
|
|
348
349
|
onOpen() {
|
|
349
350
|
this.opened$.next(true);
|
|
@@ -427,4 +428,4 @@ export class DrDatePickerComponent {
|
|
|
427
428
|
type: HostBinding,
|
|
428
429
|
args: ['class.active']
|
|
429
430
|
}] }); })();
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDM0gsT0FBTyxFQUlILGlDQUFpQyxHQUNw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SztZQUVrQyxRQUFRO2tCQUEvQyxLQUFLOztrQkFBSSxXQUFXO21CQUFDLGdCQUFnQjtZQUU3Qix3QkFBd0I7a0JBQWhDLEtBQUs7WUFFRyxjQUFjO2tCQUF0QixLQUFLO1lBRUcsZ0JBQWdCO2tCQUF4QixLQUFLO1lBR0csZ0NBQWdDO2tCQUF4QyxLQUFLO1lBSUssVUFBVTtrQkFEcEIsU0FBUzttQkFBQyxZQUFZO1lBV25CLE1BQU07a0JBRFQsV0FBVzttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJWaWV3LCBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24sIFRpbWVmcmFtZU9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RyLWRhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyQ3VzdG9tSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZHItZGF0ZS1waWNrZXJfY3VzdG9tLWhlYWRlci9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIE1hdENhbGVuZGFyVmlldyxcbiAgICBNYXREYXRlcGlja2VyLFxuICAgIE1hdERhdGVSYW5nZVBpY2tlcixcbiAgICBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWVrLXNlbGVjdGlvbi1zdHJhdGVneSc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVBZGFwdGVyIGV4dGVuZHMgTW9tZW50RGF0ZUFkYXB0ZXIge1xuICAgIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJEYXRlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUFkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksIHVzZUNsYXNzOiBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSxcbiAgICAgICAgRHJEYXRlUGlja2VyU2VydmljZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyBkYXRlIHBpY2tlciBmb3JtYXQgaW5wdXQgbGFiZWwsIGNhbGVuZGFyIHN0YXJ0IHZpZXcgYW5kIHRpbWVmcmFtZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybWF0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4obWluRGF0ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21pbiA9IG1pbkRhdGUgPyBtb21lbnQudW5peChtaW5EYXRlKS51dGMoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4KG1heERhdGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtYXhEYXRlTW9tZW50ID0gbWF4RGF0ZSA/IG1vbWVudC51bml4KG1heERhdGUpLnV0YygpIDogbnVsbDtcbiAgICAgICAgdGhpcy5fbWF4ID0gbWF4RGF0ZU1vbWVudDtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5tYXhEYXRlID0gbWF4RGF0ZU1vbWVudDtcbiAgICB9XG5cbiAgICBfc3RhcnRBdDogTW9tZW50IHwgbnVsbCA9IG51bGw7XG4gICAgLyoqIFRoZSBkYXRlIHRvIG9wZW4gdGhlIGNhbGVuZGFyIHRvIGluaXRpYWxseS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGFydEF0KHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3N0YXJ0QXQgPSB2YWx1ZSA/IG1vbWVudC51bml4KHZhbHVlKS51dGMoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdG8gdHJhbnNmb3JtIGRhdGUsIHRha2luZyBlbmQsIHN0YXJ0LCBtaWRkbGUgb2YgcGVyaW9kIChpLmUuIHNldCBtaWRkbGUgb2YgbW9udGggaWYgdGltZWZyYW1lPSdtb250aCcpXG4gICAgICovXG4gICAgQElucHV0KCkgcGVyaW9kUG9zaXRpb246IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiA9IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5ERUZBVUxUO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0Li4uJztcblxuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG5cbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyQmFjayA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckZpbHRlcjogKG1vbWVudDogTW9tZW50KSA9PiBib29sZWFuO1xuXG4gICAgLy8gVE9ETzogQWRkZWQgYXMgdGVtcCBzb2x1dGlvbiBpbnN0ZWFkIG9mIEZGLCB3aWxsIHJlbW92ZSBvbmNlIHN0YWJsZSAtIGh0dHBzOi8vZGF0YXJhaWxzdGVhbS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9EUi0zNTM5NFxuICAgIEBJbnB1dCgpIGZpeEZvck5vcm1hbGl6ZWRWYWx1ZVdpdGhNYXhEYXRlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9kYXRlUGlja2VyOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PjtcbiAgICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJylcbiAgICBwdWJsaWMgc2V0IGRhdGVQaWNrZXIodmFsdWU6IE1hdERhdGVwaWNrZXI8YW55PiB8IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5kYXRlUGlja2VySW5zdGFuY2UgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlci5zdGFydFZpZXcgPSB0aGlzLmNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nW3RoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lXTtcbiAgICB9XG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyKCk6IE1hdERhdGVwaWNrZXI8YW55PiB8IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXI7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKVxuICAgIGdldCBhY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZCQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJWaWV3c1RpbWVmcmFtZU1hcHBpbmc6IGFueSA9IHtcbiAgICAgICAgeWVhcjogJ211bHRpLXllYXInLFxuICAgICAgICBtb250aDogJ3llYXInLFxuICAgICAgICBxdWFydGVyOiAnbm9uZScsXG4gICAgICAgIGRheTogJ21vbnRoJyxcbiAgICAgICAgd2VlazogJ21vbnRoJyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGN1c3RvbUhlYWRlciA9IERyRGF0ZVBpY2tlckN1c3RvbUhlYWRlckNvbXBvbmVudDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgPSB0cnVlO1xuICAgIHB1YmxpYyBfbWluOiBNb21lbnQ7XG4gICAgcHVibGljIF9tYXg6IE1vbWVudDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZWZyYW1lT3B0aW9uID0gVGltZWZyYW1lT3B0aW9uO1xuXG4gICAgcHJvdGVjdGVkIGdldCBpbm5lclZhbHVlKCk6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWU7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXQgaW5uZXJWYWx1ZSh2YWx1ZTogTW9tZW50KSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwbGF5VmFsdWUkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgXSkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKFtudWxsLCBudWxsXSksXG4gICAgICAgIG1hcCgoW3ZhbHVlLCB0aW1lZnJhbWVdOiBbTW9tZW50LCBUaW1lZnJhbWVPcHRpb25dKSA9PiB0aGlzLnRyYW5zZm9ybURpc3BsYXllZFZhbHVlKHZhbHVlLCB0aW1lZnJhbWUpKSxcbiAgICAgICAgdGFwKCh2YWx1ZTogTW9tZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmFjdGl2ZURhdGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2Uuc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcGVuZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcblxuICAgIHJlYWRvbmx5IHJhbmdlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBzdGFydDogdGhpcy5mYi5jb250cm9sPE1vbWVudCB8IG51bGw+KG51bGwpLFxuICAgICAgICBlbmQ6IHRoaXMuZmIuY29udHJvbDxNb21lbnQgfCBudWxsPihudWxsKSxcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxhbnk+LFxuICAgICAgICBwdWJsaWMgZGF0ZVBpY2tlclNlcnZpY2U6IERyRGF0ZVBpY2tlclNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLnVwZGF0ZWRRdWFydGVyJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgZGF0ZVBpY2tlclNlcnZpY2Uud2Vla1NlbGVjdGlvbkNoYW5nZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh7IHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoc3RhcnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUkLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7IHN0YXJ0OiB2YWx1ZS5jbG9uZSgpLnN0YXJ0T2YoJ2lzb1dlZWsnKSwgZW5kOiB2YWx1ZS5jbG9uZSgpLmVuZE9mKCdpc29XZWVrJykgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRhdGVGb3JtYXRGbiA9IHRoaXMuZGF0ZUFkYXB0ZXIuZm9ybWF0O1xuICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdCA9IChkYXRlOiBNb21lbnQsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGVUb0Zvcm1hdCA9IGRhdGUuY2xvbmUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVGltZWZyYW1lRGVwZW5kaW5nT25GWSh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlVG9Gb3JtYXQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnN1YnRyYWN0RmlzY2FsWWVhck1vbnRoc0Zyb21EYXRlKGRhdGVUb0Zvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0ZUZvcm1hdEZuLmNhbGwodGhpcy5kYXRlQWRhcHRlciwgZGF0ZVRvRm9ybWF0LCBkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyID0gdGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXI7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhckJhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmRhdGVwaWNrZXJGaWx0ZXIgPSB0aGlzLmRhdGVGaWx0ZXI7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuZm9ybWF0Py5jdXJyZW50VmFsdWUgJiYgY2hhbmdlcy5mb3JtYXQuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmZvcm1hdC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlzY2FsWWVhckJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhckJhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRpbmcgY29tcG9uZW50IGlubmVyIHZhbHVlIGFjY29yZGluZyB0byBkYXRlcGlja2VyIHRpbWVmcmFtZSAoZGF5LCBtb250aCBldGMuKVxuICAgICAqIGFuZCBkYXRlIHBvc2l0aW9uIGluIHBlcmlvZCAoc3RhcnQsIGVuZCwgbWlkZGxlKVxuICAgICAqL1xuICAgIHRyeVRvTm9ybWFsaXplVGltZWZyYW1lKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5jbG9uZSgpO1xuICAgICAgICBjb25zdCB1bml0ID0gdGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uV0VFSyA/ICdpc29XZWVrJyA6IHRpbWVmcmFtZTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnBlcmlvZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5TVEFSVF9PRl9QRVJJT0Q6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCAxKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuc3RhcnRPZih1bml0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5FTkRfT0ZfUEVSSU9EOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZkN1cnJlbnRRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLllFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCA0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuZW5kT2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uTUlERExFX09GX1BFUklPRDpcbiAgICAgICAgICAgICAgICBsZXQgZW5kT2ZQZXJpb2Q6IE1vbWVudDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZkN1cnJlbnRRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZDdXJyZW50UXVhcnRlcihlbmRPZlBlcmlvZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLllFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kT2ZQZXJpb2QgPSBub3JtYWxpemVkVmFsdWUuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRTdGFydE9mUXVhcnRlcihub3JtYWxpemVkVmFsdWUsIDEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldEVuZE9mUXVhcnRlcihlbmRPZlBlcmlvZCwgNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCk7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCkuZW5kT2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBlbmRPZlBlcmlvZC5kaWZmKG5vcm1hbGl6ZWRWYWx1ZSwgJ3NlY29uZHMnKTtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuYWRkKGRpZmYgLyAyICsgMSwgJ3NlY29uZHMnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCkuc2V0KCdob3VycycsIDEyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maXhGb3JOb3JtYWxpemVkVmFsdWVXaXRoTWF4RGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgbWluVW5peCA9IE1hdGgubWluKG5vcm1hbGl6ZWRWYWx1ZS51bml4KCksIHRoaXMuX21heC51bml4KCkpO1xuICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gbW9tZW50LnVuaXgobWluVW5peCkudXRjKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaG9zZW5QZXJpb2RIYW5kbGVyKGNob3NlbkRhdGU6IE1vbWVudCwgdGltZWZyYW1lOiBUaW1lZnJhbWVPcHRpb24sIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+KSB7XG4gICAgICAgIGlmICh0aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICBjaG9zZW5EYXRlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5hZGRGaXNjYWxZZWFyTW9udGhzVG9EYXRlKGNob3NlbkRhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUiAmJiB0aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UuY3VycmVudFZpZXcgPSBDYWxlbmRhclZpZXcuRk9SX1FVQVJURVJTIGFzIE1hdENhbGVuZGFyVmlldztcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZS5hY3RpdmVEYXRlID0gY2hvc2VuRGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gdGltZWZyYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoY2hvc2VuRGF0ZSk7XG4gICAgICAgICAgICBwaWNrZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHRpbmcgdmFsdWUgZnJvbSBvdXRzaWRlIG9mIGNvbXBvbmVudCB2aWEgbmdNb2RlbCBvciBmb3JtQ29udHJvbCB1cGRhdGVzXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvKlxuICAgICAgICAgKiBXZSBuZWVkIGtlZXAgbG9jYWwgdGltZXN0YW1wIGZvciBFbGVjdHJvbiBBcHBsaWNhdGlvblxuICAgICAgICAgKiBJc3N1ZSBpbiBlbGVjdHJvbjogd2hlbiB3ZSBzZWxlY3QgZGF0ZSwgZGF0ZSBzZWxlY3Qgd2l0aCAtMSAoaWYgd2UncmUgY2hvb3NpbmcgMjAyMywgb3V0cHV0IHdpbGwgYmUgMjAyMilcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gKGRvY3VtZW50IGFzIGFueSkuaXNfZWxlY3Ryb24gPyBtb21lbnQudW5peCh2YWx1ZSkgOiBtb21lbnQudW5peCh2YWx1ZSkudXRjKCk7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlID8gY29udmVydGVkVmFsdWUgOiBudWxsO1xuICAgICAgICBpZiAodGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRyeVRvTm9ybWFsaXplVGltZWZyYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBwdWJsaWMgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBTaG91bGQgYmUgYXMgYXJyb3cgZnVuY3Rpb24gdG8gYXZvaWQgbG9zZSBzY29wZVxuICAgIHB1YmxpYyBkYXRlRmlsdGVyID0gKG1vbWVudDogTW9tZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVwaWNrZXJGaWx0ZXIgJiYgbW9tZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyRmlsdGVyKG1vbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIodmFsOiBNb21lbnQpIHtcbiAgICAgICAgaWYgKHZhbCAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZVRvU2V0ID0gdmFsPy5jbG9uZSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlVG9TZXQgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJTaGlmdEZvclllYXIodmFsdWVUb1NldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbU1vbWVudCh2YWx1ZVRvU2V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBpbm5lciB2YWx1ZSBmcm9tIE1vbWVudCBhbmQgcHJvcGFnYXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9tZW50RGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZUZyb21Nb21lbnQobW9tZW50RGF0ZTogTW9tZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUobW9tZW50RGF0ZS51bml4KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBpbm5lciB2YWx1ZSBmcm9tIHRpbWVzdGFtcCBhbmQgcHJvcGFnYXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZXN0YW1wXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHRpbWVzdGFtcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIGlzVmFsdWVVcGRhdGluZyBpcyByZXF1aXJlZCBmb3IgbWFuYWdlIGNsaWNrcyBvbiBzYW1lIGRhdGVzOiBpZiBpc1ZhbHVlVXBkYXRpbmcgLSB0cnVlIHRoZW5cbiAgICAgICAgLy8gZGF5cyBhcmUgZGlmZmVyZW50IGFuZCBzdWJzY3JpcHRpb24gb24gY2FsZW5kYXIgZGF5IGNsaWNrIGFjdGlvbiB3b24ndCB0cmlnZ2VyIEFjY2Vzc29yIG5nTW9kZWwgdXBkYXRlXG4gICAgICAgIC8vIG9uZSBtb3JlIHRpbWVcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbHVlVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUodGltZXN0YW1wKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuaW5uZXJWYWx1ZS51bml4KCkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWx1ZVVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm1EaXNwbGF5ZWRWYWx1ZSh2YWx1ZTogTW9tZW50LCB0aW1lZnJhbWU6IFRpbWVmcmFtZU9wdGlvbik6IE1vbWVudCB7XG4gICAgICAgIGNvbnN0IHZhbHVlVG9SZXR1cm4gPSB2YWx1ZT8uY2xvbmUoKTtcbiAgICAgICAgaWYgKHZhbHVlVG9SZXR1cm4gJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGltZWZyYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5hZGRGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKHZhbHVlVG9SZXR1cm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZVRvUmV0dXJuO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgICAgIGxldCB0aW1lZnJhbWU7XG4gICAgICAgIGxldCBmb3JtYXQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy5mb3JtYXQgYXMgVGltZWZyYW1lT3B0aW9uKTtcbiAgICAgICAgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgdGltZWZyYW1lID0gdGhpcy5mb3JtYXQgYXMgVGltZWZyYW1lT3B0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5ub3JtYWxpemVWYWx1ZSh0aGlzLmZvcm1hdCk7XG4gICAgICAgICAgICB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFRpbWVmcmFtZShmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID0gdGltZWZyYW1lO1xuICAgIH1cblxuICAgIG9uT3BlbigpIHtcbiAgICAgICAgdGhpcy5vcGVuZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgb25DTG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9uTm9ybWFsaXplZFRpbWVzdGFtcCA9IHRoaXMuaW5uZXJWYWx1ZS51bml4KCk7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobm9uTm9ybWFsaXplZFRpbWVzdGFtcCk7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUudW5peCgpO1xuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gbm9uTm9ybWFsaXplZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayhub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkJC5uZXh0KGZhbHNlKTtcbiAgICB9XG59XG4iLCI8aSBjbGFzcz1cImRyLWljb24tZGF0ZVwiIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiPjwvaT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkIHwgYXN5bmMpID09PSAnd2VlaydcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtmb3JtR3JvdXBdPVwicmFuZ2VGb3JtXCIgW3JhbmdlUGlja2VyXT1cImRhdGVQaWNrZXJcIiBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyXCIgY2xhc3M9XCJyYW5nZS1pbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZVxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHJhbmdlRm9ybS52YWx1ZS5zdGFydClcIiAvPlxuICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW3N0YXJ0QXRdPVwiX3N0YXJ0QXRcIlxuICAgICAgICBbcGFuZWxDbGFzc109XCInZHItd2Vlay1kYXRlcGlja2VyJ1wiXG4gICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJjdXN0b21IZWFkZXJcIlxuICAgICAgICAoeWVhclNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uWUVBUiwgZGF0ZVBpY2tlcilcIlxuICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJjaG9zZW5QZXJpb2RIYW5kbGVyKCRldmVudCwgdGltZWZyYW1lT3B0aW9uLk1PTlRILCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAgICAgICAoY2xvc2VkKT1cIm9uQ0xvc2UoKVwiPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSAhPT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFtuZ01vZGVsXT1cImRpc3BsYXlWYWx1ZSQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiXG4gICAgICAgIFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIlxuICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2RyRGF0ZVBpY2tlckZvcm1hdF09XCJkYXRlUGlja2VyU2VydmljZS5mb3JtYXQkIHwgYXN5bmNcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgIFtzdGFydEF0XT1cIl9zdGFydEF0XCJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDM0gsT0FBTyxFQUlILGlDQUFpQyxHQUNw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WUFVRixPQUFPO2tCQURWLEtBQUs7WUFRRyxjQUFjO2tCQUF0QixLQUFLO1lBRUcsV0FBVztrQkFBbkIsS0FBSztZQUVrQyxRQUFRO2tCQUEvQyxLQUFLOztrQkFBSSxXQUFXO21CQUFDLGdCQUFnQjtZQUU3Qix3QkFBd0I7a0JBQWhDLEtBQUs7WUFFRyxjQUFjO2tCQUF0QixLQUFLO1lBRUcsZ0JBQWdCO2tCQUF4QixLQUFLO1lBR0csZ0NBQWdDO2tCQUF4QyxLQUFLO1lBSUssVUFBVTtrQkFEcEIsU0FBUzttQkFBQyxZQUFZO1lBV25CLE1BQU07a0JBRFQsV0FBVzttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJWaWV3LCBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24sIFRpbWVmcmFtZU9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RyLWRhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyQ3VzdG9tSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZHItZGF0ZS1waWNrZXJfY3VzdG9tLWhlYWRlci9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIE1hdENhbGVuZGFyVmlldyxcbiAgICBNYXREYXRlcGlja2VyLFxuICAgIE1hdERhdGVSYW5nZVBpY2tlcixcbiAgICBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWVrLXNlbGVjdGlvbi1zdHJhdGVneSc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVBZGFwdGVyIGV4dGVuZHMgTW9tZW50RGF0ZUFkYXB0ZXIge1xuICAgIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJEYXRlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUFkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksIHVzZUNsYXNzOiBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSxcbiAgICAgICAgRHJEYXRlUGlja2VyU2VydmljZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyBkYXRlIHBpY2tlciBmb3JtYXQgaW5wdXQgbGFiZWwsIGNhbGVuZGFyIHN0YXJ0IHZpZXcgYW5kIHRpbWVmcmFtZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybWF0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4obWluRGF0ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21pbiA9IG1pbkRhdGUgPyBtb21lbnQudW5peChtaW5EYXRlKS51dGMoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4KG1heERhdGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtYXhEYXRlTW9tZW50ID0gbWF4RGF0ZSA/IG1vbWVudC51bml4KG1heERhdGUpLnV0YygpIDogbnVsbDtcbiAgICAgICAgdGhpcy5fbWF4ID0gbWF4RGF0ZU1vbWVudDtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5tYXhEYXRlID0gbWF4RGF0ZU1vbWVudDtcbiAgICB9XG5cbiAgICBfc3RhcnRBdDogTW9tZW50IHwgbnVsbCA9IG51bGw7XG4gICAgLyoqIFRoZSBkYXRlIHRvIG9wZW4gdGhlIGNhbGVuZGFyIHRvIGluaXRpYWxseS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGFydEF0KHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3N0YXJ0QXQgPSB2YWx1ZSA/IG1vbWVudC51bml4KHZhbHVlKS51dGMoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdG8gdHJhbnNmb3JtIGRhdGUsIHRha2luZyBlbmQsIHN0YXJ0LCBtaWRkbGUgb2YgcGVyaW9kIChpLmUuIHNldCBtaWRkbGUgb2YgbW9udGggaWYgdGltZWZyYW1lPSdtb250aCcpXG4gICAgICovXG4gICAgQElucHV0KCkgcGVyaW9kUG9zaXRpb246IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiA9IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5ERUZBVUxUO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0Li4uJztcblxuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG5cbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyQmFjayA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckZpbHRlcjogKG1vbWVudDogTW9tZW50KSA9PiBib29sZWFuO1xuXG4gICAgLy8gVE9ETzogQWRkZWQgYXMgdGVtcCBzb2x1dGlvbiBpbnN0ZWFkIG9mIEZGLCB3aWxsIHJlbW92ZSBvbmNlIHN0YWJsZSAtIGh0dHBzOi8vZGF0YXJhaWxzdGVhbS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9EUi0zNTM5NFxuICAgIEBJbnB1dCgpIGZpeEZvck5vcm1hbGl6ZWRWYWx1ZVdpdGhNYXhEYXRlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9kYXRlUGlja2VyOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PjtcbiAgICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJylcbiAgICBwdWJsaWMgc2V0IGRhdGVQaWNrZXIodmFsdWU6IE1hdERhdGVwaWNrZXI8YW55PiB8IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5kYXRlUGlja2VySW5zdGFuY2UgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlci5zdGFydFZpZXcgPSB0aGlzLmNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nW3RoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lXTtcbiAgICB9XG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyKCk6IE1hdERhdGVwaWNrZXI8YW55PiB8IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXI7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKVxuICAgIGdldCBhY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZCQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJWaWV3c1RpbWVmcmFtZU1hcHBpbmc6IGFueSA9IHtcbiAgICAgICAgeWVhcjogJ211bHRpLXllYXInLFxuICAgICAgICBtb250aDogJ3llYXInLFxuICAgICAgICBxdWFydGVyOiAnbm9uZScsXG4gICAgICAgIGRheTogJ21vbnRoJyxcbiAgICAgICAgd2VlazogJ21vbnRoJyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGN1c3RvbUhlYWRlciA9IERyRGF0ZVBpY2tlckN1c3RvbUhlYWRlckNvbXBvbmVudDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgPSB0cnVlO1xuICAgIHB1YmxpYyBfbWluOiBNb21lbnQ7XG4gICAgcHVibGljIF9tYXg6IE1vbWVudDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZWZyYW1lT3B0aW9uID0gVGltZWZyYW1lT3B0aW9uO1xuXG4gICAgcHJvdGVjdGVkIGdldCBpbm5lclZhbHVlKCk6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWU7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXQgaW5uZXJWYWx1ZSh2YWx1ZTogTW9tZW50KSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwbGF5VmFsdWUkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgXSkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKFtudWxsLCBudWxsXSksXG4gICAgICAgIG1hcCgoW3ZhbHVlLCB0aW1lZnJhbWVdOiBbTW9tZW50LCBUaW1lZnJhbWVPcHRpb25dKSA9PiB0aGlzLnRyYW5zZm9ybURpc3BsYXllZFZhbHVlKHZhbHVlLCB0aW1lZnJhbWUpKSxcbiAgICAgICAgdGFwKCh2YWx1ZTogTW9tZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmFjdGl2ZURhdGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2Uuc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcGVuZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcblxuICAgIHJlYWRvbmx5IHJhbmdlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBzdGFydDogdGhpcy5mYi5jb250cm9sPE1vbWVudCB8IG51bGw+KG51bGwpLFxuICAgICAgICBlbmQ6IHRoaXMuZmIuY29udHJvbDxNb21lbnQgfCBudWxsPihudWxsKSxcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxhbnk+LFxuICAgICAgICBwdWJsaWMgZGF0ZVBpY2tlclNlcnZpY2U6IERyRGF0ZVBpY2tlclNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLnVwZGF0ZWRRdWFydGVyJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgZGF0ZVBpY2tlclNlcnZpY2Uud2Vla1NlbGVjdGlvbkNoYW5nZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh7IHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoc3RhcnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUkLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7IHN0YXJ0OiB2YWx1ZS5jbG9uZSgpLnN0YXJ0T2YoJ2lzb1dlZWsnKSwgZW5kOiB2YWx1ZS5jbG9uZSgpLmVuZE9mKCdpc29XZWVrJykgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRhdGVGb3JtYXRGbiA9IHRoaXMuZGF0ZUFkYXB0ZXIuZm9ybWF0O1xuICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdCA9IChkYXRlOiBNb21lbnQsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGVUb0Zvcm1hdCA9IGRhdGUuY2xvbmUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVGltZWZyYW1lRGVwZW5kaW5nT25GWSh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlVG9Gb3JtYXQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnN1YnRyYWN0RmlzY2FsWWVhck1vbnRoc0Zyb21EYXRlKGRhdGVUb0Zvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0ZUZvcm1hdEZuLmNhbGwodGhpcy5kYXRlQWRhcHRlciwgZGF0ZVRvRm9ybWF0LCBkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyID0gdGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXI7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhckJhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmRhdGVwaWNrZXJGaWx0ZXIgPSB0aGlzLmRhdGVGaWx0ZXI7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuZm9ybWF0Py5jdXJyZW50VmFsdWUgJiYgY2hhbmdlcy5mb3JtYXQuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmZvcm1hdC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlzY2FsWWVhckJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhckJhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRpbmcgY29tcG9uZW50IGlubmVyIHZhbHVlIGFjY29yZGluZyB0byBkYXRlcGlja2VyIHRpbWVmcmFtZSAoZGF5LCBtb250aCBldGMuKVxuICAgICAqIGFuZCBkYXRlIHBvc2l0aW9uIGluIHBlcmlvZCAoc3RhcnQsIGVuZCwgbWlkZGxlKVxuICAgICAqL1xuICAgIHRyeVRvTm9ybWFsaXplVGltZWZyYW1lKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5jbG9uZSgpO1xuICAgICAgICBjb25zdCB1bml0ID0gdGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uV0VFSyA/ICdpc29XZWVrJyA6IHRpbWVmcmFtZTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnBlcmlvZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5TVEFSVF9PRl9QRVJJT0Q6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCAxKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuc3RhcnRPZih1bml0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5FTkRfT0ZfUEVSSU9EOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZkN1cnJlbnRRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLllFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCA0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuZW5kT2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uTUlERExFX09GX1BFUklPRDpcbiAgICAgICAgICAgICAgICBsZXQgZW5kT2ZQZXJpb2Q6IE1vbWVudDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZkN1cnJlbnRRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZDdXJyZW50UXVhcnRlcihlbmRPZlBlcmlvZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLllFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kT2ZQZXJpb2QgPSBub3JtYWxpemVkVmFsdWUuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRTdGFydE9mUXVhcnRlcihub3JtYWxpemVkVmFsdWUsIDEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldEVuZE9mUXVhcnRlcihlbmRPZlBlcmlvZCwgNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCk7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCkuZW5kT2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBlbmRPZlBlcmlvZC5kaWZmKG5vcm1hbGl6ZWRWYWx1ZSwgJ3NlY29uZHMnKTtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuYWRkKGRpZmYgLyAyICsgMSwgJ3NlY29uZHMnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCkuc2V0KCdob3VycycsIDEyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maXhGb3JOb3JtYWxpemVkVmFsdWVXaXRoTWF4RGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgbWluVW5peCA9IE1hdGgubWluKG5vcm1hbGl6ZWRWYWx1ZS51bml4KCksIHRoaXMuX21heC51bml4KCkpO1xuICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gbW9tZW50LnVuaXgobWluVW5peCkudXRjKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaG9zZW5QZXJpb2RIYW5kbGVyKGNob3NlbkRhdGU6IE1vbWVudCwgdGltZWZyYW1lOiBUaW1lZnJhbWVPcHRpb24sIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+KSB7XG4gICAgICAgIGlmICh0aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICBjaG9zZW5EYXRlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5hZGRGaXNjYWxZZWFyTW9udGhzVG9EYXRlKGNob3NlbkRhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUiAmJiB0aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UuY3VycmVudFZpZXcgPSBDYWxlbmRhclZpZXcuRk9SX1FVQVJURVJTIGFzIE1hdENhbGVuZGFyVmlldztcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZS5hY3RpdmVEYXRlID0gY2hvc2VuRGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gdGltZWZyYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoY2hvc2VuRGF0ZSk7XG4gICAgICAgICAgICBwaWNrZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHRpbmcgdmFsdWUgZnJvbSBvdXRzaWRlIG9mIGNvbXBvbmVudCB2aWEgbmdNb2RlbCBvciBmb3JtQ29udHJvbCB1cGRhdGVzXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvKlxuICAgICAgICAgKiBXZSBuZWVkIGtlZXAgbG9jYWwgdGltZXN0YW1wIGZvciBFbGVjdHJvbiBBcHBsaWNhdGlvblxuICAgICAgICAgKiBJc3N1ZSBpbiBlbGVjdHJvbjogd2hlbiB3ZSBzZWxlY3QgZGF0ZSwgZGF0ZSBzZWxlY3Qgd2l0aCAtMSAoaWYgd2UncmUgY2hvb3NpbmcgMjAyMywgb3V0cHV0IHdpbGwgYmUgMjAyMilcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gKGRvY3VtZW50IGFzIGFueSkuaXNfZWxlY3Ryb24gPyBtb21lbnQudW5peCh2YWx1ZSkgOiBtb21lbnQudW5peCh2YWx1ZSkudXRjKCk7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlID8gY29udmVydGVkVmFsdWUgOiBudWxsO1xuICAgICAgICBpZiAodGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRyeVRvTm9ybWFsaXplVGltZWZyYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBwdWJsaWMgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBTaG91bGQgYmUgYXMgYXJyb3cgZnVuY3Rpb24gdG8gYXZvaWQgbG9zZSBzY29wZVxuICAgIHB1YmxpYyBkYXRlRmlsdGVyID0gKG1vbWVudDogTW9tZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVwaWNrZXJGaWx0ZXIgJiYgbW9tZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyRmlsdGVyKG1vbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIodmFsOiBNb21lbnQpIHtcbiAgICAgICAgaWYgKHZhbCAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZVRvU2V0ID0gdmFsPy5jbG9uZSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlVG9TZXQgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJTaGlmdEZvclllYXIodmFsdWVUb1NldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbU1vbWVudCh2YWx1ZVRvU2V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBpbm5lciB2YWx1ZSBmcm9tIE1vbWVudCBhbmQgcHJvcGFnYXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9tZW50RGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZUZyb21Nb21lbnQobW9tZW50RGF0ZTogTW9tZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUobW9tZW50RGF0ZS51bml4KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBpbm5lciB2YWx1ZSBmcm9tIHRpbWVzdGFtcCBhbmQgcHJvcGFnYXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZXN0YW1wXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHRpbWVzdGFtcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIGlzVmFsdWVVcGRhdGluZyBpcyByZXF1aXJlZCBmb3IgbWFuYWdlIGNsaWNrcyBvbiBzYW1lIGRhdGVzOiBpZiBpc1ZhbHVlVXBkYXRpbmcgLSB0cnVlIHRoZW5cbiAgICAgICAgLy8gZGF5cyBhcmUgZGlmZmVyZW50IGFuZCBzdWJzY3JpcHRpb24gb24gY2FsZW5kYXIgZGF5IGNsaWNrIGFjdGlvbiB3b24ndCB0cmlnZ2VyIEFjY2Vzc29yIG5nTW9kZWwgdXBkYXRlXG4gICAgICAgIC8vIG9uZSBtb3JlIHRpbWVcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbHVlVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUodGltZXN0YW1wKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuaW5uZXJWYWx1ZS51bml4KCkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWx1ZVVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm1EaXNwbGF5ZWRWYWx1ZSh2YWx1ZTogTW9tZW50LCB0aW1lZnJhbWU6IFRpbWVmcmFtZU9wdGlvbik6IE1vbWVudCB7XG4gICAgICAgIGNvbnN0IHZhbHVlVG9SZXR1cm4gPSB2YWx1ZT8uY2xvbmUoKTtcbiAgICAgICAgaWYgKHZhbHVlVG9SZXR1cm4gJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGltZWZyYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5hZGRGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKHZhbHVlVG9SZXR1cm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZVRvUmV0dXJuO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgICAgIGxldCB0aW1lZnJhbWU7XG4gICAgICAgIGxldCBmb3JtYXQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy5mb3JtYXQgYXMgVGltZWZyYW1lT3B0aW9uKTtcbiAgICAgICAgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgdGltZWZyYW1lID0gdGhpcy5mb3JtYXQgYXMgVGltZWZyYW1lT3B0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5ub3JtYWxpemVWYWx1ZSh0aGlzLmZvcm1hdCk7XG4gICAgICAgICAgICB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFRpbWVmcmFtZShmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID0gdGltZWZyYW1lO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQubmV4dChmb3JtYXQpO1xuICAgIH1cblxuICAgIG9uT3BlbigpIHtcbiAgICAgICAgdGhpcy5vcGVuZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgb25DTG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9uTm9ybWFsaXplZFRpbWVzdGFtcCA9IHRoaXMuaW5uZXJWYWx1ZS51bml4KCk7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobm9uTm9ybWFsaXplZFRpbWVzdGFtcCk7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUudW5peCgpO1xuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gbm9uTm9ybWFsaXplZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayhub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkJC5uZXh0KGZhbHNlKTtcbiAgICB9XG59XG4iLCI8aSBjbGFzcz1cImRyLWljb24tZGF0ZVwiIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiPjwvaT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkIHwgYXN5bmMpID09PSAnd2VlaydcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtmb3JtR3JvdXBdPVwicmFuZ2VGb3JtXCIgW3JhbmdlUGlja2VyXT1cImRhdGVQaWNrZXJcIiBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyXCIgY2xhc3M9XCJyYW5nZS1pbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZVxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHJhbmdlRm9ybS52YWx1ZS5zdGFydClcIiAvPlxuICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW3N0YXJ0QXRdPVwiX3N0YXJ0QXRcIlxuICAgICAgICBbcGFuZWxDbGFzc109XCInZHItd2Vlay1kYXRlcGlja2VyJ1wiXG4gICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJjdXN0b21IZWFkZXJcIlxuICAgICAgICAoeWVhclNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uWUVBUiwgZGF0ZVBpY2tlcilcIlxuICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJjaG9zZW5QZXJpb2RIYW5kbGVyKCRldmVudCwgdGltZWZyYW1lT3B0aW9uLk1PTlRILCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAgICAgICAoY2xvc2VkKT1cIm9uQ0xvc2UoKVwiPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSAhPT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFtuZ01vZGVsXT1cImRpc3BsYXlWYWx1ZSQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiXG4gICAgICAgIFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIlxuICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2RyRGF0ZVBpY2tlckZvcm1hdF09XCJkYXRlUGlja2VyU2VydmljZS5mb3JtYXQkIHwgYXN5bmNcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgIFtzdGFydEF0XT1cIl9zdGFydEF0XCJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|