@kms-ngx-ui/presentational 14.1.1 → 14.1.2
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/esm2020/lib/directives/directives.module.mjs +8 -3
- package/esm2020/lib/directives/size.directive.mjs +21 -0
- package/esm2020/lib/parent-components/form-control.component.mjs +2 -2
- package/esm2020/lib/parent-components/form.component.mjs +11 -5
- package/esm2020/lib/services/viewport.service.mjs +177 -71
- package/esm2020/lib/ui/back-to-top/back-to-top.component.mjs +1 -1
- package/esm2020/lib/ui/dropdown-from-data/dropdown-from-data.component.mjs +4 -1
- package/esm2020/lib/ui/file-input/file-input.component.mjs +8 -8
- package/esm2020/lib/ui/flyout/flyout.component.mjs +6 -5
- package/esm2020/lib/ui/icon/icon.component.mjs +6 -3
- package/esm2020/lib/ui/icon/iconSize.enum.mjs +12 -1
- package/esm2020/lib/ui/image-slider/image-slider.component.mjs +1 -1
- package/esm2020/lib/ui/kms-accordion-item/kms-accordion-item.component.mjs +1 -1
- package/esm2020/lib/ui/map/map.component.mjs +3 -3
- package/esm2020/lib/ui/radiobutton/radiobutton.component.mjs +9 -5
- package/esm2020/lib/ui/tooltip-icon/tooltip-icon.component.mjs +7 -6
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/kms-ngx-ui-presentational.mjs +300 -144
- package/fesm2015/kms-ngx-ui-presentational.mjs.map +1 -1
- package/fesm2020/kms-ngx-ui-presentational.mjs +301 -146
- package/fesm2020/kms-ngx-ui-presentational.mjs.map +1 -1
- package/lib/directives/directives.module.d.ts +4 -2
- package/lib/directives/size.directive.d.ts +10 -0
- package/lib/services/viewport.service.d.ts +58 -9
- package/lib/ui/dropdown-from-data/dropdown-from-data.component.d.ts +1 -0
- package/lib/ui/file-input/file-input.component.d.ts +2 -2
- package/lib/ui/icon/icon.component.d.ts +7 -1
- package/lib/ui/icon/iconSize.enum.d.ts +10 -0
- package/lib/ui/radiobutton/radiobutton.component.d.ts +2 -1
- package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +2 -2
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/lib/ui/back-to-top/back-to-top.component.scss +2 -3
- package/src/lib/ui/icon/icon.component.scss +2 -36
- package/src/styles/animations.scss +47 -0
- package/src/styles/styles.scss +1 -0
|
@@ -1,94 +1,140 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @copyright KMS GmbH
|
|
3
3
|
*/
|
|
4
|
-
import { isPlatformBrowser } from '@angular/common';
|
|
4
|
+
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
5
5
|
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
6
6
|
import { Subject } from 'rxjs';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
export class SimpleBreakpoint {
|
|
9
|
+
constructor(data) {
|
|
10
|
+
Object.assign(this, data);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class Breakpoint {
|
|
14
|
+
constructor(data) {
|
|
15
|
+
Object.assign(this, data);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
8
18
|
/**
|
|
9
19
|
* Service to get viewport
|
|
10
20
|
*/
|
|
11
21
|
export class ViewportService {
|
|
12
|
-
constructor(platformId) {
|
|
22
|
+
constructor(platformId, document) {
|
|
13
23
|
this.platformId = platformId;
|
|
14
|
-
this.
|
|
24
|
+
this.document = document;
|
|
25
|
+
this.simpleBreakpoints = [
|
|
26
|
+
{ Number: 0, Name: 'mobile', MaximumPixels: 768 },
|
|
27
|
+
{ Number: 1, Name: 'tablet', MaximumPixels: 1024 },
|
|
28
|
+
{ Number: 2, Name: 'desktop', MaximumPixels: 1600 },
|
|
29
|
+
{ Number: 3, Name: 'high', MaximumPixels: 2500 },
|
|
30
|
+
];
|
|
31
|
+
this.breakpoints = [
|
|
15
32
|
{
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
33
|
+
Number: 0,
|
|
34
|
+
Name: 'xs',
|
|
35
|
+
Low: 360,
|
|
36
|
+
High: 990,
|
|
19
37
|
},
|
|
20
38
|
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
39
|
+
Number: 1,
|
|
40
|
+
Name: 's',
|
|
41
|
+
Low: 991,
|
|
42
|
+
High: 1024,
|
|
24
43
|
},
|
|
25
44
|
{
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
45
|
+
Number: 2,
|
|
46
|
+
Name: 'm',
|
|
47
|
+
Low: 1025,
|
|
48
|
+
High: 1200,
|
|
29
49
|
},
|
|
30
50
|
{
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
51
|
+
Number: 3,
|
|
52
|
+
Name: 'l',
|
|
53
|
+
Low: 1201,
|
|
54
|
+
High: 1400,
|
|
34
55
|
},
|
|
35
56
|
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
57
|
+
Number: 4,
|
|
58
|
+
Name: 'xl',
|
|
59
|
+
Low: 1401,
|
|
60
|
+
High: 1600,
|
|
39
61
|
},
|
|
40
62
|
{
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
Number: 5,
|
|
64
|
+
Name: 'xxl',
|
|
65
|
+
Low: 1601,
|
|
66
|
+
High: 1920,
|
|
44
67
|
},
|
|
45
68
|
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
69
|
+
Number: 6,
|
|
70
|
+
Name: 'xxxl',
|
|
71
|
+
Low: 1921,
|
|
72
|
+
High: 99999,
|
|
49
73
|
},
|
|
50
74
|
];
|
|
51
75
|
this.viewportChangedSubscriber = new Subject();
|
|
52
76
|
this.viewportResizedSubscriber = new Subject();
|
|
77
|
+
this.isBrowser = false;
|
|
53
78
|
if (isPlatformBrowser(this.platformId)) {
|
|
54
|
-
window.addEventListener('resize', this.documentSizeChanged.bind(this), {
|
|
79
|
+
window.addEventListener('resize', this.documentSizeChanged.bind(this), {
|
|
80
|
+
passive: true,
|
|
81
|
+
});
|
|
82
|
+
this.isBrowser = true;
|
|
55
83
|
}
|
|
56
84
|
}
|
|
57
85
|
/**
|
|
58
86
|
* Get window height
|
|
59
87
|
*/
|
|
60
88
|
getDocumentHeight() {
|
|
61
|
-
return
|
|
89
|
+
return this.isBrowser ? document.body.clientHeight : 1200;
|
|
62
90
|
}
|
|
63
91
|
/**
|
|
64
92
|
* Get window width
|
|
65
93
|
*/
|
|
66
94
|
getDocumentWidth() {
|
|
67
|
-
return
|
|
95
|
+
return this.isBrowser ? document.body.clientWidth : 1200;
|
|
68
96
|
}
|
|
69
97
|
/**
|
|
70
98
|
* Get window height
|
|
71
99
|
*/
|
|
72
100
|
getWindowHeight() {
|
|
73
|
-
return
|
|
101
|
+
return this.isBrowser ? window.innerHeight : 1200;
|
|
74
102
|
}
|
|
75
103
|
/**
|
|
76
104
|
* Get window width
|
|
77
105
|
*/
|
|
78
106
|
getWindowWidth() {
|
|
79
|
-
return
|
|
107
|
+
return this.isBrowser ? window.innerWidth : 1200;
|
|
80
108
|
}
|
|
81
109
|
/**
|
|
82
110
|
* Returns the current viewport MQ as string
|
|
83
111
|
* @returns string
|
|
84
112
|
*/
|
|
85
113
|
getCurrentViewPort() {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
114
|
+
const currentWidth = this.isBrowser
|
|
115
|
+
? document.body.clientWidth
|
|
116
|
+
: 1200;
|
|
117
|
+
this.currentViewport = this.convertWidthToMediaQuery(currentWidth).Name;
|
|
90
118
|
return this.currentViewport;
|
|
91
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Returns the current viewport MQ as object with all informations
|
|
122
|
+
* @returns string
|
|
123
|
+
*/
|
|
124
|
+
getCurrentViewPortObject() {
|
|
125
|
+
const currentWidth = this.isBrowser
|
|
126
|
+
? document.body.clientWidth
|
|
127
|
+
: 1200;
|
|
128
|
+
this.currentViewportObject = this.convertWidthToMediaQuery(currentWidth);
|
|
129
|
+
return this.currentViewportObject;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Returns the current viewport as number
|
|
133
|
+
* @returns string
|
|
134
|
+
*/
|
|
135
|
+
getCurrentViewPortNumber() {
|
|
136
|
+
return this.isBrowser ? document.body.clientWidth : 1200;
|
|
137
|
+
}
|
|
92
138
|
/**
|
|
93
139
|
* Provides mq´s as string
|
|
94
140
|
*/
|
|
@@ -101,8 +147,11 @@ export class ViewportService {
|
|
|
101
147
|
getViewportResizedObserver() {
|
|
102
148
|
return this.viewportResizedSubscriber.asObservable();
|
|
103
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Scroll to element
|
|
152
|
+
*/
|
|
104
153
|
scrollToElementId(el, alignCenter = false) {
|
|
105
|
-
if (
|
|
154
|
+
if (this.isBrowser) {
|
|
106
155
|
this.scrollToElement(document.querySelector('#' + el), alignCenter);
|
|
107
156
|
}
|
|
108
157
|
}
|
|
@@ -112,24 +161,24 @@ export class ViewportService {
|
|
|
112
161
|
* @param alignCenter - defines if the element needs to be centered on window
|
|
113
162
|
*/
|
|
114
163
|
scrollToElement(el, alignCenter = false) {
|
|
115
|
-
if (
|
|
164
|
+
if (this.isBrowser) {
|
|
116
165
|
let extraScrollTop = 0;
|
|
117
166
|
if (alignCenter) {
|
|
118
167
|
extraScrollTop = (window.innerHeight - el.clientHeight) / 2;
|
|
119
168
|
}
|
|
120
|
-
|
|
121
|
-
const elementPos: DOMRect = el.getBoundingClientRect();
|
|
122
|
-
const scrollTopPosition = elementPos.x - extraScrollTop;
|
|
123
|
-
*/
|
|
124
|
-
//let offsetLeft = 0;
|
|
169
|
+
let offsetLeft = 0;
|
|
125
170
|
let offsetTop = 0;
|
|
126
171
|
let elTemp = el;
|
|
127
172
|
while (elTemp) {
|
|
128
|
-
|
|
173
|
+
offsetLeft += elTemp.offsetLeft;
|
|
129
174
|
offsetTop += elTemp.offsetTop;
|
|
130
175
|
elTemp = elTemp.parentElement ? elTemp.parentElement : null;
|
|
131
176
|
}
|
|
132
|
-
window.scrollTo({
|
|
177
|
+
window.scrollTo({
|
|
178
|
+
left: offsetLeft,
|
|
179
|
+
top: offsetTop - extraScrollTop,
|
|
180
|
+
behavior: 'smooth',
|
|
181
|
+
});
|
|
133
182
|
}
|
|
134
183
|
}
|
|
135
184
|
/**
|
|
@@ -137,15 +186,63 @@ export class ViewportService {
|
|
|
137
186
|
* @param top - top position value
|
|
138
187
|
*/
|
|
139
188
|
scrollTop(top) {
|
|
140
|
-
if (
|
|
189
|
+
if (this.isBrowser) {
|
|
141
190
|
window.scrollTo({ left: 0, top: top, behavior: 'smooth' });
|
|
142
191
|
}
|
|
143
192
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
193
|
+
/**
|
|
194
|
+
* If orientation is portrait
|
|
195
|
+
*/
|
|
196
|
+
isPortrait() {
|
|
197
|
+
if (this.isBrowser)
|
|
198
|
+
return window.innerHeight > window.innerWidth;
|
|
199
|
+
else
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* If orientation is landscape
|
|
204
|
+
*/
|
|
205
|
+
isLandscape() {
|
|
206
|
+
if (this.isBrowser) {
|
|
207
|
+
const isLandscape = window.orientation === 90 || window.orientation === -90;
|
|
208
|
+
return isLandscape;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* If mobile breakpoint (below tablet)
|
|
216
|
+
*/
|
|
217
|
+
isMobile() {
|
|
218
|
+
return this.getCurrentViewPortNumber() < this.breakpoints[2].Low;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get height of an element
|
|
222
|
+
* @deprecated
|
|
223
|
+
*/
|
|
224
|
+
calculateFullscreenElementsheight(id, defaultheight, extra) {
|
|
225
|
+
if (!this.isBrowser || this.isMobile()) {
|
|
226
|
+
return defaultheight;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
const map = this.document.getElementById(id);
|
|
230
|
+
const footer = this.document.getElementsByTagName('footer')[0];
|
|
231
|
+
if (map && footer) {
|
|
232
|
+
return `${window.innerHeight - map.offsetTop - footer.offsetHeight - extra}px`;
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
console.warn('could not calculate map height');
|
|
236
|
+
return defaultheight;
|
|
237
|
+
}
|
|
147
238
|
}
|
|
148
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Get height of an element
|
|
242
|
+
*/
|
|
243
|
+
calculateFullscreenElementsHeight(id, defaultheight, extra) {
|
|
244
|
+
return this.calculateFullscreenElementsheight(id, defaultheight, extra);
|
|
245
|
+
}
|
|
149
246
|
/**
|
|
150
247
|
* If viewport changed
|
|
151
248
|
* @event
|
|
@@ -155,18 +252,18 @@ export class ViewportService {
|
|
|
155
252
|
// inform who´s interested
|
|
156
253
|
this.viewportResizedSubscriber.next(currentWindowWidth);
|
|
157
254
|
if (currentWindowWidth > 0) {
|
|
158
|
-
for (const mqs of this.
|
|
159
|
-
if (currentWindowWidth > mqs.
|
|
255
|
+
for (const mqs of this.breakpoints) {
|
|
256
|
+
if (currentWindowWidth > mqs.High) {
|
|
160
257
|
continue;
|
|
161
258
|
}
|
|
162
|
-
else if ((currentWindowWidth >= mqs.
|
|
163
|
-
this.currentViewport !== mqs.
|
|
164
|
-
this.currentViewport = mqs.
|
|
259
|
+
else if ((currentWindowWidth >= mqs.Low || currentWindowWidth <= mqs.High) &&
|
|
260
|
+
this.currentViewport !== mqs.Name) {
|
|
261
|
+
this.currentViewport = mqs.Name;
|
|
165
262
|
// inform who´s interested
|
|
166
|
-
this.viewportChangedSubscriber.next(mqs.
|
|
263
|
+
this.viewportChangedSubscriber.next(mqs.Name);
|
|
167
264
|
break;
|
|
168
265
|
}
|
|
169
|
-
else if (this.currentViewport === mqs.
|
|
266
|
+
else if (this.currentViewport === mqs.Name) {
|
|
170
267
|
break;
|
|
171
268
|
}
|
|
172
269
|
else {
|
|
@@ -180,37 +277,46 @@ export class ViewportService {
|
|
|
180
277
|
* @param width Width to get the according MQ for
|
|
181
278
|
*/
|
|
182
279
|
convertWidthToMediaQuery(width) {
|
|
183
|
-
let currentViewport =
|
|
184
|
-
for (const mqs of this.
|
|
185
|
-
if (width <= mqs.
|
|
186
|
-
currentViewport = mqs
|
|
280
|
+
let currentViewport = this.breakpoints[0];
|
|
281
|
+
for (const mqs of this.breakpoints) {
|
|
282
|
+
if (width <= mqs.High && width >= mqs.Low) {
|
|
283
|
+
currentViewport = mqs;
|
|
187
284
|
break;
|
|
188
285
|
}
|
|
189
286
|
}
|
|
190
287
|
return currentViewport;
|
|
191
288
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
289
|
+
/**
|
|
290
|
+
* Get the breakpoint/device name like mobile,tablet,desktop, high
|
|
291
|
+
*/
|
|
292
|
+
getSimpleBreakpoint(screenSize) {
|
|
293
|
+
let actualBreakpoint;
|
|
294
|
+
const sizes = this.simpleBreakpoints.slice().reverse(); // we need to reverse it to check step by step from biggest, which breakpoints still fits. Slice is a trick to not mutate the original array and make a copy
|
|
295
|
+
for (const key in sizes) {
|
|
296
|
+
if (screenSize < sizes[key].MaximumPixels) {
|
|
297
|
+
actualBreakpoint = sizes[key];
|
|
298
|
+
}
|
|
202
299
|
}
|
|
203
|
-
|
|
204
|
-
|
|
300
|
+
if (!actualBreakpoint) {
|
|
301
|
+
actualBreakpoint = sizes[0]; // default screensize is biggest. Will be used if viewport is bigger as maximum. Remember, array is reversed
|
|
302
|
+
}
|
|
303
|
+
return actualBreakpoint;
|
|
304
|
+
}
|
|
305
|
+
ngOnDestroy() {
|
|
306
|
+
if (this.isBrowser) {
|
|
307
|
+
window.removeEventListener('resize', this.documentSizeChanged);
|
|
205
308
|
}
|
|
206
309
|
}
|
|
207
310
|
}
|
|
208
|
-
ViewportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewportService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
311
|
+
ViewportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewportService, deps: [{ token: PLATFORM_ID }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
209
312
|
ViewportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewportService });
|
|
210
313
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewportService, decorators: [{
|
|
211
314
|
type: Injectable
|
|
212
315
|
}], ctorParameters: function () { return [{ type: Object, decorators: [{
|
|
213
316
|
type: Inject,
|
|
214
317
|
args: [PLATFORM_ID]
|
|
318
|
+
}] }, { type: Document, decorators: [{
|
|
319
|
+
type: Inject,
|
|
320
|
+
args: [DOCUMENT]
|
|
215
321
|
}] }]; } });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBUzNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUEyQ3hCLFlBQXlDLFVBQWtCO1FBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUExQzNDLGNBQVMsR0FBRztZQUN4QjtnQkFDSSxJQUFJLEVBQUUsSUFBSTtnQkFDVixHQUFHLEVBQUUsR0FBRztnQkFDUixJQUFJLEVBQUUsR0FBRzthQUNaO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNJLElBQUksRUFBRSxHQUFHO2dCQUNULEdBQUcsRUFBRSxJQUFJO2dCQUNULElBQUksRUFBRSxJQUFJO2FBQ2I7WUFDRDtnQkFDSSxJQUFJLEVBQUUsR0FBRztnQkFDVCxHQUFHLEVBQUUsS0FBSztnQkFDVixJQUFJLEVBQUUsSUFBSTthQUNiO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLElBQUk7Z0JBQ1YsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNJLElBQUksRUFBRSxLQUFLO2dCQUNYLEdBQUcsRUFBRSxJQUFJO2dCQUNULElBQUksRUFBRSxJQUFJO2FBQ2I7WUFDRDtnQkFDSSxJQUFJLEVBQUUsTUFB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QyxVQUFVLENBQUMsRUFBRTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVFLE9BQU8sV0FBVyxDQUFDO1NBQ3RCO2FBQU07WUFDSCxPQUFPO1NBQ1Y7SUFDTCxDQUFDOzs0R0E1TlEsZUFBZSxrQkEyQ0osV0FBVztnSEEzQ3RCLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBNENNLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNvcHlyaWdodCBLTVMgR21iSFxuICovXG5cbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTnVsbEFibGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG4vLyBuZWVkZWQgZm9yIHNjcm9sbFRvRWxlbWVudCBmdW5jdGlvbmFsaXR5XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBhbnk7XG5cbmRlY2xhcmUgY29uc3QgZG9jdW1lbnQ6IGFueTtcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIGdldCB2aWV3cG9ydFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVmlld3BvcnRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlld3BvcnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAneHMnLFxuICAgICAgICAgICAgbG93OiA0MjAsXG4gICAgICAgICAgICBoaWdoOiA5OTAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzJyxcbiAgICAgICAgICAgIGxvdzogOTkxLFxuICAgICAgICAgICAgaGlnaDogMTAyNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ20nLFxuICAgICAgICAgICAgbG93OiAxMDI1LFxuICAgICAgICAgICAgaGlnaDogMTIwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2wnLFxuICAgICAgICAgICAgbG93OiAxMjAwMSxcbiAgICAgICAgICAgIGhpZ2g6IDE0MDAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd4bCcsXG4gICAgICAgICAgICBsb3c6IDE0MDEsXG4gICAgICAgICAgICBoaWdoOiAxNjAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAneHhsJyxcbiAgICAgICAgICAgIGxvdzogMTYwMSxcbiAgICAgICAgICAgIGhpZ2g6IDE5MjAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd4eHhsJyxcbiAgICAgICAgICAgIGxvdzogMTkyMSxcbiAgICAgICAgICAgIGhpZ2g6IDk5OTk5LFxuICAgICAgICB9LFxuICAgIF07XG5cbiAgICBwcml2YXRlIHZpZXdwb3J0Q2hhbmdlZFN1YnNjcmliZXI6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXI6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgICBwcml2YXRlIGN1cnJlbnRWaWV3cG9ydCE6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0KSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFNpemVDaGFuZ2VkLmJpbmQodGhpcyksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgaGVpZ2h0XG4gICAgICovXG4gICAgcHVibGljIGdldERvY3VtZW50SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgd2lkdGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RG9jdW1lbnRXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgaGVpZ2h0XG4gICAgICovXG4gICAgcHVibGljIGdldFdpbmRvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IHdpbmRvdy5pbm5lckhlaWdodCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyB3aWR0aFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXaW5kb3dXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IHdpbmRvdy5pbm5lcldpZHRoIDogMTIwMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZpZXdwb3J0IE1RIGFzIHN0cmluZ1xuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIGdldEN1cnJlbnRWaWV3UG9ydCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFZpZXdwb3J0KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50V2lkdGg6IG51bWJlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgPyBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDogMTIwMDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdwb3J0ID0gdGhpcy5jb252ZXJ0V2lkdGhUb01lZGlhUXVlcnkoY3VycmVudFdpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRWaWV3cG9ydDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBtccK0cyBhcyBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld3BvcnRDaGFuZ2VkT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyB0aGUgY3VycmVudCB3aW5kb3cgd2lkdGggYXMgbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIGdldFZpZXdwb3J0UmVzaXplZE9ic2VydmVyKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXIuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNjcm9sbFRvRWxlbWVudElkKGVsOiBzdHJpbmcsIGFsaWduQ2VudGVyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgZWwpLCBhbGlnbkNlbnRlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBzY3JvbGxzIHRvIHRoZSBnaXZlbiBtYXJrdXAgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gZWwgLSBuYXRpdmVFbGVtZW50IGZyb20gbWFya3VwXG4gICAgICogQHBhcmFtIGFsaWduQ2VudGVyIC0gZGVmaW5lcyBpZiB0aGUgZWxlbWVudCBuZWVkcyB0byBiZSBjZW50ZXJlZCBvbiB3aW5kb3dcbiAgICAgKi9cblxuICAgIHB1YmxpYyBzY3JvbGxUb0VsZW1lbnQoZWw6IEhUTUxFbGVtZW50LCBhbGlnbkNlbnRlciA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBsZXQgZXh0cmFTY3JvbGxUb3AgPSAwO1xuXG4gICAgICAgICAgICBpZiAoYWxpZ25DZW50ZXIpIHtcbiAgICAgICAgICAgICAgICBleHRyYVNjcm9sbFRvcCA9ICh3aW5kb3cuaW5uZXJIZWlnaHQgLSBlbC5jbGllbnRIZWlnaHQpIC8gMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3M6IERPTVJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvcFBvc2l0aW9uID0gZWxlbWVudFBvcy54IC0gZXh0cmFTY3JvbGxUb3A7XG4gICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAvL2xldCBvZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgICAgIGxldCBvZmZzZXRUb3AgPSAwO1xuXG4gICAgICAgICAgICBsZXQgZWxUZW1wOiBOdWxsQWJsZTxIVE1MRWxlbWVudD4gPSBlbDtcblxuICAgICAgICAgICAgd2hpbGUgKGVsVGVtcCkge1xuICAgICAgICAgICAgICAgIC8vb2Zmc2V0TGVmdCArPSBlbFRlbXAub2Zmc2V0TGVmdDtcbiAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gZWxUZW1wLm9mZnNldFRvcDtcbiAgICAgICAgICAgICAgICBlbFRlbXAgPSBlbFRlbXAucGFyZW50RWxlbWVudCA/IGVsVGVtcC5wYXJlbnRFbGVtZW50IDogbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiBvZmZzZXRUb3AgLSBleHRyYVNjcm9sbFRvcCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIHRoZSB0b3AgcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gdG9wIC0gdG9wIHBvc2l0aW9uIHZhbHVlXG4gICAgICovXG4gICAgcHVibGljIHNjcm9sbFRvcCh0b3A6IG51bWJlcikge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiB0b3AsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRTaXplQ2hhbmdlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB2aWV3cG9ydCBjaGFuZ2VkXG4gICAgICogQGV2ZW50XG4gICAgICovXG5cbiAgICBwcml2YXRlIGRvY3VtZW50U2l6ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBjdXJyZW50V2luZG93V2lkdGg6IG51bWJlciA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAvLyBpbmZvcm0gd2hvwrRzIGludGVyZXN0ZWRcbiAgICAgICAgdGhpcy52aWV3cG9ydFJlc2l6ZWRTdWJzY3JpYmVyLm5leHQoY3VycmVudFdpbmRvd1dpZHRoKTtcblxuICAgICAgICBpZiAoY3VycmVudFdpbmRvd1dpZHRoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtcXMgb2YgdGhpcy52aWV3cG9ydHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFdpbmRvd1dpZHRoID4gbXFzLmhpZ2gpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRXaW5kb3dXaWR0aCA+PSBtcXMubG93IHx8IGN1cnJlbnRXaW5kb3dXaWR0aCA8PSBtcXMuaGlnaCkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgIT09IG1xcy5uYW1lXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdwb3J0ID0gbXFzLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluZm9ybSB3aG/CtHMgaW50ZXJlc3RlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0Q2hhbmdlZFN1YnNjcmliZXIubmV4dChtcXMubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50Vmlld3BvcnQgPT09IG1xcy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBNZWRpYSBRdWVyeSBmb3IgdGhlIGdpdmVuIHdpZHRoXG4gICAgICogQHBhcmFtIHdpZHRoIFdpZHRoIHRvIGdldCB0aGUgYWNjb3JkaW5nIE1RIGZvclxuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydFdpZHRoVG9NZWRpYVF1ZXJ5KHdpZHRoOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3cG9ydCA9ICcnO1xuXG4gICAgICAgIGZvciAoY29uc3QgbXFzIG9mIHRoaXMudmlld3BvcnRzKSB7XG4gICAgICAgICAgICBpZiAod2lkdGggPD0gbXFzLmhpZ2ggJiYgd2lkdGggPj0gbXFzLmxvdykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3cG9ydCA9IG1xcy5uYW1lO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICB9XG5cbiAgICBpc1BvcnRyYWl0KCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCA+IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBlbHNlIHJldHVybjtcbiAgICB9XG5cbiAgICBpc0xhbmRzY2FwZSgpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGFuZHNjYXBlID0gd2luZG93Lm9yaWVudGF0aW9uID09PSA5MCB8fCB3aW5kb3cub3JpZW50YXRpb24gPT09IC05MDtcbiAgICAgICAgICAgIHJldHVybiBpc0xhbmRzY2FwZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQVksSUFBZ0M7UUFDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUlKO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFDbkIsWUFBWSxJQUFnQztRQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBS0o7QUFFRDs7R0FFRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBMkR4QixZQUNpQyxVQUFrQixFQUN0QixRQUFrQjtRQURkLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTVEL0Isc0JBQWlCLEdBQXVCO1lBQ3BELEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDakQsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRTtZQUNsRCxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUs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QUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsVUFBa0I7UUFDbEMsSUFBSSxnQkFBOEMsQ0FBQztRQUVuRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyw0SkFBNEo7UUFDcE4sS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUU7WUFDckIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDdkMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0o7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNEdBQTRHO1NBQzVJO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0wsQ0FBQzs7NEdBNVVRLGVBQWUsa0JBNERaLFdBQVcsYUFDWCxRQUFRO2dIQTdEWCxlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQTZERixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjb3B5cmlnaHQgS01TIEdtYkhcbiAqL1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTnVsbEFibGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuZGVjbGFyZSBjb25zdCBkb2N1bWVudDogYW55O1xuXG5leHBvcnQgY2xhc3MgU2ltcGxlQnJlYWtwb2ludCB7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8U2ltcGxlQnJlYWtwb2ludD4pIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBkYXRhKTtcbiAgICB9XG4gICAgTnVtYmVyITogbnVtYmVyO1xuICAgIE5hbWUhOiBzdHJpbmc7XG4gICAgTWF4aW11bVBpeGVscyE6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEJyZWFrcG9pbnQge1xuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPFNpbXBsZUJyZWFrcG9pbnQ+KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGF0YSk7XG4gICAgfVxuICAgIE51bWJlciE6IG51bWJlcjtcbiAgICBOYW1lITogc3RyaW5nO1xuICAgIExvdyE6IG51bWJlcjtcbiAgICBIaWdoITogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdG8gZ2V0IHZpZXdwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByZWFkb25seSBzaW1wbGVCcmVha3BvaW50czogU2ltcGxlQnJlYWtwb2ludFtdID0gW1xuICAgICAgICB7IE51bWJlcjogMCwgTmFtZTogJ21vYmlsZScsIE1heGltdW1QaXhlbHM6IDc2OCB9LFxuICAgICAgICB7IE51bWJlcjogMSwgTmFtZTogJ3RhYmxldCcsIE1heGltdW1QaXhlbHM6IDEwMjQgfSxcbiAgICAgICAgeyBOdW1iZXI6IDIsIE5hbWU6ICdkZXNrdG9wJywgTWF4aW11bVBpeGVsczogMTYwMCB9LFxuICAgICAgICB7IE51bWJlcjogMywgTmFtZTogJ2hpZ2gnLCBNYXhpbXVtUGl4ZWxzOiAyNTAwIH0sXG4gICAgXTtcblxuICAgIHB1YmxpYyByZWFkb25seSBicmVha3BvaW50czogQnJlYWtwb2ludFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBOdW1iZXI6IDAsXG4gICAgICAgICAgICBOYW1lOiAneHMnLFxuICAgICAgICAgICAgTG93OiAzNjAsXG4gICAgICAgICAgICBIaWdoOiA5OTAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIE51bWJlcjogMSxcbiAgICAgICAgICAgIE5hbWU6ICdzJyxcbiAgICAgICAgICAgIExvdzogOTkxLFxuICAgICAgICAgICAgSGlnaDogMTAyNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiAyLFxuICAgICAgICAgICAgTmFtZTogJ20nLFxuICAgICAgICAgICAgTG93OiAxMDI1LFxuICAgICAgICAgICAgSGlnaDogMTIwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiAzLFxuICAgICAgICAgICAgTmFtZTogJ2wnLFxuICAgICAgICAgICAgTG93OiAxMjAxLFxuICAgICAgICAgICAgSGlnaDogMTQwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiA0LFxuICAgICAgICAgICAgTmFtZTogJ3hsJyxcbiAgICAgICAgICAgIExvdzogMTQwMSxcbiAgICAgICAgICAgIEhpZ2g6IDE2MDAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIE51bWJlcjogNSxcbiAgICAgICAgICAgIE5hbWU6ICd4eGwnLFxuICAgICAgICAgICAgTG93OiAxNjAxLFxuICAgICAgICAgICAgSGlnaDogMTkyMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgTnVtYmVyOiA2LFxuICAgICAgICAgICAgTmFtZTogJ3h4eGwnLFxuICAgICAgICAgICAgTG93OiAxOTIxLFxuICAgICAgICAgICAgSGlnaDogOTk5OTksXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIHByaXZhdGUgdmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlcjogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgdmlld3BvcnRSZXNpemVkU3Vic2NyaWJlcjogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIHByaXZhdGUgY3VycmVudFZpZXdwb3J0ITogc3RyaW5nO1xuICAgIHByaXZhdGUgY3VycmVudFZpZXdwb3J0T2JqZWN0ITogQnJlYWtwb2ludDtcbiAgICBwcml2YXRlIGlzQnJvd3NlciA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFNpemVDaGFuZ2VkLmJpbmQodGhpcyksIHtcbiAgICAgICAgICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmlzQnJvd3NlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgd2luZG93IGhlaWdodFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREb2N1bWVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyB3aWR0aFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREb2N1bWVudFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQnJvd3NlciA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgaGVpZ2h0XG4gICAgICovXG4gICAgcHVibGljIGdldFdpbmRvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgd2lkdGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2luZG93V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNCcm93c2VyID8gd2luZG93LmlubmVyV2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgTVEgYXMgc3RyaW5nXG4gICAgICogQHJldHVybnMgc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGdldEN1cnJlbnRWaWV3UG9ydCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGg6IG51bWJlciA9IHRoaXMuaXNCcm93c2VyXG4gICAgICAgICAgICA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGhcbiAgICAgICAgICAgIDogMTIwMDtcbiAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgPSB0aGlzLmNvbnZlcnRXaWR0aFRvTWVkaWFRdWVyeShjdXJyZW50V2lkdGgpLk5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgTVEgYXMgb2JqZWN0IHdpdGggYWxsIGluZm9ybWF0aW9uc1xuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW50Vmlld1BvcnRPYmplY3QoKTogQnJlYWtwb2ludCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aDogbnVtYmVyID0gdGhpcy5pc0Jyb3dzZXJcbiAgICAgICAgICAgID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aFxuICAgICAgICAgICAgOiAxMjAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3cG9ydE9iamVjdCA9IHRoaXMuY29udmVydFdpZHRoVG9NZWRpYVF1ZXJ5KGN1cnJlbnRXaWR0aCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXdwb3J0T2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgYXMgbnVtYmVyXG4gICAgICogQHJldHVybnMgc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGdldEN1cnJlbnRWaWV3UG9ydE51bWJlcigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Jyb3dzZXIgPyBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDogMTIwMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBtccK0cyBhcyBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld3BvcnRDaGFuZ2VkT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyB0aGUgY3VycmVudCB3aW5kb3cgd2lkdGggYXMgbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIGdldFZpZXdwb3J0UmVzaXplZE9ic2VydmVyKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXIuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsVG9FbGVtZW50SWQoZWw6IHN0cmluZywgYWxpZ25DZW50ZXIgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgZWwpLCBhbGlnbkNlbnRlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBzY3JvbGxzIHRvIHRoZSBnaXZlbiBtYXJrdXAgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gZWwgLSBuYXRpdmVFbGVtZW50IGZyb20gbWFya3VwXG4gICAgICogQHBhcmFtIGFsaWduQ2VudGVyIC0gZGVmaW5lcyBpZiB0aGUgZWxlbWVudCBuZWVkcyB0byBiZSBjZW50ZXJlZCBvbiB3aW5kb3dcbiAgICAgKi9cblxuICAgIHB1YmxpYyBzY3JvbGxUb0VsZW1lbnQoZWw6IEhUTUxFbGVtZW50LCBhbGlnbkNlbnRlciA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgbGV0IGV4dHJhU2Nyb2xsVG9wID0gMDtcblxuICAgICAgICAgICAgaWYgKGFsaWduQ2VudGVyKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFTY3JvbGxUb3AgPSAod2luZG93LmlubmVySGVpZ2h0IC0gZWwuY2xpZW50SGVpZ2h0KSAvIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBvZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgICAgIGxldCBvZmZzZXRUb3AgPSAwO1xuXG4gICAgICAgICAgICBsZXQgZWxUZW1wOiBOdWxsQWJsZTxIVE1MRWxlbWVudD4gPSBlbDtcblxuICAgICAgICAgICAgd2hpbGUgKGVsVGVtcCkge1xuICAgICAgICAgICAgICAgIG9mZnNldExlZnQgKz0gZWxUZW1wLm9mZnNldExlZnQ7XG4gICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IGVsVGVtcC5vZmZzZXRUb3A7XG4gICAgICAgICAgICAgICAgZWxUZW1wID0gZWxUZW1wLnBhcmVudEVsZW1lbnQgPyBlbFRlbXAucGFyZW50RWxlbWVudCA6IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgICAgICAgICAgbGVmdDogb2Zmc2V0TGVmdCxcbiAgICAgICAgICAgICAgICB0b3A6IG9mZnNldFRvcCAtIGV4dHJhU2Nyb2xsVG9wLFxuICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIHRoZSB0b3AgcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gdG9wIC0gdG9wIHBvc2l0aW9uIHZhbHVlXG4gICAgICovXG4gICAgcHVibGljIHNjcm9sbFRvcCh0b3A6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IGxlZnQ6IDAsIHRvcDogdG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBvcmllbnRhdGlvbiBpcyBwb3J0cmFpdFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1BvcnRyYWl0KCkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPiB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgZWxzZSByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgb3JpZW50YXRpb24gaXMgbGFuZHNjYXBlXG4gICAgICovXG4gICAgcHVibGljIGlzTGFuZHNjYXBlKCkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGFuZHNjYXBlID1cbiAgICAgICAgICAgICAgICB3aW5kb3cub3JpZW50YXRpb24gPT09IDkwIHx8IHdpbmRvdy5vcmllbnRhdGlvbiA9PT0gLTkwO1xuICAgICAgICAgICAgcmV0dXJuIGlzTGFuZHNjYXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgbW9iaWxlIGJyZWFrcG9pbnQgKGJlbG93IHRhYmxldClcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNNb2JpbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRWaWV3UG9ydE51bWJlcigpIDwgdGhpcy5icmVha3BvaW50c1syXS5Mb3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGhlaWdodCBvZiBhbiBlbGVtZW50XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FsY3VsYXRlRnVsbHNjcmVlbkVsZW1lbnRzaGVpZ2h0KFxuICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICBkZWZhdWx0aGVpZ2h0OiBzdHJpbmcsXG4gICAgICAgIGV4dHJhOiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlciB8fCB0aGlzLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0aGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWFwID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICBjb25zdCBmb290ZXIgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb290ZXInKVswXTtcbiAgICAgICAgICAgIGlmIChtYXAgJiYgZm9vdGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3dpbmRvdy5pbm5lckhlaWdodCAtIG1hcC5vZmZzZXRUb3AgLSBmb290ZXIub2Zmc2V0SGVpZ2h0IC0gZXh0cmFcbiAgICAgICAgICAgICAgICAgICAgfXB4YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdjb3VsZCBub3QgY2FsY3VsYXRlIG1hcCBoZWlnaHQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdGhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBoZWlnaHQgb2YgYW4gZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBjYWxjdWxhdGVGdWxsc2NyZWVuRWxlbWVudHNIZWlnaHQoXG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRoZWlnaHQ6IHN0cmluZyxcbiAgICAgICAgZXh0cmE6IG51bWJlclxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVGdWxsc2NyZWVuRWxlbWVudHNoZWlnaHQoaWQsIGRlZmF1bHRoZWlnaHQsIGV4dHJhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB2aWV3cG9ydCBjaGFuZ2VkXG4gICAgICogQGV2ZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBkb2N1bWVudFNpemVDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFdpbmRvd1dpZHRoOiBudW1iZXIgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgLy8gaW5mb3JtIHdob8K0cyBpbnRlcmVzdGVkXG4gICAgICAgIHRoaXMudmlld3BvcnRSZXNpemVkU3Vic2NyaWJlci5uZXh0KGN1cnJlbnRXaW5kb3dXaWR0aCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRXaW5kb3dXaWR0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbXFzIG9mIHRoaXMuYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFdpbmRvd1dpZHRoID4gbXFzLkhpZ2gpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRXaW5kb3dXaWR0aCA+PSBtcXMuTG93IHx8IGN1cnJlbnRXaW5kb3dXaWR0aCA8PSBtcXMuSGlnaCkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgIT09IG1xcy5OYW1lXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdwb3J0ID0gbXFzLk5hbWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluZm9ybSB3aG/CtHMgaW50ZXJlc3RlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0Q2hhbmdlZFN1YnNjcmliZXIubmV4dChtcXMuTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50Vmlld3BvcnQgPT09IG1xcy5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBNZWRpYSBRdWVyeSBmb3IgdGhlIGdpdmVuIHdpZHRoXG4gICAgICogQHBhcmFtIHdpZHRoIFdpZHRoIHRvIGdldCB0aGUgYWNjb3JkaW5nIE1RIGZvclxuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydFdpZHRoVG9NZWRpYVF1ZXJ5KHdpZHRoOiBudW1iZXIpOiBCcmVha3BvaW50IHtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3cG9ydCA9IHRoaXMuYnJlYWtwb2ludHNbMF07XG5cbiAgICAgICAgZm9yIChjb25zdCBtcXMgb2YgdGhpcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgaWYgKHdpZHRoIDw9IG1xcy5IaWdoICYmIHdpZHRoID49IG1xcy5Mb3cpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Vmlld3BvcnQgPSBtcXM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgYnJlYWtwb2ludC9kZXZpY2UgbmFtZSBsaWtlIG1vYmlsZSx0YWJsZXQsZGVza3RvcCwgaGlnaFxuICAgICAqL1xuICAgIGdldFNpbXBsZUJyZWFrcG9pbnQoc2NyZWVuU2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBhY3R1YWxCcmVha3BvaW50OiBTaW1wbGVCcmVha3BvaW50IHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHNpemVzID0gdGhpcy5zaW1wbGVCcmVha3BvaW50cy5zbGljZSgpLnJldmVyc2UoKTsgLy8gd2UgbmVlZCB0byByZXZlcnNlIGl0IHRvIGNoZWNrIHN0ZXAgYnkgc3RlcCBmcm9tIGJpZ2dlc3QsIHdoaWNoIGJyZWFrcG9pbnRzIHN0aWxsIGZpdHMuIFNsaWNlIGlzIGEgdHJpY2sgdG8gbm90IG11dGF0ZSB0aGUgb3JpZ2luYWwgYXJyYXkgYW5kIG1ha2UgYSBjb3B5XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNpemVzKSB7XG4gICAgICAgICAgICBpZiAoc2NyZWVuU2l6ZSA8IHNpemVzW2tleV0uTWF4aW11bVBpeGVscykge1xuICAgICAgICAgICAgICAgIGFjdHVhbEJyZWFrcG9pbnQgPSBzaXplc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghYWN0dWFsQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgYWN0dWFsQnJlYWtwb2ludCA9IHNpemVzWzBdOyAvLyBkZWZhdWx0IHNjcmVlbnNpemUgaXMgYmlnZ2VzdC4gV2lsbCBiZSB1c2VkIGlmIHZpZXdwb3J0IGlzIGJpZ2dlciBhcyBtYXhpbXVtLiBSZW1lbWJlciwgYXJyYXkgaXMgcmV2ZXJzZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3R1YWxCcmVha3BvaW50O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50U2l6ZUNoYW5nZWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -35,7 +35,7 @@ export class BackToTopComponent {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
BackToTopComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BackToTopComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
BackToTopComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BackToTopComponent, selector: "kms-back-to-top", host: { listeners: { "window:scroll": "onWindowScroll()" } }, ngImport: i0, template: "<div class=\"scrollToTop\"\n [ngClass]=\"{'show': windowScrolled}\"\n (click)=\"scrollToTop()\">\n <div class=\"scrollToTop-inner\">\n <kms-icon icon=\"floating_button_clear\" iconClass=\"color-white\"></kms-icon>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "iconStyle", "iconSize", "dontUseSprite"] }] });
|
|
38
|
+
BackToTopComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BackToTopComponent, selector: "kms-back-to-top", host: { listeners: { "window:scroll": "onWindowScroll()" } }, ngImport: i0, template: "<div class=\"scrollToTop\"\n [ngClass]=\"{'show': windowScrolled}\"\n (click)=\"scrollToTop()\">\n <div class=\"scrollToTop-inner\">\n <kms-icon icon=\"floating_button_clear\" iconClass=\"color-white\"></kms-icon>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "iconStyle", "iconSize", "size", "dontUseSprite"] }] });
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BackToTopComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{ selector: 'kms-back-to-top', template: "<div class=\"scrollToTop\"\n [ngClass]=\"{'show': windowScrolled}\"\n (click)=\"scrollToTop()\">\n <div class=\"scrollToTop-inner\">\n <kms-icon icon=\"floating_button_clear\" iconClass=\"color-white\"></kms-icon>\n </div>\n</div>" }]
|
|
@@ -99,6 +99,9 @@ export class DropdownFromDataComponent extends FormControlParentComponent {
|
|
|
99
99
|
if (this.translation.isPrefix) {
|
|
100
100
|
return this.translation.service?.instant?.(this.translation.path + '.' + key);
|
|
101
101
|
}
|
|
102
|
+
else if (this.translation.useKeyAsValue) {
|
|
103
|
+
return this.translation.service?.instant?.(this.translation.path, { key: key });
|
|
104
|
+
}
|
|
102
105
|
else {
|
|
103
106
|
return this.translation.service?.instant?.(this.translation.path);
|
|
104
107
|
}
|
|
@@ -154,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
154
157
|
}], multiple: [{
|
|
155
158
|
type: Input
|
|
156
159
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7O0FBRTVGOztHQUVHO0FBWUgsTUFBTSxPQUFPLHlCQUNYLFNBQVEsMEJBQTBCO0lBa0NsQyxZQUNTLFdBQStCLEVBQy9CLFFBQW1CO1FBRTFCLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFwQjVCLDJFQUEyRTtRQUNsRSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUl0QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFckMscUJBQXFCO1FBQ1osYUFBUSxHQUFHLEtBQUssQ0FB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Q3ZDLENBQUM7O3NIQXBJVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qiw2WUFSekI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztZQUN4RCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Ysc0VDN0JILCtuQkFxQkE7MkZEVWEseUJBQXlCO2tCQVhyQyxTQUFTOytCQUNFLHdCQUF3QixhQUV2Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUlBT1EsV0FBVztzQkFBbkIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudW1WYWx1ZXMgfSBmcm9tICdlbnVtLXZhbHVlcy9zcmMvZW51bVZhbHVlcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbFBhcmVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcmVudC1jb21wb25lbnRzL2Zvcm0tY29udHJvbC5jb21wb25lbnQnO1xuXG4vKipcbiAqIERyb3Bkb3duIGZyb20gZGF0YSBjb21wb25lbnQge0BsaW5rIGh0dHBzOi8vbGVhc2VwbGFuLWRldi5yZW50b2ZmaWNlLmRlL3N0eWxlZ3VpZGUjdWktZWxlbWVudHN9XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ttcy1kcm9wZG93bi1mcm9tLWRhdGEnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcm9wZG93bkZyb21EYXRhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRnJvbURhdGFDb21wb25lbnRcbiAgZXh0ZW5kcyBGb3JtQ29udHJvbFBhcmVudENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlc1xue1xuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYSBlbnVtIHNldC4gQ2FuIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCAnb3B0aW9uc1BsYWluQXJyYXknIHRvIHNldCBkaWZlcmVudCB2YWx1ZXMgYnkgaW5kZXhcbiAgQElucHV0KCkgb3B0aW9uc0VudW06IGFueTtcblxuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYSBzaW1wbGUgYXJyYXkgb2YgZWxlbWVudHNcbiAgQElucHV0KCkgb3B0aW9uc1BsYWluQXJyYXk6IGFueTtcblxuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGlucHV0ICdtYXBLZXknIGFuZCAnbWFwVmFsdWUnXG4gIEBJbnB1dCgpIG9wdGlvbnNPYmpBcnJheTogYW55O1xuICAvLyBrZXkgaWRlbnRpZmllciBvZiB0aGUgb2JqLiBJZiBtYXBWYWx1ZSBkb2VzbnQgZXhpc3QsIG1hcEtleSBpcyBhbHNvIHRoZSB2YWx1ZVxuICBASW5wdXQoKSBtYXBLZXk/OiBhbnk7XG4gIC8vIHZhbHVlIGlkZW50aWZpZXIgb2YgdGhlIG9ialxuICBASW5wdXQoKSBtYXBWYWx1ZT86IGFueTtcblxuICAvLyBvcHRpb25zIGZvciB0aGUgZHJvcGRvd24gaGF2ZSBhIG51bGwgdmFsdWUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXlcbiAgQElucHV0KCkgaGFzTnVsbE9wdGlvbiA9IGZhbHNlO1xuXG4gIC8vIHRyYW5zbGF0aW9uIG9iamVjdCBmb3IgdGhlIGxhYmVsIGFuZCBwbGFjZWhvbGRlclxuICBASW5wdXQoKSB0cmFuc2xhdGlvbj86IElUcmFuc2xhdGlvbjtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgdXNlRW51bUluZGV4QXNWYWx1ZSA9IGZhbHNlO1xuXG4gIC8vIG11bHRpcGxlIHNlbGVjdGlvblxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBrZXlzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdmFsdWVzOiBhbnlbXSA9IFtdO1xuXG4gIE9iamVjdCA9IE9iamVjdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlciwgcmVuZGVyZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2sgdXNlZCB0byBzeW5jIGNoYW5nZXMgb24gc2V0IExhYmVsIGFuZCBUeXBlXG4gICAqIEBwYXJhbSBjaGFuZ2VzXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMub3B0aW9uc1BsYWluQXJyYXkpIHtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zUGxhaW5BcnJheTtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc1BsYWluQXJyYXk7XG4gICAgfVxuICAgIHRoaXMuc2V0S2V5VmFsdWVzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGRyb3Bkb3duRGF0YTogW10sXG4gICAgfSk7XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB2YWx1ZS5kcm9wZG93bkRhdGE7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLmRyb3Bkb3duRGF0YSk7XG4gICAgfSk7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRyYW5zb2ZybXMgdGhlIGRhdGEgdmFsdWVzIHRvIHRoZSBjb3JyZWN0IGZvcm1hdCBmb3IgYmUgdXNlZCBieSB0aGUgdGVtcGxhdGVcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHNldEtleVZhbHVlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zT2JqQXJyYXkgJiYgdGhpcy5tYXBLZXkgJiYgdGhpcy5tYXBWYWx1ZSkge1xuICAgICAgdGhpcy5rZXlzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKChvYmo6IGFueSkgPT4gb2JqW2Ake3RoaXMubWFwS2V5fWBdKTtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKFxuICAgICAgICAob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcFZhbHVlfWBdXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zT2JqQXJyYXkgJiYgdGhpcy5tYXBLZXkpIHtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcCgob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcEtleX1gXSk7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcChcbiAgICAgICAgKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBLZXl9YF1cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnNFbnVtKSB7XG4gICAgICB0aGlzLmtleXMgPSBFbnVtVmFsdWVzLmdldE5hbWVzKHRoaXMub3B0aW9uc0VudW0pO1xuICAgICAgaWYgKHRoaXMub3B0aW9uc1BsYWluQXJyYXkpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLm9wdGlvbnNQbGFpbkFycmF5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gRW51bVZhbHVlcy5nZXRWYWx1ZXModGhpcy5vcHRpb25zRW51bSk7XG5cbiAgICAgICAgLy8gdmFyIHdobyBkZWZpbmVzIGlmIGVudW0gaXMgY29tcG9uZWQganVzdCB3aXRoIGtleXMgb3Iga2V5VmFsdWVzLiBFLmcgZW51bSBLZXlFbnVtIHsgVkFMVUUxLCBWQUxVRTIgfSBvciBlbnVtIEtleVZhbHVlRW51bSB7IFZBTFVFNCA9ICdWNCcsIFZBTFVFNSA9ICdWNScgfVxuICAgICAgICBsZXQga2V5VmFsdWVFbnVtID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSAhPT0gdmFsdWVzW2ldKSB7XG4gICAgICAgICAgICBrZXlWYWx1ZUVudW0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5VmFsdWVFbnVtIHx8IHRoaXMudXNlRW51bUluZGV4QXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gRW51bVZhbHVlcy5nZXROYW1lcyh0aGlzLm9wdGlvbnNFbnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5oYXNOdWxsT3B0aW9uID09PSB0cnVlKSB0aGlzLmtleXMudW5zaGlmdChudWxsKTtcbiAgICBpZiAodGhpcy5oYXNOdWxsT3B0aW9uID09PSB0cnVlKSB0aGlzLnZhbHVlcy51bnNoaWZ0KG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCB0aGUgdmFsdWUgb2YgdGhlIGRyb3Bkb3duIGJhc2VkIGlmIHRyYW5zbGF0aW9uIGlzIHNldFxuICAgKiBAcGFyYW0ga2V5XG4gICAqL1xuICBwdWJsaWMgc2V0RGlzcGxheUtleShrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uKSB7XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbi5pc1ByZWZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4oXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5wYXRoICsgJy4nICsga2V5XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4odGhpcy50cmFuc2xhdGlvbi5wYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgZHJvcGRvd25EYXRhOiB2YWx1ZSxcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VsZWN0SXRlbUVtaXR0ZXIuZW1pdCh2YWx1ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdGhhdCBkZWZpbmVzIHRoZSB0cmFuc2xhdGlvbiBvYmplY3QgaW4gdGVtcGxhdGVcbiAqL1xuaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XG4gIHBhdGg6IHN0cmluZztcbiAgaXNQcmVmaXg/OiBib29sZWFuO1xuICBzZXJ2aWNlOiBhbnk7XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtmbG9hdExhYmVsXT1cInBsYWNlaG9sZGVyID8gJ2Fsd2F5cycgOiAnYXV0bydcIlxuICA+XG4gICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtc2VsZWN0XG4gICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgIGRpc2FibGVPcHRpb25DZW50ZXJpbmdcbiAgICAgIFsodmFsdWUpXT1cInZhbHVlXCJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwidmFsdWVDaGFuZ2VkKCRldmVudD8udmFsdWUpXCJcbiAgICAgICNjaGlsZFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgPlxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cInZhbHVlc1tpXVwiPlxuICAgICAgICA8c3Bhbj57eyBzZXREaXNwbGF5S2V5KGtleSkgfX08L3NwYW4+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9mb3JtPlxuIl19
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7O0FBRTVGOztHQUVHO0FBWUgsTUFBTSxPQUFPLHlCQUNYLFNBQVEsMEJBQTBCO0lBa0NsQyxZQUNTLFdBQStCLEVBQy9CLFFBQW1CO1FBRTFCLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFwQjVCLDJFQUEyRTtRQUNsRSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUl0QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFckMscUJBQXFCO1FBQ1osYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVuQixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFFMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQztJQU9oQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxZQUFZLEVBQUUsRUFBRTtTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN4RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQ3BDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDdEMsQ0FBQztTQUNIO2FBQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUNwQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ3BDLENBQUM7U0FDSDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFFdEQsNkpBQTZKO2dCQUM3SixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDekMsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNuQixZQUFZLEdBQUcsSUFBSSxDQUFDO3FCQUNyQjtpQkFDRjtnQkFDRCxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2lCQUN0QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUNyRDthQUNGO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxHQUFRO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO2dCQUM3QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUNsQyxDQUFDO2FBQ0g7aUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRTtnQkFDekMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ2pGO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuRTtTQUNGO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDOztzSEF0SVUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNllBUnpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7WUFDeEQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLHNFQzdCSCwrbkJBcUJBOzJGRFVhLHlCQUF5QjtrQkFYckMsU0FBUzsrQkFDRSx3QkFBd0IsYUFFdkI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lJQU9RLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFbnVtVmFsdWVzIH0gZnJvbSAnZW51bS12YWx1ZXMvc3JjL2VudW1WYWx1ZXMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJlbnQtY29tcG9uZW50cy9mb3JtLWNvbnRyb2wuY29tcG9uZW50JztcblxuLyoqXG4gKiBEcm9wZG93biBmcm9tIGRhdGEgY29tcG9uZW50IHtAbGluayBodHRwczovL2xlYXNlcGxhbi1kZXYucmVudG9mZmljZS5kZS9zdHlsZWd1aWRlI3VpLWVsZW1lbnRzfVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrbXMtZHJvcGRvd24tZnJvbS1kYXRhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWZyb20tZGF0YS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25Gcm9tRGF0YUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkZyb21EYXRhQ29tcG9uZW50XG4gIGV4dGVuZHMgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXNcbntcbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGEgZW51bSBzZXQuIENhbiBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggJ29wdGlvbnNQbGFpbkFycmF5JyB0byBzZXQgZGlmZXJlbnQgdmFsdWVzIGJ5IGluZGV4XG4gIEBJbnB1dCgpIG9wdGlvbnNFbnVtOiBhbnk7XG5cbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGEgc2ltcGxlIGFycmF5IG9mIGVsZW1lbnRzXG4gIEBJbnB1dCgpIG9wdGlvbnNQbGFpbkFycmF5OiBhbnk7XG5cbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGFuIGFycmF5IG9mIG9iamVjdHMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBpbnB1dCAnbWFwS2V5JyBhbmQgJ21hcFZhbHVlJ1xuICBASW5wdXQoKSBvcHRpb25zT2JqQXJyYXk6IGFueTtcbiAgLy8ga2V5IGlkZW50aWZpZXIgb2YgdGhlIG9iai4gSWYgbWFwVmFsdWUgZG9lc250IGV4aXN0LCBtYXBLZXkgaXMgYWxzbyB0aGUgdmFsdWVcbiAgQElucHV0KCkgbWFwS2V5PzogYW55O1xuICAvLyB2YWx1ZSBpZGVudGlmaWVyIG9mIHRoZSBvYmpcbiAgQElucHV0KCkgbWFwVmFsdWU/OiBhbnk7XG5cbiAgLy8gb3B0aW9ucyBmb3IgdGhlIGRyb3Bkb3duIGhhdmUgYSBudWxsIHZhbHVlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5XG4gIEBJbnB1dCgpIGhhc051bGxPcHRpb24gPSBmYWxzZTtcblxuICAvLyB0cmFuc2xhdGlvbiBvYmplY3QgZm9yIHRoZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXJcbiAgQElucHV0KCkgdHJhbnNsYXRpb24/OiBJVHJhbnNsYXRpb247XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZUVudW1JbmRleEFzVmFsdWUgPSBmYWxzZTtcblxuICAvLyBtdWx0aXBsZSBzZWxlY3Rpb25cbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcblxuICBwdWJsaWMga2V5czogYW55W10gPSBbXTtcbiAgcHVibGljIHZhbHVlczogYW55W10gPSBbXTtcblxuICBPYmplY3QgPSBPYmplY3Q7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgc3VwZXIoZm9ybUJ1aWxkZXIsIHJlbmRlcmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rIHVzZWQgdG8gc3luYyBjaGFuZ2VzIG9uIHNldCBMYWJlbCBhbmQgVHlwZVxuICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnNQbGFpbkFycmF5KSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc1BsYWluQXJyYXk7XG4gICAgICB0aGlzLmtleXMgPSB0aGlzLm9wdGlvbnNQbGFpbkFycmF5O1xuICAgIH1cbiAgICB0aGlzLnNldEtleVZhbHVlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBkcm9wZG93bkRhdGE6IFtdLFxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlID0gdmFsdWUuZHJvcGRvd25EYXRhO1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZS5kcm9wZG93bkRhdGEpO1xuICAgIH0pO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0cmFuc29mcm1zIHRoZSBkYXRhIHZhbHVlcyB0byB0aGUgY29ycmVjdCBmb3JtYXQgZm9yIGJlIHVzZWQgYnkgdGhlIHRlbXBsYXRlXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRLZXlWYWx1ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uc09iakFycmF5ICYmIHRoaXMubWFwS2V5ICYmIHRoaXMubWFwVmFsdWUpIHtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcCgob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcEtleX1gXSk7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcChcbiAgICAgICAgKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBWYWx1ZX1gXVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uc09iakFycmF5ICYmIHRoaXMubWFwS2V5KSB7XG4gICAgICB0aGlzLmtleXMgPSB0aGlzLm9wdGlvbnNPYmpBcnJheS5tYXAoKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBLZXl9YF0pO1xuICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLm9wdGlvbnNPYmpBcnJheS5tYXAoXG4gICAgICAgIChvYmo6IGFueSkgPT4gb2JqW2Ake3RoaXMubWFwS2V5fWBdXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zRW51bSkge1xuICAgICAgdGhpcy5rZXlzID0gRW51bVZhbHVlcy5nZXROYW1lcyh0aGlzLm9wdGlvbnNFbnVtKTtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnNQbGFpbkFycmF5KSB7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zUGxhaW5BcnJheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEVudW1WYWx1ZXMuZ2V0VmFsdWVzKHRoaXMub3B0aW9uc0VudW0pO1xuXG4gICAgICAgIC8vIHZhciB3aG8gZGVmaW5lcyBpZiBlbnVtIGlzIGNvbXBvbmVkIGp1c3Qgd2l0aCBrZXlzIG9yIGtleVZhbHVlcy4gRS5nIGVudW0gS2V5RW51bSB7IFZBTFVFMSwgVkFMVUUyIH0gb3IgZW51bSBLZXlWYWx1ZUVudW0geyBWQUxVRTQgPSAnVjQnLCBWQUxVRTUgPSAnVjUnIH1cbiAgICAgICAgbGV0IGtleVZhbHVlRW51bSA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5rZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgIT09IHZhbHVlc1tpXSkge1xuICAgICAgICAgICAga2V5VmFsdWVFbnVtID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleVZhbHVlRW51bSB8fCB0aGlzLnVzZUVudW1JbmRleEFzVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcyA9IEVudW1WYWx1ZXMuZ2V0TmFtZXModGhpcy5vcHRpb25zRW51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzTnVsbE9wdGlvbiA9PT0gdHJ1ZSkgdGhpcy5rZXlzLnVuc2hpZnQobnVsbCk7XG4gICAgaWYgKHRoaXMuaGFzTnVsbE9wdGlvbiA9PT0gdHJ1ZSkgdGhpcy52YWx1ZXMudW5zaGlmdChudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXQgdGhlIHZhbHVlIG9mIHRoZSBkcm9wZG93biBiYXNlZCBpZiB0cmFuc2xhdGlvbiBpcyBzZXRcbiAgICogQHBhcmFtIGtleVxuICAgKi9cbiAgcHVibGljIHNldERpc3BsYXlLZXkoa2V5OiBhbnkpIHtcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbikge1xuICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb24uaXNQcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VydmljZT8uaW5zdGFudD8uKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24ucGF0aCArICcuJyArIGtleVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRyYW5zbGF0aW9uLnVzZUtleUFzVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VydmljZT8uaW5zdGFudD8uKHRoaXMudHJhbnNsYXRpb24ucGF0aCwgeyBrZXk6IGtleSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnNlcnZpY2U/Lmluc3RhbnQ/Lih0aGlzLnRyYW5zbGF0aW9uLnBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBkcm9wZG93bkRhdGE6IHZhbHVlLFxuICAgIH0pO1xuICAgIHRoaXMub25TZWxlY3RJdGVtRW1pdHRlci5lbWl0KHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAqIEludGVyZmFjZSB0aGF0IGRlZmluZXMgdGhlIHRyYW5zbGF0aW9uIG9iamVjdCBpbiB0ZW1wbGF0ZVxuICovXG5pbnRlcmZhY2UgSVRyYW5zbGF0aW9uIHtcbiAgcGF0aDogc3RyaW5nO1xuICBpc1ByZWZpeD86IGJvb2xlYW47XG4gIHVzZUtleUFzVmFsdWU/OiBib29sZWFuO1xuICBzZXJ2aWNlOiBhbnk7XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtmbG9hdExhYmVsXT1cInBsYWNlaG9sZGVyID8gJ2Fsd2F5cycgOiAnYXV0bydcIlxuICA+XG4gICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtc2VsZWN0XG4gICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgIGRpc2FibGVPcHRpb25DZW50ZXJpbmdcbiAgICAgIFsodmFsdWUpXT1cInZhbHVlXCJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwidmFsdWVDaGFuZ2VkKCRldmVudD8udmFsdWUpXCJcbiAgICAgICNjaGlsZFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgPlxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cInZhbHVlc1tpXVwiPlxuICAgICAgICA8c3Bhbj57eyBzZXREaXNwbGF5S2V5KGtleSkgfX08L3NwYW4+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9mb3JtPlxuIl19
|