@secrecy/lib 1.0.0-dev.19 → 1.0.0-dev.22
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/README.md +0 -1
- package/lib/BaseClient.d.ts +30 -25
- package/lib/BaseClient.js +1105 -253
- package/lib/ZeusThunder.js +1 -1
- package/lib/client/admin/index.d.ts +4 -3
- package/lib/client/admin/index.js +78 -32
- package/lib/client/index.d.ts +54 -52
- package/lib/client/index.js +2910 -547
- package/lib/error.d.ts +30 -0
- package/lib/error.js +3 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -2
- package/lib/zeus/const.js +670 -75
- package/lib/zeus/index.d.ts +2096 -287
- package/lib/zeus/index.js +1 -1
- package/package.json +1 -1
package/lib/BaseClient.js
CHANGED
|
@@ -6,6 +6,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
6
6
|
|
|
7
7
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8
8
|
|
|
9
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
9
10
|
import { serialize } from "bson";
|
|
10
11
|
import { getLink } from "@secrecy/lib-utils";
|
|
11
12
|
import { usersCache } from "./cache.js";
|
|
@@ -49,16 +50,26 @@ var getUserSelector = function getUserSelector(userId, withPublicKey) {
|
|
|
49
50
|
user: [{
|
|
50
51
|
userId: userId
|
|
51
52
|
}, {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
53
|
+
"...on ErrorNotFound": {
|
|
54
|
+
__typename: true,
|
|
55
|
+
message: true,
|
|
56
|
+
field: true
|
|
57
|
+
},
|
|
58
|
+
"...on UserResponse": {
|
|
59
|
+
__typename: true,
|
|
60
|
+
user: {
|
|
61
|
+
id: true,
|
|
62
|
+
firstname: true,
|
|
63
|
+
lastname: true,
|
|
64
|
+
lang: true,
|
|
65
|
+
publicKey: withPublicKey ? true : undefined,
|
|
66
|
+
email: true,
|
|
67
|
+
phone: true,
|
|
68
|
+
role: true,
|
|
69
|
+
deletedAt: true,
|
|
70
|
+
lastLogin: true
|
|
71
|
+
}
|
|
72
|
+
}
|
|
62
73
|
}]
|
|
63
74
|
}),
|
|
64
75
|
user = _Selector.user;
|
|
@@ -72,7 +83,7 @@ function getUser(_x) {
|
|
|
72
83
|
|
|
73
84
|
function _getUser() {
|
|
74
85
|
_getUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee27(params) {
|
|
75
|
-
var selector, _yield$params$client,
|
|
86
|
+
var selector, _yield$params$client, userResponse;
|
|
76
87
|
|
|
77
88
|
return _regeneratorRuntime.wrap(function _callee27$(_context27) {
|
|
78
89
|
while (1) {
|
|
@@ -86,9 +97,9 @@ function _getUser() {
|
|
|
86
97
|
|
|
87
98
|
case 3:
|
|
88
99
|
_yield$params$client = _context27.sent;
|
|
89
|
-
|
|
100
|
+
userResponse = _yield$params$client.user;
|
|
90
101
|
|
|
91
|
-
if (
|
|
102
|
+
if (userResponse) {
|
|
92
103
|
_context27.next = 7;
|
|
93
104
|
break;
|
|
94
105
|
}
|
|
@@ -96,12 +107,31 @@ function _getUser() {
|
|
|
96
107
|
return _context27.abrupt("return", null);
|
|
97
108
|
|
|
98
109
|
case 7:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
110
|
+
if (!(userResponse.__typename === "ErrorNotFound")) {
|
|
111
|
+
_context27.next = 9;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return _context27.abrupt("return", userResponse);
|
|
116
|
+
|
|
117
|
+
case 9:
|
|
118
|
+
if (userResponse.user) {
|
|
119
|
+
_context27.next = 11;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
103
122
|
|
|
104
|
-
|
|
123
|
+
return _context27.abrupt("return", null);
|
|
124
|
+
|
|
125
|
+
case 11:
|
|
126
|
+
return _context27.abrupt("return", {
|
|
127
|
+
__typename: "SuccessResponse",
|
|
128
|
+
data: _objectSpread(_objectSpread({}, userResponse.user), {}, {
|
|
129
|
+
lastLogin: new Date(userResponse.user.lastLogin),
|
|
130
|
+
deletedAt: userResponse.user.deletedAt ? new Date(userResponse.user.deletedAt) : null
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
case 12:
|
|
105
135
|
case "end":
|
|
106
136
|
return _context27.stop();
|
|
107
137
|
}
|
|
@@ -121,9 +151,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
121
151
|
|
|
122
152
|
_proto.sessions = /*#__PURE__*/function () {
|
|
123
153
|
var _sessions = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
124
|
-
var
|
|
154
|
+
var data, userResponse, _userResponse$user$se, _sessions2;
|
|
125
155
|
|
|
126
|
-
var data, sessions;
|
|
127
156
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
128
157
|
while (1) {
|
|
129
158
|
switch (_context.prev = _context.next) {
|
|
@@ -131,23 +160,33 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
131
160
|
_context.next = 2;
|
|
132
161
|
return this.client("query")({
|
|
133
162
|
user: [{}, {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
163
|
+
"...on ErrorNotFound": {
|
|
164
|
+
__typename: true,
|
|
165
|
+
field: true,
|
|
166
|
+
message: true
|
|
167
|
+
},
|
|
168
|
+
"...on UserResponse": {
|
|
169
|
+
__typename: true,
|
|
170
|
+
user: {
|
|
171
|
+
sessions: {
|
|
172
|
+
id: true,
|
|
173
|
+
lastActivity: true,
|
|
174
|
+
userAgent: true,
|
|
175
|
+
ip: true,
|
|
176
|
+
city: true,
|
|
177
|
+
country: true,
|
|
178
|
+
appSessions: {
|
|
179
|
+
id: true,
|
|
180
|
+
lastActivity: true,
|
|
181
|
+
userAgent: true,
|
|
182
|
+
ip: true,
|
|
183
|
+
city: true,
|
|
184
|
+
country: true,
|
|
185
|
+
userApp: {
|
|
186
|
+
app: {
|
|
187
|
+
name: true
|
|
188
|
+
}
|
|
189
|
+
}
|
|
151
190
|
}
|
|
152
191
|
}
|
|
153
192
|
}
|
|
@@ -157,7 +196,31 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
157
196
|
|
|
158
197
|
case 2:
|
|
159
198
|
data = _context.sent;
|
|
160
|
-
|
|
199
|
+
|
|
200
|
+
if (data.user) {
|
|
201
|
+
_context.next = 5;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return _context.abrupt("return", null);
|
|
206
|
+
|
|
207
|
+
case 5:
|
|
208
|
+
userResponse = data.user;
|
|
209
|
+
|
|
210
|
+
if (!(userResponse.__typename === "UserResponse")) {
|
|
211
|
+
_context.next = 11;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
if (userResponse.user) {
|
|
216
|
+
_context.next = 9;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return _context.abrupt("return", null);
|
|
221
|
+
|
|
222
|
+
case 9:
|
|
223
|
+
_sessions2 = (_userResponse$user$se = userResponse.user.sessions.map(function (s) {
|
|
161
224
|
return {
|
|
162
225
|
id: s.id,
|
|
163
226
|
ip: s.ip,
|
|
@@ -179,10 +242,16 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
179
242
|
};
|
|
180
243
|
})
|
|
181
244
|
};
|
|
182
|
-
})) != null ?
|
|
183
|
-
return _context.abrupt("return",
|
|
245
|
+
})) != null ? _userResponse$user$se : [];
|
|
246
|
+
return _context.abrupt("return", {
|
|
247
|
+
__typename: "SuccessResponse",
|
|
248
|
+
data: _sessions2
|
|
249
|
+
});
|
|
184
250
|
|
|
185
|
-
case
|
|
251
|
+
case 11:
|
|
252
|
+
return _context.abrupt("return", userResponse);
|
|
253
|
+
|
|
254
|
+
case 12:
|
|
186
255
|
case "end":
|
|
187
256
|
return _context.stop();
|
|
188
257
|
}
|
|
@@ -221,7 +290,20 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
221
290
|
return this.client("mutation")({
|
|
222
291
|
logout: [{
|
|
223
292
|
sessionId: sessionId
|
|
224
|
-
},
|
|
293
|
+
}, {
|
|
294
|
+
"...on ErrorAccessDenied": {
|
|
295
|
+
__typename: true,
|
|
296
|
+
message: true
|
|
297
|
+
},
|
|
298
|
+
"...on ErrorBasic": {
|
|
299
|
+
__typename: true,
|
|
300
|
+
message: true
|
|
301
|
+
},
|
|
302
|
+
"...on LogoutResponse": {
|
|
303
|
+
__typename: true,
|
|
304
|
+
logout: true
|
|
305
|
+
}
|
|
306
|
+
}]
|
|
225
307
|
});
|
|
226
308
|
|
|
227
309
|
case 4:
|
|
@@ -290,12 +372,28 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
290
372
|
user = _context4.sent;
|
|
291
373
|
|
|
292
374
|
if (user) {
|
|
293
|
-
|
|
375
|
+
_context4.next = 5;
|
|
376
|
+
break;
|
|
294
377
|
}
|
|
295
378
|
|
|
296
|
-
return _context4.abrupt("return",
|
|
379
|
+
return _context4.abrupt("return", null);
|
|
297
380
|
|
|
298
381
|
case 5:
|
|
382
|
+
if (!(user.__typename === "ErrorNotFound")) {
|
|
383
|
+
_context4.next = 7;
|
|
384
|
+
break;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
return _context4.abrupt("return", user);
|
|
388
|
+
|
|
389
|
+
case 7:
|
|
390
|
+
if (user) {
|
|
391
|
+
usersCache.set(user.data.id, user.data);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
return _context4.abrupt("return", user);
|
|
395
|
+
|
|
396
|
+
case 9:
|
|
299
397
|
case "end":
|
|
300
398
|
return _context4.stop();
|
|
301
399
|
}
|
|
@@ -328,12 +426,28 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
328
426
|
user = _context5.sent;
|
|
329
427
|
|
|
330
428
|
if (user) {
|
|
331
|
-
|
|
429
|
+
_context5.next = 5;
|
|
430
|
+
break;
|
|
332
431
|
}
|
|
333
432
|
|
|
334
|
-
return _context5.abrupt("return",
|
|
433
|
+
return _context5.abrupt("return", null);
|
|
335
434
|
|
|
336
435
|
case 5:
|
|
436
|
+
if (!(user.__typename === "ErrorNotFound")) {
|
|
437
|
+
_context5.next = 7;
|
|
438
|
+
break;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
return _context5.abrupt("return", user);
|
|
442
|
+
|
|
443
|
+
case 7:
|
|
444
|
+
if (user) {
|
|
445
|
+
usersCache.set(user.data.id, user.data);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
return _context5.abrupt("return", user);
|
|
449
|
+
|
|
450
|
+
case 9:
|
|
337
451
|
case "end":
|
|
338
452
|
return _context5.stop();
|
|
339
453
|
}
|
|
@@ -364,15 +478,28 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
364
478
|
lastname: lastname,
|
|
365
479
|
lang: lang
|
|
366
480
|
}, {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
481
|
+
"...on ErrorAccessDenied": {
|
|
482
|
+
__typename: true,
|
|
483
|
+
message: true
|
|
484
|
+
},
|
|
485
|
+
"...on ErrorNotFound": {
|
|
486
|
+
__typename: true,
|
|
487
|
+
message: true
|
|
488
|
+
},
|
|
489
|
+
"...on UpdateProfileResponse": {
|
|
490
|
+
__typename: true,
|
|
491
|
+
updateProfile: {
|
|
492
|
+
id: true,
|
|
493
|
+
firstname: true,
|
|
494
|
+
lastname: true,
|
|
495
|
+
lang: true,
|
|
496
|
+
email: true,
|
|
497
|
+
phone: true,
|
|
498
|
+
role: true,
|
|
499
|
+
deletedAt: true,
|
|
500
|
+
lastLogin: true
|
|
501
|
+
}
|
|
502
|
+
}
|
|
376
503
|
}]
|
|
377
504
|
});
|
|
378
505
|
|
|
@@ -385,15 +512,49 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
385
512
|
break;
|
|
386
513
|
}
|
|
387
514
|
|
|
388
|
-
|
|
515
|
+
return _context6.abrupt("return", null);
|
|
389
516
|
|
|
390
517
|
case 7:
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
}
|
|
518
|
+
if (!(updateProfile.__typename === "ErrorAccessDenied")) {
|
|
519
|
+
_context6.next = 9;
|
|
520
|
+
break;
|
|
521
|
+
}
|
|
395
522
|
|
|
396
|
-
|
|
523
|
+
return _context6.abrupt("return", updateProfile);
|
|
524
|
+
|
|
525
|
+
case 9:
|
|
526
|
+
if (!(updateProfile.__typename === "ErrorNotFound")) {
|
|
527
|
+
_context6.next = 11;
|
|
528
|
+
break;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return _context6.abrupt("return", updateProfile);
|
|
532
|
+
|
|
533
|
+
case 11:
|
|
534
|
+
if (updateProfile.updateProfile) {
|
|
535
|
+
_context6.next = 13;
|
|
536
|
+
break;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
return _context6.abrupt("return", null);
|
|
540
|
+
|
|
541
|
+
case 13:
|
|
542
|
+
return _context6.abrupt("return", {
|
|
543
|
+
__typename: "SuccessResponse",
|
|
544
|
+
data: {
|
|
545
|
+
email: updateProfile.updateProfile.email,
|
|
546
|
+
firstname: updateProfile.updateProfile.firstname,
|
|
547
|
+
id: updateProfile.updateProfile.id,
|
|
548
|
+
lang: updateProfile.updateProfile.lang,
|
|
549
|
+
lastLogin: new Date(updateProfile.updateProfile.lastLogin),
|
|
550
|
+
lastname: updateProfile.updateProfile.lastname,
|
|
551
|
+
phone: updateProfile.updateProfile.phone,
|
|
552
|
+
role: updateProfile.updateProfile.role,
|
|
553
|
+
deletedAt: updateProfile.updateProfile.deletedAt ? new Date(updateProfile.updateProfile.deletedAt) : null
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
|
|
557
|
+
case 14:
|
|
397
558
|
case "end":
|
|
398
559
|
return _context6.stop();
|
|
399
560
|
}
|
|
@@ -419,33 +580,38 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
419
580
|
_context7.next = 2;
|
|
420
581
|
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
421
582
|
plans: {
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
583
|
+
"...on PlanResponse": {
|
|
584
|
+
__typename: true,
|
|
585
|
+
plan: {
|
|
586
|
+
kind: true,
|
|
587
|
+
codes: true,
|
|
588
|
+
limits: {
|
|
589
|
+
downloadBandwidth: true,
|
|
590
|
+
downloadCount: true,
|
|
591
|
+
hardFileCount: true,
|
|
592
|
+
hardFileSize: true,
|
|
593
|
+
perFileSize: true,
|
|
594
|
+
uploadBandwidth: true,
|
|
595
|
+
uploadCount: true,
|
|
596
|
+
receivedMails: {
|
|
597
|
+
count: true,
|
|
598
|
+
fileCount: true,
|
|
599
|
+
fileSize: true,
|
|
600
|
+
hardCount: true,
|
|
601
|
+
hardFileCount: true,
|
|
602
|
+
hardFileSize: true,
|
|
603
|
+
perFileSize: true
|
|
604
|
+
},
|
|
605
|
+
sentMails: {
|
|
606
|
+
count: true,
|
|
607
|
+
fileCount: true,
|
|
608
|
+
fileSize: true,
|
|
609
|
+
hardCount: true,
|
|
610
|
+
hardFileCount: true,
|
|
611
|
+
hardFileSize: true,
|
|
612
|
+
perFileSize: true
|
|
613
|
+
}
|
|
614
|
+
}
|
|
449
615
|
}
|
|
450
616
|
}
|
|
451
617
|
}
|
|
@@ -454,9 +620,21 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
454
620
|
case 2:
|
|
455
621
|
_yield$BaseClient$_ge = _context7.sent;
|
|
456
622
|
plans = _yield$BaseClient$_ge.plans;
|
|
457
|
-
return _context7.abrupt("return", plans);
|
|
458
623
|
|
|
459
|
-
|
|
624
|
+
if (plans) {
|
|
625
|
+
_context7.next = 6;
|
|
626
|
+
break;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
return _context7.abrupt("return", null);
|
|
630
|
+
|
|
631
|
+
case 6:
|
|
632
|
+
return _context7.abrupt("return", {
|
|
633
|
+
__typename: "SuccessResponse",
|
|
634
|
+
data: plans.plan
|
|
635
|
+
});
|
|
636
|
+
|
|
637
|
+
case 7:
|
|
460
638
|
case "end":
|
|
461
639
|
return _context7.stop();
|
|
462
640
|
}
|
|
@@ -473,6 +651,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
473
651
|
|
|
474
652
|
_proto.pay = /*#__PURE__*/function () {
|
|
475
653
|
var _pay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(planCode, input, autoRenew) {
|
|
654
|
+
var _pay$pay;
|
|
655
|
+
|
|
476
656
|
var _yield$this$client2, pay;
|
|
477
657
|
|
|
478
658
|
return _regeneratorRuntime.wrap(function _callee8$(_context8) {
|
|
@@ -485,15 +665,44 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
485
665
|
input: input,
|
|
486
666
|
planCode: planCode,
|
|
487
667
|
autoRenew: autoRenew
|
|
488
|
-
},
|
|
668
|
+
}, {
|
|
669
|
+
"...on ErrorAccessDenied": {
|
|
670
|
+
__typename: true,
|
|
671
|
+
message: true
|
|
672
|
+
},
|
|
673
|
+
"...on PayResponse": {
|
|
674
|
+
__typename: true,
|
|
675
|
+
pay: true
|
|
676
|
+
}
|
|
677
|
+
}]
|
|
489
678
|
});
|
|
490
679
|
|
|
491
680
|
case 2:
|
|
492
681
|
_yield$this$client2 = _context8.sent;
|
|
493
682
|
pay = _yield$this$client2.pay;
|
|
494
|
-
return _context8.abrupt("return", pay != null ? pay : false);
|
|
495
683
|
|
|
496
|
-
|
|
684
|
+
if (pay) {
|
|
685
|
+
_context8.next = 6;
|
|
686
|
+
break;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
return _context8.abrupt("return", null);
|
|
690
|
+
|
|
691
|
+
case 6:
|
|
692
|
+
if (!(pay.__typename === "ErrorAccessDenied")) {
|
|
693
|
+
_context8.next = 8;
|
|
694
|
+
break;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
return _context8.abrupt("return", pay);
|
|
698
|
+
|
|
699
|
+
case 8:
|
|
700
|
+
return _context8.abrupt("return", {
|
|
701
|
+
__typename: "SuccessResponse",
|
|
702
|
+
data: (_pay$pay = pay.pay) != null ? _pay$pay : false
|
|
703
|
+
});
|
|
704
|
+
|
|
705
|
+
case 9:
|
|
497
706
|
case "end":
|
|
498
707
|
return _context8.stop();
|
|
499
708
|
}
|
|
@@ -510,6 +719,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
510
719
|
|
|
511
720
|
_proto.cancelPayment = /*#__PURE__*/function () {
|
|
512
721
|
var _cancelPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {
|
|
722
|
+
var _cancelPayment$cancel;
|
|
723
|
+
|
|
513
724
|
var _yield$this$client3, cancelPayment;
|
|
514
725
|
|
|
515
726
|
return _regeneratorRuntime.wrap(function _callee9$(_context9) {
|
|
@@ -518,15 +729,44 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
518
729
|
case 0:
|
|
519
730
|
_context9.next = 2;
|
|
520
731
|
return this.client("mutation")({
|
|
521
|
-
cancelPayment:
|
|
732
|
+
cancelPayment: {
|
|
733
|
+
"...on ErrorAccessDenied": {
|
|
734
|
+
__typename: true,
|
|
735
|
+
message: true
|
|
736
|
+
},
|
|
737
|
+
"...on CancelPaymentResponse": {
|
|
738
|
+
__typename: true,
|
|
739
|
+
cancelPayment: true
|
|
740
|
+
}
|
|
741
|
+
}
|
|
522
742
|
});
|
|
523
743
|
|
|
524
744
|
case 2:
|
|
525
745
|
_yield$this$client3 = _context9.sent;
|
|
526
746
|
cancelPayment = _yield$this$client3.cancelPayment;
|
|
527
|
-
return _context9.abrupt("return", cancelPayment != null ? cancelPayment : false);
|
|
528
747
|
|
|
529
|
-
|
|
748
|
+
if (cancelPayment) {
|
|
749
|
+
_context9.next = 6;
|
|
750
|
+
break;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
return _context9.abrupt("return", null);
|
|
754
|
+
|
|
755
|
+
case 6:
|
|
756
|
+
if (!(cancelPayment.__typename === "ErrorAccessDenied")) {
|
|
757
|
+
_context9.next = 8;
|
|
758
|
+
break;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
return _context9.abrupt("return", cancelPayment);
|
|
762
|
+
|
|
763
|
+
case 8:
|
|
764
|
+
return _context9.abrupt("return", {
|
|
765
|
+
__typename: "SuccessResponse",
|
|
766
|
+
data: (_cancelPayment$cancel = cancelPayment.cancelPayment) != null ? _cancelPayment$cancel : false
|
|
767
|
+
});
|
|
768
|
+
|
|
769
|
+
case 9:
|
|
530
770
|
case "end":
|
|
531
771
|
return _context9.stop();
|
|
532
772
|
}
|
|
@@ -543,7 +783,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
543
783
|
|
|
544
784
|
_proto.paymentInfos = /*#__PURE__*/function () {
|
|
545
785
|
var _paymentInfos = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
|
|
546
|
-
var _yield$this$client4, paymentInfos;
|
|
786
|
+
var _yield$this$client4, paymentInfos, result;
|
|
547
787
|
|
|
548
788
|
return _regeneratorRuntime.wrap(function _callee10$(_context10) {
|
|
549
789
|
while (1) {
|
|
@@ -552,33 +792,42 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
552
792
|
_context10.next = 2;
|
|
553
793
|
return this.client("query")({
|
|
554
794
|
paymentInfos: {
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
activatedAt: true,
|
|
559
|
-
currentPeriodEndsAt: true,
|
|
560
|
-
currentPeriodStartedAt: true,
|
|
561
|
-
canceledAt: true,
|
|
562
|
-
createdAt: true,
|
|
563
|
-
expiresAt: true,
|
|
564
|
-
pausedAt: true,
|
|
565
|
-
trialEndsAt: true,
|
|
566
|
-
trialStartedAt: true,
|
|
567
|
-
updatedAt: true,
|
|
568
|
-
state: true,
|
|
569
|
-
collectionMethod: true,
|
|
570
|
-
plan: true,
|
|
571
|
-
planCode: true,
|
|
572
|
-
total: true
|
|
795
|
+
"...on ErrorAccessDenied": {
|
|
796
|
+
__typename: true,
|
|
797
|
+
message: true
|
|
573
798
|
},
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
799
|
+
"...on PaymentInfosResponse": {
|
|
800
|
+
__typename: true,
|
|
801
|
+
paymentInfos: {
|
|
802
|
+
hostedUrl: true,
|
|
803
|
+
currentSubscription: {
|
|
804
|
+
autorenew: true,
|
|
805
|
+
activatedAt: true,
|
|
806
|
+
currentPeriodEndsAt: true,
|
|
807
|
+
currentPeriodStartedAt: true,
|
|
808
|
+
canceledAt: true,
|
|
809
|
+
createdAt: true,
|
|
810
|
+
expiresAt: true,
|
|
811
|
+
pausedAt: true,
|
|
812
|
+
trialEndsAt: true,
|
|
813
|
+
trialStartedAt: true,
|
|
814
|
+
updatedAt: true,
|
|
815
|
+
state: true,
|
|
816
|
+
collectionMethod: true,
|
|
817
|
+
plan: true,
|
|
818
|
+
planCode: true,
|
|
819
|
+
total: true
|
|
820
|
+
},
|
|
821
|
+
invoices: {
|
|
822
|
+
pdf: true,
|
|
823
|
+
date: true,
|
|
824
|
+
due: true,
|
|
825
|
+
status: true,
|
|
826
|
+
total: true,
|
|
827
|
+
name: true,
|
|
828
|
+
currency: true
|
|
829
|
+
}
|
|
830
|
+
}
|
|
582
831
|
}
|
|
583
832
|
}
|
|
584
833
|
});
|
|
@@ -595,9 +844,29 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
595
844
|
return _context10.abrupt("return", null);
|
|
596
845
|
|
|
597
846
|
case 6:
|
|
598
|
-
|
|
847
|
+
if (!(paymentInfos.__typename === "ErrorAccessDenied")) {
|
|
848
|
+
_context10.next = 8;
|
|
849
|
+
break;
|
|
850
|
+
}
|
|
599
851
|
|
|
600
|
-
|
|
852
|
+
return _context10.abrupt("return", paymentInfos);
|
|
853
|
+
|
|
854
|
+
case 8:
|
|
855
|
+
if (paymentInfos.paymentInfos) {
|
|
856
|
+
_context10.next = 10;
|
|
857
|
+
break;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
return _context10.abrupt("return", null);
|
|
861
|
+
|
|
862
|
+
case 10:
|
|
863
|
+
result = internalToPaymentInfos(paymentInfos.paymentInfos);
|
|
864
|
+
return _context10.abrupt("return", {
|
|
865
|
+
__typename: "SuccessResponse",
|
|
866
|
+
data: result
|
|
867
|
+
});
|
|
868
|
+
|
|
869
|
+
case 12:
|
|
601
870
|
case "end":
|
|
602
871
|
return _context10.stop();
|
|
603
872
|
}
|
|
@@ -623,28 +892,47 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
623
892
|
_context11.next = 2;
|
|
624
893
|
return this.client("query")({
|
|
625
894
|
limits: {
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
count: true,
|
|
630
|
-
maxCount: true
|
|
895
|
+
"...on ErrorAccessDenied": {
|
|
896
|
+
__typename: true,
|
|
897
|
+
message: true
|
|
631
898
|
},
|
|
632
|
-
|
|
633
|
-
|
|
899
|
+
"...on ErrorLimit": {
|
|
900
|
+
__typename: true,
|
|
901
|
+
message: true
|
|
902
|
+
},
|
|
903
|
+
"...on ErrorNotExist": {
|
|
904
|
+
__typename: true,
|
|
905
|
+
message: true
|
|
906
|
+
},
|
|
907
|
+
"...on ErrorNotFound": {
|
|
908
|
+
__typename: true,
|
|
909
|
+
message: true
|
|
910
|
+
},
|
|
911
|
+
"...on QueryLimits": {
|
|
912
|
+
__typename: true,
|
|
913
|
+
cloud: {
|
|
914
|
+
size: true,
|
|
915
|
+
maxSize: true,
|
|
634
916
|
count: true,
|
|
635
|
-
maxCount: true
|
|
636
|
-
fileCount: true,
|
|
637
|
-
maxFileCount: true,
|
|
638
|
-
fileSize: true,
|
|
639
|
-
maxFileSize: true
|
|
917
|
+
maxCount: true
|
|
640
918
|
},
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
919
|
+
mail: {
|
|
920
|
+
received: {
|
|
921
|
+
count: true,
|
|
922
|
+
maxCount: true,
|
|
923
|
+
fileCount: true,
|
|
924
|
+
maxFileCount: true,
|
|
925
|
+
fileSize: true,
|
|
926
|
+
maxFileSize: true
|
|
927
|
+
},
|
|
928
|
+
sent: {
|
|
929
|
+
count: true,
|
|
930
|
+
maxCount: true,
|
|
931
|
+
fileCount: true,
|
|
932
|
+
maxFileCount: true,
|
|
933
|
+
fileSize: true,
|
|
934
|
+
maxFileSize: true
|
|
935
|
+
}
|
|
648
936
|
}
|
|
649
937
|
}
|
|
650
938
|
}
|
|
@@ -662,35 +950,70 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
662
950
|
return _context11.abrupt("return", null);
|
|
663
951
|
|
|
664
952
|
case 6:
|
|
953
|
+
if (!(limits.__typename === "ErrorAccessDenied")) {
|
|
954
|
+
_context11.next = 8;
|
|
955
|
+
break;
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
return _context11.abrupt("return", limits);
|
|
959
|
+
|
|
960
|
+
case 8:
|
|
961
|
+
if (!(limits.__typename === "ErrorNotExist")) {
|
|
962
|
+
_context11.next = 10;
|
|
963
|
+
break;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
return _context11.abrupt("return", limits);
|
|
967
|
+
|
|
968
|
+
case 10:
|
|
969
|
+
if (!(limits.__typename === "ErrorLimit")) {
|
|
970
|
+
_context11.next = 12;
|
|
971
|
+
break;
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
return _context11.abrupt("return", limits);
|
|
975
|
+
|
|
976
|
+
case 12:
|
|
977
|
+
if (!(limits.__typename === "ErrorNotFound")) {
|
|
978
|
+
_context11.next = 14;
|
|
979
|
+
break;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
return _context11.abrupt("return", limits);
|
|
983
|
+
|
|
984
|
+
case 14:
|
|
665
985
|
cloud = limits.cloud, mail = limits.mail;
|
|
666
986
|
return _context11.abrupt("return", {
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
received: {
|
|
675
|
-
count: BigInt(mail.received.count),
|
|
676
|
-
maxCount: mail.received.maxCount ? BigInt(mail.received.maxCount) : null,
|
|
677
|
-
fileCount: BigInt(mail.received.fileCount),
|
|
678
|
-
maxFileCount: mail.received.maxFileCount ? BigInt(mail.received.maxFileCount) : null,
|
|
679
|
-
fileSize: BigInt(mail.received.fileSize),
|
|
680
|
-
maxFileSize: mail.received.maxFileSize ? BigInt(mail.received.maxFileSize) : null
|
|
987
|
+
__typename: "SuccessResponse",
|
|
988
|
+
data: {
|
|
989
|
+
cloud: {
|
|
990
|
+
count: BigInt(cloud.count),
|
|
991
|
+
size: BigInt(cloud.size),
|
|
992
|
+
maxCount: cloud.maxCount ? BigInt(cloud.maxCount) : null,
|
|
993
|
+
maxSize: cloud.maxSize ? BigInt(cloud.maxSize) : null
|
|
681
994
|
},
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
995
|
+
mail: {
|
|
996
|
+
received: {
|
|
997
|
+
count: BigInt(mail.received.count),
|
|
998
|
+
maxCount: mail.received.maxCount ? BigInt(mail.received.maxCount) : null,
|
|
999
|
+
fileCount: BigInt(mail.received.fileCount),
|
|
1000
|
+
maxFileCount: mail.received.maxFileCount ? BigInt(mail.received.maxFileCount) : null,
|
|
1001
|
+
fileSize: BigInt(mail.received.fileSize),
|
|
1002
|
+
maxFileSize: mail.received.maxFileSize ? BigInt(mail.received.maxFileSize) : null
|
|
1003
|
+
},
|
|
1004
|
+
sent: {
|
|
1005
|
+
count: BigInt(mail.sent.count),
|
|
1006
|
+
maxCount: mail.sent.maxCount ? BigInt(mail.sent.maxCount) : null,
|
|
1007
|
+
fileCount: BigInt(mail.sent.fileCount),
|
|
1008
|
+
maxFileCount: mail.sent.maxFileCount ? BigInt(mail.sent.maxFileCount) : null,
|
|
1009
|
+
fileSize: BigInt(mail.sent.fileSize),
|
|
1010
|
+
maxFileSize: mail.sent.maxFileSize ? BigInt(mail.sent.maxFileSize) : null
|
|
1011
|
+
}
|
|
689
1012
|
}
|
|
690
1013
|
}
|
|
691
1014
|
});
|
|
692
1015
|
|
|
693
|
-
case
|
|
1016
|
+
case 16:
|
|
694
1017
|
case "end":
|
|
695
1018
|
return _context11.stop();
|
|
696
1019
|
}
|
|
@@ -707,8 +1030,6 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
707
1030
|
|
|
708
1031
|
_proto.godFatherAndChildren = /*#__PURE__*/function () {
|
|
709
1032
|
var _godFatherAndChildren = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {
|
|
710
|
-
var _user$godFather;
|
|
711
|
-
|
|
712
1033
|
var _yield$this$client6, user;
|
|
713
1034
|
|
|
714
1035
|
return _regeneratorRuntime.wrap(function _callee12$(_context12) {
|
|
@@ -718,19 +1039,26 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
718
1039
|
_context12.next = 2;
|
|
719
1040
|
return this.client("query")({
|
|
720
1041
|
user: [{}, {
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
lastname: true,
|
|
725
|
-
email: true,
|
|
726
|
-
phone: true
|
|
1042
|
+
"...on ErrorNotFound": {
|
|
1043
|
+
__typename: true,
|
|
1044
|
+
message: true
|
|
727
1045
|
},
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
1046
|
+
"...on UserResponse": {
|
|
1047
|
+
__typename: true,
|
|
1048
|
+
godChildren: {
|
|
1049
|
+
id: true,
|
|
1050
|
+
firstname: true,
|
|
1051
|
+
lastname: true,
|
|
1052
|
+
email: true,
|
|
1053
|
+
phone: true
|
|
1054
|
+
},
|
|
1055
|
+
godFather: {
|
|
1056
|
+
id: true,
|
|
1057
|
+
firstname: true,
|
|
1058
|
+
lastname: true,
|
|
1059
|
+
email: true,
|
|
1060
|
+
phone: true
|
|
1061
|
+
}
|
|
734
1062
|
}
|
|
735
1063
|
}]
|
|
736
1064
|
});
|
|
@@ -747,11 +1075,23 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
747
1075
|
return _context12.abrupt("return", null);
|
|
748
1076
|
|
|
749
1077
|
case 6:
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
1078
|
+
if (!(user.__typename === "ErrorNotFound")) {
|
|
1079
|
+
_context12.next = 8;
|
|
1080
|
+
break;
|
|
1081
|
+
}
|
|
753
1082
|
|
|
754
|
-
|
|
1083
|
+
return _context12.abrupt("return", user);
|
|
1084
|
+
|
|
1085
|
+
case 8:
|
|
1086
|
+
return _context12.abrupt("return", {
|
|
1087
|
+
__typename: "SuccessResponse",
|
|
1088
|
+
data: {
|
|
1089
|
+
godChildren: user.godChildren,
|
|
1090
|
+
godFather: user.godFather
|
|
1091
|
+
}
|
|
1092
|
+
});
|
|
1093
|
+
|
|
1094
|
+
case 9:
|
|
755
1095
|
case "end":
|
|
756
1096
|
return _context12.stop();
|
|
757
1097
|
}
|
|
@@ -768,7 +1108,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
768
1108
|
|
|
769
1109
|
BaseClient.updateAppDBConfig = /*#__PURE__*/function () {
|
|
770
1110
|
var _updateAppDBConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13(_ref2) {
|
|
771
|
-
var appCode, config, env, sessionId, _yield$BaseClient$_ge2,
|
|
1111
|
+
var appCode, config, env, sessionId, _yield$BaseClient$_ge2, dbConfigMutation;
|
|
772
1112
|
|
|
773
1113
|
return _regeneratorRuntime.wrap(function _callee13$(_context13) {
|
|
774
1114
|
while (1) {
|
|
@@ -777,18 +1117,47 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
777
1117
|
appCode = _ref2.appCode, config = _ref2.config, env = _ref2.env, sessionId = _ref2.sessionId;
|
|
778
1118
|
_context13.next = 3;
|
|
779
1119
|
return BaseClient._getBaseClient(env, sessionId)("mutation")({
|
|
780
|
-
|
|
1120
|
+
dbConfigMutation: [{
|
|
781
1121
|
appCode: appCode,
|
|
782
1122
|
config: JSON.stringify(config)
|
|
783
|
-
},
|
|
1123
|
+
}, {
|
|
1124
|
+
"...on ErrorAccessDenied": {
|
|
1125
|
+
__typename: true,
|
|
1126
|
+
message: true
|
|
1127
|
+
},
|
|
1128
|
+
"...on DbConfigMutationResponse": {
|
|
1129
|
+
__typename: true,
|
|
1130
|
+
dbConfigMutation: true
|
|
1131
|
+
}
|
|
1132
|
+
}]
|
|
784
1133
|
});
|
|
785
1134
|
|
|
786
1135
|
case 3:
|
|
787
1136
|
_yield$BaseClient$_ge2 = _context13.sent;
|
|
788
|
-
|
|
789
|
-
return _context13.abrupt("return", dbConfig);
|
|
1137
|
+
dbConfigMutation = _yield$BaseClient$_ge2.dbConfigMutation;
|
|
790
1138
|
|
|
791
|
-
|
|
1139
|
+
if (dbConfigMutation) {
|
|
1140
|
+
_context13.next = 7;
|
|
1141
|
+
break;
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
return _context13.abrupt("return", null);
|
|
1145
|
+
|
|
1146
|
+
case 7:
|
|
1147
|
+
if (!(dbConfigMutation.__typename === "ErrorAccessDenied")) {
|
|
1148
|
+
_context13.next = 9;
|
|
1149
|
+
break;
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
return _context13.abrupt("return", dbConfigMutation);
|
|
1153
|
+
|
|
1154
|
+
case 9:
|
|
1155
|
+
return _context13.abrupt("return", {
|
|
1156
|
+
__typename: "SuccessResponse",
|
|
1157
|
+
data: dbConfigMutation.dbConfigMutation
|
|
1158
|
+
});
|
|
1159
|
+
|
|
1160
|
+
case 10:
|
|
792
1161
|
case "end":
|
|
793
1162
|
return _context13.stop();
|
|
794
1163
|
}
|
|
@@ -815,15 +1184,68 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
815
1184
|
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
816
1185
|
dbConfig: [{
|
|
817
1186
|
appCode: appCode
|
|
818
|
-
},
|
|
1187
|
+
}, {
|
|
1188
|
+
"...on ErrorAccessDenied": {
|
|
1189
|
+
__typename: true,
|
|
1190
|
+
message: true
|
|
1191
|
+
},
|
|
1192
|
+
"...on ErrorNotFound": {
|
|
1193
|
+
__typename: true,
|
|
1194
|
+
message: true
|
|
1195
|
+
},
|
|
1196
|
+
"...on ErrorNotExist": {
|
|
1197
|
+
__typename: true,
|
|
1198
|
+
message: true
|
|
1199
|
+
},
|
|
1200
|
+
"...on DbConfigResponse": {
|
|
1201
|
+
__typename: true,
|
|
1202
|
+
json: true
|
|
1203
|
+
}
|
|
1204
|
+
}]
|
|
819
1205
|
});
|
|
820
1206
|
|
|
821
1207
|
case 2:
|
|
822
1208
|
_yield$BaseClient$_ge3 = _context14.sent;
|
|
823
1209
|
dbConfig = _yield$BaseClient$_ge3.dbConfig;
|
|
1210
|
+
|
|
1211
|
+
if (dbConfig) {
|
|
1212
|
+
_context14.next = 6;
|
|
1213
|
+
break;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
return _context14.abrupt("return", null);
|
|
1217
|
+
|
|
1218
|
+
case 6:
|
|
1219
|
+
if (!(dbConfig.__typename === "ErrorAccessDenied")) {
|
|
1220
|
+
_context14.next = 8;
|
|
1221
|
+
break;
|
|
1222
|
+
}
|
|
1223
|
+
|
|
824
1224
|
return _context14.abrupt("return", dbConfig);
|
|
825
1225
|
|
|
826
|
-
case
|
|
1226
|
+
case 8:
|
|
1227
|
+
if (!(dbConfig.__typename === "ErrorNotFound")) {
|
|
1228
|
+
_context14.next = 10;
|
|
1229
|
+
break;
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
return _context14.abrupt("return", dbConfig);
|
|
1233
|
+
|
|
1234
|
+
case 10:
|
|
1235
|
+
if (!(dbConfig.__typename === "ErrorNotExist")) {
|
|
1236
|
+
_context14.next = 12;
|
|
1237
|
+
break;
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
return _context14.abrupt("return", dbConfig);
|
|
1241
|
+
|
|
1242
|
+
case 12:
|
|
1243
|
+
return _context14.abrupt("return", {
|
|
1244
|
+
__typename: "SuccessResponse",
|
|
1245
|
+
data: dbConfig.json
|
|
1246
|
+
});
|
|
1247
|
+
|
|
1248
|
+
case 13:
|
|
827
1249
|
case "end":
|
|
828
1250
|
return _context14.stop();
|
|
829
1251
|
}
|
|
@@ -852,18 +1274,47 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
852
1274
|
faq: [{
|
|
853
1275
|
lang: lang
|
|
854
1276
|
}, {
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
1277
|
+
"...on ErrorAccessDenied": {
|
|
1278
|
+
__typename: true,
|
|
1279
|
+
message: true
|
|
1280
|
+
},
|
|
1281
|
+
"...on FaqResponse": {
|
|
1282
|
+
__typename: true,
|
|
1283
|
+
faq: {
|
|
1284
|
+
answer: true,
|
|
1285
|
+
order: true,
|
|
1286
|
+
question: true
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
858
1289
|
}]
|
|
859
1290
|
});
|
|
860
1291
|
|
|
861
1292
|
case 3:
|
|
862
1293
|
_yield$BaseClient$_ge4 = _context15.sent;
|
|
863
1294
|
faq = _yield$BaseClient$_ge4.faq;
|
|
1295
|
+
|
|
1296
|
+
if (faq) {
|
|
1297
|
+
_context15.next = 7;
|
|
1298
|
+
break;
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
return _context15.abrupt("return", null);
|
|
1302
|
+
|
|
1303
|
+
case 7:
|
|
1304
|
+
if (!(faq.__typename === "ErrorAccessDenied")) {
|
|
1305
|
+
_context15.next = 9;
|
|
1306
|
+
break;
|
|
1307
|
+
}
|
|
1308
|
+
|
|
864
1309
|
return _context15.abrupt("return", faq);
|
|
865
1310
|
|
|
866
|
-
case
|
|
1311
|
+
case 9:
|
|
1312
|
+
return _context15.abrupt("return", {
|
|
1313
|
+
__typename: "SuccessResponse",
|
|
1314
|
+
data: faq.faq
|
|
1315
|
+
});
|
|
1316
|
+
|
|
1317
|
+
case 10:
|
|
867
1318
|
case "end":
|
|
868
1319
|
return _context15.stop();
|
|
869
1320
|
}
|
|
@@ -892,29 +1343,58 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
892
1343
|
blog: [{
|
|
893
1344
|
lang: lang
|
|
894
1345
|
}, {
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
1346
|
+
"...on ErrorLangNotExist": {
|
|
1347
|
+
__typename: true,
|
|
1348
|
+
message: true
|
|
1349
|
+
},
|
|
1350
|
+
"...on BlogResponse": {
|
|
1351
|
+
__typename: true,
|
|
1352
|
+
blogItems: {
|
|
1353
|
+
id: true,
|
|
1354
|
+
blogId: true,
|
|
1355
|
+
author: true,
|
|
1356
|
+
body: true,
|
|
1357
|
+
date: true,
|
|
1358
|
+
image: true,
|
|
1359
|
+
imageAlt: true,
|
|
1360
|
+
summary: true,
|
|
1361
|
+
title: true,
|
|
1362
|
+
order: true
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
905
1365
|
}]
|
|
906
1366
|
});
|
|
907
1367
|
|
|
908
1368
|
case 3:
|
|
909
1369
|
_yield$BaseClient$_ge5 = _context16.sent;
|
|
910
1370
|
blog = _yield$BaseClient$_ge5.blog;
|
|
911
|
-
return _context16.abrupt("return", blog.map(function (b) {
|
|
912
|
-
return _objectSpread(_objectSpread({}, b), {}, {
|
|
913
|
-
date: new Date(b.date)
|
|
914
|
-
});
|
|
915
|
-
}));
|
|
916
1371
|
|
|
917
|
-
|
|
1372
|
+
if (blog) {
|
|
1373
|
+
_context16.next = 7;
|
|
1374
|
+
break;
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
return _context16.abrupt("return", null);
|
|
1378
|
+
|
|
1379
|
+
case 7:
|
|
1380
|
+
if (!(blog.__typename === "ErrorLangNotExist")) {
|
|
1381
|
+
_context16.next = 9;
|
|
1382
|
+
break;
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
return _context16.abrupt("return", blog);
|
|
1386
|
+
|
|
1387
|
+
case 9:
|
|
1388
|
+
return _context16.abrupt("return", {
|
|
1389
|
+
__typename: "SuccessResponse",
|
|
1390
|
+
data: blog.blogItems.map(function (b) {
|
|
1391
|
+
return _objectSpread(_objectSpread({}, b), {}, {
|
|
1392
|
+
date: new Date(b.date)
|
|
1393
|
+
});
|
|
1394
|
+
})
|
|
1395
|
+
});
|
|
1396
|
+
|
|
1397
|
+
case 10:
|
|
918
1398
|
case "end":
|
|
919
1399
|
return _context16.stop();
|
|
920
1400
|
}
|
|
@@ -943,19 +1423,32 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
943
1423
|
reportedUserId: reportedUserId,
|
|
944
1424
|
customMessage: customMessage
|
|
945
1425
|
}, {
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
1426
|
+
"...on ErrorAccessDenied": {
|
|
1427
|
+
__typename: true,
|
|
1428
|
+
message: true
|
|
1429
|
+
},
|
|
1430
|
+
"...on ErrorNotFound": {
|
|
1431
|
+
__typename: true,
|
|
1432
|
+
message: true
|
|
953
1433
|
},
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1434
|
+
"...on SendReportResponse": {
|
|
1435
|
+
__typename: true,
|
|
1436
|
+
sendReport: {
|
|
1437
|
+
id: true,
|
|
1438
|
+
customMessage: true,
|
|
1439
|
+
user: {
|
|
1440
|
+
id: true,
|
|
1441
|
+
firstname: true,
|
|
1442
|
+
lastname: true,
|
|
1443
|
+
email: true
|
|
1444
|
+
},
|
|
1445
|
+
reportedUser: {
|
|
1446
|
+
id: true,
|
|
1447
|
+
firstname: true,
|
|
1448
|
+
lastname: true,
|
|
1449
|
+
email: true
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
959
1452
|
}
|
|
960
1453
|
}]
|
|
961
1454
|
});
|
|
@@ -963,9 +1456,45 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
963
1456
|
case 2:
|
|
964
1457
|
_yield$this$client7 = _context17.sent;
|
|
965
1458
|
sendReport = _yield$this$client7.sendReport;
|
|
1459
|
+
|
|
1460
|
+
if (sendReport) {
|
|
1461
|
+
_context17.next = 6;
|
|
1462
|
+
break;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
return _context17.abrupt("return", null);
|
|
1466
|
+
|
|
1467
|
+
case 6:
|
|
1468
|
+
if (!(sendReport.__typename === "ErrorAccessDenied")) {
|
|
1469
|
+
_context17.next = 8;
|
|
1470
|
+
break;
|
|
1471
|
+
}
|
|
1472
|
+
|
|
966
1473
|
return _context17.abrupt("return", sendReport);
|
|
967
1474
|
|
|
968
|
-
case
|
|
1475
|
+
case 8:
|
|
1476
|
+
if (!(sendReport.__typename === "ErrorNotFound")) {
|
|
1477
|
+
_context17.next = 10;
|
|
1478
|
+
break;
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
return _context17.abrupt("return", sendReport);
|
|
1482
|
+
|
|
1483
|
+
case 10:
|
|
1484
|
+
if (sendReport.sendReport) {
|
|
1485
|
+
_context17.next = 12;
|
|
1486
|
+
break;
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
return _context17.abrupt("return", null);
|
|
1490
|
+
|
|
1491
|
+
case 12:
|
|
1492
|
+
return _context17.abrupt("return", {
|
|
1493
|
+
__typename: "SuccessResponse",
|
|
1494
|
+
data: sendReport.sendReport
|
|
1495
|
+
});
|
|
1496
|
+
|
|
1497
|
+
case 13:
|
|
969
1498
|
case "end":
|
|
970
1499
|
return _context17.stop();
|
|
971
1500
|
}
|
|
@@ -993,15 +1522,52 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
993
1522
|
return BaseClient._getBaseClient(env, sessionId)("mutation")({
|
|
994
1523
|
deleteUser: [{
|
|
995
1524
|
userId: userId
|
|
996
|
-
},
|
|
1525
|
+
}, {
|
|
1526
|
+
"...on ErrorAccessDenied": {
|
|
1527
|
+
__typename: true,
|
|
1528
|
+
message: true
|
|
1529
|
+
},
|
|
1530
|
+
"...on DeleteUserResponse": {
|
|
1531
|
+
__typename: true,
|
|
1532
|
+
deleteUser: true
|
|
1533
|
+
}
|
|
1534
|
+
}]
|
|
997
1535
|
});
|
|
998
1536
|
|
|
999
1537
|
case 3:
|
|
1000
1538
|
_yield$BaseClient$_ge6 = _context18.sent;
|
|
1001
1539
|
deleteUser = _yield$BaseClient$_ge6.deleteUser;
|
|
1002
|
-
return _context18.abrupt("return", deleteUser != null ? deleteUser : false);
|
|
1003
1540
|
|
|
1004
|
-
|
|
1541
|
+
if (deleteUser) {
|
|
1542
|
+
_context18.next = 7;
|
|
1543
|
+
break;
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
return _context18.abrupt("return", null);
|
|
1547
|
+
|
|
1548
|
+
case 7:
|
|
1549
|
+
if (!(deleteUser.__typename === "ErrorAccessDenied")) {
|
|
1550
|
+
_context18.next = 9;
|
|
1551
|
+
break;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
return _context18.abrupt("return", deleteUser);
|
|
1555
|
+
|
|
1556
|
+
case 9:
|
|
1557
|
+
if (deleteUser.deleteUser) {
|
|
1558
|
+
_context18.next = 11;
|
|
1559
|
+
break;
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1562
|
+
return _context18.abrupt("return", null);
|
|
1563
|
+
|
|
1564
|
+
case 11:
|
|
1565
|
+
return _context18.abrupt("return", {
|
|
1566
|
+
__typename: "SuccessResponse",
|
|
1567
|
+
data: deleteUser.deleteUser
|
|
1568
|
+
});
|
|
1569
|
+
|
|
1570
|
+
case 12:
|
|
1005
1571
|
case "end":
|
|
1006
1572
|
return _context18.stop();
|
|
1007
1573
|
}
|
|
@@ -1030,15 +1596,68 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1030
1596
|
dbGet: [{
|
|
1031
1597
|
field: field,
|
|
1032
1598
|
userId: userId
|
|
1033
|
-
},
|
|
1599
|
+
}, {
|
|
1600
|
+
"...on ErrorAccessDenied": {
|
|
1601
|
+
__typename: true,
|
|
1602
|
+
message: true
|
|
1603
|
+
},
|
|
1604
|
+
"...on ErrorNotExist": {
|
|
1605
|
+
__typename: true,
|
|
1606
|
+
message: true
|
|
1607
|
+
},
|
|
1608
|
+
"...on ErrorNotFound": {
|
|
1609
|
+
__typename: true,
|
|
1610
|
+
message: true
|
|
1611
|
+
},
|
|
1612
|
+
"...on DbGetResponse": {
|
|
1613
|
+
__typename: true,
|
|
1614
|
+
json: true
|
|
1615
|
+
}
|
|
1616
|
+
}]
|
|
1034
1617
|
});
|
|
1035
1618
|
|
|
1036
1619
|
case 3:
|
|
1037
1620
|
_yield$this$client8 = _context19.sent;
|
|
1038
1621
|
dbGet = _yield$this$client8.dbGet;
|
|
1039
|
-
return _context19.abrupt("return", dbGet.res);
|
|
1040
1622
|
|
|
1041
|
-
|
|
1623
|
+
if (dbGet) {
|
|
1624
|
+
_context19.next = 7;
|
|
1625
|
+
break;
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
return _context19.abrupt("return", null);
|
|
1629
|
+
|
|
1630
|
+
case 7:
|
|
1631
|
+
if (!(dbGet.__typename === "ErrorAccessDenied")) {
|
|
1632
|
+
_context19.next = 9;
|
|
1633
|
+
break;
|
|
1634
|
+
}
|
|
1635
|
+
|
|
1636
|
+
return _context19.abrupt("return", dbGet);
|
|
1637
|
+
|
|
1638
|
+
case 9:
|
|
1639
|
+
if (!(dbGet.__typename === "ErrorNotExist")) {
|
|
1640
|
+
_context19.next = 11;
|
|
1641
|
+
break;
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1644
|
+
return _context19.abrupt("return", dbGet);
|
|
1645
|
+
|
|
1646
|
+
case 11:
|
|
1647
|
+
if (!(dbGet.__typename === "ErrorNotFound")) {
|
|
1648
|
+
_context19.next = 13;
|
|
1649
|
+
break;
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
return _context19.abrupt("return", dbGet);
|
|
1653
|
+
|
|
1654
|
+
case 13:
|
|
1655
|
+
return _context19.abrupt("return", {
|
|
1656
|
+
__typename: "SuccessResponse",
|
|
1657
|
+
data: dbGet.json
|
|
1658
|
+
});
|
|
1659
|
+
|
|
1660
|
+
case 14:
|
|
1042
1661
|
case "end":
|
|
1043
1662
|
return _context19.stop();
|
|
1044
1663
|
}
|
|
@@ -1076,15 +1695,64 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1076
1695
|
dbSet: [{
|
|
1077
1696
|
userId: userId,
|
|
1078
1697
|
value: serialize(value).toString("base64")
|
|
1079
|
-
},
|
|
1698
|
+
}, {
|
|
1699
|
+
"...on ErrorAccessDenied": {
|
|
1700
|
+
__typename: true,
|
|
1701
|
+
message: true
|
|
1702
|
+
},
|
|
1703
|
+
"...on ErrorNotFound": {
|
|
1704
|
+
__typename: true,
|
|
1705
|
+
message: true
|
|
1706
|
+
},
|
|
1707
|
+
"...on DbSetResponse": {
|
|
1708
|
+
__typename: true,
|
|
1709
|
+
dbSet: true
|
|
1710
|
+
}
|
|
1711
|
+
}]
|
|
1080
1712
|
});
|
|
1081
1713
|
|
|
1082
1714
|
case 5:
|
|
1083
1715
|
_yield$this$client9 = _context20.sent;
|
|
1084
1716
|
dbSet = _yield$this$client9.dbSet;
|
|
1085
|
-
return _context20.abrupt("return", dbSet.res);
|
|
1086
1717
|
|
|
1087
|
-
|
|
1718
|
+
if (dbSet) {
|
|
1719
|
+
_context20.next = 9;
|
|
1720
|
+
break;
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
return _context20.abrupt("return", null);
|
|
1724
|
+
|
|
1725
|
+
case 9:
|
|
1726
|
+
if (!(dbSet.__typename === "ErrorAccessDenied")) {
|
|
1727
|
+
_context20.next = 11;
|
|
1728
|
+
break;
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
return _context20.abrupt("return", dbSet);
|
|
1732
|
+
|
|
1733
|
+
case 11:
|
|
1734
|
+
if (!(dbSet.__typename === "ErrorNotFound")) {
|
|
1735
|
+
_context20.next = 13;
|
|
1736
|
+
break;
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
return _context20.abrupt("return", dbSet);
|
|
1740
|
+
|
|
1741
|
+
case 13:
|
|
1742
|
+
if (dbSet.dbSet) {
|
|
1743
|
+
_context20.next = 15;
|
|
1744
|
+
break;
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
return _context20.abrupt("return", null);
|
|
1748
|
+
|
|
1749
|
+
case 15:
|
|
1750
|
+
return _context20.abrupt("return", {
|
|
1751
|
+
__typename: "SuccessResponse",
|
|
1752
|
+
data: dbSet.dbSet.res
|
|
1753
|
+
});
|
|
1754
|
+
|
|
1755
|
+
case 16:
|
|
1088
1756
|
case "end":
|
|
1089
1757
|
return _context20.stop();
|
|
1090
1758
|
}
|
|
@@ -1113,15 +1781,68 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1113
1781
|
dbSearch: [{
|
|
1114
1782
|
search: search,
|
|
1115
1783
|
field: field
|
|
1116
|
-
},
|
|
1784
|
+
}, {
|
|
1785
|
+
"...on ErrorAccessDenied": {
|
|
1786
|
+
__typename: true,
|
|
1787
|
+
message: true
|
|
1788
|
+
},
|
|
1789
|
+
"...on ErrorBasic": {
|
|
1790
|
+
__typename: true,
|
|
1791
|
+
message: true
|
|
1792
|
+
},
|
|
1793
|
+
"...on ErrorNotExist": {
|
|
1794
|
+
__typename: true,
|
|
1795
|
+
message: true
|
|
1796
|
+
},
|
|
1797
|
+
"...on DbSearchResponse": {
|
|
1798
|
+
__typename: true,
|
|
1799
|
+
json: true
|
|
1800
|
+
}
|
|
1801
|
+
}]
|
|
1117
1802
|
});
|
|
1118
1803
|
|
|
1119
1804
|
case 3:
|
|
1120
1805
|
_yield$this$client10 = _context21.sent;
|
|
1121
1806
|
dbSearch = _yield$this$client10.dbSearch;
|
|
1807
|
+
|
|
1808
|
+
if (dbSearch) {
|
|
1809
|
+
_context21.next = 7;
|
|
1810
|
+
break;
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
return _context21.abrupt("return", null);
|
|
1814
|
+
|
|
1815
|
+
case 7:
|
|
1816
|
+
if (!(dbSearch.__typename === "ErrorAccessDenied")) {
|
|
1817
|
+
_context21.next = 9;
|
|
1818
|
+
break;
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1122
1821
|
return _context21.abrupt("return", dbSearch);
|
|
1123
1822
|
|
|
1124
|
-
case
|
|
1823
|
+
case 9:
|
|
1824
|
+
if (!(dbSearch.__typename === "ErrorBasic")) {
|
|
1825
|
+
_context21.next = 11;
|
|
1826
|
+
break;
|
|
1827
|
+
}
|
|
1828
|
+
|
|
1829
|
+
return _context21.abrupt("return", dbSearch);
|
|
1830
|
+
|
|
1831
|
+
case 11:
|
|
1832
|
+
if (!(dbSearch.__typename === "ErrorNotExist")) {
|
|
1833
|
+
_context21.next = 13;
|
|
1834
|
+
break;
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
return _context21.abrupt("return", dbSearch);
|
|
1838
|
+
|
|
1839
|
+
case 13:
|
|
1840
|
+
return _context21.abrupt("return", {
|
|
1841
|
+
__typename: "SuccessResponse",
|
|
1842
|
+
data: dbSearch.json
|
|
1843
|
+
});
|
|
1844
|
+
|
|
1845
|
+
case 14:
|
|
1125
1846
|
case "end":
|
|
1126
1847
|
return _context21.stop();
|
|
1127
1848
|
}
|
|
@@ -1138,6 +1859,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1138
1859
|
|
|
1139
1860
|
_proto.deleteFolder = /*#__PURE__*/function () {
|
|
1140
1861
|
var _deleteFolder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22(_ref9) {
|
|
1862
|
+
var _deleteFolder$deleteF;
|
|
1863
|
+
|
|
1141
1864
|
var id, _yield$this$client11, deleteFolder;
|
|
1142
1865
|
|
|
1143
1866
|
return _regeneratorRuntime.wrap(function _callee22$(_context22) {
|
|
@@ -1149,15 +1872,56 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1149
1872
|
return this.client("mutation")({
|
|
1150
1873
|
deleteFolder: [{
|
|
1151
1874
|
id: id
|
|
1152
|
-
},
|
|
1875
|
+
}, {
|
|
1876
|
+
"...on ErrorNotExist": {
|
|
1877
|
+
__typename: true,
|
|
1878
|
+
message: true
|
|
1879
|
+
},
|
|
1880
|
+
"...on ErrorAccessDenied": {
|
|
1881
|
+
__typename: true,
|
|
1882
|
+
message: true
|
|
1883
|
+
},
|
|
1884
|
+
"...on DeleteFolderResponse": {
|
|
1885
|
+
__typename: true,
|
|
1886
|
+
deleteFolder: true
|
|
1887
|
+
}
|
|
1888
|
+
}]
|
|
1153
1889
|
});
|
|
1154
1890
|
|
|
1155
1891
|
case 3:
|
|
1156
1892
|
_yield$this$client11 = _context22.sent;
|
|
1157
1893
|
deleteFolder = _yield$this$client11.deleteFolder;
|
|
1158
|
-
return _context22.abrupt("return", deleteFolder != null ? deleteFolder : false);
|
|
1159
1894
|
|
|
1160
|
-
|
|
1895
|
+
if (deleteFolder) {
|
|
1896
|
+
_context22.next = 7;
|
|
1897
|
+
break;
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
return _context22.abrupt("return", null);
|
|
1901
|
+
|
|
1902
|
+
case 7:
|
|
1903
|
+
if (!(deleteFolder.__typename === "ErrorNotExist")) {
|
|
1904
|
+
_context22.next = 9;
|
|
1905
|
+
break;
|
|
1906
|
+
}
|
|
1907
|
+
|
|
1908
|
+
return _context22.abrupt("return", deleteFolder);
|
|
1909
|
+
|
|
1910
|
+
case 9:
|
|
1911
|
+
if (!(deleteFolder.__typename === "ErrorAccessDenied")) {
|
|
1912
|
+
_context22.next = 11;
|
|
1913
|
+
break;
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1916
|
+
return _context22.abrupt("return", deleteFolder);
|
|
1917
|
+
|
|
1918
|
+
case 11:
|
|
1919
|
+
return _context22.abrupt("return", {
|
|
1920
|
+
__typename: "SuccessResponse",
|
|
1921
|
+
data: (_deleteFolder$deleteF = deleteFolder.deleteFolder) != null ? _deleteFolder$deleteF : false
|
|
1922
|
+
});
|
|
1923
|
+
|
|
1924
|
+
case 12:
|
|
1161
1925
|
case "end":
|
|
1162
1926
|
return _context22.stop();
|
|
1163
1927
|
}
|
|
@@ -1174,6 +1938,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1174
1938
|
|
|
1175
1939
|
_proto.moveFolders = /*#__PURE__*/function () {
|
|
1176
1940
|
var _moveFolders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23(_ref10) {
|
|
1941
|
+
var _moveFolders$moveFold;
|
|
1942
|
+
|
|
1177
1943
|
var foldersId, parentFolderId, _yield$this$client12, moveFolders;
|
|
1178
1944
|
|
|
1179
1945
|
return _regeneratorRuntime.wrap(function _callee23$(_context23) {
|
|
@@ -1186,15 +1952,44 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1186
1952
|
moveFolders: [{
|
|
1187
1953
|
foldersId: foldersId,
|
|
1188
1954
|
parentFolderId: parentFolderId
|
|
1189
|
-
},
|
|
1955
|
+
}, {
|
|
1956
|
+
"...on ErrorAccessDenied": {
|
|
1957
|
+
__typename: true,
|
|
1958
|
+
message: true
|
|
1959
|
+
},
|
|
1960
|
+
"...on MoveFoldersResponse": {
|
|
1961
|
+
__typename: true,
|
|
1962
|
+
moveFolders: true
|
|
1963
|
+
}
|
|
1964
|
+
}]
|
|
1190
1965
|
});
|
|
1191
1966
|
|
|
1192
1967
|
case 3:
|
|
1193
1968
|
_yield$this$client12 = _context23.sent;
|
|
1194
1969
|
moveFolders = _yield$this$client12.moveFolders;
|
|
1195
|
-
return _context23.abrupt("return", moveFolders != null ? moveFolders : false);
|
|
1196
1970
|
|
|
1197
|
-
|
|
1971
|
+
if (moveFolders) {
|
|
1972
|
+
_context23.next = 7;
|
|
1973
|
+
break;
|
|
1974
|
+
}
|
|
1975
|
+
|
|
1976
|
+
return _context23.abrupt("return", null);
|
|
1977
|
+
|
|
1978
|
+
case 7:
|
|
1979
|
+
if (!(moveFolders.__typename === "ErrorAccessDenied")) {
|
|
1980
|
+
_context23.next = 9;
|
|
1981
|
+
break;
|
|
1982
|
+
}
|
|
1983
|
+
|
|
1984
|
+
return _context23.abrupt("return", moveFolders);
|
|
1985
|
+
|
|
1986
|
+
case 9:
|
|
1987
|
+
return _context23.abrupt("return", {
|
|
1988
|
+
__typename: "SuccessResponse",
|
|
1989
|
+
data: (_moveFolders$moveFold = moveFolders.moveFolders) != null ? _moveFolders$moveFold : false
|
|
1990
|
+
});
|
|
1991
|
+
|
|
1992
|
+
case 10:
|
|
1198
1993
|
case "end":
|
|
1199
1994
|
return _context23.stop();
|
|
1200
1995
|
}
|
|
@@ -1211,6 +2006,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1211
2006
|
|
|
1212
2007
|
_proto.moveFiles = /*#__PURE__*/function () {
|
|
1213
2008
|
var _moveFiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24(_ref11) {
|
|
2009
|
+
var _moveFiles$moveFiles;
|
|
2010
|
+
|
|
1214
2011
|
var filesId, parentFolderId, _yield$this$client13, moveFiles;
|
|
1215
2012
|
|
|
1216
2013
|
return _regeneratorRuntime.wrap(function _callee24$(_context24) {
|
|
@@ -1223,15 +2020,44 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1223
2020
|
moveFiles: [{
|
|
1224
2021
|
filesId: filesId,
|
|
1225
2022
|
parentFolderId: parentFolderId
|
|
1226
|
-
},
|
|
2023
|
+
}, {
|
|
2024
|
+
"...on ErrorAccessDenied": {
|
|
2025
|
+
__typename: true,
|
|
2026
|
+
message: true
|
|
2027
|
+
},
|
|
2028
|
+
"...on MoveFilesResponse": {
|
|
2029
|
+
__typename: true,
|
|
2030
|
+
moveFiles: true
|
|
2031
|
+
}
|
|
2032
|
+
}]
|
|
1227
2033
|
});
|
|
1228
2034
|
|
|
1229
2035
|
case 3:
|
|
1230
2036
|
_yield$this$client13 = _context24.sent;
|
|
1231
2037
|
moveFiles = _yield$this$client13.moveFiles;
|
|
1232
|
-
return _context24.abrupt("return", moveFiles != null ? moveFiles : false);
|
|
1233
2038
|
|
|
1234
|
-
|
|
2039
|
+
if (moveFiles) {
|
|
2040
|
+
_context24.next = 7;
|
|
2041
|
+
break;
|
|
2042
|
+
}
|
|
2043
|
+
|
|
2044
|
+
return _context24.abrupt("return", null);
|
|
2045
|
+
|
|
2046
|
+
case 7:
|
|
2047
|
+
if (!(moveFiles.__typename === "ErrorAccessDenied")) {
|
|
2048
|
+
_context24.next = 9;
|
|
2049
|
+
break;
|
|
2050
|
+
}
|
|
2051
|
+
|
|
2052
|
+
return _context24.abrupt("return", moveFiles);
|
|
2053
|
+
|
|
2054
|
+
case 9:
|
|
2055
|
+
return _context24.abrupt("return", {
|
|
2056
|
+
__typename: "SuccessResponse",
|
|
2057
|
+
data: (_moveFiles$moveFiles = moveFiles.moveFiles) != null ? _moveFiles$moveFiles : false
|
|
2058
|
+
});
|
|
2059
|
+
|
|
2060
|
+
case 10:
|
|
1235
2061
|
case "end":
|
|
1236
2062
|
return _context24.stop();
|
|
1237
2063
|
}
|
|
@@ -1260,8 +2086,15 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1260
2086
|
folderSize: [{
|
|
1261
2087
|
folderId: folderId
|
|
1262
2088
|
}, {
|
|
1263
|
-
|
|
1264
|
-
|
|
2089
|
+
"...on ErrorAccessDenied": {
|
|
2090
|
+
__typename: true,
|
|
2091
|
+
message: true
|
|
2092
|
+
},
|
|
2093
|
+
"...on FolderSizeResponse": {
|
|
2094
|
+
__typename: true,
|
|
2095
|
+
size: true,
|
|
2096
|
+
sizeBefore: true
|
|
2097
|
+
}
|
|
1265
2098
|
}]
|
|
1266
2099
|
});
|
|
1267
2100
|
|
|
@@ -1277,12 +2110,23 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1277
2110
|
return _context25.abrupt("return", null);
|
|
1278
2111
|
|
|
1279
2112
|
case 7:
|
|
2113
|
+
if (!(folderSize.__typename === "ErrorAccessDenied")) {
|
|
2114
|
+
_context25.next = 9;
|
|
2115
|
+
break;
|
|
2116
|
+
}
|
|
2117
|
+
|
|
2118
|
+
return _context25.abrupt("return", folderSize);
|
|
2119
|
+
|
|
2120
|
+
case 9:
|
|
1280
2121
|
return _context25.abrupt("return", {
|
|
1281
|
-
|
|
1282
|
-
|
|
2122
|
+
__typename: "SuccessResponse",
|
|
2123
|
+
data: {
|
|
2124
|
+
size: BigInt(folderSize.size),
|
|
2125
|
+
sizeBefore: BigInt(folderSize.sizeBefore)
|
|
2126
|
+
}
|
|
1283
2127
|
});
|
|
1284
2128
|
|
|
1285
|
-
case
|
|
2129
|
+
case 10:
|
|
1286
2130
|
case "end":
|
|
1287
2131
|
return _context25.stop();
|
|
1288
2132
|
}
|
|
@@ -1321,12 +2165,20 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1321
2165
|
return _context26.abrupt("return", null);
|
|
1322
2166
|
|
|
1323
2167
|
case 6:
|
|
2168
|
+
if (!(me.__typename === "ErrorNotFound")) {
|
|
2169
|
+
_context26.next = 8;
|
|
2170
|
+
break;
|
|
2171
|
+
}
|
|
2172
|
+
|
|
2173
|
+
return _context26.abrupt("return", null);
|
|
2174
|
+
|
|
2175
|
+
case 8:
|
|
1324
2176
|
return _context26.abrupt("return", getLink({
|
|
1325
2177
|
app: "auth",
|
|
1326
|
-
path: "/sign-up?gf=" + btoa(me.email) + "&au=" + btoa(backUrl)
|
|
2178
|
+
path: "/sign-up?gf=" + btoa(me.data.email) + "&au=" + btoa(backUrl)
|
|
1327
2179
|
}));
|
|
1328
2180
|
|
|
1329
|
-
case
|
|
2181
|
+
case 9:
|
|
1330
2182
|
case "end":
|
|
1331
2183
|
return _context26.stop();
|
|
1332
2184
|
}
|
|
@@ -1373,4 +2225,4 @@ BaseClient.getBaseUrl = function (env, graphcdn) {
|
|
|
1373
2225
|
BaseClient._getBaseClient = function (env, session) {
|
|
1374
2226
|
return createThunder(BaseClient.getBaseUrl(env), session);
|
|
1375
2227
|
};
|
|
1376
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9yIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInVzZXIiLCJpZCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibGFuZyIsInB1YmxpY0tleSIsInVuZGVmaW5lZCIsImVtYWlsIiwicGhvbmUiLCJyb2xlIiwiZGVsZXRlZEF0IiwibGFzdExvZ2luIiwiZ2V0VXNlciIsInBhcmFtcyIsInNlbGVjdG9yIiwiY2xpZW50IiwiQmFzZUNsaWVudCIsInNlc3Npb24iLCJlbnYiLCJzZXNzaW9uSWQiLCJfZ2V0QmFzZUNsaWVudCIsInNlc3Npb25zIiwibGFzdEFjdGl2aXR5IiwidXNlckFnZW50IiwiaXAiLCJjaXR5IiwiY291bnRyeSIsImFwcFNlc3Npb25zIiwidXNlckFwcCIsImFwcCIsIm5hbWUiLCJkYXRhIiwicyIsImEiLCJsb2dvdXQiLCJsb2NhbCIsImp3dCIsImNsZWFyIiwidXNlckFwcEtleXMiLCJ1c2VyQXBwU2Vzc2lvbiIsIm1lIiwic2V0IiwidXBkYXRlUHJvZmlsZSIsIkVycm9yIiwicGxhbnMiLCJraW5kIiwiY29kZXMiLCJsaW1pdHMiLCJkb3dubG9hZEJhbmR3aWR0aCIsImRvd25sb2FkQ291bnQiLCJoYXJkRmlsZUNvdW50IiwiaGFyZEZpbGVTaXplIiwicGVyRmlsZVNpemUiLCJ1cGxvYWRCYW5kd2lkdGgiLCJ1cGxvYWRDb3VudCIsInJlY2VpdmVkTWFpbHMiLCJjb3VudCIsImZpbGVDb3VudCIsImZpbGVTaXplIiwiaGFyZENvdW50Iiwic2VudE1haWxzIiwicGF5IiwiaW5wdXQiLCJhdXRvUmVuZXciLCJjYW5jZWxQYXltZW50IiwicGF5bWVudEluZm9zIiwiaG9zdGVkVXJsIiwiYXV0b3JlbmV3IiwicGxhbiIsInRvdGFsIiwicGRmIiwiY3VycmVuY3kiLCJjbG91ZCIsInNpemUiLCJtYXhTaXplIiwibWF4Q291bnQiLCJtYWlsIiwicmVjZWl2ZWQiLCJtYXhGaWxlQ291bnQiLCJtYXhGaWxlU2l6ZSIsInNlbnQiLCJCaWdJbnQiLCJnb2RGYXRoZXJBbmRDaGlsZHJlbiIsImdvZENoaWxkcmVuIiwiZ29kRmF0aGVyIiwidXBkYXRlQXBwREJDb25maWciLCJhcHBDb2RlIiwiY29uZmlnIiwiZGJDb25maWciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QXBwREJDb25maWciLCJnZXRGQVEiLCJmYXEiLCJhbnN3ZXIiLCJvcmRlciIsInF1ZXN0aW9uIiwiZ2V0QmxvZyIsImJsb2ciLCJibG9nSWQiLCJhdXRob3IiLCJib2R5IiwiaW1hZ2UiLCJpbWFnZUFsdCIsInN1bW1hcnkiLCJ0aXRsZSIsImIiLCJyZXBvcnRVc2VyIiwicmVwb3J0ZWRVc2VySWQiLCJjdXN0b21NZXNzYWdlIiwic2VuZFJlcG9ydCIsInJlcG9ydGVkVXNlciIsImRlbGV0ZVVzZXIiLCJkYkdldCIsImZpZWxkIiwicmVzIiwiZGJTZXQiLCJ2YWx1ZSIsInRvU3RyaW5nIiwiZGJTZWFyY2giLCJzZWFyY2giLCJkZWxldGVGb2xkZXIiLCJtb3ZlRm9sZGVycyIsImZvbGRlcnNJZCIsInBhcmVudEZvbGRlcklkIiwibW92ZUZpbGVzIiwiZmlsZXNJZCIsImZvbGRlclNpemUiLCJmb2xkZXJJZCIsInNpemVCZWZvcmUiLCJnZXRTcG9uc29yc2hpcExpbmsiLCJiYWNrVXJsIiwicGF0aCIsImJ0b2EiLCJnZXRCYXNlVXJsIiwiZ3JhcGhjZG4iLCJwcm9jZXNzIiwiTk9ERV9FTlYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsU0FBU0EsU0FBVCxRQUEwQixNQUExQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0Isb0JBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixZQUEzQjtBQUdBLFNBQVNDLFVBQVQsUUFBMkIscUJBQTNCO0FBUUEsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxTQUFTQyxhQUFULFFBQThCLGtCQUE5Qjs7QUF5S0EsU0FBU0Msc0JBQVQsQ0FBZ0NDLENBQWhDLEVBQXVFO0FBQ3JFLHlDQUNLQSxDQURMO0FBRUVDLElBQUFBLG1CQUFtQixrQ0FDZEQsQ0FBQyxDQUFDQyxtQkFEWTtBQUVqQkMsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNDLG1CQUFGLENBQXNCQyxLQUZaO0FBR2pCQyxNQUFBQSxnQkFBZ0IsRUFBRUgsQ0FBQyxDQUFDQyxtQkFBRixDQUNmRSxnQkFKYztBQUtqQkMsTUFBQUEsV0FBVyxFQUFFSixDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUF0QixHQUNULElBQUlDLElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkcsV0FBL0IsQ0FEUyxHQUVULElBUGE7QUFRakJFLE1BQUFBLFNBQVMsRUFBRU4sQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBdEIsR0FDUCxJQUFJRCxJQUFKLENBQVNMLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JLLFNBQS9CLENBRE8sR0FFUCxJQVZhO0FBV2pCQyxNQUFBQSxTQUFTLEVBQUVQLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JNLFNBQXRCLEdBQ1AsSUFBSUYsSUFBSixDQUFTTCxDQUFDLENB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QUFSLENBQVl1SCxRQUFaLEtBQXlCLE1BQTdCLEVBQXFDO0FBQ25DLFdBQU8sK0JBQVA7QUFDRDs7QUFFRCxVQUFRdkgsR0FBUjtBQUNFLFNBQUssTUFBTDtBQUNFLGFBQU9xSCxRQUFRLEdBQ1gsOEJBRFcsR0FFWCxnQ0FGSjs7QUFHRixTQUFLLFNBQUw7QUFDRSxhQUFPLHdDQUFQOztBQUNGLFNBQUssS0FBTDtBQUNBO0FBQ0UsYUFBTyxvQ0FBUDtBQVRKO0FBV0QsQzs7QUFwQlV2SCxVLENBc0JhSSxjLEdBQWlCLFVBQ3ZDRixHQUR1QyxFQUV2Q0QsT0FGdUM7QUFBQSxTQUl2Qy9DLGFBQWEsQ0FBQzhDLFVBQVUsQ0FBQ3NILFVBQVgsQ0FBc0JwSCxHQUF0QixDQUFELEVBQTZCRCxPQUE3QixDQUowQjtBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERvd25sb2FkUHJvZ3Jlc3MgYXMgRExQcm9ncmVzcyB9IGZyb20gXCJreVwiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgZ2V0TGluayB9IGZyb20gXCJAc2VjcmVjeS9saWItdXRpbHNcIjtcbmltcG9ydCB7IHVzZXJzQ2FjaGUgfSBmcm9tIFwiLi9jYWNoZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBVc2VyU2Vzc2lvbiB9IGZyb20gXCIuL2NsaWVudC90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5RW52IH0gZnJvbSBcIi4vY2xpZW50L2hlbHBlcnMuanNcIjtcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiLi9jbGllbnQvc3RvcmFnZS5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBMYW5nLFxuICBQYXlJbnB1dFR5cGUsXG4gIFBsYW5LaW5kLFxuICBUaHVuZGVyLFxuICBVc2VyUm9sZVxufSBmcm9tIFwiLi96ZXVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBTZWxlY3RvciB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNyZWF0ZVRodW5kZXIgfSBmcm9tIFwiLi9aZXVzVGh1bmRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9yKFwiUXVlcnlcIikoe1xuICAgIHVzZXI6IFtcbiAgICAgIHsgdXNlcklkIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiB0cnVlLFxuICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICBwdWJsaWNLZXk6IHdpdGhQdWJsaWNLZXkgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgcGhvbmU6IHRydWUsXG4gICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgICAgICAgbGFzdExvZ2luOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHVzZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZ0ZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcIm9iamVjdFwiO1xuICBpc0FycmF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNOdWxsYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRWRpdGFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc0tleT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwREJDb25maWcgPSB7XG4gIGZpZWxkczogQXBwREJDb25maWdGaWVsZFtdO1xufTtcblxuZXhwb3J0IHR5cGUgRmFxSXRlbSA9IHtcbiAgb3JkZXI6IG51bWJlcjtcbiAgcXVlc3Rpb246IHN0cmluZztcbiAgYW5zd2VyOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBCbG9nSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgYmxvZ0lkOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGF1dGhvcjogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGRhdGU6IERhdGU7XG4gIGltYWdlOiBzdHJpbmc7XG4gIGltYWdlQWx0OiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFVzZXJCYXNlID0ge1xuICBlbWFpbDogc3RyaW5nO1xuICBwaG9uZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICByb2xlOiBVc2VyUm9sZTtcbiAgZmlyc3RuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGRlbGV0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGxhc3RMb2dpbjogRGF0ZTtcbiAgbGFuZzogTGFuZztcbn07XG5cbnR5cGUgV2l0aFB1YmxpY0tleSA9IHsgd2l0aFB1YmxpY0tleT86IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgVXNlcjxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+ID0gVCBleHRlbmRzIHtcbiAgd2l0aFB1YmxpY0tleTogdHJ1ZTtcbn1cbiAgPyBVc2VyQmFzZSAmIHsgcHVibGljS2V5OiBzdHJpbmcgfVxuICA6IFVzZXJCYXNlO1xuXG50eXBlIENsYXNzR2V0VXNlclBhcmFtcyA9IFdpdGhQdWJsaWNLZXkgJiB7XG4gIHVzZXJJZD86IHN0cmluZztcbn07XG50eXBlIEdldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj47XG59O1xuXG50eXBlIFN0YXRpY0dldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGVudjogU2VjcmVjeUVudjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFVzZXI8VSBleHRlbmRzIFdpdGhQdWJsaWNLZXk+KFxuICBwYXJhbXM6IEdldFVzZXJQYXJhbXNcbik6IFByb21pc2U8VXNlcjxVPiB8IG51bGw+IHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBnZXRVc2VyU2VsZWN0b3IocGFyYW1zLnVzZXJJZCwgcGFyYW1zLndpdGhQdWJsaWNLZXkpO1xuICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHBhcmFtcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgdXNlcjogc2VsZWN0b3JcbiAgfSk7XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVzZXIsXG4gICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgZGVsZXRlZEF0OiB1c2VyLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKHVzZXIuZGVsZXRlZEF0KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2xvdWRMaW1pdHMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBzaXplOiBiaWdpbnQ7XG4gIG1heFNpemU6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsTGltaXRzVmFsdWVzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgZmlsZVNpemU6IGJpZ2ludDtcbiAgbWF4RmlsZVNpemU6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVDb3VudDogYmlnaW50O1xuICBtYXhGaWxlQ291bnQ6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUxpbWl0cyA9IHtcbiAgY2xvdWQ6IENsb3VkTGltaXRzO1xuICBtYWlsOiB7XG4gICAgc2VudDogTWFpbExpbWl0c1ZhbHVlcztcbiAgICByZWNlaXZlZDogTWFpbExpbWl0c1ZhbHVlcztcbiAgfTtcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBnZXRCYXNlVXJsID0gKFxuICAgIGVudjogU2VjcmVjeUVudiA9IFwicHJvZFwiLFxuICAgIGdyYXBoY2RuID0gdHJ1ZVxuICApOiBzdHJpbmcgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9ncmFwaHFsXCI7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlbnYpIHtcbiAgICAgIGNhc2UgXCJwcm9kXCI6XG4gICAgICAgIHJldHVybiBncmFwaGNkblxuICAgICAgICAgID8gXCJodHRwczovL3NlY3JlY3kuZ3JhcGhjZG4uYXBwXCJcbiAgICAgICAgICA6IFwiaHR0cHM6Ly9hcGkuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwic3RhZ2luZ1wiOlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaS5zdGFnaW5nLnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgICAgY2FzZSBcImRldlwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFwiaHR0cHM6Ly9hcGkuZGV2LnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZ2V0QmFzZUNsaWVudCA9IChcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj4gPT5cbiAgICBjcmVhdGVUaHVuZGVyKEJhc2VDbGllbnQuZ2V0QmFzZVVybChlbnYpLCBzZXNzaW9uKTtcblxuICBwcm90ZWN0ZWQgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBwdWJsaWMgc2Vzc2lvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogc3RyaW5nLCBlbnY6IFNlY3JlY3lFbnYpIHtcbiAgICB0aGlzLnNlc3Npb25JZCA9IHNlc3Npb247XG4gICAgdGhpcy5jbGllbnQgPSBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbik7XG4gIH1cblxuICBhc3luYyBzZXNzaW9ucygpOiBQcm9taXNlPFVzZXJTZXNzaW9uW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgc2Vzc2lvbnM6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgdXNlckFnZW50OiB0cnVlLFxuICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgY291bnRyeTogdHJ1ZSxcbiAgICAgICAgICAgIGFwcFNlc3Npb25zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0QWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgIGNpdHk6IHRydWUsXG4gICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBcHA6IHtcbiAgICAgICAgICAgICAgICBhcHA6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNlc3Npb25zOiBVc2VyU2Vzc2lvbltdID1cbiAgICAgIGRhdGEudXNlcj8uc2Vzc2lvbnMubWFwKHMgPT4gKHtcbiAgICAgICAgaWQ6IHMuaWQsXG4gICAgICAgIGlwOiBzLmlwLFxuICAgICAgICBjaXR5OiBzLmNpdHksXG4gICAgICAgIGNvdW50cnk6IHMuY291bnRyeSxcbiAgICAgICAgbGFzdEFjdGl2aXR5OiBzLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKHMubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlckFnZW50OiBzLnVzZXJBZ2VudCxcbiAgICAgICAgYXBwU2Vzc2lvbnM6IHMuYXBwU2Vzc2lvbnMubWFwKGEgPT4gKHtcbiAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICBpcDogYS5pcCxcbiAgICAgICAgICBjaXR5OiBhLmNpdHksXG4gICAgICAgICAgY291bnRyeTogYS5jb3VudHJ5LFxuICAgICAgICAgIGxhc3RBY3Rpdml0eTogYS5sYXN0QWN0aXZpdHkgPyBuZXcgRGF0ZShhLmxhc3RBY3Rpdml0eSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdXNlckFnZW50OiBhLnVzZXJBZ2VudCxcbiAgICAgICAgICBhcHA6IGEudXNlckFwcD8uYXBwLm5hbWUgPz8gXCJcIlxuICAgICAgICB9KSlcbiAgICAgIH0pKSA/PyBbXTtcblxuICAgIHJldHVybiBzZXNzaW9ucztcbiAgfVxuXG4gIGFzeW5jIGxvZ291dChzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICAgIGNvbnN0IGxvY2FsID0gZ2V0U3RvcmFnZShmYWxzZSk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gZ2V0U3RvcmFnZSh0cnVlKTtcbiAgICAgIGxvY2FsLmp3dC5jbGVhcigpO1xuICAgICAgbG9jYWwudXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBTZXNzaW9uLmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLmp3dC5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwS2V5cy5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgdXNlcnNDYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICAgIGxvZ291dDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlc3Npb25JZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWU8VCBleHRlbmRzIFdpdGhQdWJsaWNLZXkgPSBXaXRoUHVibGljS2V5PihcbiAgICBwYXJhbXM/OiBUXG4gICk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyKHBhcmFtcyB8fCAoeyB3aXRoUHVibGljS2V5OiB0cnVlIH0gYXMgVCkpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVzZXI8VCBleHRlbmRzIFN0YXRpY0dldFVzZXJQYXJhbXM+KFxuICAgIHBhcmFtczogVCxcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuX2dldEJhc2VDbGllbnQocGFyYW1zLmVudiwgc2Vzc2lvbklkKSxcbiAgICAgIHVzZXJJZDogcGFyYW1zLnVzZXJJZCxcbiAgICAgIHdpdGhQdWJsaWNLZXk6IHBhcmFtcy53aXRoUHVibGljS2V5XG4gICAgfSk7XG5cbiAgICBpZiAodXNlcikge1xuICAgICAgdXNlcnNDYWNoZS5zZXQodXNlci5pZCwgdXNlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBhc3luYyB1c2VyPFQgZXh0ZW5kcyBDbGFzc0dldFVzZXJQYXJhbXM+KHBhcmFtczogVCk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVByb2ZpbGUoe1xuICAgIGZpcnN0bmFtZSxcbiAgICBsYXN0bmFtZSxcbiAgICBsYW5nXG4gIH06IHtcbiAgICBmaXJzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFuZzogTGFuZyB8IG51bGw7XG4gIH0pOiBQcm9taXNlPFVzZXI+IHtcbiAgICBjb25zdCB7IHVwZGF0ZVByb2ZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgIHBob25lOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGxhc3RMb2dpbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGVQcm9maWxlLFxuICAgICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUodXBkYXRlUHJvZmlsZS5kZWxldGVkQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxQbGFuW10+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIHBsYW5zOiB7XG4gICAgICAgIGtpbmQ6IHRydWUsXG4gICAgICAgIGNvZGVzOiB0cnVlLFxuICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICBkb3dubG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICBkb3dubG9hZENvdW50OiB0cnVlLFxuICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgIHVwbG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICB1cGxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICByZWNlaXZlZE1haWxzOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgaGFyZENvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZW50TWFpbHM6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBoYXJkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwbGFucztcbiAgfVxuXG4gIGFzeW5jIHBheShcbiAgICBwbGFuQ29kZTogU2VjcmVjeVBsYW5zQ29kZXMsXG4gICAgaW5wdXQ6IFBheUlucHV0LFxuICAgIGF1dG9SZW5ldz86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgcGF5IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIHBheTogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgcGxhbkNvZGUsXG4gICAgICAgICAgYXV0b1JlbmV3XG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXkgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjYW5jZWxQYXltZW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgY2FuY2VsUGF5bWVudCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBjYW5jZWxQYXltZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FuY2VsUGF5bWVudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFBheW1lbnRJbmZvcyB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheW1lbnRJbmZvcyB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBwYXltZW50SW5mb3M6IHtcbiAgICAgICAgaG9zdGVkVXJsOiB0cnVlLFxuICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXV0b3JlbmV3OiB0cnVlLFxuICAgICAgICAgIGFjdGl2YXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHRydWUsXG4gICAgICAgICAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxlZEF0OiB0cnVlLFxuICAgICAgICAgIGNyZWF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBleHBpcmVzQXQ6IHRydWUsXG4gICAgICAgICAgcGF1c2VkQXQ6IHRydWUsXG4gICAgICAgICAgdHJpYWxFbmRzQXQ6IHRydWUsXG4gICAgICAgICAgdHJpYWxTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgdXBkYXRlZEF0OiB0cnVlLFxuICAgICAgICAgIHN0YXRlOiB0cnVlLFxuICAgICAgICAgIGNvbGxlY3Rpb25NZXRob2Q6IHRydWUsXG4gICAgICAgICAgcGxhbjogdHJ1ZSxcbiAgICAgICAgICBwbGFuQ29kZTogdHJ1ZSxcblxuICAgICAgICAgIHRvdGFsOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGludm9pY2VzOiB7XG4gICAgICAgICAgcGRmOiB0cnVlLFxuICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgZHVlOiB0cnVlLFxuICAgICAgICAgIHN0YXR1czogdHJ1ZSxcbiAgICAgICAgICB0b3RhbDogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICAgIGN1cnJlbmN5OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghcGF5bWVudEluZm9zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW50ZXJuYWxUb1BheW1lbnRJbmZvcyhwYXltZW50SW5mb3MpO1xuICB9XG5cbiAgYXN5bmMgbGltaXRzKCk6IFByb21pc2U8UXVlcnlMaW1pdHMgfCBudWxsPiB7XG4gICAgY29uc3QgeyBsaW1pdHMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgbGltaXRzOiB7XG4gICAgICAgIGNsb3VkOiB7XG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBtYXhTaXplOiB0cnVlLFxuICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgIG1heENvdW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1haWw6IHtcbiAgICAgICAgICByZWNlaXZlZDoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWxpbWl0cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgeyBjbG91ZCwgbWFpbCB9ID0gbGltaXRzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsb3VkOiB7XG4gICAgICAgIGNvdW50OiBCaWdJbnQoY2xvdWQuY291bnQpLFxuICAgICAgICBzaXplOiBCaWdJbnQoY2xvdWQuc2l6ZSksXG4gICAgICAgIG1heENvdW50OiBjbG91ZC5tYXhDb3VudCA/IEJpZ0ludChjbG91ZC5tYXhDb3VudCkgOiBudWxsLFxuICAgICAgICBtYXhTaXplOiBjbG91ZC5tYXhTaXplID8gQmlnSW50KGNsb3VkLm1heFNpemUpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIG1haWw6IHtcbiAgICAgICAgcmVjZWl2ZWQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuY291bnQpLFxuICAgICAgICAgIG1heENvdW50OiBtYWlsLnJlY2VpdmVkLm1heENvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heENvdW50KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwucmVjZWl2ZWQubWF4RmlsZUNvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmaWxlU2l6ZTogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplXG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwuc2VudC5jb3VudCksXG4gICAgICAgICAgbWF4Q291bnQ6IG1haWwuc2VudC5tYXhDb3VudCA/IEJpZ0ludChtYWlsLnNlbnQubWF4Q291bnQpIDogbnVsbCxcbiAgICAgICAgICBmaWxlQ291bnQ6IEJpZ0ludChtYWlsLnNlbnQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwuc2VudC5tYXhGaWxlQ291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlQ291bnQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmlsZVNpemU6IEJpZ0ludChtYWlsLnNlbnQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnNlbnQubWF4RmlsZVNpemVcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlU2l6ZSlcbiAgICAgICAgICAgIDogbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdvZEZhdGhlckFuZENoaWxkcmVuKCk6IFByb21pc2U8R29kRmF0aGVyQW5kQ2hpbGRyZW4gfCBudWxsPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdvZEZhdGhlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnVzZXIsXG4gICAgICBnb2RGYXRoZXI6IHVzZXIuZ29kRmF0aGVyID8/IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVwZGF0ZUFwcERCQ29uZmlnKHtcbiAgICBhcHBDb2RlLFxuICAgIGNvbmZpZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBhcHBDb2RlOiBzdHJpbmc7XG4gICAgY29uZmlnOiBBcHBEQkNvbmZpZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlLFxuICAgICAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29uZmlnKVxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGJDb25maWc7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QXBwREJDb25maWcoXG4gICAgYXBwQ29kZTogc3RyaW5nLFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcInF1ZXJ5XCIpKHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRGQVEoe1xuICAgIGxhbmcsXG4gICAgZW52LFxuICAgIHNlc3Npb25JZFxuICB9OiB7XG4gICAgbGFuZz86IExhbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEZhcUl0ZW1bXT4ge1xuICAgIGNvbnN0IHsgZmFxIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIGZhcTogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYW5zd2VyOiB0cnVlLFxuICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgIHF1ZXN0aW9uOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYXE7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEJsb2dJdGVtW10+IHtcbiAgICBjb25zdCB7IGJsb2cgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpKFwicXVlcnlcIikoe1xuICAgICAgYmxvZzogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgYmxvZ0lkOiB0cnVlLFxuICAgICAgICAgIGF1dGhvcjogdHJ1ZSxcbiAgICAgICAgICBib2R5OiB0cnVlLFxuICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICAgICAgaW1hZ2VBbHQ6IHRydWUsXG4gICAgICAgICAgc3VtbWFyeTogdHJ1ZSxcbiAgICAgICAgICB0aXRsZTogdHJ1ZSxcbiAgICAgICAgICBvcmRlcjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmxvZy5tYXAoYiA9PiAoeyAuLi5iLCBkYXRlOiBuZXcgRGF0ZShiLmRhdGUpIH0pKTtcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydFVzZXIoXG4gICAgcmVwb3J0ZWRVc2VySWQ6IHN0cmluZyxcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8U2VuZFJlcG9ydCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgc2VuZFJlcG9ydCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBzZW5kUmVwb3J0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZXBvcnRlZFVzZXJJZCxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlOiB0cnVlLFxuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZW5kUmVwb3J0O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVVc2VyIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZVVzZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlVXNlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRiR2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VT4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZGJHZXQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGJHZXQucmVzO1xuICB9XG5cbiAgYXN5bmMgZGJTZXQ8VCBleHRlbmRzIFVzZXJEYXRhLCBVIGV4dGVuZHMgRG9jdW1lbnQ+KHtcbiAgICB2YWx1ZSxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIHZhbHVlOiBVO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgYW4gb2JqZWN0IGluY2x1ZGluZyBmaWVsZHMgeW91IHdhbnQgdG8gdXBkYXRlLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYlNldCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYlNldC5yZXM7XG4gIH1cblxuICBhc3luYyBkYlNlYXJjaDxUPih7XG4gICAgc2VhcmNoLFxuICAgIGZpZWxkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHNlYXJjaDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGRiU2VhcmNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2VhcmNoO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkZWxldGVGb2xkZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWxldGVGb2xkZXIgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRm9sZGVycyh7XG4gICAgZm9sZGVyc0lkLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBmb2xkZXJzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZvbGRlcnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgbW92ZUZvbGRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcnNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZvbGRlcnMgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRmlsZXMoe1xuICAgIGZpbGVzSWQsXG4gICAgcGFyZW50Rm9sZGVySWRcbiAgfToge1xuICAgIGZpbGVzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZpbGVzID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyU2l6ZSh7XG4gICAgZm9sZGVySWRcbiAgfToge1xuICAgIGZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Rm9sZGVyU2l6ZSB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZvbGRlclNpemUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZm9sZGVyU2l6ZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgc2l6ZUJlZm9yZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWZvbGRlclNpemUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaXplOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplKSxcbiAgICAgIHNpemVCZWZvcmU6IEJpZ0ludChmb2xkZXJTaXplLnNpemVCZWZvcmUpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldFNwb25zb3JzaGlwTGluayh7XG4gICAgYmFja1VybFxuICB9OiB7XG4gICAgYmFja1VybDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgbWUgPSBhd2FpdCB0aGlzLm1lKHsgd2l0aFB1YmxpY0tleTogZmFsc2UgfSk7XG5cbiAgICBpZiAoIW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0TGluayh7XG4gICAgICBhcHA6IFwiYXV0aFwiLFxuICAgICAgcGF0aDogYC9zaWduLXVwP2dmPSR7YnRvYShtZS5lbWFpbCl9JmF1PSR7YnRvYShiYWNrVXJsKX1gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
2228
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9yIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInVzZXIiLCJfX3R5cGVuYW1lIiwibWVzc2FnZSIsImZpZWxkIiwiaWQiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImxhbmciLCJwdWJsaWNLZXkiLCJ1bmRlZmluZWQiLCJlbWFpbCIsInBob25lIiwicm9sZSIsImRlbGV0ZWRBdCIsImxhc3RMb2dpbiIsImdldFVzZXIiLCJwYXJhbXMiLCJzZWxlY3RvciIsImNsaWVudCIsInVzZXJSZXNwb25zZSIsImRhdGEiLCJCYXNlQ2xpZW50Iiwic2Vzc2lvbiIsImVudiIsInNlc3Npb25JZCIsIl9nZXRCYXNlQ2xpZW50Iiwic2Vzc2lvbnMiLCJsYXN0QWN0aXZpdHkiLCJ1c2VyQWdlbnQiLCJpcCIsImNpdHkiLCJjb3VudHJ5IiwiYXBwU2Vzc2lvbnMiLCJ1c2VyQXBwIiwiYXBwIiwibmFtZSIsInMiLCJhIiwibG9nb3V0IiwibG9jYWwiLCJqd3QiLCJjbGVhciIsInVzZXJBcHBLZXlzIiwidXNlckFwcFNlc3Npb24iLCJtZSIsInNldCIsInVwZGF0ZVByb2ZpbGUiLCJwbGFucyIsInBsYW4iLCJraW5kIiwiY29kZXMiLCJsaW1pdHMiLCJkb3dubG9hZEJhbmR3aWR0aCIsImRvd25sb2FkQ291bnQiLCJoYXJkRmlsZUNvdW50IiwiaGFyZEZpbGVTaXplIiwicGVyRmlsZVNpemUiLCJ1cGxvYWRCYW5kd2lkdGgiLCJ1cGxvYWRDb3VudCIsInJlY2VpdmVkTWFpbHMiLCJjb3VudCIsImZpbGVDb3VudCIsImZpbGVTaXplIiwiaGFyZENvdW50Iiwic2VudE1haWxzIiwicGF5IiwiaW5wdXQiLCJhdXRvUmVuZXciLCJjYW5jZWxQYXltZW50IiwicGF5bWVudEluZm9zIiwiaG9zdGVkVXJsIiwiYXV0b3JlbmV3IiwidG90YWwiLCJwZGYiLCJjdXJyZW5jeSIsInJlc3VsdCIsImNsb3VkIiwic2l6ZSIsIm1heFNpemUiLCJtYXhDb3VudCIsIm1haWwiLCJyZWNlaXZlZCIsIm1heEZpbGVDb3VudCIsIm1heEZpbGVTaXplIiwic2VudCIsIkJpZ0ludCIsImdvZEZhdGhlckFuZENoaWxkcmVuIiwiZ29kQ2hpbGRyZW4iLCJnb2RGYXRoZXIiLCJ1cGRhdGVBcHBEQkNvbmZpZyIsImFwcENvZGUiLCJjb25maWciLCJkYkNvbmZpZ011dGF0aW9uIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFwcERCQ29uZmlnIiwiZGJDb25maWciLCJqc29uIiwiZ2V0RkFRIiwiZmFxIiwiYW5zd2VyIiwib3JkZXIiLCJxdWVzdGlvbiIsImdldEJsb2ciLCJibG9nIiwiYmxvZ0l0ZW1zIiwiYmxvZ0lkIiwiYXV0aG9yIiwiYm9keSIsImltYWdlIiwiaW1hZ2VBbHQiLCJzdW1tYXJ5IiwidGl0bGUiLCJiIiwicmVwb3J0VXNlciIsInJlcG9ydGVkVXNlcklkIiwiY3VzdG9tTWVzc2FnZSIsInNlbmRSZXBvcnQiLCJyZXBvcnRlZFVzZXIiLCJkZWxldGVVc2VyIiwiZGJHZXQiLCJkYlNldCIsInZhbHVlIiwiRXJyb3IiLCJ0b1N0cmluZyIsInJlcyIsImRiU2VhcmNoIiwic2VhcmNoIiwiZGVsZXRlRm9sZGVyIiwibW92ZUZvbGRlcnMiLCJmb2xkZXJzSWQiLCJwYXJlbnRGb2xkZXJJZCIsIm1vdmVGaWxlcyIsImZpbGVzSWQiLCJmb2xkZXJTaXplIiwiZm9sZGVySWQiLCJzaXplQmVmb3JlIiwiZ2V0U3BvbnNvcnNoaXBMaW5rIiwiYmFja1VybCIsInBhdGgiLCJidG9hIiwiZ2V0QmFzZVVybCIsImdyYXBoY2RuIiwicHJvY2VzcyIsIk5PREVfRU5WIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBR0EsU0FBU0EsU0FBVCxRQUEwQixNQUExQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0Isb0JBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixZQUEzQjtBQUdBLFNBQVNDLFVBQVQsUUFBMkIscUJBQTNCO0FBUUEsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxTQUFTQyxhQUFULFFBQThCLGtCQUE5Qjs7QUFzTEEsU0FBU0Msc0JBQVQsQ0FBZ0NDLENBQWhDLEVBQXVFO0FBQ3JFLHlDQUNLQSxDQURMO0FBRUVDLElBQUFBLG1CQUFtQixrQ0FDZEQsQ0FBQyxDQUFDQyxtQkFEWTtBQUVqQkMsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNDLG1CQUFGLENBQXNCQyxLQUZaO0FBR2pCQyxNQUFBQSxnQkFBZ0IsRUFBRUgsQ0FBQyxDQUFDQyxtQkFBRixDQUNmRSxnQkFKYztBQUtqQkMsTUFBQUEsV0FBVyxFQUFFSixDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUF0QixHQUNULElBQUlDLElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkcsV0FBL0IsQ0FEUyxHQUVULElBUGE7QUFRakJFLE1BQUFBLFNBQVMsRUFBRU4sQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBdEIsR0FDUCxJQUFJRCxJQUFKLENBQVNMLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JLLFNBQS9CLENBRE8sR0FF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SSxjLEdBQWlCLFVBQ3ZDRixHQUR1QyxFQUV2Q0QsT0FGdUM7QUFBQSxTQUl2Q3BELGFBQWEsQ0FBQ21ELFVBQVUsQ0FBQ3dILFVBQVgsQ0FBc0J0SCxHQUF0QixDQUFELEVBQTZCRCxPQUE3QixDQUowQjtBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmltcG9ydCB0eXBlIHsgRG93bmxvYWRQcm9ncmVzcyBhcyBETFByb2dyZXNzIH0gZnJvbSBcImt5XCI7XG5pbXBvcnQgdHlwZSB7IERvY3VtZW50IH0gZnJvbSBcImJzb25cIjtcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBnZXRMaW5rIH0gZnJvbSBcIkBzZWNyZWN5L2xpYi11dGlsc1wiO1xuaW1wb3J0IHsgdXNlcnNDYWNoZSB9IGZyb20gXCIuL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJTZXNzaW9uIH0gZnJvbSBcIi4vY2xpZW50L3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lFbnYgfSBmcm9tIFwiLi9jbGllbnQvaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCIuL2NsaWVudC9zdG9yYWdlLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExhbmcsXG4gIFBheUlucHV0VHlwZSxcbiAgUGxhbktpbmQsXG4gIFRodW5kZXIsXG4gIFVzZXJSb2xlXG59IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IFNlbGVjdG9yIH0gZnJvbSBcIi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlVGh1bmRlciB9IGZyb20gXCIuL1pldXNUaHVuZGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEVycm9yQWNjZXNzRGVuaWVkLFxuICBFcnJvckxpbWl0LFxuICBFcnJvck5vdEZvdW5kLFxuICBFcnJvck5vdEV4aXN0LFxuICBFcnJvckxhbmdOb3RFeGlzdCxcbiAgRXJyb3JCYXNpY1xufSBmcm9tIFwiLi9lcnJvci5qc1wiO1xuXG5leHBvcnQgdHlwZSBTdWNjZXNzUmVzcG9uc2U8VD4gPSB7XG4gIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCI7XG4gIGRhdGE6IFQ7XG59O1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9yKFwiUXVlcnlcIikoe1xuICAgIHVzZXI6IFtcbiAgICAgIHsgdXNlcklkIH0sXG4gICAgICB7XG4gICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlLFxuICAgICAgICAgIGZpZWxkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgICAgcHVibGljS2V5OiB3aXRoUHVibGljS2V5ID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWUsXG4gICAgICAgICAgICByb2xlOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgICAgbGFzdExvZ2luOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHVzZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZ0ZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcIm9iamVjdFwiO1xuICBpc0FycmF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNOdWxsYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRWRpdGFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc0tleT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwREJDb25maWcgPSB7XG4gIGZpZWxkczogQXBwREJDb25maWdGaWVsZFtdO1xufTtcblxuZXhwb3J0IHR5cGUgRmFxSXRlbSA9IHtcbiAgb3JkZXI6IG51bWJlcjtcbiAgcXVlc3Rpb246IHN0cmluZztcbiAgYW5zd2VyOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBCbG9nSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgYmxvZ0lkOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGF1dGhvcjogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGRhdGU6IERhdGU7XG4gIGltYWdlOiBzdHJpbmc7XG4gIGltYWdlQWx0OiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFVzZXJCYXNlID0ge1xuICBlbWFpbDogc3RyaW5nO1xuICBwaG9uZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICByb2xlOiBVc2VyUm9sZTtcbiAgZmlyc3RuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGRlbGV0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGxhc3RMb2dpbjogRGF0ZTtcbiAgbGFuZzogTGFuZztcbn07XG5cbnR5cGUgV2l0aFB1YmxpY0tleSA9IHsgd2l0aFB1YmxpY0tleT86IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgVXNlcjxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+ID0gVCBleHRlbmRzIHtcbiAgd2l0aFB1YmxpY0tleTogdHJ1ZTtcbn1cbiAgPyBVc2VyQmFzZSAmIHsgcHVibGljS2V5OiBzdHJpbmcgfVxuICA6IFVzZXJCYXNlO1xuXG50eXBlIENsYXNzR2V0VXNlclBhcmFtcyA9IFdpdGhQdWJsaWNLZXkgJiB7XG4gIHVzZXJJZD86IHN0cmluZztcbn07XG50eXBlIEdldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj47XG59O1xuXG50eXBlIFN0YXRpY0dldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGVudjogU2VjcmVjeUVudjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFVzZXI8VSBleHRlbmRzIFdpdGhQdWJsaWNLZXk+KFxuICBwYXJhbXM6IEdldFVzZXJQYXJhbXNcbik6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFVzZXI8VT4+IHwgRXJyb3JOb3RGb3VuZCB8IG51bGw+IHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBnZXRVc2VyU2VsZWN0b3IocGFyYW1zLnVzZXJJZCwgcGFyYW1zLndpdGhQdWJsaWNLZXkpO1xuICBjb25zdCB7IHVzZXI6IHVzZXJSZXNwb25zZSB9ID0gYXdhaXQgcGFyYW1zLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICB1c2VyOiBzZWxlY3RvclxuICB9KTtcblxuICBpZiAoIXVzZXJSZXNwb25zZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHVzZXJSZXNwb25zZS5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgIHJldHVybiB1c2VyUmVzcG9uc2U7XG4gIH1cblxuICBpZiAoIXVzZXJSZXNwb25zZS51c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgZGF0YToge1xuICAgICAgLi4udXNlclJlc3BvbnNlLnVzZXIsXG4gICAgICBsYXN0TG9naW46IG5ldyBEYXRlKHVzZXJSZXNwb25zZS51c2VyLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVzZXJSZXNwb25zZS51c2VyLmRlbGV0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHVzZXJSZXNwb25zZS51c2VyLmRlbGV0ZWRBdClcbiAgICAgICAgOiBudWxsXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDbG91ZExpbWl0cyA9IHtcbiAgY291bnQ6IGJpZ2ludDtcbiAgbWF4Q291bnQ6IGJpZ2ludCB8IG51bGw7XG4gIHNpemU6IGJpZ2ludDtcbiAgbWF4U2l6ZTogYmlnaW50IHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHNWYWx1ZXMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBmaWxlU2l6ZTogYmlnaW50O1xuICBtYXhGaWxlU2l6ZTogYmlnaW50IHwgbnVsbDtcbiAgZmlsZUNvdW50OiBiaWdpbnQ7XG4gIG1heEZpbGVDb3VudDogYmlnaW50IHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5TGltaXRzID0ge1xuICBjbG91ZDogQ2xvdWRMaW1pdHM7XG4gIG1haWw6IHtcbiAgICBzZW50OiBNYWlsTGltaXRzVmFsdWVzO1xuICAgIHJlY2VpdmVkOiBNYWlsTGltaXRzVmFsdWVzO1xuICB9O1xufTtcblxuZXhwb3J0IGNsYXNzIEJhc2VDbGllbnQge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGdldEJhc2VVcmwgPSAoXG4gICAgZW52OiBTZWNyZWN5RW52ID0gXCJwcm9kXCIsXG4gICAgZ3JhcGhjZG4gPSB0cnVlXG4gICk6IHN0cmluZyA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInRlc3RcIikge1xuICAgICAgcmV0dXJuIFwiaHR0cDovL2xvY2FsaG9zdDo0MDAwL2dyYXBocWxcIjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGVudikge1xuICAgICAgY2FzZSBcInByb2RcIjpcbiAgICAgICAgcmV0dXJuIGdyYXBoY2RuXG4gICAgICAgICAgPyBcImh0dHBzOi8vc2VjcmVjeS5ncmFwaGNkbi5hcHBcIlxuICAgICAgICAgIDogXCJodHRwczovL2FwaS5zZWNyZWN5Lm1lL2dyYXBocWxcIjtcbiAgICAgIGNhc2UgXCJzdGFnaW5nXCI6XG4gICAgICAgIHJldHVybiBcImh0dHBzOi8vYXBpLnN0YWdpbmcuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwiZGV2XCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaS5kZXYuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9nZXRCYXNlQ2xpZW50ID0gKFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPiA9PlxuICAgIGNyZWF0ZVRodW5kZXIoQmFzZUNsaWVudC5nZXRCYXNlVXJsKGVudiksIHNlc3Npb24pO1xuXG4gIHByb3RlY3RlZCBjbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIFRodW5kZXI+O1xuXG4gIHB1YmxpYyBzZXNzaW9uSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzZXNzaW9uOiBzdHJpbmcsIGVudjogU2VjcmVjeUVudikge1xuICAgIHRoaXMuc2Vzc2lvbklkID0gc2Vzc2lvbjtcbiAgICB0aGlzLmNsaWVudCA9IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNlc3Npb25zKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFVzZXJTZXNzaW9uW10+IHwgRXJyb3JOb3RGb3VuZCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZmllbGQ6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFVzZXJSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICBzZXNzaW9uczoge1xuICAgICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGxhc3RBY3Rpdml0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1c2VyQWdlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgICAgY2l0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGFwcFNlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGxhc3RBY3Rpdml0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGlwOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY2l0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgICAgICB1c2VyQXBwOiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcDoge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYXRhLnVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB1c2VyUmVzcG9uc2UgPSBkYXRhLnVzZXI7XG4gICAgaWYgKHVzZXJSZXNwb25zZS5fX3R5cGVuYW1lID09PSBcIlVzZXJSZXNwb25zZVwiKSB7XG4gICAgICBpZiAoIXVzZXJSZXNwb25zZS51c2VyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2Vzc2lvbnM6IFVzZXJTZXNzaW9uW10gPVxuICAgICAgICB1c2VyUmVzcG9uc2UudXNlci5zZXNzaW9ucy5tYXAocyA9PiAoe1xuICAgICAgICAgIGlkOiBzLmlkLFxuICAgICAgICAgIGlwOiBzLmlwLFxuICAgICAgICAgIGNpdHk6IHMuY2l0eSxcbiAgICAgICAgICBjb3VudHJ5OiBzLmNvdW50cnksXG4gICAgICAgICAgbGFzdEFjdGl2aXR5OiBzLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKHMubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB1c2VyQWdlbnQ6IHMudXNlckFnZW50LFxuICAgICAgICAgIGFwcFNlc3Npb25zOiBzLmFwcFNlc3Npb25zLm1hcChhID0+ICh7XG4gICAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICAgIGlwOiBhLmlwLFxuICAgICAgICAgICAgY2l0eTogYS5jaXR5LFxuICAgICAgICAgICAgY291bnRyeTogYS5jb3VudHJ5LFxuICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiBhLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKGEubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVzZXJBZ2VudDogYS51c2VyQWdlbnQsXG4gICAgICAgICAgICBhcHA6IGEudXNlckFwcD8uYXBwLm5hbWUgPz8gXCJcIlxuICAgICAgICAgIH0pKVxuICAgICAgICB9KSkgPz8gW107XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgICBkYXRhOiBzZXNzaW9uc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlclJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgbG9nb3V0KHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgY29uc3QgbG9jYWwgPSBnZXRTdG9yYWdlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBnZXRTdG9yYWdlKHRydWUpO1xuICAgICAgbG9jYWwuand0LmNsZWFyKCk7XG4gICAgICBsb2NhbC51c2VyQXBwS2V5cy5jbGVhcigpO1xuICAgICAgbG9jYWwudXNlckFwcFNlc3Npb24uY2xlYXIoKTtcbiAgICAgIHNlc3Npb24uand0LmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLnVzZXJBcHBLZXlzLmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLnVzZXJBcHBTZXNzaW9uLmNsZWFyKCk7XG4gICAgICB1c2Vyc0NhY2hlLmNsZWFyKCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgICAgbG9nb3V0OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvbklkOiBzZXNzaW9uSWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiLi4ub24gTG9nb3V0UmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBsb2dvdXQ6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy9cbiAgICB9XG4gIH1cblxuICBhc3luYyBtZTxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+KFxuICAgIHBhcmFtcz86IFRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VXNlcjxUPj4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnVzZXIocGFyYW1zIHx8ICh7IHdpdGhQdWJsaWNLZXk6IHRydWUgfSBhcyBUKSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdXNlcjxUIGV4dGVuZHMgU3RhdGljR2V0VXNlclBhcmFtcz4oXG4gICAgcGFyYW1zOiBULFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VXNlcjxUPj4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbD4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyPFQ+KHtcbiAgICAgIGNsaWVudDogdGhpcy5fZ2V0QmFzZUNsaWVudChwYXJhbXMuZW52LCBzZXNzaW9uSWQpLFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVzZXIuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH1cblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmRhdGEuaWQsIHVzZXIuZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBhc3luYyB1c2VyPFQgZXh0ZW5kcyBDbGFzc0dldFVzZXJQYXJhbXM+KFxuICAgIHBhcmFtczogVFxuICApOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxVc2VyPFQ+PiB8IEVycm9yTm90Rm91bmQgfCBudWxsPiB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IGdldFVzZXI8VD4oe1xuICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgIHVzZXJJZDogcGFyYW1zLnVzZXJJZCxcbiAgICAgIHdpdGhQdWJsaWNLZXk6IHBhcmFtcy53aXRoUHVibGljS2V5XG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAodXNlcikge1xuICAgICAgdXNlcnNDYWNoZS5zZXQodXNlci5kYXRhLmlkLCB1c2VyLmRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUHJvZmlsZSh7XG4gICAgZmlyc3RuYW1lLFxuICAgIGxhc3RuYW1lLFxuICAgIGxhbmdcbiAgfToge1xuICAgIGZpcnN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYXN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYW5nOiBMYW5nIHwgbnVsbDtcbiAgfSk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFVzZXI+IHwgRXJyb3JOb3RGb3VuZCB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVwZGF0ZVByb2ZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVcGRhdGVQcm9maWxlUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGU6IHtcbiAgICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgIGxhbmc6IHRydWUsXG4gICAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgICAgICAgcm9sZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXBkYXRlUHJvZmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVByb2ZpbGUuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gdXBkYXRlUHJvZmlsZTtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlUHJvZmlsZS5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIHVwZGF0ZVByb2ZpbGU7XG4gICAgfVxuXG4gICAgaWYgKCF1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBlbWFpbDogdXBkYXRlUHJvZmlsZS51cGRhdGVQcm9maWxlLmVtYWlsLFxuICAgICAgICBmaXJzdG5hbWU6IHVwZGF0ZVByb2ZpbGUudXBkYXRlUHJvZmlsZS5maXJzdG5hbWUsXG4gICAgICAgIGlkOiB1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUuaWQsXG4gICAgICAgIGxhbmc6IHVwZGF0ZVByb2ZpbGUudXBkYXRlUHJvZmlsZS5sYW5nLFxuICAgICAgICBsYXN0TG9naW46IG5ldyBEYXRlKHVwZGF0ZVByb2ZpbGUudXBkYXRlUHJvZmlsZS5sYXN0TG9naW4pLFxuICAgICAgICBsYXN0bmFtZTogdXBkYXRlUHJvZmlsZS51cGRhdGVQcm9maWxlLmxhc3RuYW1lLFxuICAgICAgICBwaG9uZTogdXBkYXRlUHJvZmlsZS51cGRhdGVQcm9maWxlLnBob25lLFxuICAgICAgICByb2xlOiB1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUucm9sZSxcbiAgICAgICAgZGVsZXRlZEF0OiB1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgICAgPyBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLnVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0KVxuICAgICAgICAgIDogbnVsbFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8UGxhbltdPiB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIHBsYW5zOiB7XG4gICAgICAgIFwiLi4ub24gUGxhblJlc3BvbnNlXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIHBsYW46IHtcbiAgICAgICAgICAgIGtpbmQ6IHRydWUsXG4gICAgICAgICAgICBjb2RlczogdHJ1ZSxcbiAgICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgICBkb3dubG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgZG93bmxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgdXBsb2FkQmFuZHdpZHRoOiB0cnVlLFxuICAgICAgICAgICAgICB1cGxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVjZWl2ZWRNYWlsczoge1xuICAgICAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoYXJkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoYXJkRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2VudE1haWxzOiB7XG4gICAgICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgICAgIGhhcmRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXBsYW5zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHBsYW5zLnBsYW5cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgcGF5KFxuICAgIHBsYW5Db2RlOiBTZWNyZWN5UGxhbnNDb2RlcyxcbiAgICBpbnB1dDogUGF5SW5wdXQsXG4gICAgYXV0b1JlbmV3PzogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheSB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBwYXk6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0LFxuICAgICAgICAgIHBsYW5Db2RlLFxuICAgICAgICAgIGF1dG9SZW5ld1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBQYXlSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgcGF5OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXBheSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHBheS5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBwYXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBwYXkucGF5ID8/IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbFBheW1lbnQoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyBjYW5jZWxQYXltZW50IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIGNhbmNlbFBheW1lbnQ6IHtcbiAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gQ2FuY2VsUGF5bWVudFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbFBheW1lbnQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFjYW5jZWxQYXltZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY2FuY2VsUGF5bWVudC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBjYW5jZWxQYXltZW50O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogY2FuY2VsUGF5bWVudC5jYW5jZWxQYXltZW50ID8/IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFxuICAgIFN1Y2Nlc3NSZXNwb25zZTxQYXltZW50SW5mb3M+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgcGF5bWVudEluZm9zIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHBheW1lbnRJbmZvczoge1xuICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBQYXltZW50SW5mb3NSZXNwb25zZVwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBwYXltZW50SW5mb3M6IHtcbiAgICAgICAgICAgIGhvc3RlZFVybDogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgYXV0b3JlbmV3OiB0cnVlLFxuICAgICAgICAgICAgICBhY3RpdmF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3VycmVudFBlcmlvZEVuZHNBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY2FuY2VsZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3JlYXRlZEF0OiB0cnVlLFxuICAgICAgICAgICAgICBleHBpcmVzQXQ6IHRydWUsXG4gICAgICAgICAgICAgIHBhdXNlZEF0OiB0cnVlLFxuICAgICAgICAgICAgICB0cmlhbEVuZHNBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgdHJpYWxTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgICAgIHVwZGF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgc3RhdGU6IHRydWUsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25NZXRob2Q6IHRydWUsXG4gICAgICAgICAgICAgIHBsYW46IHRydWUsXG4gICAgICAgICAgICAgIHBsYW5Db2RlOiB0cnVlLFxuICAgICAgICAgICAgICB0b3RhbDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGludm9pY2VzOiB7XG4gICAgICAgICAgICAgIHBkZjogdHJ1ZSxcbiAgICAgICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZHVlOiB0cnVlLFxuICAgICAgICAgICAgICBzdGF0dXM6IHRydWUsXG4gICAgICAgICAgICAgIHRvdGFsOiB0cnVlLFxuICAgICAgICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBjdXJyZW5jeTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFwYXltZW50SW5mb3MpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChwYXltZW50SW5mb3MuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gcGF5bWVudEluZm9zO1xuICAgIH1cblxuICAgIGlmICghcGF5bWVudEluZm9zLnBheW1lbnRJbmZvcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGludGVybmFsVG9QYXltZW50SW5mb3MocGF5bWVudEluZm9zLnBheW1lbnRJbmZvcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbGltaXRzKCk6IFByb21pc2U8XG4gICAgfCBTdWNjZXNzUmVzcG9uc2U8UXVlcnlMaW1pdHM+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JOb3RFeGlzdFxuICAgIHwgRXJyb3JMaW1pdFxuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IGxpbWl0cyB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBsaW1pdHM6IHtcbiAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JMaW1pdFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gUXVlcnlMaW1pdHNcIjoge1xuICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgICBtYXhTaXplOiB0cnVlLFxuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWFpbDoge1xuICAgICAgICAgICAgcmVjZWl2ZWQ6IHtcbiAgICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIG1heENvdW50OiB0cnVlLFxuICAgICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICAgIG1heEZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4Q291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4RmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghbGltaXRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobGltaXRzLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTGltaXRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG5cbiAgICBjb25zdCB7IGNsb3VkLCBtYWlsIH0gPSBsaW1pdHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KGNsb3VkLmNvdW50KSxcbiAgICAgICAgICBzaXplOiBCaWdJbnQoY2xvdWQuc2l6ZSksXG4gICAgICAgICAgbWF4Q291bnQ6IGNsb3VkLm1heENvdW50ID8gQmlnSW50KGNsb3VkLm1heENvdW50KSA6IG51bGwsXG4gICAgICAgICAgbWF4U2l6ZTogY2xvdWQubWF4U2l6ZSA/IEJpZ0ludChjbG91ZC5tYXhTaXplKSA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgbWFpbDoge1xuICAgICAgICAgIHJlY2VpdmVkOiB7XG4gICAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuY291bnQpLFxuICAgICAgICAgICAgbWF4Q291bnQ6IG1haWwucmVjZWl2ZWQubWF4Q291bnRcbiAgICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5yZWNlaXZlZC5tYXhDb3VudClcbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgZmlsZUNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlQ291bnQpLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiBtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudFxuICAgICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudClcbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgZmlsZVNpemU6IEJpZ0ludChtYWlsLnJlY2VpdmVkLmZpbGVTaXplKSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplXG4gICAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemUpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgY291bnQ6IEJpZ0ludChtYWlsLnNlbnQuY291bnQpLFxuICAgICAgICAgICAgbWF4Q291bnQ6IG1haWwuc2VudC5tYXhDb3VudCA/IEJpZ0ludChtYWlsLnNlbnQubWF4Q291bnQpIDogbnVsbCxcbiAgICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwuc2VudC5maWxlQ291bnQpLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiBtYWlsLnNlbnQubWF4RmlsZUNvdW50XG4gICAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlQ291bnQpXG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIGZpbGVTaXplOiBCaWdJbnQobWFpbC5zZW50LmZpbGVTaXplKSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnNlbnQubWF4RmlsZVNpemVcbiAgICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVTaXplKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ29kRmF0aGVyQW5kQ2hpbGRyZW4oKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8R29kRmF0aGVyQW5kQ2hpbGRyZW4+IHwgRXJyb3JOb3RGb3VuZCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICAgICAgICAgIHBob25lOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ29kRmF0aGVyOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVzZXIuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBnb2RDaGlsZHJlbjogdXNlci5nb2RDaGlsZHJlbixcbiAgICAgICAgZ29kRmF0aGVyOiB1c2VyLmdvZEZhdGhlclxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdXBkYXRlQXBwREJDb25maWcoe1xuICAgIGFwcENvZGUsXG4gICAgY29uZmlnLFxuICAgIGVudixcbiAgICBzZXNzaW9uSWRcbiAgfToge1xuICAgIGFwcENvZGU6IHN0cmluZztcbiAgICBjb25maWc6IEFwcERCQ29uZmlnO1xuICAgIGVudjogU2VjcmVjeUVudjtcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8QXBwREJDb25maWc+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsPiB7XG4gICAgY29uc3QgeyBkYkNvbmZpZ011dGF0aW9uIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRiQ29uZmlnTXV0YXRpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGUsXG4gICAgICAgICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeShjb25maWcpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiQ29uZmlnTXV0YXRpb25SZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGJDb25maWdNdXRhdGlvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYkNvbmZpZ011dGF0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWdNdXRhdGlvbi5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZ011dGF0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJDb25maWdNdXRhdGlvbi5kYkNvbmZpZ011dGF0aW9uXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRBcHBEQkNvbmZpZyhcbiAgICBhcHBDb2RlOiBzdHJpbmcsXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxcbiAgICB8IFN1Y2Nlc3NSZXNwb25zZTxBcHBEQkNvbmZpZz5cbiAgICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gICAgfCBFcnJvck5vdEZvdW5kXG4gICAgfCBFcnJvck5vdEV4aXN0XG4gICAgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJDb25maWcgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApKFwicXVlcnlcIikoe1xuICAgICAgZGJDb25maWc6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiQ29uZmlnUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJDb25maWcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYkNvbmZpZy5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWcuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWcuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiQ29uZmlnLmpzb25cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEZBUSh7XG4gICAgbGFuZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBsYW5nPzogTGFuZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPEZhcUl0ZW1bXT4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZhcSB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkoXCJxdWVyeVwiKSh7XG4gICAgICBmYXE6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRmFxUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGZhcToge1xuICAgICAgICAgICAgICBhbnN3ZXI6IHRydWUsXG4gICAgICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgICAgICBxdWVzdGlvbjogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFmYXEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChmYXEuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZmFxO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZmFxLmZhcVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxCbG9nSXRlbVtdPiB8IEVycm9yTGFuZ05vdEV4aXN0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgYmxvZyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkoXCJxdWVyeVwiKSh7XG4gICAgICBibG9nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYW5nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTGFuZ05vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEJsb2dSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgYmxvZ0l0ZW1zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBibG9nSWQ6IHRydWUsXG4gICAgICAgICAgICAgIGF1dGhvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgYm9keTogdHJ1ZSxcbiAgICAgICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICAgICAgICAgIGltYWdlQWx0OiB0cnVlLFxuICAgICAgICAgICAgICBzdW1tYXJ5OiB0cnVlLFxuICAgICAgICAgICAgICB0aXRsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgb3JkZXI6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghYmxvZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGJsb2cuX190eXBlbmFtZSA9PT0gXCJFcnJvckxhbmdOb3RFeGlzdFwiKSB7XG4gICAgICByZXR1cm4gYmxvZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGJsb2cuYmxvZ0l0ZW1zLm1hcChiID0+ICh7IC4uLmIsIGRhdGU6IG5ldyBEYXRlKGIuZGF0ZSkgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydFVzZXIoXG4gICAgcmVwb3J0ZWRVc2VySWQ6IHN0cmluZyxcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFNlbmRSZXBvcnQ+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvck5vdEZvdW5kIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHNlbmRSZXBvcnQgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgc2VuZFJlcG9ydDogW1xuICAgICAgICB7XG4gICAgICAgICAgcmVwb3J0ZWRVc2VySWQsXG4gICAgICAgICAgY3VzdG9tTWVzc2FnZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFNlbmRSZXBvcnRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgc2VuZFJlcG9ydDoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3VzdG9tTWVzc2FnZTogdHJ1ZSxcbiAgICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZXBvcnRlZFVzZXI6IHtcbiAgICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFzZW5kUmVwb3J0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc2VuZFJlcG9ydC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBzZW5kUmVwb3J0O1xuICAgIH1cblxuICAgIGlmIChzZW5kUmVwb3J0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gc2VuZFJlcG9ydDtcbiAgICB9XG5cbiAgICBpZiAoIXNlbmRSZXBvcnQuc2VuZFJlcG9ydCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBzZW5kUmVwb3J0LnNlbmRSZXBvcnRcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGRlbGV0ZVVzZXIgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApKFwibXV0YXRpb25cIikoe1xuICAgICAgZGVsZXRlVXNlcjogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERlbGV0ZVVzZXJSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlVXNlcjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkZWxldGVVc2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGVsZXRlVXNlci5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkZWxldGVVc2VyO1xuICAgIH1cblxuICAgIGlmICghZGVsZXRlVXNlci5kZWxldGVVc2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRlbGV0ZVVzZXIuZGVsZXRlVXNlclxuICAgIH07XG4gIH1cblxuICBhc3luYyBkYkdldDxVPih7XG4gICAgZmllbGQsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFxuICAgIHwgU3VjY2Vzc1Jlc3BvbnNlPFU+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JOb3RFeGlzdFxuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IGRiR2V0IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIGRiR2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICB1c2VySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiR2V0UmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJHZXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYkdldC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiR2V0Lmpzb25cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGJTZXQ8VCBleHRlbmRzIFVzZXJEYXRhLCBVIGV4dGVuZHMgRG9jdW1lbnQ+KHtcbiAgICB2YWx1ZSxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIHZhbHVlOiBVO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxUPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JOb3RGb3VuZCB8IG51bGw+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgYW4gb2JqZWN0IGluY2x1ZGluZyBmaWVsZHMgeW91IHdhbnQgdG8gdXBkYXRlLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYlNldCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJTZXRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGJTZXQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJTZXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYlNldC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYlNldDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYlNldDtcbiAgICB9XG5cbiAgICBpZiAoIWRiU2V0LmRiU2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiU2V0LmRiU2V0LnJlc1xuICAgIH07XG4gIH1cblxuICBhc3luYyBkYlNlYXJjaDxUPih7XG4gICAgc2VhcmNoLFxuICAgIGZpZWxkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHNlYXJjaDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8VFtdPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JCYXNpYyB8IEVycm9yTm90RXhpc3QgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJTZWFyY2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZGJTZWFyY2g6IFtcbiAgICAgICAge1xuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICBmaWVsZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90RXhpc3RcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJTZWFyY2hSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAganNvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYlNlYXJjaCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRiU2VhcmNoLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJTZWFyY2guanNvblxuICAgIH07XG4gIH1cblxuICBhc3luYyBkZWxldGVGb2xkZXIoe1xuICAgIGlkXG4gIH06IHtcbiAgICBpZDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvck5vdEV4aXN0IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGVsZXRlRm9sZGVyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZUZvbGRlcjogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBEZWxldGVGb2xkZXJSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlRm9sZGVyOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRlbGV0ZUZvbGRlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRlbGV0ZUZvbGRlci5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGRlbGV0ZUZvbGRlcjtcbiAgICB9XG5cbiAgICBpZiAoZGVsZXRlRm9sZGVyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRlbGV0ZUZvbGRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRlbGV0ZUZvbGRlci5kZWxldGVGb2xkZXIgPz8gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbW92ZUZvbGRlcnMoe1xuICAgIGZvbGRlcnNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZm9sZGVyc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxib29sZWFuPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgbW92ZUZvbGRlcnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgbW92ZUZvbGRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcnNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBNb3ZlRm9sZGVyc1Jlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtb3ZlRm9sZGVyczogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFtb3ZlRm9sZGVycykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG1vdmVGb2xkZXJzLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIG1vdmVGb2xkZXJzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogbW92ZUZvbGRlcnMubW92ZUZvbGRlcnMgPz8gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbW92ZUZpbGVzKHtcbiAgICBmaWxlc0lkLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBmaWxlc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxib29sZWFuPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgbW92ZUZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBNb3ZlRmlsZXNSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbW92ZUZpbGVzOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIW1vdmVGaWxlcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG1vdmVGaWxlcy5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBtb3ZlRmlsZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBtb3ZlRmlsZXMubW92ZUZpbGVzID8/IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZvbGRlclNpemUoe1xuICAgIGZvbGRlcklkXG4gIH06IHtcbiAgICBmb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxGb2xkZXJTaXplPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgZm9sZGVyU2l6ZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBmb2xkZXJTaXplOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBGb2xkZXJTaXplUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgICBzaXplQmVmb3JlOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWZvbGRlclNpemUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChmb2xkZXJTaXplLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGZvbGRlclNpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHNpemU6IEJpZ0ludChmb2xkZXJTaXplLnNpemUpLFxuICAgICAgICBzaXplQmVmb3JlOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplQmVmb3JlKVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXRTcG9uc29yc2hpcExpbmsoe1xuICAgIGJhY2tVcmxcbiAgfToge1xuICAgIGJhY2tVcmw6IHN0cmluZztcbiAgfSk6IFByb21pc2U8c3RyaW5nIHwgRXJyb3JOb3RGb3VuZCB8IG51bGw+IHtcbiAgICBjb25zdCBtZSA9IGF3YWl0IHRoaXMubWUoeyB3aXRoUHVibGljS2V5OiBmYWxzZSB9KTtcblxuICAgIGlmICghbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChtZS5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldExpbmsoe1xuICAgICAgYXBwOiBcImF1dGhcIixcbiAgICAgIHBhdGg6IGAvc2lnbi11cD9nZj0ke2J0b2EobWUuZGF0YS5lbWFpbCl9JmF1PSR7YnRvYShiYWNrVXJsKX1gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|