@vendasta/meetings 0.74.0 → 0.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/_generated/host.service.mjs +3 -3
- package/esm2020/lib/_internal/google-meet.api.service.mjs +3 -3
- package/esm2020/lib/_internal/meeting-guest.api.service.mjs +3 -3
- package/esm2020/lib/_internal/meeting-host.api.service.mjs +3 -3
- package/esm2020/lib/_internal/meeting-source-api.api.service.mjs +3 -3
- package/esm2020/lib/_internal/objects/date-range.mjs +7 -7
- package/esm2020/lib/_internal/objects/datetime.mjs +12 -12
- package/esm2020/lib/_internal/objects/field-mask.mjs +6 -6
- package/esm2020/lib/_internal/objects/google-meet.mjs +80 -80
- package/esm2020/lib/_internal/objects/meeting-guest.mjs +105 -105
- package/esm2020/lib/_internal/objects/meeting-host.mjs +300 -300
- package/esm2020/lib/_internal/objects/meeting-source.mjs +25 -25
- package/esm2020/lib/_internal/objects/meeting-type.mjs +19 -19
- package/esm2020/lib/_internal/objects/shared.mjs +73 -73
- package/esm2020/lib/_internal/objects/timeofday.mjs +6 -6
- package/esm2020/lib/_internal/objects/zoom.mjs +36 -36
- package/esm2020/lib/_internal/zoom.api.service.mjs +3 -3
- package/esm2020/lib/guest/guest.service.mjs +3 -3
- package/esm2020/lib/host/host.service.mjs +3 -3
- package/esm2020/lib/meetings.service.mjs +3 -3
- package/fesm2015/vendasta-meetings.mjs +687 -687
- package/fesm2015/vendasta-meetings.mjs.map +1 -1
- package/fesm2020/vendasta-meetings.mjs +687 -687
- package/fesm2020/vendasta-meetings.mjs.map +1 -1
- package/lib/shared/calendar.d.ts +1 -1
- package/lib/shared/host-id.d.ts +1 -1
- package/lib/shared/host-user.d.ts +1 -1
- package/lib/shared/meeting-type.d.ts +2 -2
- package/lib/shared/meeting.d.ts +2 -2
- package/package.json +5 -5
- package/src/README.md +0 -12
- /package/{vendasta-meetings.d.ts → index.d.ts} +0 -0
|
@@ -5,12 +5,6 @@ export function enumStringToValue(enumRef, value) {
|
|
|
5
5
|
return enumRef[value];
|
|
6
6
|
}
|
|
7
7
|
export class GoogleMeetConferenceData {
|
|
8
|
-
constructor(kwargs) {
|
|
9
|
-
if (!kwargs) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
Object.assign(this, kwargs);
|
|
13
|
-
}
|
|
14
8
|
static fromProto(proto) {
|
|
15
9
|
let m = new GoogleMeetConferenceData();
|
|
16
10
|
m = Object.assign(m, proto);
|
|
@@ -25,6 +19,12 @@ export class GoogleMeetConferenceData {
|
|
|
25
19
|
}
|
|
26
20
|
return m;
|
|
27
21
|
}
|
|
22
|
+
constructor(kwargs) {
|
|
23
|
+
if (!kwargs) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
Object.assign(this, kwargs);
|
|
27
|
+
}
|
|
28
28
|
toApiJson() {
|
|
29
29
|
const toReturn = {};
|
|
30
30
|
if (typeof this.conferenceId !== 'undefined') {
|
|
@@ -49,17 +49,17 @@ export class GoogleMeetConferenceData {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
export class GoogleMeetConferenceRequestStatus {
|
|
52
|
+
static fromProto(proto) {
|
|
53
|
+
let m = new GoogleMeetConferenceRequestStatus();
|
|
54
|
+
m = Object.assign(m, proto);
|
|
55
|
+
return m;
|
|
56
|
+
}
|
|
52
57
|
constructor(kwargs) {
|
|
53
58
|
if (!kwargs) {
|
|
54
59
|
return;
|
|
55
60
|
}
|
|
56
61
|
Object.assign(this, kwargs);
|
|
57
62
|
}
|
|
58
|
-
static fromProto(proto) {
|
|
59
|
-
let m = new GoogleMeetConferenceRequestStatus();
|
|
60
|
-
m = Object.assign(m, proto);
|
|
61
|
-
return m;
|
|
62
|
-
}
|
|
63
63
|
toApiJson() {
|
|
64
64
|
const toReturn = {};
|
|
65
65
|
if (typeof this.statusCode !== 'undefined') {
|
|
@@ -69,12 +69,6 @@ export class GoogleMeetConferenceRequestStatus {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
export class GoogleMeetConferenceSolution {
|
|
72
|
-
constructor(kwargs) {
|
|
73
|
-
if (!kwargs) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
Object.assign(this, kwargs);
|
|
77
|
-
}
|
|
78
72
|
static fromProto(proto) {
|
|
79
73
|
let m = new GoogleMeetConferenceSolution();
|
|
80
74
|
m = Object.assign(m, proto);
|
|
@@ -83,6 +77,12 @@ export class GoogleMeetConferenceSolution {
|
|
|
83
77
|
}
|
|
84
78
|
return m;
|
|
85
79
|
}
|
|
80
|
+
constructor(kwargs) {
|
|
81
|
+
if (!kwargs) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
Object.assign(this, kwargs);
|
|
85
|
+
}
|
|
86
86
|
toApiJson() {
|
|
87
87
|
const toReturn = {};
|
|
88
88
|
if (typeof this.iconUri !== 'undefined') {
|
|
@@ -98,17 +98,17 @@ export class GoogleMeetConferenceSolution {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
export class GoogleMeetConferenceSolutionKey {
|
|
101
|
+
static fromProto(proto) {
|
|
102
|
+
let m = new GoogleMeetConferenceSolutionKey();
|
|
103
|
+
m = Object.assign(m, proto);
|
|
104
|
+
return m;
|
|
105
|
+
}
|
|
101
106
|
constructor(kwargs) {
|
|
102
107
|
if (!kwargs) {
|
|
103
108
|
return;
|
|
104
109
|
}
|
|
105
110
|
Object.assign(this, kwargs);
|
|
106
111
|
}
|
|
107
|
-
static fromProto(proto) {
|
|
108
|
-
let m = new GoogleMeetConferenceSolutionKey();
|
|
109
|
-
m = Object.assign(m, proto);
|
|
110
|
-
return m;
|
|
111
|
-
}
|
|
112
112
|
toApiJson() {
|
|
113
113
|
const toReturn = {};
|
|
114
114
|
if (typeof this.type !== 'undefined') {
|
|
@@ -118,12 +118,6 @@ export class GoogleMeetConferenceSolutionKey {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
export class GoogleMeetCreateConferenceRequest {
|
|
121
|
-
constructor(kwargs) {
|
|
122
|
-
if (!kwargs) {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
Object.assign(this, kwargs);
|
|
126
|
-
}
|
|
127
121
|
static fromProto(proto) {
|
|
128
122
|
let m = new GoogleMeetCreateConferenceRequest();
|
|
129
123
|
m = Object.assign(m, proto);
|
|
@@ -135,6 +129,12 @@ export class GoogleMeetCreateConferenceRequest {
|
|
|
135
129
|
}
|
|
136
130
|
return m;
|
|
137
131
|
}
|
|
132
|
+
constructor(kwargs) {
|
|
133
|
+
if (!kwargs) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
Object.assign(this, kwargs);
|
|
137
|
+
}
|
|
138
138
|
toApiJson() {
|
|
139
139
|
const toReturn = {};
|
|
140
140
|
if (typeof this.conferenceSolutionKey !== 'undefined' && this.conferenceSolutionKey !== null) {
|
|
@@ -150,12 +150,6 @@ export class GoogleMeetCreateConferenceRequest {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
export class GoogleMeetCreateMeetingRequest {
|
|
153
|
-
constructor(kwargs) {
|
|
154
|
-
if (!kwargs) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
Object.assign(this, kwargs);
|
|
158
|
-
}
|
|
159
153
|
static fromProto(proto) {
|
|
160
154
|
let m = new GoogleMeetCreateMeetingRequest();
|
|
161
155
|
m = Object.assign(m, proto);
|
|
@@ -164,6 +158,12 @@ export class GoogleMeetCreateMeetingRequest {
|
|
|
164
158
|
}
|
|
165
159
|
return m;
|
|
166
160
|
}
|
|
161
|
+
constructor(kwargs) {
|
|
162
|
+
if (!kwargs) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
Object.assign(this, kwargs);
|
|
166
|
+
}
|
|
167
167
|
toApiJson() {
|
|
168
168
|
const toReturn = {};
|
|
169
169
|
if (typeof this.calenderId !== 'undefined') {
|
|
@@ -176,12 +176,6 @@ export class GoogleMeetCreateMeetingRequest {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
export class GoogleMeetCreateMeetingResponse {
|
|
179
|
-
constructor(kwargs) {
|
|
180
|
-
if (!kwargs) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
Object.assign(this, kwargs);
|
|
184
|
-
}
|
|
185
179
|
static fromProto(proto) {
|
|
186
180
|
let m = new GoogleMeetCreateMeetingResponse();
|
|
187
181
|
m = Object.assign(m, proto);
|
|
@@ -190,6 +184,12 @@ export class GoogleMeetCreateMeetingResponse {
|
|
|
190
184
|
}
|
|
191
185
|
return m;
|
|
192
186
|
}
|
|
187
|
+
constructor(kwargs) {
|
|
188
|
+
if (!kwargs) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
Object.assign(this, kwargs);
|
|
192
|
+
}
|
|
193
193
|
toApiJson() {
|
|
194
194
|
const toReturn = {};
|
|
195
195
|
if (typeof this.iamUserId !== 'undefined') {
|
|
@@ -205,17 +205,17 @@ export class GoogleMeetCreateMeetingResponse {
|
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
export class GoogleMeetEntryPoint {
|
|
208
|
+
static fromProto(proto) {
|
|
209
|
+
let m = new GoogleMeetEntryPoint();
|
|
210
|
+
m = Object.assign(m, proto);
|
|
211
|
+
return m;
|
|
212
|
+
}
|
|
208
213
|
constructor(kwargs) {
|
|
209
214
|
if (!kwargs) {
|
|
210
215
|
return;
|
|
211
216
|
}
|
|
212
217
|
Object.assign(this, kwargs);
|
|
213
218
|
}
|
|
214
|
-
static fromProto(proto) {
|
|
215
|
-
let m = new GoogleMeetEntryPoint();
|
|
216
|
-
m = Object.assign(m, proto);
|
|
217
|
-
return m;
|
|
218
|
-
}
|
|
219
219
|
toApiJson() {
|
|
220
220
|
const toReturn = {};
|
|
221
221
|
if (typeof this.accessCode !== 'undefined') {
|
|
@@ -252,12 +252,6 @@ export class GoogleMeetEntryPoint {
|
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
254
|
export class GoogleMeetMeeting {
|
|
255
|
-
constructor(kwargs) {
|
|
256
|
-
if (!kwargs) {
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
|
-
Object.assign(this, kwargs);
|
|
260
|
-
}
|
|
261
255
|
static fromProto(proto) {
|
|
262
256
|
let m = new GoogleMeetMeeting();
|
|
263
257
|
m = Object.assign(m, proto);
|
|
@@ -287,6 +281,12 @@ export class GoogleMeetMeeting {
|
|
|
287
281
|
}
|
|
288
282
|
return m;
|
|
289
283
|
}
|
|
284
|
+
constructor(kwargs) {
|
|
285
|
+
if (!kwargs) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
Object.assign(this, kwargs);
|
|
289
|
+
}
|
|
290
290
|
toApiJson() {
|
|
291
291
|
const toReturn = {};
|
|
292
292
|
if (typeof this.anyoneCanAddSelf !== 'undefined') {
|
|
@@ -380,12 +380,6 @@ export class GoogleMeetMeeting {
|
|
|
380
380
|
}
|
|
381
381
|
}
|
|
382
382
|
export class GoogleMeetMeetingAttendee {
|
|
383
|
-
constructor(kwargs) {
|
|
384
|
-
if (!kwargs) {
|
|
385
|
-
return;
|
|
386
|
-
}
|
|
387
|
-
Object.assign(this, kwargs);
|
|
388
|
-
}
|
|
389
383
|
static fromProto(proto) {
|
|
390
384
|
let m = new GoogleMeetMeetingAttendee();
|
|
391
385
|
m = Object.assign(m, proto);
|
|
@@ -394,6 +388,12 @@ export class GoogleMeetMeetingAttendee {
|
|
|
394
388
|
}
|
|
395
389
|
return m;
|
|
396
390
|
}
|
|
391
|
+
constructor(kwargs) {
|
|
392
|
+
if (!kwargs) {
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
Object.assign(this, kwargs);
|
|
396
|
+
}
|
|
397
397
|
toApiJson() {
|
|
398
398
|
const toReturn = {};
|
|
399
399
|
if (typeof this.additionalGuests !== 'undefined') {
|
|
@@ -430,17 +430,17 @@ export class GoogleMeetMeetingAttendee {
|
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
432
|
export class GoogleMeetMeetingCreator {
|
|
433
|
+
static fromProto(proto) {
|
|
434
|
+
let m = new GoogleMeetMeetingCreator();
|
|
435
|
+
m = Object.assign(m, proto);
|
|
436
|
+
return m;
|
|
437
|
+
}
|
|
433
438
|
constructor(kwargs) {
|
|
434
439
|
if (!kwargs) {
|
|
435
440
|
return;
|
|
436
441
|
}
|
|
437
442
|
Object.assign(this, kwargs);
|
|
438
443
|
}
|
|
439
|
-
static fromProto(proto) {
|
|
440
|
-
let m = new GoogleMeetMeetingCreator();
|
|
441
|
-
m = Object.assign(m, proto);
|
|
442
|
-
return m;
|
|
443
|
-
}
|
|
444
444
|
toApiJson() {
|
|
445
445
|
const toReturn = {};
|
|
446
446
|
if (typeof this.displayName !== 'undefined') {
|
|
@@ -459,17 +459,17 @@ export class GoogleMeetMeetingCreator {
|
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
461
|
export class GoogleMeetMeetingDateTime {
|
|
462
|
+
static fromProto(proto) {
|
|
463
|
+
let m = new GoogleMeetMeetingDateTime();
|
|
464
|
+
m = Object.assign(m, proto);
|
|
465
|
+
return m;
|
|
466
|
+
}
|
|
462
467
|
constructor(kwargs) {
|
|
463
468
|
if (!kwargs) {
|
|
464
469
|
return;
|
|
465
470
|
}
|
|
466
471
|
Object.assign(this, kwargs);
|
|
467
472
|
}
|
|
468
|
-
static fromProto(proto) {
|
|
469
|
-
let m = new GoogleMeetMeetingDateTime();
|
|
470
|
-
m = Object.assign(m, proto);
|
|
471
|
-
return m;
|
|
472
|
-
}
|
|
473
473
|
toApiJson() {
|
|
474
474
|
const toReturn = {};
|
|
475
475
|
if (typeof this.date !== 'undefined') {
|
|
@@ -485,12 +485,6 @@ export class GoogleMeetMeetingDateTime {
|
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
487
|
export class GoogleMeetMeetingReminder {
|
|
488
|
-
constructor(kwargs) {
|
|
489
|
-
if (!kwargs) {
|
|
490
|
-
return;
|
|
491
|
-
}
|
|
492
|
-
Object.assign(this, kwargs);
|
|
493
|
-
}
|
|
494
488
|
static fromProto(proto) {
|
|
495
489
|
let m = new GoogleMeetMeetingReminder();
|
|
496
490
|
m = Object.assign(m, proto);
|
|
@@ -499,6 +493,12 @@ export class GoogleMeetMeetingReminder {
|
|
|
499
493
|
}
|
|
500
494
|
return m;
|
|
501
495
|
}
|
|
496
|
+
constructor(kwargs) {
|
|
497
|
+
if (!kwargs) {
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
Object.assign(this, kwargs);
|
|
501
|
+
}
|
|
502
502
|
toApiJson() {
|
|
503
503
|
const toReturn = {};
|
|
504
504
|
if (typeof this.method !== 'undefined') {
|
|
@@ -511,12 +511,6 @@ export class GoogleMeetMeetingReminder {
|
|
|
511
511
|
}
|
|
512
512
|
}
|
|
513
513
|
export class GoogleMeetMeetingReminders {
|
|
514
|
-
constructor(kwargs) {
|
|
515
|
-
if (!kwargs) {
|
|
516
|
-
return;
|
|
517
|
-
}
|
|
518
|
-
Object.assign(this, kwargs);
|
|
519
|
-
}
|
|
520
514
|
static fromProto(proto) {
|
|
521
515
|
let m = new GoogleMeetMeetingReminders();
|
|
522
516
|
m = Object.assign(m, proto);
|
|
@@ -525,6 +519,12 @@ export class GoogleMeetMeetingReminders {
|
|
|
525
519
|
}
|
|
526
520
|
return m;
|
|
527
521
|
}
|
|
522
|
+
constructor(kwargs) {
|
|
523
|
+
if (!kwargs) {
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
Object.assign(this, kwargs);
|
|
527
|
+
}
|
|
528
528
|
toApiJson() {
|
|
529
529
|
const toReturn = {};
|
|
530
530
|
if (typeof this.overrides !== 'undefined' && this.overrides !== null) {
|
|
@@ -536,4 +536,4 @@ export class GoogleMeetMeetingReminders {
|
|
|
536
536
|
return toReturn;
|
|
537
537
|
}
|
|
538
538
|
}
|
|
539
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1lZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9nb29nbGUtbWVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0lBaUJqQyxZQUFZLE1BQTRDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBZEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUN2QyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEVBQUU7WUFBQyxDQUFDLENBQUMsa0JBQWtCLEdBQUcsNEJBQTRCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQUM7UUFDeEgsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxpQ0FBaUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQUM7UUFDOUcsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxvQkFB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Q0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUM5RixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFTRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUFDO1FBQ3JMLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YUludGVyZmFjZSB7XG4gICAgY29uZmVyZW5jZUlkOiBzdHJpbmc7XG4gICAgY29uZmVyZW5jZVNvbHV0aW9uOiBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uO1xuICAgIGNyZWF0ZVJlcXVlc3Q6IEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdDtcbiAgICBlbnRyeVBvaW50czogR29vZ2xlTWVldEVudHJ5UG9pbnRbXTtcbiAgICBub3Rlczogc3RyaW5nO1xuICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNvbmZlcmVuY2VTb2x1dGlvbikge20uY29uZmVyZW5jZVNvbHV0aW9uID0gR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbi5mcm9tUHJvdG8ocHJvdG8uY29uZmVyZW5jZVNvbHV0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by5jcmVhdGVSZXF1ZXN0KSB7bS5jcmVhdGVSZXF1ZXN0ID0gR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0LmZyb21Qcm90byhwcm90by5jcmVhdGVSZXF1ZXN0KTt9XG4gICAgICAgIGlmIChwcm90by5lbnRyeVBvaW50cykge20uZW50cnlQb2ludHMgPSBwcm90by5lbnRyeVBvaW50cy5tYXAoR29vZ2xlTWVldEVudHJ5UG9pbnQuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmVyZW5jZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb25mZXJlbmNlSWQnXSA9IHRoaXMuY29uZmVyZW5jZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25mZXJlbmNlU29sdXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnY29uZmVyZW5jZVNvbHV0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbiA/ICh0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25mZXJlbmNlU29sdXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRlUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jcmVhdGVSZXF1ZXN0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NyZWF0ZVJlcXVlc3QnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3JlYXRlUmVxdWVzdCA/ICh0aGlzLmNyZWF0ZVJlcXVlc3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3JlYXRlUmVxdWVzdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRyeVBvaW50cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5lbnRyeVBvaW50cyAhPT0gbnVsbCkge3RvUmV0dXJuWydlbnRyeVBvaW50cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbnRyeVBvaW50cyA/ICh0aGlzLmVudHJ5UG9pbnRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVudHJ5UG9pbnRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5vdGVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydub3RlcyddID0gdGhpcy5ub3Rlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaWduYXR1cmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NpZ25hdHVyZSddID0gdGhpcy5zaWduYXR1cmU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXNJbnRlcmZhY2Uge1xuICAgIHN0YXR1c0NvZGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1cyB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1cygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdHVzQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3RhdHVzQ29kZSddID0gdGhpcy5zdGF0dXNDb2RlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb24gaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25JbnRlcmZhY2Uge1xuICAgIGljb25Vcmk6IHN0cmluZztcbiAgICBrZXk6IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXk7XG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ua2V5KSB7bS5rZXkgPSBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5LmZyb21Qcm90byhwcm90by5rZXkpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWNvblVyaSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWNvblVyaSddID0gdGhpcy5pY29uVXJpO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5rZXkgIT09IG51bGwpIHt0b1JldHVyblsna2V5J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmtleSA/ICh0aGlzLmtleSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXlJbnRlcmZhY2Uge1xuICAgIHR5cGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHlwZSddID0gdGhpcy50eXBlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdCBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBjb25mZXJlbmNlU29sdXRpb25LZXk6IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXk7XG4gICAgcmVxdWVzdElkOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBHb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY29uZmVyZW5jZVNvbHV0aW9uS2V5KSB7bS5jb25mZXJlbmNlU29sdXRpb25LZXkgPSBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5LmZyb21Qcm90byhwcm90by5jb25mZXJlbmNlU29sdXRpb25LZXkpO31cbiAgICAgICAgaWYgKHByb3RvLnN0YXR1cykge20uc3RhdHVzID0gR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzLmZyb21Qcm90byhwcm90by5zdGF0dXMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uS2V5ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NvbmZlcmVuY2VTb2x1dGlvbktleSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXkgPyAodGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXkgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uS2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlcXVlc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVxdWVzdElkJ10gPSB0aGlzLnJlcXVlc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhdHVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXR1cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdGF0dXMgPyAodGhpcy5zdGF0dXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhdHVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdCBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBjYWxlbmRlcklkOiBzdHJpbmc7XG4gICAgbWVldGluZzogR29vZ2xlTWVldE1lZXRpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWVldGluZykge20ubWVldGluZyA9IEdvb2dsZU1lZXRNZWV0aW5nLmZyb21Qcm90byhwcm90by5tZWV0aW5nKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FsZW5kZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FsZW5kZXJJZCddID0gdGhpcy5jYWxlbmRlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmcgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWVldGluZyAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWV0aW5nJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1lZXRpbmcgPyAodGhpcy5tZWV0aW5nIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZXRpbmc7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZUludGVyZmFjZSB7XG4gICAgaWFtVXNlcklkOiBzdHJpbmc7XG4gICAgY2FsZW5kZXJJZDogc3RyaW5nO1xuICAgIG1lZXRpbmc6IEdvb2dsZU1lZXRNZWV0aW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWVldGluZykge20ubWVldGluZyA9IEdvb2dsZU1lZXRNZWV0aW5nLmZyb21Qcm90byhwcm90by5tZWV0aW5nKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlhbVVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWFtVXNlcklkJ10gPSB0aGlzLmlhbVVzZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxlbmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYWxlbmRlcklkJ10gPSB0aGlzLmNhbGVuZGVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWV0aW5nICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZXRpbmcnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZyA/ICh0aGlzLm1lZXRpbmcgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVldGluZzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0RW50cnlQb2ludCBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldEVudHJ5UG9pbnRJbnRlcmZhY2Uge1xuICAgIGFjY2Vzc0NvZGU6IHN0cmluZztcbiAgICBlbnRyeVBvaW50RmVhdHVyZXM6IHN0cmluZ1tdO1xuICAgIGVudHJ5UG9pbnRUeXBlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtZWV0aW5nQ29kZTogc3RyaW5nO1xuICAgIHBhc3Njb2RlOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICBwaW46IHN0cmluZztcbiAgICByZWdpb25Db2RlOiBzdHJpbmc7XG4gICAgdXJpOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0RW50cnlQb2ludCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRFbnRyeVBvaW50KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0RW50cnlQb2ludEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY2Vzc0NvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY2Vzc0NvZGUnXSA9IHRoaXMuYWNjZXNzQ29kZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRyeVBvaW50RmVhdHVyZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VudHJ5UG9pbnRGZWF0dXJlcyddID0gdGhpcy5lbnRyeVBvaW50RmVhdHVyZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW50cnlQb2ludFR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VudHJ5UG9pbnRUeXBlJ10gPSB0aGlzLmVudHJ5UG9pbnRUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhYmVsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsYWJlbCddID0gdGhpcy5sYWJlbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0NvZGUnXSA9IHRoaXMubWVldGluZ0NvZGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFzc2NvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bhc3Njb2RlJ10gPSB0aGlzLnBhc3Njb2RlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhc3N3b3JkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXNzd29yZCddID0gdGhpcy5wYXNzd29yZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5waW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BpbiddID0gdGhpcy5waW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVnaW9uQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVnaW9uQ29kZSddID0gdGhpcy5yZWdpb25Db2RlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVyaSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXJpJ10gPSB0aGlzLnVyaTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TWVldGluZyBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldE1lZXRpbmdJbnRlcmZhY2Uge1xuICAgIGFueW9uZUNhbkFkZFNlbGY6IGJvb2xlYW47XG4gICAgYXR0ZW5kZWVzOiBHb29nbGVNZWV0TWVldGluZ0F0dGVuZGVlW107XG4gICAgYXR0ZW5kZWVzT21pdHRlZDogYm9vbGVhbjtcbiAgICBjb2xvcklkOiBzdHJpbmc7XG4gICAgY29uZmVyZW5jZURhdGE6IEdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YTtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGVuZDogR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZTtcbiAgICBlbmRUaW1lVW5zcGVjaWZpZWQ6IGJvb2xlYW47XG4gICAgZXRhZzogc3RyaW5nO1xuICAgIGljYWxVaWQ6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIGtpbmQ6IHN0cmluZztcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIGxvY2tlZDogYm9vbGVhbjtcbiAgICBvcmlnaW5hbFN0YXJ0VGltZTogR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZTtcbiAgICByZWN1cnJlbmNlOiBzdHJpbmdbXTtcbiAgICByZWN1cnJpbmdNZWV0aW5nSWQ6IHN0cmluZztcbiAgICByZW1pbmRlcnM6IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzO1xuICAgIHNlcXVlbmNlOiBudW1iZXI7XG4gICAgc3RhcnQ6IEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWU7XG4gICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgc3VtbWFyeTogc3RyaW5nO1xuICAgIHRyYW5zcGFyZW5jeTogc3RyaW5nO1xuICAgIHZpc2liaWxpdHk6IHN0cmluZztcbiAgICBoYW5nb3V0TGluazogc3RyaW5nO1xuICAgIGh0bWxMaW5rOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIGNyZWF0b3I6IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvcjtcbiAgICB1cGRhdGVkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0TWVldGluZyB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmF0dGVuZGVlcykge20uYXR0ZW5kZWVzID0gcHJvdG8uYXR0ZW5kZWVzLm1hcChHb29nbGVNZWV0TWVldGluZ0F0dGVuZGVlLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uY29uZmVyZW5jZURhdGEpIHttLmNvbmZlcmVuY2VEYXRhID0gR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhLmZyb21Qcm90byhwcm90by5jb25mZXJlbmNlRGF0YSk7fVxuICAgICAgICBpZiAocHJvdG8uZW5kKSB7bS5lbmQgPSBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lLmZyb21Qcm90byhwcm90by5lbmQpO31cbiAgICAgICAgaWYgKHByb3RvLm9yaWdpbmFsU3RhcnRUaW1lKSB7bS5vcmlnaW5hbFN0YXJ0VGltZSA9IEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUuZnJvbVByb3RvKHByb3RvLm9yaWdpbmFsU3RhcnRUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5yZW1pbmRlcnMpIHttLnJlbWluZGVycyA9IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzLmZyb21Qcm90byhwcm90by5yZW1pbmRlcnMpO31cbiAgICAgICAgaWYgKHByb3RvLnNlcXVlbmNlKSB7bS5zZXF1ZW5jZSA9IHBhcnNlSW50KHByb3RvLnNlcXVlbmNlLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc3RhcnQpIHttLnN0YXJ0ID0gR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZS5mcm9tUHJvdG8ocHJvdG8uc3RhcnQpO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0b3IpIHttLmNyZWF0b3IgPSBHb29nbGVNZWV0TWVldGluZ0NyZWF0b3IuZnJvbVByb3RvKHByb3RvLmNyZWF0b3IpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0TWVldGluZ0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFueW9uZUNhbkFkZFNlbGYgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FueW9uZUNhbkFkZFNlbGYnXSA9IHRoaXMuYW55b25lQ2FuQWRkU2VsZjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdHRlbmRlZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXR0ZW5kZWVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2F0dGVuZGVlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hdHRlbmRlZXMgPyAodGhpcy5hdHRlbmRlZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXR0ZW5kZWVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dGVuZGVlc09taXR0ZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2F0dGVuZGVlc09taXR0ZWQnXSA9IHRoaXMuYXR0ZW5kZWVzT21pdHRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb2xvcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb2xvcklkJ10gPSB0aGlzLmNvbG9ySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmVyZW5jZURhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY29uZmVyZW5jZURhdGEgIT09IG51bGwpIHt0b1JldHVyblsnY29uZmVyZW5jZURhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29uZmVyZW5jZURhdGEgPyAodGhpcy5jb25mZXJlbmNlRGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25mZXJlbmNlRGF0YTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVzY3JpcHRpb24nXSA9IHRoaXMuZGVzY3JpcHRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW5kICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVuZCAhPT0gbnVsbCkge3RvUmV0dXJuWydlbmQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZW5kID8gKHRoaXMuZW5kIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVuZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmRUaW1lVW5zcGVjaWZpZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VuZFRpbWVVbnNwZWNpZmllZCddID0gdGhpcy5lbmRUaW1lVW5zcGVjaWZpZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXRhZyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXRhZyddID0gdGhpcy5ldGFnO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmljYWxVaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ljYWxVaWQnXSA9IHRoaXMuaWNhbFVpZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMua2luZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2luZCddID0gdGhpcy5raW5kO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2NhdGlvbiddID0gdGhpcy5sb2NhdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NrZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2tlZCddID0gdGhpcy5sb2NrZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luYWxTdGFydFRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3JpZ2luYWxTdGFydFRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnb3JpZ2luYWxTdGFydFRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMub3JpZ2luYWxTdGFydFRpbWUgPyAodGhpcy5vcmlnaW5hbFN0YXJ0VGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5vcmlnaW5hbFN0YXJ0VGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWN1cnJlbmNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWN1cnJlbmNlJ10gPSB0aGlzLnJlY3VycmVuY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVjdXJyaW5nTWVldGluZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWN1cnJpbmdNZWV0aW5nSWQnXSA9IHRoaXMucmVjdXJyaW5nTWVldGluZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlbWluZGVycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZW1pbmRlcnMgIT09IG51bGwpIHt0b1JldHVyblsncmVtaW5kZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnJlbWluZGVycyA/ICh0aGlzLnJlbWluZGVycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5yZW1pbmRlcnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VxdWVuY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlcXVlbmNlJ10gPSB0aGlzLnNlcXVlbmNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXJ0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXJ0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXJ0ID8gKHRoaXMuc3RhcnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhcnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0dXMnXSA9IHRoaXMuc3RhdHVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1bW1hcnkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1bW1hcnknXSA9IHRoaXMuc3VtbWFyeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50cmFuc3BhcmVuY3kgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RyYW5zcGFyZW5jeSddID0gdGhpcy50cmFuc3BhcmVuY3k7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlzaWJpbGl0eSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndmlzaWJpbGl0eSddID0gdGhpcy52aXNpYmlsaXR5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhhbmdvdXRMaW5rICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYW5nb3V0TGluayddID0gdGhpcy5oYW5nb3V0TGluazt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5odG1sTGluayAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaHRtbExpbmsnXSA9IHRoaXMuaHRtbExpbms7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3JlYXRlZCddID0gdGhpcy5jcmVhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0b3IgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRvciAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdG9yJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0b3IgPyAodGhpcy5jcmVhdG9yIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0b3I7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXBkYXRlZCddID0gdGhpcy51cGRhdGVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWUgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVJbnRlcmZhY2Uge1xuICAgIGFkZGl0aW9uYWxHdWVzdHM6IG51bWJlcjtcbiAgICBjb21tZW50OiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgb3B0aW9uYWw6IGJvb2xlYW47XG4gICAgb3JnYW5pemVyOiBib29sZWFuO1xuICAgIHJlc291cmNlOiBib29sZWFuO1xuICAgIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmc7XG4gICAgc2VsZjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWUge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0TWVldGluZ0F0dGVuZGVlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFkZGl0aW9uYWxHdWVzdHMpIHttLmFkZGl0aW9uYWxHdWVzdHMgPSBwYXJzZUludChwcm90by5hZGRpdGlvbmFsR3Vlc3RzLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hZGRpdGlvbmFsR3Vlc3RzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhZGRpdGlvbmFsR3Vlc3RzJ10gPSB0aGlzLmFkZGl0aW9uYWxHdWVzdHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29tbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY29tbWVudCddID0gdGhpcy5jb21tZW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc3BsYXlOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkaXNwbGF5TmFtZSddID0gdGhpcy5kaXNwbGF5TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbWFpbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW1haWwnXSA9IHRoaXMuZW1haWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbmFsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcHRpb25hbCddID0gdGhpcy5vcHRpb25hbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmdhbml6ZXIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yZ2FuaXplciddID0gdGhpcy5vcmdhbml6ZXI7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzb3VyY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Jlc291cmNlJ10gPSB0aGlzLnJlc291cmNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc3BvbnNlU3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXNwb25zZVN0YXR1cyddID0gdGhpcy5yZXNwb25zZVN0YXR1czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZWxmICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZWxmJ10gPSB0aGlzLnNlbGY7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9yIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ0NyZWF0b3JJbnRlcmZhY2Uge1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIHNlbGY6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0TWVldGluZ0NyZWF0b3Ige1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0TWVldGluZ0NyZWF0b3IoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvckludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc3BsYXlOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkaXNwbGF5TmFtZSddID0gdGhpcy5kaXNwbGF5TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbWFpbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW1haWwnXSA9IHRoaXMuZW1haWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbGYgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlbGYnXSA9IHRoaXMuc2VsZjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lSW50ZXJmYWNlIHtcbiAgICBkYXRlOiBzdHJpbmc7XG4gICAgZGF0ZVRpbWU6IHN0cmluZztcbiAgICB0aW1lWm9uZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWVJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYXRlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkYXRlJ10gPSB0aGlzLmRhdGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGF0ZVRpbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RhdGVUaW1lJ10gPSB0aGlzLmRhdGVUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVab25lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0aW1lWm9uZSddID0gdGhpcy50aW1lWm9uZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ1JlbWluZGVySW50ZXJmYWNlIHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICBtaW51dGVzOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5taW51dGVzKSB7bS5taW51dGVzID0gcGFyc2VJbnQocHJvdG8ubWludXRlcywgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0TWVldGluZ1JlbWluZGVySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0aG9kICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXRob2QnXSA9IHRoaXMubWV0aG9kO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1pbnV0ZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21pbnV0ZXMnXSA9IHRoaXMubWludXRlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVycyBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnNJbnRlcmZhY2Uge1xuICAgIG92ZXJyaWRlczogR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcltdO1xuICAgIHVzZURlZmF1bHQ6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVycyB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm92ZXJyaWRlcykge20ub3ZlcnJpZGVzID0gcHJvdG8ub3ZlcnJpZGVzLm1hcChHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3ZlcnJpZGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm92ZXJyaWRlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydvdmVycmlkZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMub3ZlcnJpZGVzID8gKHRoaXMub3ZlcnJpZGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm92ZXJyaWRlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VEZWZhdWx0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VEZWZhdWx0J10gPSB0aGlzLnVzZURlZmF1bHQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
|
|
539
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1lZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9nb29nbGUtbWVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0lBUWpDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDdkMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQUMsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUFDO1FBQ3hILElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsaUNBQWlDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUFDO1FBQzlHLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUMvRixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQTRDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFD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LFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDOUYsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUE4QztRQUN0RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxTQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDckwsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FBQztRQUN2RixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhSW50ZXJmYWNlIHtcbiAgICBjb25mZXJlbmNlSWQ6IHN0cmluZztcbiAgICBjb25mZXJlbmNlU29sdXRpb246IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb247XG4gICAgY3JlYXRlUmVxdWVzdDogR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0O1xuICAgIGVudHJ5UG9pbnRzOiBHb29nbGVNZWV0RW50cnlQb2ludFtdO1xuICAgIG5vdGVzOiBzdHJpbmc7XG4gICAgc2lnbmF0dXJlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY29uZmVyZW5jZVNvbHV0aW9uKSB7bS5jb25mZXJlbmNlU29sdXRpb24gPSBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uLmZyb21Qcm90byhwcm90by5jb25mZXJlbmNlU29sdXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZVJlcXVlc3QpIHttLmNyZWF0ZVJlcXVlc3QgPSBHb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3QuZnJvbVByb3RvKHByb3RvLmNyZWF0ZVJlcXVlc3QpO31cbiAgICAgICAgaWYgKHByb3RvLmVudHJ5UG9pbnRzKSB7bS5lbnRyeVBvaW50cyA9IHByb3RvLmVudHJ5UG9pbnRzLm1hcChHb29nbGVNZWV0RW50cnlQb2ludC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q29uZmVyZW5jZURhdGFJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25mZXJlbmNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbmZlcmVuY2VJZCddID0gdGhpcy5jb25mZXJlbmNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWydjb25mZXJlbmNlU29sdXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uID8gKHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZVJlcXVlc3QgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlUmVxdWVzdCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVSZXF1ZXN0ID8gKHRoaXMuY3JlYXRlUmVxdWVzdCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVSZXF1ZXN0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVudHJ5UG9pbnRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVudHJ5UG9pbnRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VudHJ5UG9pbnRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVudHJ5UG9pbnRzID8gKHRoaXMuZW50cnlQb2ludHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW50cnlQb2ludHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubm90ZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25vdGVzJ10gPSB0aGlzLm5vdGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNpZ25hdHVyZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2lnbmF0dXJlJ10gPSB0aGlzLnNpZ25hdHVyZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXMgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1c0ludGVyZmFjZSB7XG4gICAgc3RhdHVzQ29kZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXNDb2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0dXNDb2RlJ10gPSB0aGlzLnN0YXR1c0NvZGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbiBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbkludGVyZmFjZSB7XG4gICAgaWNvblVyaTogc3RyaW5nO1xuICAgIGtleTogR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleTtcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5rZXkpIHttLmtleSA9IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkuZnJvbVByb3RvKHByb3RvLmtleSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pY29uVXJpICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpY29uVXJpJ10gPSB0aGlzLmljb25Vcmk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMua2V5ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmtleSAhPT0gbnVsbCkge3RvUmV0dXJuWydrZXknXSA9ICd0b0FwaUpzb24nIGluIHRoaXMua2V5ID8gKHRoaXMua2V5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleUludGVyZmFjZSB7XG4gICAgdHlwZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0eXBlJ10gPSB0aGlzLnR5cGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0IGltcGxlbWVudHMgaS5Hb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGNvbmZlcmVuY2VTb2x1dGlvbktleTogR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleTtcbiAgICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgICBzdGF0dXM6IEdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1cztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jb25mZXJlbmNlU29sdXRpb25LZXkpIHttLmNvbmZlcmVuY2VTb2x1dGlvbktleSA9IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkuZnJvbVByb3RvKHByb3RvLmNvbmZlcmVuY2VTb2x1dGlvbktleSk7fVxuICAgICAgICBpZiAocHJvdG8uc3RhdHVzKSB7bS5zdGF0dXMgPSBHb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXMuZnJvbVByb3RvKHByb3RvLnN0YXR1cyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbktleSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXkgIT09IG51bGwpIHt0b1JldHVyblsnY29uZmVyZW5jZVNvbHV0aW9uS2V5J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbktleSA/ICh0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbktleSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVxdWVzdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXF1ZXN0SWQnXSA9IHRoaXMucmVxdWVzdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdGF0dXMgIT09IG51bGwpIHt0b1JldHVyblsnc3RhdHVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXR1cyA/ICh0aGlzLnN0YXR1cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGF0dXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0IGltcGxlbWVudHMgaS5Hb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGNhbGVuZGVySWQ6IHN0cmluZztcbiAgICBtZWV0aW5nOiBHb29nbGVNZWV0TWVldGluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5nKSB7bS5tZWV0aW5nID0gR29vZ2xlTWVldE1lZXRpbmcuZnJvbVByb3RvKHByb3RvLm1lZXRpbmcpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxlbmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYWxlbmRlcklkJ10gPSB0aGlzLmNhbGVuZGVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWV0aW5nICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZXRpbmcnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZyA/ICh0aGlzLm1lZXRpbmcgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVldGluZzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBpYW1Vc2VySWQ6IHN0cmluZztcbiAgICBjYWxlbmRlcklkOiBzdHJpbmc7XG4gICAgbWVldGluZzogR29vZ2xlTWVldE1lZXRpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5nKSB7bS5tZWV0aW5nID0gR29vZ2xlTWVldE1lZXRpbmcuZnJvbVByb3RvKHByb3RvLm1lZXRpbmcpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWFtVXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpYW1Vc2VySWQnXSA9IHRoaXMuaWFtVXNlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGVuZGVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NhbGVuZGVySWQnXSA9IHRoaXMuY2FsZW5kZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZXRpbmcgIT09IG51bGwpIHt0b1JldHVyblsnbWVldGluZyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZWV0aW5nID8gKHRoaXMubWVldGluZyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZWV0aW5nO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRFbnRyeVBvaW50IGltcGxlbWVudHMgaS5Hb29nbGVNZWV0RW50cnlQb2ludEludGVyZmFjZSB7XG4gICAgYWNjZXNzQ29kZTogc3RyaW5nO1xuICAgIGVudHJ5UG9pbnRGZWF0dXJlczogc3RyaW5nW107XG4gICAgZW50cnlQb2ludFR5cGU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1lZXRpbmdDb2RlOiBzdHJpbmc7XG4gICAgcGFzc2NvZGU6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIHBpbjogc3RyaW5nO1xuICAgIHJlZ2lvbkNvZGU6IHN0cmluZztcbiAgICB1cmk6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRFbnRyeVBvaW50IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldEVudHJ5UG9pbnQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRFbnRyeVBvaW50SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjZXNzQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjZXNzQ29kZSddID0gdGhpcy5hY2Nlc3NDb2RlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVudHJ5UG9pbnRGZWF0dXJlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW50cnlQb2ludEZlYXR1cmVzJ10gPSB0aGlzLmVudHJ5UG9pbnRGZWF0dXJlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRyeVBvaW50VHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW50cnlQb2ludFR5cGUnXSA9IHRoaXMuZW50cnlQb2ludFR5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFiZWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhYmVsJ10gPSB0aGlzLmxhYmVsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdDb2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nQ29kZSddID0gdGhpcy5tZWV0aW5nQ29kZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXNzY29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFzc2NvZGUnXSA9IHRoaXMucGFzc2NvZGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFzc3dvcmQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bhc3N3b3JkJ10gPSB0aGlzLnBhc3N3b3JkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBpbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGluJ10gPSB0aGlzLnBpbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWdpb25Db2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWdpb25Db2RlJ10gPSB0aGlzLnJlZ2lvbkNvZGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXJpICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cmknXSA9IHRoaXMudXJpO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ0ludGVyZmFjZSB7XG4gICAgYW55b25lQ2FuQWRkU2VsZjogYm9vbGVhbjtcbiAgICBhdHRlbmRlZXM6IEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVbXTtcbiAgICBhdHRlbmRlZXNPbWl0dGVkOiBib29sZWFuO1xuICAgIGNvbG9ySWQ6IHN0cmluZztcbiAgICBjb25mZXJlbmNlRGF0YTogR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgZW5kOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lO1xuICAgIGVuZFRpbWVVbnNwZWNpZmllZDogYm9vbGVhbjtcbiAgICBldGFnOiBzdHJpbmc7XG4gICAgaWNhbFVpZDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAga2luZDogc3RyaW5nO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgbG9ja2VkOiBib29sZWFuO1xuICAgIG9yaWdpbmFsU3RhcnRUaW1lOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lO1xuICAgIHJlY3VycmVuY2U6IHN0cmluZ1tdO1xuICAgIHJlY3VycmluZ01lZXRpbmdJZDogc3RyaW5nO1xuICAgIHJlbWluZGVyczogR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnM7XG4gICAgc2VxdWVuY2U6IG51bWJlcjtcbiAgICBzdGFydDogR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZTtcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBzdW1tYXJ5OiBzdHJpbmc7XG4gICAgdHJhbnNwYXJlbmN5OiBzdHJpbmc7XG4gICAgdmlzaWJpbGl0eTogc3RyaW5nO1xuICAgIGhhbmdvdXRMaW5rOiBzdHJpbmc7XG4gICAgaHRtbExpbms6IHN0cmluZztcbiAgICBjcmVhdGVkOiBzdHJpbmc7XG4gICAgY3JlYXRvcjogR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9yO1xuICAgIHVwZGF0ZWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmcoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXR0ZW5kZWVzKSB7bS5hdHRlbmRlZXMgPSBwcm90by5hdHRlbmRlZXMubWFwKEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWUuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5jb25mZXJlbmNlRGF0YSkge20uY29uZmVyZW5jZURhdGEgPSBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEuZnJvbVByb3RvKHByb3RvLmNvbmZlcmVuY2VEYXRhKTt9XG4gICAgICAgIGlmIChwcm90by5lbmQpIHttLmVuZCA9IEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUuZnJvbVByb3RvKHByb3RvLmVuZCk7fVxuICAgICAgICBpZiAocHJvdG8ub3JpZ2luYWxTdGFydFRpbWUpIHttLm9yaWdpbmFsU3RhcnRUaW1lID0gR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZS5mcm9tUHJvdG8ocHJvdG8ub3JpZ2luYWxTdGFydFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLnJlbWluZGVycykge20ucmVtaW5kZXJzID0gR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnMuZnJvbVByb3RvKHByb3RvLnJlbWluZGVycyk7fVxuICAgICAgICBpZiAocHJvdG8uc2VxdWVuY2UpIHttLnNlcXVlbmNlID0gcGFyc2VJbnQocHJvdG8uc2VxdWVuY2UsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5zdGFydCkge20uc3RhcnQgPSBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lLmZyb21Qcm90byhwcm90by5zdGFydCk7fVxuICAgICAgICBpZiAocHJvdG8uY3JlYXRvcikge20uY3JlYXRvciA9IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvci5mcm9tUHJvdG8ocHJvdG8uY3JlYXRvcik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYW55b25lQ2FuQWRkU2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYW55b25lQ2FuQWRkU2VsZiddID0gdGhpcy5hbnlvbmVDYW5BZGRTZWxmO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dGVuZGVlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hdHRlbmRlZXMgIT09IG51bGwpIHt0b1JldHVyblsnYXR0ZW5kZWVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmF0dGVuZGVlcyA/ICh0aGlzLmF0dGVuZGVlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hdHRlbmRlZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXR0ZW5kZWVzT21pdHRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYXR0ZW5kZWVzT21pdHRlZCddID0gdGhpcy5hdHRlbmRlZXNPbWl0dGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbG9ySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbG9ySWQnXSA9IHRoaXMuY29sb3JJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25mZXJlbmNlRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25mZXJlbmNlRGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydjb25mZXJlbmNlRGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb25mZXJlbmNlRGF0YSA/ICh0aGlzLmNvbmZlcmVuY2VEYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvbmZlcmVuY2VEYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZXNjcmlwdGlvbiddID0gdGhpcy5kZXNjcmlwdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZW5kICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmQgPyAodGhpcy5lbmQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVuZFRpbWVVbnNwZWNpZmllZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW5kVGltZVVuc3BlY2lmaWVkJ10gPSB0aGlzLmVuZFRpbWVVbnNwZWNpZmllZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldGFnICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydldGFnJ10gPSB0aGlzLmV0YWc7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWNhbFVpZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWNhbFVpZCddID0gdGhpcy5pY2FsVWlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5raW5kICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydraW5kJ10gPSB0aGlzLmtpbmQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2F0aW9uJ10gPSB0aGlzLmxvY2F0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2tlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9ja2VkJ10gPSB0aGlzLmxvY2tlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5hbFN0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5vcmlnaW5hbFN0YXJ0VGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydvcmlnaW5hbFN0YXJ0VGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5vcmlnaW5hbFN0YXJ0VGltZSA/ICh0aGlzLm9yaWdpbmFsU3RhcnRUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm9yaWdpbmFsU3RhcnRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlY3VycmVuY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlY3VycmVuY2UnXSA9IHRoaXMucmVjdXJyZW5jZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWN1cnJpbmdNZWV0aW5nSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlY3VycmluZ01lZXRpbmdJZCddID0gdGhpcy5yZWN1cnJpbmdNZWV0aW5nSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVtaW5kZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnJlbWluZGVycyAhPT0gbnVsbCkge3RvUmV0dXJuWydyZW1pbmRlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucmVtaW5kZXJzID8gKHRoaXMucmVtaW5kZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnJlbWluZGVyczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZXF1ZW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VxdWVuY2UnXSA9IHRoaXMuc2VxdWVuY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N0YXR1cyddID0gdGhpcy5zdGF0dXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3VtbWFyeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3VtbWFyeSddID0gdGhpcy5zdW1tYXJ5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRyYW5zcGFyZW5jeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHJhbnNwYXJlbmN5J10gPSB0aGlzLnRyYW5zcGFyZW5jeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aXNpYmlsaXR5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2aXNpYmlsaXR5J10gPSB0aGlzLnZpc2liaWxpdHk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGFuZ291dExpbmsgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hhbmdvdXRMaW5rJ10gPSB0aGlzLmhhbmdvdXRMaW5rO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmh0bWxMaW5rICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydodG1sTGluayddID0gdGhpcy5odG1sTGluazt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjcmVhdGVkJ10gPSB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jcmVhdG9yICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NyZWF0b3InXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3JlYXRvciA/ICh0aGlzLmNyZWF0b3IgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3JlYXRvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cGRhdGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cGRhdGVkJ10gPSB0aGlzLnVwZGF0ZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZSB7XG4gICAgYWRkaXRpb25hbEd1ZXN0czogbnVtYmVyO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICBvcHRpb25hbDogYm9vbGVhbjtcbiAgICBvcmdhbml6ZXI6IGJvb2xlYW47XG4gICAgcmVzb3VyY2U6IGJvb2xlYW47XG4gICAgcmVzcG9uc2VTdGF0dXM6IHN0cmluZztcbiAgICBzZWxmOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWRkaXRpb25hbEd1ZXN0cykge20uYWRkaXRpb25hbEd1ZXN0cyA9IHBhcnNlSW50KHByb3RvLmFkZGl0aW9uYWxHdWVzdHMsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFkZGl0aW9uYWxHdWVzdHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FkZGl0aW9uYWxHdWVzdHMnXSA9IHRoaXMuYWRkaXRpb25hbEd1ZXN0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21tZW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb21tZW50J10gPSB0aGlzLmNvbW1lbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzcGxheU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rpc3BsYXlOYW1lJ10gPSB0aGlzLmRpc3BsYXlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9uYWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29wdGlvbmFsJ10gPSB0aGlzLm9wdGlvbmFsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yZ2FuaXplciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JnYW5pemVyJ10gPSB0aGlzLm9yZ2FuaXplcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNvdXJjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVzb3VyY2UnXSA9IHRoaXMucmVzb3VyY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzcG9uc2VTdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Jlc3BvbnNlU3RhdHVzJ10gPSB0aGlzLnJlc3BvbnNlU3RhdHVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbGYgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlbGYnXSA9IHRoaXMuc2VsZjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TWVldGluZ0NyZWF0b3IgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvckludGVyZmFjZSB7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc2VsZjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvciB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9ySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzcGxheU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rpc3BsYXlOYW1lJ10gPSB0aGlzLmRpc3BsYXlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VsZiddID0gdGhpcy5zZWxmO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWVJbnRlcmZhY2Uge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICBkYXRlVGltZTogc3RyaW5nO1xuICAgIHRpbWVab25lOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RhdGUnXSA9IHRoaXMuZGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYXRlVGltZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGF0ZVRpbWUnXSA9IHRoaXMuZGF0ZVRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVpvbmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpbWVab25lJ10gPSB0aGlzLnRpbWVab25lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJJbnRlcmZhY2Uge1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIG1pbnV0ZXM6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm1pbnV0ZXMpIHttLm1pbnV0ZXMgPSBwYXJzZUludChwcm90by5taW51dGVzLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRob2QgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21ldGhvZCddID0gdGhpcy5tZXRob2Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWludXRlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWludXRlcyddID0gdGhpcy5taW51dGVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ1JlbWluZGVyc0ludGVyZmFjZSB7XG4gICAgb3ZlcnJpZGVzOiBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyW107XG4gICAgdXNlRGVmYXVsdDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ub3ZlcnJpZGVzKSB7bS5vdmVycmlkZXMgPSBwcm90by5vdmVycmlkZXMubWFwKEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vdmVycmlkZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3ZlcnJpZGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ292ZXJyaWRlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5vdmVycmlkZXMgPyAodGhpcy5vdmVycmlkZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMub3ZlcnJpZGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZURlZmF1bHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZURlZmF1bHQnXSA9IHRoaXMudXNlRGVmYXVsdDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
|