@projectcor/maia-components 2.11.20-4 → 2.11.20-5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import _typeof from "@babel/runtime/helpers/typeof";
|
|
3
2
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
4
3
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
5
4
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
|
6
6
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
7
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
8
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
@@ -39,6 +39,50 @@ var normalizeSendMessageArgs = function normalizeSendMessageArgs(attachmentsOrOp
|
|
|
39
39
|
options: options
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
|
+
|
|
43
|
+
/** task_id / task_ids en pending_actions de delete_* (la respuesta puede no incluir URLs /tasks/…/detail). */
|
|
44
|
+
function extractTaskIdsFromDeletePendingActions(pendingActions) {
|
|
45
|
+
var ids = [];
|
|
46
|
+
pendingActions.forEach(function (action) {
|
|
47
|
+
if (!action || _typeof(action) !== 'object') return;
|
|
48
|
+
var args = action.tool_args;
|
|
49
|
+
if (!(args && _typeof(args) === 'object' && !Array.isArray(args))) return;
|
|
50
|
+
var rec = args;
|
|
51
|
+
if (action.tool_name === 'delete_task') {
|
|
52
|
+
var _rec$task_id;
|
|
53
|
+
var raw = (_rec$task_id = rec.task_id) !== null && _rec$task_id !== void 0 ? _rec$task_id : rec.id;
|
|
54
|
+
if (raw != null) {
|
|
55
|
+
var n = parseInt(String(raw), 10);
|
|
56
|
+
if (!Number.isNaN(n)) ids.push(n);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (action.tool_name === 'delete_tasks_batch') {
|
|
60
|
+
var list = rec.task_ids;
|
|
61
|
+
if (Array.isArray(list)) {
|
|
62
|
+
list.forEach(function (tid) {
|
|
63
|
+
var n = parseInt(String(tid), 10);
|
|
64
|
+
if (!Number.isNaN(n)) ids.push(n);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return ids;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Último recurso si no hay links ni tool_args parseables (p. ej. "ID **7597106**"). */
|
|
73
|
+
function extractTaskIdsFromAssistantDeletionText(text) {
|
|
74
|
+
var labeled = text.match(/\bID\s*\*\*(\d+)\*\*/i);
|
|
75
|
+
if (labeled) {
|
|
76
|
+
var n = parseInt(labeled[1], 10);
|
|
77
|
+
return Number.isNaN(n) ? [] : [n];
|
|
78
|
+
}
|
|
79
|
+
var bold = text.match(/\*\*(\d{5,})\*\*/);
|
|
80
|
+
if (bold) {
|
|
81
|
+
var _n = parseInt(bold[1], 10);
|
|
82
|
+
return Number.isNaN(_n) ? [] : [_n];
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
42
86
|
var useStableCallbacks = function useStableCallbacks(authUser) {
|
|
43
87
|
var currentUser = useRef({
|
|
44
88
|
id: authUser.id.toString(),
|
|
@@ -327,7 +371,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
327
371
|
var handleStreamFinish = useCallback(/*#__PURE__*/function () {
|
|
328
372
|
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId, suggestions, completedAgentId) {
|
|
329
373
|
var _previousMessage$appr, _createAgentFollowUp;
|
|
330
|
-
var tempMessageId, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, TASK_DELETE_TOOLS, pendingActions, wasTaskCreation, wasTaskEdit, wasTaskDelete, wasCreateAgentApproved, createAgentFollowUp, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, isOnProjectRoute, dashboardMethods, _window$newProjectDas, _window$newProjectDas2, _window$newProjectDas3, _window$newProjectDas4, _window$newProjectDas5, _window$newProjectDas6, customEvent;
|
|
374
|
+
var tempMessageId, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, TASK_DELETE_TOOLS, pendingActions, wasTaskCreation, wasTaskEdit, wasTaskDelete, wasCreateAgentApproved, createAgentFollowUp, taskIdsFromUrls, taskIdsFromDeleteApproval, taskIdsFromDeletionText, taskIdsForDashboard, shouldSyncDashboard, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, isOnProjectRoute, dashboardMethods, _window$newProjectDas, _window$newProjectDas2, _window$newProjectDas3, _window$newProjectDas4, _window$newProjectDas5, _window$newProjectDas6, customEvent;
|
|
331
375
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
332
376
|
while (1) switch (_context2.prev = _context2.next) {
|
|
333
377
|
case 0:
|
|
@@ -363,13 +407,35 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
363
407
|
agentId: completedAgentId.trim()
|
|
364
408
|
};
|
|
365
409
|
}
|
|
366
|
-
|
|
410
|
+
taskIdsFromUrls = matches.map(function (match) {
|
|
411
|
+
return parseInt(match[1], 10);
|
|
412
|
+
});
|
|
413
|
+
taskIdsFromDeleteApproval = extractTaskIdsFromDeletePendingActions(pendingActions);
|
|
414
|
+
taskIdsFromDeletionText = wasTaskDelete && taskIdsFromUrls.length === 0 && taskIdsFromDeleteApproval.length === 0 ? extractTaskIdsFromAssistantDeletionText(content) : [];
|
|
415
|
+
taskIdsForDashboard = taskIdsFromUrls.length > 0 ? taskIdsFromUrls : taskIdsFromDeleteApproval.length > 0 ? taskIdsFromDeleteApproval : taskIdsFromDeletionText;
|
|
416
|
+
shouldSyncDashboard = hasApprovalInPreviousMessage && (wasTaskCreation || wasTaskEdit || wasTaskDelete) && taskIdsForDashboard.length > 0; // eslint-disable-next-line no-console -- depuración sincronización dashboard / web
|
|
417
|
+
console.log('[useChatManager] handleStreamFinish dashboard gate', {
|
|
418
|
+
urlMatchCount: matches.length,
|
|
419
|
+
taskIdsFromUrls: taskIdsFromUrls,
|
|
420
|
+
taskIdsFromDeleteApproval: taskIdsFromDeleteApproval,
|
|
421
|
+
taskIdsFromDeletionText: taskIdsFromDeletionText,
|
|
422
|
+
taskIdsForDashboard: taskIdsForDashboard,
|
|
423
|
+
hasApprovalInPreviousMessage: hasApprovalInPreviousMessage,
|
|
424
|
+
wasTaskCreation: wasTaskCreation,
|
|
425
|
+
wasTaskEdit: wasTaskEdit,
|
|
426
|
+
wasTaskDelete: wasTaskDelete,
|
|
427
|
+
shouldSyncDashboard: shouldSyncDashboard,
|
|
428
|
+
contentSnippet: content.length > 220 ? "".concat(content.slice(0, 220), "\u2026") : content
|
|
429
|
+
});
|
|
430
|
+
if (!shouldSyncDashboard) {
|
|
431
|
+
_context2.next = 3;
|
|
432
|
+
break;
|
|
433
|
+
}
|
|
434
|
+
taskIds = taskIdsForDashboard;
|
|
435
|
+
if (!(matches.length > 0)) {
|
|
367
436
|
_context2.next = 2;
|
|
368
437
|
break;
|
|
369
438
|
}
|
|
370
|
-
taskIds = matches.map(function (match) {
|
|
371
|
-
return parseInt(match[1], 10);
|
|
372
|
-
});
|
|
373
439
|
_context2.next = 1;
|
|
374
440
|
return getTabTaskDefault(taskIds[0]);
|
|
375
441
|
case 1:
|
|
@@ -378,6 +444,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
378
444
|
contentToAdd = content.replace(taskUrlRegex, function (url) {
|
|
379
445
|
return url.replace(/\/(detail|message|messages|files|history|hours)(?=$|\?)/, tabSegment);
|
|
380
446
|
});
|
|
447
|
+
case 2:
|
|
381
448
|
lastProjectMessage = messagesRef.current.filter(function (msg) {
|
|
382
449
|
return msg.projectId;
|
|
383
450
|
}).at(-1);
|
|
@@ -394,6 +461,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
394
461
|
deleteExistingTaskFromDashboard: _typeof(window.newProjectDashboard.deleteExistingTaskFromDashboard)
|
|
395
462
|
};
|
|
396
463
|
}
|
|
464
|
+
// eslint-disable-next-line no-console -- depuración sincronización dashboard / web
|
|
397
465
|
console.log('[useChatManager] Dashboard sync conditions', {
|
|
398
466
|
taskIds: taskIds,
|
|
399
467
|
hasApprovalInPreviousMessage: hasApprovalInPreviousMessage,
|
|
@@ -408,33 +476,38 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
408
476
|
});
|
|
409
477
|
if (isOnProjectRoute) {
|
|
410
478
|
if (wasTaskCreation) {
|
|
479
|
+
// eslint-disable-next-line no-console -- depuración sincronización dashboard / web
|
|
411
480
|
console.log('[useChatManager] Calling addExistingTaskToDashboard', {
|
|
412
481
|
taskIds: taskIds
|
|
413
482
|
});
|
|
414
483
|
(_window$newProjectDas = window.newProjectDashboard) === null || _window$newProjectDas === void 0 || (_window$newProjectDas2 = _window$newProjectDas.addExistingTaskToDashboard) === null || _window$newProjectDas2 === void 0 || _window$newProjectDas2.call(_window$newProjectDas, taskIds);
|
|
415
484
|
} else if (wasTaskEdit) {
|
|
485
|
+
// eslint-disable-next-line no-console -- depuración sincronización dashboard / web
|
|
416
486
|
console.log('[useChatManager] Calling editExistingTaskInDashboard', {
|
|
417
487
|
taskIds: taskIds
|
|
418
488
|
});
|
|
419
489
|
(_window$newProjectDas3 = window.newProjectDashboard) === null || _window$newProjectDas3 === void 0 || (_window$newProjectDas4 = _window$newProjectDas3.editExistingTaskInDashboard) === null || _window$newProjectDas4 === void 0 || _window$newProjectDas4.call(_window$newProjectDas3, taskIds);
|
|
420
490
|
} else if (wasTaskDelete) {
|
|
491
|
+
// eslint-disable-next-line no-console -- depuración sincronización dashboard / web
|
|
421
492
|
console.log('[useChatManager] Calling deleteExistingTaskFromDashboard', {
|
|
422
493
|
taskIds: taskIds
|
|
423
494
|
});
|
|
424
495
|
(_window$newProjectDas5 = window.newProjectDashboard) === null || _window$newProjectDas5 === void 0 || (_window$newProjectDas6 = _window$newProjectDas5.deleteExistingTaskFromDashboard) === null || _window$newProjectDas6 === void 0 || _window$newProjectDas6.call(_window$newProjectDas5, taskIds);
|
|
425
496
|
} else {
|
|
497
|
+
// eslint-disable-next-line no-console -- depuración sincronización dashboard / web
|
|
426
498
|
console.log('[useChatManager] No dashboard sync action matched', {
|
|
427
499
|
pendingActions: pendingActions
|
|
428
500
|
});
|
|
429
501
|
}
|
|
430
502
|
} else {
|
|
503
|
+
// eslint-disable-next-line no-console -- depuración sincronización dashboard / web
|
|
431
504
|
console.warn('[useChatManager] Dashboard sync skipped: not on matching project route', {
|
|
432
505
|
contextProjectId: contextProjectId,
|
|
433
506
|
routeProjectId: routeProjectId,
|
|
434
507
|
pathname: window.location.pathname
|
|
435
508
|
});
|
|
436
509
|
}
|
|
437
|
-
case
|
|
510
|
+
case 3:
|
|
438
511
|
addMessage(_objectSpread({
|
|
439
512
|
id: "answer-".concat(memorySessionId),
|
|
440
513
|
message: contentToAdd,
|
|
@@ -467,7 +540,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
467
540
|
document.dispatchEvent(customEvent);
|
|
468
541
|
firstTimeRef.current = false;
|
|
469
542
|
}
|
|
470
|
-
case
|
|
543
|
+
case 4:
|
|
471
544
|
case "end":
|
|
472
545
|
return _context2.stop();
|
|
473
546
|
}
|
|
@@ -951,4 +1024,4 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
951
1024
|
isDisabled: waitingResponse || loadingMessages
|
|
952
1025
|
};
|
|
953
1026
|
};
|
|
954
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVByb2plY3RzIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwiZmV0Y2hBZ2VudERldGFpbCIsIm5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyIsImF0dGFjaG1lbnRzT3JPcHRpb25zIiwiX29wdGlvbnMkYXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJhdHRhY2htZW50cyIsIm9wdGlvbnMiLCJ1c2VTdGFibGVDYWxsYmFja3MiLCJhdXRoVXNlciIsImN1cnJlbnRVc2VyIiwiaWQiLCJ0b1N0cmluZyIsIm5hbWUiLCJmaXJzdE5hbWUiLCJhdmF0YXIiLCJwaWN0dXJlIiwiY3VycmVudCIsInBhcnNlU1NFTGluZSIsImxpbmUiLCJ0cmltIiwiX2xpbmUkc3BsaXQiLCJzcGxpdCIsIl9saW5lJHNwbGl0MiIsIl9zbGljZWRUb0FycmF5IiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJyZXBsYWNlIiwiZGF0YVN0ciIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJwYXJzZUVycm9yIiwiY29uc29sZSIsImVycm9yIiwicHJvY2Vzc1NTRVN0cmVhbSIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwidGhyZWFkSWQiLCJjYWxsYmFja3MiLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJpc1N0cmVhbUNvbXBsZXRlIiwiaGFuZGxlTGluZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiaSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiX2hhbmRsZUxpbmUiLCJwYXJzZWQiLCJldmVudERhdGEiLCJjb250ZW50Iiwib25Ub2tlbiIsIm1lc3NhZ2UiLCJvbk5vZGUiLCJfZXZlbnREYXRhJGFnZW50X2lkIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJvbkNvbXBsZXRlIiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiY2FsbCIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYyIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYyJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJjbGllbnQiLCJzZXRDbGllbnQiLCJhZ2VudCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2hpcHNQcm9qZWN0IiwiZXZlbnQiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZVN0YWJsZUNhbGxiYWNrcyIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwiY3VycmVudE1lc3NhZ2VJZCIsImN1cnJlbnRVc2VyUXVlc3Rpb24iLCJjdXJyZW50Q2hhdElkIiwicmVwb3J0ZWRFdmVudCIsIm1lc3NhZ2VzUmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImxhc3RNc2dXaXRoUHJvamVjdCIsImZpbHRlciIsIm1zZyIsInByb2plY3RJZCIsImF0IiwiX3JlZjMiLCJwcm9qZWN0TmFtZSIsInRoZW4iLCJwcm9qZWN0cyIsImZvdW5kIiwiZmluZCIsInAiLCJOdW1iZXIiLCJfZm91bmQkY2xpZW50IiwiY2xpZW50TmFtZSIsImxhc3RNc2dXaXRoQ2xpZW50IiwiY2xpZW50SWQiLCJfcmVmNCIsIm1zZ0NsaWVudElkIiwibXNnQ2xpZW50TmFtZSIsImhhbmRsZVN0cmVhbUVycm9yIiwiZXJyb3JNZXNzYWdlIiwiY29uY2F0IiwiaXNFcnJvciIsImRhdGUiLCJEYXRlIiwidXNlciIsInJvbGUiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJ0ZW1wTWVzc2FnZUlkIiwiaGFuZGxlU3RyZWFtRmluaXNoIiwiX3JlZjUiLCJfY2FsbGVlMiIsIl9wcmV2aW91c01lc3NhZ2UkYXBwciIsIl9jcmVhdGVBZ2VudEZvbGxvd1VwIiwidGFza1VybFJlZ2V4IiwibWF0Y2hlcyIsImNvbnRlbnRUb0FkZCIsInByZXZpb3VzTWVzc2FnZSIsImhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UiLCJUQVNLX0NSRUFUSU9OX1RPT0xTIiwiVEFTS19FRElUX1RPT0xTIiwiVEFTS19ERUxFVEVfVE9PTFMiLCJwZW5kaW5nQWN0aW9ucyIsIndhc1Rhc2tDcmVhdGlvbiIsIndhc1Rhc2tFZGl0Iiwid2FzVGFza0RlbGV0ZSIsIndhc0NyZWF0ZUFnZW50QXBwcm92ZWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwidGFza0lkcyIsInRhYiIsInRhYlNlZ21lbnQiLCJsYXN0UHJvamVjdE1lc3NhZ2UiLCJjb250ZXh0UHJvamVjdElkUmF3IiwiY29udGV4dFByb2plY3RJZCIsInBhdGhNYXRjaCIsInJvdXRlUHJvamVjdElkIiwiaXNPblByb2plY3RSb3V0ZSIsImRhc2hib2FyZE1ldGhvZHMiLCJfd2luZG93JG5ld1Byb2plY3REYXMiLCJfd2luZG93JG5ld1Byb2plY3REYXMyIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMyIsIl93aW5kb3ckbmV3UHJvamVjdERhczQiLCJfd2luZG93JG5ld1Byb2plY3REYXM1IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNiIsIl9jb250ZXh0MiIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsImFjdGlvbiIsImluY2x1ZGVzIiwidG9vbF9uYW1lIiwiYXBwcm92YWxTdGF0dXMiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwibWFwIiwibWF0Y2giLCJwYXJzZUludCIsInVybCIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJuZXdQcm9qZWN0RGFzaGJvYXJkIiwiYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQiLCJfdHlwZW9mIiwiZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkIiwiZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZCIsImxvZyIsImhhc0Rhc2hib2FyZEJyaWRnZSIsImF2YWlsYWJsZURhc2hib2FyZE1ldGhvZHMiLCJ3YXJuIiwiX29iamVjdFNwcmVhZCIsImNoYXRBZ2VudCIsImVyciIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl94OCIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJfdXNlT3JjaGVzdHJhdG9yU3RyZWEiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdG9wIiwiYXNrTWFpYSIsIndhaXRpbmdSZXNwb25zZSIsImlzTG9hZGluZyIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwic3RvcFN0cmVhbWluZyIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmNiIsIl9jYWxsZWUzIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50IiwiX3Byb2plY3QkY2xpZW50IiwiX25vcm1hbGl6ZVNlbmRNZXNzYWdlIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsImhpc3RvcnkiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsInByb2plY3RUb1JlcXVlc3QiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MyIsInBtQWlUeXBlZFRleHQiLCJVU0VSIiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJpc0Zpbml0ZSIsImxhbmciLCJ1c2VySWQiLCJsYXN0TmFtZSIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJtZXNzYWdlSWQiLCJhZ2VudE5hbWUiLCJlbnRpdHkiLCJhZ2VudEVudGl0eSIsIl94OSIsIl94MCIsIl94MSIsIl94MTAiLCJjaGFuZ2VQcm9qZWN0Iiwib3B0aW9uIiwiaGFuZGxlRmVlZGJhY2siLCJfcmVmNyIsIl9jYWxsZWU0IiwiZmVlZGJhY2tQcm9wIiwiY2hhdE1lc3NhZ2VJZCIsIl9jb250ZXh0NCIsIkNoYXRzIiwid2FzSGVscGZ1bENoYXQiLCJUSFVNQlNfVVAiLCJ3YXNIZWxwZnVsIiwiX3gxMSIsIl94MTIiLCJoYW5kbGVBcHByb3ZhbERlY2lzaW9uIiwiX3JlZjgiLCJfY2FsbGVlNSIsInRocmVhZElkcyIsImRlY2lzaW9uIiwiZWRpdGVkQWN0aW9ucyIsIm1lc3NhZ2VXaXRoQXBwcm92YWwiLCJsb2FkaW5nS2V5IiwiZXhpc3RpbmdNZXNzYWdlIiwibmV3U3RhdHVzIiwiX3QiLCJfY29udGV4dDUiLCJfbSRhcHByb3ZhbCIsInRocmVhZF9pZCIsIl9kZWZpbmVQcm9wZXJ0eSIsIk9yY2hlc3RyYXRvciIsImNvbnRpbnVlVGhyZWFkIiwic2Vzc2lvbklkIiwic2Vzc2lvbl9pZCIsIm9rIiwibmV3TG9hZGluZ3MiLCJjdXJyZW50VGhyZWFkSWQiLCJkaXNwbGF5TXNnIiwiYXBwcm92YWxQYXlsb2FkIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9wcm9qZWN0JGNsaWVudDIiLCJfcHJvamVjdCRjbGllbnQzIiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJoYXNJbml0aWFsQXR0YWNobWVudHMiLCJoYXNJbml0aWFsRmFxIiwiX2NvbnRleHQ2IiwiQm9vbGVhbiIsInJlc2V0Q2hhdCIsInN0b3BHZW5lcmF0aW9uIiwiaXNEaXNhYmxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByYWRpeCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRlZC1vcHRpb25hbC1jaGFpbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IHVzZUNoYXRNZXNzYWdlcyB9IGZyb20gJy4uL3VzZUNoYXRNZXNzYWdlcydcbmltcG9ydCB7IHVzZU9yY2hlc3RyYXRvclN0cmVhbSB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbSdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi91c2VUJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBTZW5kTWVzc2FnZU9wdGlvbnMsIFVzZUNoYXRNYW5hZ2VyUHJvcHMgfSBmcm9tICcuL3VzZUNoYXRNYW5hZ2VyLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vdXNlRXZlbnQnXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRNZXNzYWdlVXNlciwgQ2hhdEhpc3RvcnlSb2xlLCBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IHVzZVByb2plY3RzIH0gZnJvbSAnLi4vdXNlUHJvamVjdHMnXG5pbXBvcnQgeyB1c2VUYWJUYXNrRGVmYXVsdCB9IGZyb20gJy4uL3VzZVRhYlRhc2tEZWZhdWx0J1xuaW1wb3J0IHsgVEFTS19VUkxfUkVHRVhfUEFUVEVSTiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90YXNrVXJscydcbmltcG9ydCB7IGZldGNoQWdlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9mZXRjaEFnZW50RGV0YWlsJ1xuXG50eXBlIEF0dGFjaG1lbnRzT3JPcHRpb25zID0gQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9uc1xuXG5jb25zdCBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MgPSAoYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50c09yT3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykpIHtcbiAgICByZXR1cm4geyBhdHRhY2htZW50czogYXR0YWNobWVudHNPck9wdGlvbnMsIG9wdGlvbnM6IHt9IGFzIFNlbmRNZXNzYWdlT3B0aW9ucyB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zOiBTZW5kTWVzc2FnZU9wdGlvbnMgPSBhdHRhY2htZW50c09yT3B0aW9ucyA/PyB7fVxuICByZXR1cm4geyBhdHRhY2htZW50czogb3B0aW9ucy5hdHRhY2htZW50cyA/PyBbXSwgb3B0aW9ucyB9XG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgcGFyc2VTU0VMaW5lID0gKGxpbmU6IHN0cmluZyk6IHsgZXZlbnRUeXBlOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfSB8IG51bGwgPT4ge1xuICBpZiAoIWxpbmUudHJpbSgpKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG4gICAgcmV0dXJuIHsgZXZlbnRUeXBlLCBkYXRhIH1cbiAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NTU0VTdHJlYW0gPSBhc3luYyAoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgY2FsbGJhY2tzOiB7XG4gICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQ29tcGxldGU6IChcbiAgICAgIGZpbmFsQ29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZyxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHZvaWRcbiAgICBvbkVycm9yOiAoZXJyb3I6IGFueSwgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZD86IChhcHByb3ZhbDogYW55LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBpc1N0cmVhbUNvbXBsZXRlID0gZmFsc2VcblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAndG9rZW4nKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgKz0gY29udGVudFxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNhbGxiYWNrcy5vbk5vZGUoZXZlbnREYXRhLm1lc3NhZ2UsIHRocmVhZElkKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAoZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgIGNvbnN0IHNvdXJjZXMgPSAoZXZlbnREYXRhLnNvdXJjZXMgYXMgdW5rbm93bikgfHwgbnVsbFxuICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKGV2ZW50RGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLnN1Z2dlc3RfcmVwbHkpXG4gICAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdKVxuICAgICAgICA6IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLnN1Z2dlc3Rpb25zKVxuICAgICAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXSlcbiAgICAgICAgICA6IG51bGxcbiAgICAgIGNvbnN0IGFnZW50SWRSYXcgPSBldmVudERhdGEuYWdlbnRfaWQgPz8gZXZlbnREYXRhLmFnZW50SWRcbiAgICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPSBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgY2FsbGJhY2tzLm9uQ29tcGxldGUoZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIHRocmVhZElkLCBzdWdnZXN0aW9ucywgY29tcGxldGVkQWdlbnRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2FwcHJvdmFsX3JlcXVpcmVkJykge1xuICAgICAgY2FsbGJhY2tzLm9uQXBwcm92YWxSZXF1aXJlZD8uKGV2ZW50RGF0YSwgYWNjdW11bGF0ZWRDb250ZW50LCB0aHJlYWRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgY2FsbGJhY2tzLm9uRXJyb3IoZXZlbnREYXRhLmVycm9yLCB0aHJlYWRJZClcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWlzU3RyZWFtQ29tcGxldGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICBpZiAoZG9uZSkge1xuICAgICAgaXNTdHJlYW1Db21wbGV0ZSA9IHRydWVcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBoYW5kbGVMaW5lKGxpbmVzW2ldKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1hbmFnZXIgPSAoe1xuICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgb25FcnJvcixcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWFuYWdlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHNldENsaWVudCxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuICBjb25zdCBjdXJyZW50TWVzc2FnZUlkID0gdXNlUmVmKHV1aWR2NCgpKVxuICBjb25zdCBjdXJyZW50VXNlclF1ZXN0aW9uID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSB1c2VSZWYoaW5pdGlhbENoYXRJZCB8fCB1dWlkdjQoKSlcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBbYWN0aXZlTG9hZGluZ3MsIHNldEFjdGl2ZUxvYWRpbmdzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KVxuXG4gIGNvbnN0IGlzV2ViU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzV2ViU2VhcmNoQWN0aXZlKVxuICBjb25zdCBpc0RlZXBTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNEZWVwU2VhcmNoQWN0aXZlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIGNvbnN0IHsgbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBsb2FkTWVzc2FnZXMsIGFkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGhhbmRsZVNjcm9sbCB9ID1cbiAgICB1c2VDaGF0TWVzc2FnZXMoe1xuICAgICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgICAgb25FcnJvcixcbiAgICAgIGFnZW50cyxcbiAgICB9KVxuXG4gIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywge1xuICAgICAgZGV0YWlsOiB7IGxvYWRpbmdNZXNzYWdlcyB9LFxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgfSwgW2xvYWRpbmdNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcblxuICAgICAgbG9hZE1lc3NhZ2VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsQ2hhdElkLCBwcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgbG9hZE1lc3NhZ2VzXSlcblxuICAvLyBTaW5jcm9uaXphciBjaGlwc1Byb2plY3QgY3VhbmRvIGhheSBtZW5zYWplcyBjb24gcHJvamVjdElkIHBlcm8gY2hpcHNQcm9qZWN0IG5vIHNlIGhhIHNldGVhZG9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2hpcHNQcm9qZWN0IHx8IGxvYWRpbmdNZXNzYWdlcykgcmV0dXJuXG4gICAgY29uc3QgbGFzdE1zZ1dpdGhQcm9qZWN0ID0gbWVzc2FnZXMuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICBjb25zdCB7IHByb2plY3RJZCwgcHJvamVjdE5hbWUgfSA9IGxhc3RNc2dXaXRoUHJvamVjdCB8fCB7fVxuICAgIGlmICghcHJvamVjdElkKSByZXR1cm5cblxuICAgIGZldGNoUHJvamVjdHMocHJvamVjdElkKS50aGVuKHByb2plY3RzID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gcHJvamVjdHM/LmZpbmQocCA9PiBOdW1iZXIocC5pZCkgPT09IE51bWJlcihwcm9qZWN0SWQpKVxuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kLm5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogZm91bmQuY2xpZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kLmlkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdChmb3VuZClcbiAgICAgIH0gZWxzZSBpZiAocHJvamVjdE5hbWUpIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICBwcm9qZWN0TmFtZSxcbiAgICAgICAgICBjbGllbnROYW1lOiAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhwcm9qZWN0SWQpLFxuICAgICAgICB9KVxuICAgICAgICBzZXRQcm9qZWN0KHsgaWQ6IE51bWJlcihwcm9qZWN0SWQpLCBuYW1lOiBwcm9qZWN0TmFtZSB9KVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFttZXNzYWdlcywgY2hpcHNQcm9qZWN0LCBsb2FkaW5nTWVzc2FnZXMsIGZldGNoUHJvamVjdHMsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdF0pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2xpZW50IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIGNsaWVudElkIHBlcm8gY2xpZW50IG5vIHNlIGhhIHNldGVhZG9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2xpZW50IHx8IGxvYWRpbmdNZXNzYWdlcykgcmV0dXJuXG4gICAgY29uc3QgbGFzdE1zZ1dpdGhDbGllbnQgPSBtZXNzYWdlcy5maWx0ZXIobXNnID0+IG1zZy5jbGllbnRJZCAhPSBudWxsICYmIG1zZy5jbGllbnROYW1lKS5hdCgtMSlcbiAgICBjb25zdCB7IGNsaWVudElkOiBtc2dDbGllbnRJZCwgY2xpZW50TmFtZTogbXNnQ2xpZW50TmFtZSB9ID0gbGFzdE1zZ1dpdGhDbGllbnQgfHwge31cbiAgICBpZiAobXNnQ2xpZW50SWQgPT0gbnVsbCB8fCAhbXNnQ2xpZW50TmFtZSkgcmV0dXJuXG5cbiAgICBzZXRDbGllbnQ/Lih7IGlkOiBOdW1iZXIobXNnQ2xpZW50SWQpLCBuYW1lOiBtc2dDbGllbnROYW1lIH0pXG4gIH0sIFttZXNzYWdlcywgY2xpZW50LCBsb2FkaW5nTWVzc2FnZXMsIHNldENsaWVudF0pXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRXJyb3IgPSB1c2VDYWxsYmFjayhcbiAgICAoZXJyb3JNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgICAgOiB0KCdjaGF0LmVycm9yJylcblxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtVXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRlbnQ6IHN0cmluZywgc291cmNlczogYW55LCBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcblxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiB0ZW1wTWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlOiBjb250ZW50LFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgfSlcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBEZXRlY3RhciB0b2RhcyBsYXMgVVJMcyBkZSB0YXJlYXMgKC4uLi90YXNrcy8xMjMvZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycylcbiAgICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgICAgY29uc3QgbWF0Y2hlcyA9IFsuLi5jb250ZW50Lm1hdGNoQWxsKHRhc2tVcmxSZWdleCldXG5cbiAgICAgIGxldCBjb250ZW50VG9BZGQgPSBjb250ZW50XG4gICAgICBjb25zdCBwcmV2aW91c01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtID0+IG0uaWQgIT09IHRlbXBNZXNzYWdlSWQpLmF0KC0xKVxuICAgICAgY29uc3QgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSA9IHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWwgIT0gbnVsbFxuICAgICAgY29uc3QgVEFTS19DUkVBVElPTl9UT09MUyA9IFsnY3JlYXRlX3Rhc2snLCAnY3JlYXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgbGV0IGNyZWF0ZUFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmIGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSkge1xuICAgICAgICBjcmVhdGVBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwICYmIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBsYXN0UHJvamVjdE1lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWRSYXcgPSBwcm9qZWN0Py5pZCB8fCBsYXN0UHJvamVjdE1lc3NhZ2U/LnByb2plY3RJZFxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gY29udGV4dFByb2plY3RJZFJhdyA/IHBhcnNlSW50KFN0cmluZyhjb250ZXh0UHJvamVjdElkUmF3KSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC9wcm9qZWN0c1xcLyhcXGQrKVxcLy8pXG4gICAgICAgIGNvbnN0IHJvdXRlUHJvamVjdElkID0gcGF0aE1hdGNoID8gcGFyc2VJbnQocGF0aE1hdGNoWzFdLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IGlzT25Qcm9qZWN0Um91dGUgPSBjb250ZXh0UHJvamVjdElkICYmIHJvdXRlUHJvamVjdElkICYmIGNvbnRleHRQcm9qZWN0SWQgPT09IHJvdXRlUHJvamVjdElkXG4gICAgICAgIGxldCBkYXNoYm9hcmRNZXRob2RzOiB7XG4gICAgICAgICAgYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ6IHN0cmluZ1xuICAgICAgICAgIGVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZDogc3RyaW5nXG4gICAgICAgICAgZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZDogc3RyaW5nXG4gICAgICAgIH0gfCBudWxsID0gbnVsbFxuICAgICAgICBpZiAod2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQpIHtcbiAgICAgICAgICBkYXNoYm9hcmRNZXRob2RzID0ge1xuICAgICAgICAgICAgYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ6IHR5cGVvZiB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZC5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCxcbiAgICAgICAgICAgIGVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZDogdHlwZW9mIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkLmVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCxcbiAgICAgICAgICAgIGRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ6IHR5cGVvZiB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZC5kZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygnW3VzZUNoYXRNYW5hZ2VyXSBEYXNoYm9hcmQgc3luYyBjb25kaXRpb25zJywge1xuICAgICAgICAgIHRhc2tJZHMsXG4gICAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSxcbiAgICAgICAgICB3YXNUYXNrQ3JlYXRpb24sXG4gICAgICAgICAgd2FzVGFza0VkaXQsXG4gICAgICAgICAgd2FzVGFza0RlbGV0ZSxcbiAgICAgICAgICBjb250ZXh0UHJvamVjdElkLFxuICAgICAgICAgIHJvdXRlUHJvamVjdElkLFxuICAgICAgICAgIGlzT25Qcm9qZWN0Um91dGUsXG4gICAgICAgICAgaGFzRGFzaGJvYXJkQnJpZGdlOiAhIXdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkLFxuICAgICAgICAgIGF2YWlsYWJsZURhc2hib2FyZE1ldGhvZHM6IGRhc2hib2FyZE1ldGhvZHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGlzT25Qcm9qZWN0Um91dGUpIHtcbiAgICAgICAgICBpZiAod2FzVGFza0NyZWF0aW9uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW3VzZUNoYXRNYW5hZ2VyXSBDYWxsaW5nIGFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkJywgeyB0YXNrSWRzIH0pXG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0VkaXQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdXNlQ2hhdE1hbmFnZXJdIENhbGxpbmcgZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkJywgeyB0YXNrSWRzIH0pXG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc1Rhc2tEZWxldGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdXNlQ2hhdE1hbmFnZXJdIENhbGxpbmcgZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZCcsIHsgdGFza0lkcyB9KVxuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW3VzZUNoYXRNYW5hZ2VyXSBObyBkYXNoYm9hcmQgc3luYyBhY3Rpb24gbWF0Y2hlZCcsIHsgcGVuZGluZ0FjdGlvbnMgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdbdXNlQ2hhdE1hbmFnZXJdIERhc2hib2FyZCBzeW5jIHNraXBwZWQ6IG5vdCBvbiBtYXRjaGluZyBwcm9qZWN0IHJvdXRlJywge1xuICAgICAgICAgICAgY29udGV4dFByb2plY3RJZCxcbiAgICAgICAgICAgIHJvdXRlUHJvamVjdElkLFxuICAgICAgICAgICAgcGF0aG5hbWU6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke21lbW9yeVNlc3Npb25JZH1gLFxuICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgLi4uKGNyZWF0ZUFnZW50Rm9sbG93VXAgPyB7IGNyZWF0ZUFnZW50Rm9sbG93VXAgfSA6IHt9KSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChjcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkKSB7XG4gICAgICAgIGZldGNoQWdlbnREZXRhaWwoY3JlYXRlQWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIGHDsWFkaXIgZWwgYWdlbnRlIHJlY2nDqW4gY3JlYWRvIGFsIGxpc3RhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1TdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LWNhbmNlbGxlZGAsXG4gICAgICBtZXNzYWdlOiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgfSlcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgfSwgNTAwKVxuICB9LCBbYWRkTWVzc2FnZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgICAgLy8gQWRkIGEgbWVzc2FnZSB3aXRoIHRoZSBhcHByb3ZhbCByZXF1ZXN0XG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlOiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgYXBwcm92YWxTdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIGlzTG9hZGluZzogd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICB9ID0gdXNlT3JjaGVzdHJhdG9yU3RyZWFtKHtcbiAgICBvbkVycm9yOiBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICBvblN0cmVhbVVwZGF0ZTogaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgIG9uRmluaXNoU3RyZWFtOiBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgb25TdG9wOiBoYW5kbGVTdHJlYW1TdG9wLFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZDogaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgfSlcblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCBvcHRpb25zIH0gPSBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MoYXR0YWNobWVudHNPck9wdGlvbnMpXG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY29uc3QgbmV3TWVzc2FnZUlkID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IG5ld01lc3NhZ2VJZFxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbWVzc2FnZVxuXG4gICAgICBpZiAoIXJlcG9ydGVkRXZlbnQuY3VycmVudCkge1xuICAgICAgICBldmVudChFVkVOVFMucG1BaVR5cGVkVGV4dClcbiAgICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICAvLyBWZXJpZmljYXIgc2kgZWwgY29udGV4dG8gZ2xvYmFsIGVzdMOhIGRlc2FjdHVhbGl6YWRvXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0ID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuXG4gICAgICBjb25zdCBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgPSBtZXNzYWdlc1JlZi5jdXJyZW50Py5bbWVzc2FnZXNSZWYuY3VycmVudC5sZW5ndGggLSAxXT8uYWdlbnRJZFxuXG4gICAgICAvLyBObyBhZ3JlZ2FyIHByb2plY3RJZCBhbCBtZW5zYWplIGRlbCB1c3VhcmlvIC0gc2UgZGV0ZXJtaW5hcsOhIGRlc3B1w6lzXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBxdWVzdGlvbi0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgcHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICAvLyBWZXJpZmljYXIgY29uc2lzdGVuY2lhIGVudHJlIGNvbnRleHRvIGdsb2JhbCB5IMO6bHRpbW8gbWVuc2FqZVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3Q/LmlkXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuXG4gICAgICBsZXQgcHJvamVjdFRvUmVxdWVzdDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgLy8gU2kgaGF5IMO6bHRpbW8gbWVuc2FqZSBjb24gcHJvamVjdElkLCB1c2FybG8gKG3DoXMgY29uZmlhYmxlKVxuICAgICAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gICAgICB9XG4gICAgICAvLyBTaSBubyBoYXkgw7psdGltbyBtZW5zYWplLCB1c2FyIGVsIGNvbnRleHRvIGdsb2JhbFxuICAgICAgZWxzZSBpZiAoY29udGV4dFByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjb250ZXh0UHJvamVjdElkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWRGYXFJZCA9IGZhcUlkID8/IG9wdGlvbnMuZmFxSWRcbiAgICAgIGNvbnN0IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA9IGFnZW50U3VnZ2VzdGlvbklkID8/IG9wdGlvbnMuYWdlbnRTdWdnZXN0aW9uSWRcblxuICAgICAgY29uc3QgcGF5bG9hZERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGZpbmFsTWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIGFnZW50SWQ6IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyB8fCBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGNsaWVudD8uaWRcbiAgICAgICAgICA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCwgLi4uKGNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudD8uaWRcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogcHJvamVjdC5jbGllbnQuaWQsIC4uLihwcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBwcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBjaGFuZ2VQcm9qZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBpZiAob3B0aW9uLmlkICE9PSBwcm9qZWN0Py5pZCkge1xuICAgICAgICBzZXRQcm9qZWN0KG9wdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2plY3QgJiYgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50LFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgcHJvamVjdElkOiBvcHRpb24uaWQsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyB0aHJlYWRfaWRzIHByb3ZpZGVkIGZvciBhcHByb3ZhbCBkZWNpc2lvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBCdXNjYXIgZWwgbWVuc2FqZSBxdWUgY29udGllbmUgYWxndW5vIGRlIGVzdG9zIHRocmVhZElkcyBlbiBzdXMgcGVuZGluZ19hY3Rpb25zXG4gICAgICBjb25zdCBtZXNzYWdlV2l0aEFwcHJvdmFsID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT5cbiAgICAgICAgbS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgICApXG5cbiAgICAgIGlmICghbWVzc2FnZVdpdGhBcHByb3ZhbCB8fCAhbWVzc2FnZVdpdGhBcHByb3ZhbC5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWRzOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcbiAgICAgIC8vIFVzZSBmaXJzdCB0aHJlYWRJZCBhcyB0aGUgbG9hZGluZyBrZXlcbiAgICAgIGNvbnN0IGxvYWRpbmdLZXkgPSB0aHJlYWRJZHNbMF1cbiAgICAgIC8vIFVwZGF0ZSBtZXNzYWdlIHN0YXR1cyBpbW1lZGlhdGVseVxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gbWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXIgcmUtcmVuZGVyXG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PiBtLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICBhZGRNZXNzYWdlKHsgLi4uZXhpc3RpbmdNZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgY29udGludWUtdGhyZWFkIGVuZHBvaW50IHdpdGggQUxMIHRocmVhZF9pZHMgaW4gYSBzaW5nbGUgcmVxdWVzdFxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICAvLyBBZGQgbG9hZGluZ1xuICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBbbG9hZGluZ0tleV06IHQoJ2NoYXQucHJvY2Vzc2luZycpLFxuICAgICAgfSkpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoe1xuICAgICAgICAgIHRocmVhZElkcywgLy8gU2VuZCBhbGwgYWN0aW9uIHRocmVhZF9pZHMgYXQgb25jZVxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tsb2FkaW5nS2V5XVxuICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgU1NFIHN0cmVhbVxuICAgICAgICBhd2FpdCBwcm9jZXNzU1NFU3RyZWFtKHJlc3BvbnNlLCBsb2FkaW5nS2V5LCB7XG4gICAgICAgICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlKGNvbnRlbnQsIG51bGwsICcnKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ob2RlOiAobWVzc2FnZTogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheU1zZyA9IG1lc3NhZ2UuaW5jbHVkZXMoJ2NyZWF0ZV90YXNrJykgPyBtZXNzYWdlIDogdCgnY2hhdC5leGVjdXRpbmdBY3Rpb24nKVxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiAoe1xuICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICBbY3VycmVudFRocmVhZElkXTogZGlzcGxheU1zZyxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZTogKFxuICAgICAgICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICAgICAgICBzb3VyY2VzOiBhbnksXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICAgICAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRmluaXNoKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCBzdWdnZXN0aW9ucywgYWdlbnRJZClcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQXBwcm92YWxSZXF1aXJlZDogKGFwcHJvdmFsUGF5bG9hZDogYW55LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIC8vIE5ldyBISVRMIGludGVycnVwdGlvbiBkZXRlY3RlZCBhZnRlciByZXN1bWUgKGNoYWluZWQgYWN0aW9ucylcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQoYXBwcm92YWxQYXlsb2FkIGFzIEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogKGVycm9yOiBhbnksIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZXJyb3IpXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tsb2FkaW5nS2V5XVxuICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2F1dGhVc2VyLCBhZ2VudCwgYWRkTWVzc2FnZSwgaGFuZGxlU3RyZWFtRXJyb3IsIGhhbmRsZVN0cmVhbVVwZGF0ZSwgaGFuZGxlU3RyZWFtRmluaXNoLCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG5cbiAgICAgIGlmICghaGFzSW5pdGlhbE1lc3NhZ2UgJiYgIWhhc0luaXRpYWxBdHRhY2htZW50cyAmJiAhaGFzSW5pdGlhbEZhcSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgYXNrTWFpYSh7XG4gICAgICAgIG1lc3NhZ2U6IHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3Q/LmlkIHx8IG51bGwsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSEsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY2xpZW50Py5pZCA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCB9IDogcHJvamVjdD8uY2xpZW50Py5pZCA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5uYW1lID8geyBwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0Py5jbGllbnQ/Lm5hbWVcbiAgICAgICAgICA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9XG4gICAgICAgICAgOiBjbGllbnQ/Lm5hbWVcbiAgICAgICAgICAgID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiB1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbXSlcblxuICBjb25zdCBzdG9wR2VuZXJhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wU3RyZWFtaW5nKClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxFQUFFLElBQUlDLE1BQU0sUUFBUSxNQUFNO0FBQ25DLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRzlCLFNBQVNDLE9BQU8sUUFBaUIsd0JBQXdCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxhQUFhO0FBQzlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsUUFBUSxRQUFRLDREQUE0RDtBQUNyRixTQUF1Q0MsZUFBZSxRQUF5QixrQkFBa0I7QUFHakcsU0FBU0MsV0FBVyxRQUFRLGdCQUFnQjtBQUM1QyxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBc0I7QUFDeEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLDZDQUE2QztBQUk5RSxJQUFNQyx3QkFBd0IsR0FBRyxT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
|
|
1027
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVByb2plY3RzIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwiZmV0Y2hBZ2VudERldGFpbCIsIm5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyIsImF0dGFjaG1lbnRzT3JPcHRpb25zIiwiX29wdGlvbnMkYXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJhdHRhY2htZW50cyIsIm9wdGlvbnMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInBlbmRpbmdBY3Rpb25zIiwiaWRzIiwiZm9yRWFjaCIsImFjdGlvbiIsIl90eXBlb2YiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidG9vbF9uYW1lIiwiX3JlYyR0YXNrX2lkIiwicmF3IiwidGFza19pZCIsImlkIiwibiIsInBhcnNlSW50IiwiU3RyaW5nIiwiTnVtYmVyIiwiaXNOYU4iLCJwdXNoIiwibGlzdCIsInRhc2tfaWRzIiwidGlkIiwiZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0IiwidGV4dCIsImxhYmVsZWQiLCJtYXRjaCIsImJvbGQiLCJ1c2VTdGFibGVDYWxsYmFja3MiLCJhdXRoVXNlciIsImN1cnJlbnRVc2VyIiwidG9TdHJpbmciLCJuYW1lIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwidHJpbSIsIl9saW5lJHNwbGl0Iiwic3BsaXQiLCJfbGluZSRzcGxpdDIiLCJfc2xpY2VkVG9BcnJheSIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwicmVwbGFjZSIsImRhdGFTdHIiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicGFyc2VFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3NTU0VTdHJlYW0iLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaXNTdHJlYW1Db21wbGV0ZSIsImhhbmRsZUxpbmUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsImkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIl9oYW5kbGVMaW5lIiwicGFyc2VkIiwiZXZlbnREYXRhIiwiY29udGVudCIsIm9uVG9rZW4iLCJtZXNzYWdlIiwib25Ob2RlIiwiX2V2ZW50RGF0YSRhZ2VudF9pZCIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwib25Db21wbGV0ZSIsIl9jYWxsYmFja3Mkb25BcHByb3ZhbCIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImNhbGwiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJyZWFkIiwic2VudCIsImFicnVwdCIsImRlY29kZSIsInN0cmVhbSIsInBvcCIsImxlbmd0aCIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwidXNlQ2hhdE1hbmFnZXIiLCJfcmVmMiIsImluaXRpYWxDaGF0SWQiLCJjaGF0SWQiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJfcmVmMiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJfdXNlR2xvYmFsQ29udGV4dCIsInByb2plY3QiLCJzZXRQcm9qZWN0IiwiY2xpZW50Iiwic2V0Q2xpZW50IiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImNoaXBzUHJvamVjdCIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVMb2FkaW5ncyIsInNldEFjdGl2ZUxvYWRpbmdzIiwiaXNXZWJTZWFyY2hBY3RpdmVSZWYiLCJpc0RlZXBTZWFyY2hBY3RpdmVSZWYiLCJfdXNlQ2hhdE1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJsb2FkTWVzc2FnZXMiLCJhZGRNZXNzYWdlIiwicmVtb3ZlTWVzc2FnZSIsImhhbmRsZVNjcm9sbCIsImN1c3RvbUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJsYXN0TXNnV2l0aFByb2plY3QiLCJmaWx0ZXIiLCJtc2ciLCJwcm9qZWN0SWQiLCJhdCIsIl9yZWYzIiwicHJvamVjdE5hbWUiLCJ0aGVuIiwicHJvamVjdHMiLCJmb3VuZCIsImZpbmQiLCJwIiwiX2ZvdW5kJGNsaWVudCIsImNsaWVudE5hbWUiLCJsYXN0TXNnV2l0aENsaWVudCIsImNsaWVudElkIiwiX3JlZjQiLCJtc2dDbGllbnRJZCIsIm1zZ0NsaWVudE5hbWUiLCJoYW5kbGVTdHJlYW1FcnJvciIsImVycm9yTWVzc2FnZSIsImNvbmNhdCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJyb2xlIiwiQVNTSVNUQU5UIiwiaGFuZGxlU3RyZWFtVXBkYXRlIiwidGVtcE1lc3NhZ2VJZCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2NhbGxlZTIiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfY3JlYXRlQWdlbnRGb2xsb3dVcCIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwiVEFTS19DUkVBVElPTl9UT09MUyIsIlRBU0tfRURJVF9UT09MUyIsIlRBU0tfREVMRVRFX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ3YXNUYXNrRGVsZXRlIiwid2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCIsImNyZWF0ZUFnZW50Rm9sbG93VXAiLCJ0YXNrSWRzRnJvbVVybHMiLCJ0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsIiwidGFza0lkc0Zyb21EZWxldGlvblRleHQiLCJ0YXNrSWRzRm9yRGFzaGJvYXJkIiwic2hvdWxkU3luY0Rhc2hib2FyZCIsInRhc2tJZHMiLCJ0YWIiLCJ0YWJTZWdtZW50IiwibGFzdFByb2plY3RNZXNzYWdlIiwiY29udGV4dFByb2plY3RJZFJhdyIsImNvbnRleHRQcm9qZWN0SWQiLCJwYXRoTWF0Y2giLCJyb3V0ZVByb2plY3RJZCIsImlzT25Qcm9qZWN0Um91dGUiLCJkYXNoYm9hcmRNZXRob2RzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMiIsIl93aW5kb3ckbmV3UHJvamVjdERhczMiLCJfd2luZG93JG5ld1Byb2plY3REYXM0IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNSIsIl93aW5kb3ckbmV3UHJvamVjdERhczYiLCJfY29udGV4dDIiLCJSZWdFeHAiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJtYXRjaEFsbCIsIm0iLCJhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsInNvbWUiLCJpbmNsdWRlcyIsImFwcHJvdmFsU3RhdHVzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIm1hcCIsImxvZyIsInVybE1hdGNoQ291bnQiLCJjb250ZW50U25pcHBldCIsInNsaWNlIiwidXJsIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJoYXNEYXNoYm9hcmRCcmlkZ2UiLCJhdmFpbGFibGVEYXNoYm9hcmRNZXRob2RzIiwid2FybiIsIl9vYmplY3RTcHJlYWQiLCJjaGF0QWdlbnQiLCJlcnIiLCJfeDQiLCJfeDUiLCJfeDYiLCJfeDciLCJfeDgiLCJoYW5kbGVTdHJlYW1TdG9wIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsInNldFRpbWVvdXQiLCJoYW5kbGVBcHByb3ZhbFJlcXVpcmVkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwiX3VzZU9yY2hlc3RyYXRvclN0cmVhIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RvcCIsImFza01haWEiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsInN0b3BTdHJlYW1pbmciLCJjdXJyZW50UHJvamVjdCIsInNlbmRNZXNzYWdlIiwiX3JlZjYiLCJfY2FsbGVlMyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsIl9wcm9qZWN0JGNsaWVudCIsIl9ub3JtYWxpemVTZW5kTWVzc2FnZSIsIm5ld01lc3NhZ2VJZCIsImxhc3RNZXNzYWdlV2l0aFByb2plY3QiLCJjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJoaXN0b3J5IiwibGFzdE1lc3NhZ2VQcm9qZWN0SWQiLCJwcm9qZWN0VG9SZXF1ZXN0IiwicGF5bG9hZEZhcUlkIiwicGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIiwicGF5bG9hZERhdGEiLCJfY29udGV4dDMiLCJwbUFpVHlwZWRUZXh0IiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwiaXNGaW5pdGUiLCJsYW5nIiwidXNlcklkIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjb21wYW55X2lkIiwibWVzc2FnZUlkIiwiYWdlbnROYW1lIiwiZW50aXR5IiwiYWdlbnRFbnRpdHkiLCJfeDkiLCJfeDAiLCJfeDEiLCJfeDEwIiwiY2hhbmdlUHJvamVjdCIsIm9wdGlvbiIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjciLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MTEiLCJfeDEyIiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWY4IiwiX2NhbGxlZTUiLCJ0aHJlYWRJZHMiLCJkZWNpc2lvbiIsImVkaXRlZEFjdGlvbnMiLCJtZXNzYWdlV2l0aEFwcHJvdmFsIiwibG9hZGluZ0tleSIsImV4aXN0aW5nTWVzc2FnZSIsIm5ld1N0YXR1cyIsIl90IiwiX2NvbnRleHQ1IiwiX20kYXBwcm92YWwiLCJ0aHJlYWRfaWQiLCJfZGVmaW5lUHJvcGVydHkiLCJPcmNoZXN0cmF0b3IiLCJjb250aW51ZVRocmVhZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJvayIsIm5ld0xvYWRpbmdzIiwiY3VycmVudFRocmVhZElkIiwiZGlzcGxheU1zZyIsImFwcHJvdmFsUGF5bG9hZCIsIl94MTMiLCJfeDE0IiwiX3gxNSIsImluaXRpYWxpemVDaGF0IiwiX2NhbGxlZTYiLCJfdXNlckluaXRpYWxNZXNzYWdlJG0iLCJfdXNlckluaXRpYWxNZXNzYWdlJGEiLCJfcHJvamVjdCRjbGllbnQyIiwiX3Byb2plY3QkY2xpZW50MyIsImhhc0luaXRpYWxNZXNzYWdlIiwiaGFzSW5pdGlhbEF0dGFjaG1lbnRzIiwiaGFzSW5pdGlhbEZhcSIsIl9jb250ZXh0NiIsIkJvb2xlYW4iLCJyZXNldENoYXQiLCJzdG9wR2VuZXJhdGlvbiIsImlzRGlzYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmFkaXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0ZWQtb3B0aW9uYWwtY2hhaW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyB1c2VDaGF0TWVzc2FnZXMgfSBmcm9tICcuLi91c2VDaGF0TWVzc2FnZXMnXG5pbXBvcnQgeyB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VPcHRpb25zLCBVc2VDaGF0TWFuYWdlclByb3BzIH0gZnJvbSAnLi91c2VDaGF0TWFuYWdlci5pbnRlcmZhY2UnXG5pbXBvcnQgeyB1c2VVc2VyLCBDT1JVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uL3VzZUV2ZW50J1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZVVzZXIsIENoYXRIaXN0b3J5Um9sZSwgQXBwcm92YWxSZXF1ZXN0LCBQZW5kaW5nQWN0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBmZXRjaEFnZW50RGV0YWlsIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZmV0Y2hBZ2VudERldGFpbCdcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuY29uc3Qgbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzID0gKGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudHNPck9wdGlvbnMpID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXR0YWNobWVudHNPck9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHsgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzT3JPcHRpb25zLCBvcHRpb25zOiB7fSBhcyBTZW5kTWVzc2FnZU9wdGlvbnMgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gYXR0YWNobWVudHNPck9wdGlvbnMgPz8ge31cbiAgcmV0dXJuIHsgYXR0YWNobWVudHM6IG9wdGlvbnMuYXR0YWNobWVudHMgPz8gW10sIG9wdGlvbnMgfVxufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogw5psdGltbyByZWN1cnNvIHNpIG5vIGhheSBsaW5rcyBuaSB0b29sX2FyZ3MgcGFyc2VhYmxlcyAocC4gZWouIFwiSUQgKio3NTk3MTA2KipcIikuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCBsYWJlbGVkID0gdGV4dC5tYXRjaCgvXFxiSURcXHMqXFwqXFwqKFxcZCspXFwqXFwqL2kpXG4gIGlmIChsYWJlbGVkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGxhYmVsZWRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIGNvbnN0IGJvbGQgPSB0ZXh0Lm1hdGNoKC9cXCpcXCooXFxkezUsfSlcXCpcXCovKVxuICBpZiAoYm9sZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChib2xkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBwYXJzZVNTRUxpbmUgPSAobGluZTogc3RyaW5nKTogeyBldmVudFR5cGU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gIGlmICghbGluZS50cmltKCkpIHJldHVybiBudWxsXG5cbiAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcbiAgICByZXR1cm4geyBldmVudFR5cGUsIGRhdGEgfVxuICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgcHJvY2Vzc1NTRVN0cmVhbSA9IGFzeW5jIChcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICB0aHJlYWRJZDogc3RyaW5nLFxuICBjYWxsYmFja3M6IHtcbiAgICBvblRva2VuOiAoY29udGVudDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25Ob2RlOiAobWVzc2FnZTogc3RyaW5nLCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25Db21wbGV0ZTogKFxuICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICBzb3VyY2VzOiBhbnksXG4gICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICkgPT4gdm9pZFxuICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkPzogKGFwcHJvdmFsOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICB9XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGlzU3RyZWFtQ29tcGxldGUgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUxpbmUobGluZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTU0VMaW5lKGxpbmUpXG4gICAgaWYgKCFwYXJzZWQpIHJldHVyblxuXG4gICAgY29uc3QgeyBldmVudFR5cGUsIGRhdGEgfSA9IHBhcnNlZFxuICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuICAgIGlmIChldmVudFR5cGUgPT09ICd0b2tlbicpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBldmVudERhdGEuY29udGVudCBhcyBzdHJpbmdcbiAgICAgIGFjY3VtdWxhdGVkQ29udGVudCArPSBjb250ZW50XG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdub2RlJykge1xuICAgICAgaWYgKGV2ZW50RGF0YS5tZXNzYWdlICYmIHR5cGVvZiBldmVudERhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShldmVudERhdGEubWVzc2FnZSwgdGhyZWFkSWQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChldmVudERhdGEuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgY29uc3Qgc291cmNlcyA9IChldmVudERhdGEuc291cmNlcyBhcyB1bmtub3duKSB8fCBudWxsXG4gICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdF9yZXBseSlcbiAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW10pXG4gICAgICAgIDogQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdGlvbnMpXG4gICAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGV2ZW50RGF0YS5hZ2VudF9pZCA/PyBldmVudERhdGEuYWdlbnRJZFxuICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9IGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgdGhyZWFkSWQsIHN1Z2dlc3Rpb25zLCBjb21wbGV0ZWRBZ2VudElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnKSB7XG4gICAgICBjYWxsYmFja3Mub25BcHByb3ZhbFJlcXVpcmVkPy4oZXZlbnREYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQsIHRocmVhZElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnZXJyb3InKSB7XG4gICAgICBjYWxsYmFja3Mub25FcnJvcihldmVudERhdGEuZXJyb3IsIHRocmVhZElkKVxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghaXNTdHJlYW1Db21wbGV0ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgIGlmIChkb25lKSB7XG4gICAgICBpc1N0cmVhbUNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIGFnZW50LFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBjdXJyZW50VXNlciB9ID0gdXNlU3RhYmxlQ2FsbGJhY2tzKGF1dGhVc2VyKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG4gIGNvbnN0IGN1cnJlbnRNZXNzYWdlSWQgPSB1c2VSZWYodXVpZHY0KCkpXG4gIGNvbnN0IGN1cnJlbnRVc2VyUXVlc3Rpb24gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY3VycmVudENoYXRJZCA9IHVzZVJlZihpbml0aWFsQ2hhdElkIHx8IHV1aWR2NCgpKVxuICBjb25zdCByZXBvcnRlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxDaGF0TWVzc2FnZVtdPihbXSlcbiAgY29uc3QgaXNQcm9jZXNzaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBmaXJzdFRpbWVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IFthY3RpdmVMb2FkaW5ncywgc2V0QWN0aXZlTG9hZGluZ3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG5cbiAgY29uc3QgaXNXZWJTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc0RlZXBTZWFyY2hBY3RpdmUpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgY29uc3QgeyBsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIGxvYWRNZXNzYWdlcywgYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgaGFuZGxlU2Nyb2xsIH0gPVxuICAgIHVzZUNoYXRNZXNzYWdlcyh7XG4gICAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgICBvbkVycm9yLFxuICAgICAgYWdlbnRzLFxuICAgIH0pXG5cbiAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCB7XG4gICAgICBkZXRhaWw6IHsgbG9hZGluZ01lc3NhZ2VzIH0sXG4gICAgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICB9LCBbbG9hZGluZ01lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbml0aWFsQ2hhdElkICYmIGluaXRpYWxDaGF0SWQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgLy8gTGltcGlhciBjb250ZXh0byBnbG9iYWwgYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuXG4gICAgICBsb2FkTWVzc2FnZXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxDaGF0SWQsIHByb2plY3QsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0Q2hpcHNQcm9qZWN0LCBsb2FkTWVzc2FnZXNdKVxuXG4gIC8vIFNpbmNyb25pemFyIGNoaXBzUHJvamVjdCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBwcm9qZWN0SWQgcGVybyBjaGlwc1Byb2plY3Qgbm8gc2UgaGEgc2V0ZWFkb1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGlwc1Byb2plY3QgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aFByb2plY3QgPSBtZXNzYWdlcy5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgIGNvbnN0IHsgcHJvamVjdElkLCBwcm9qZWN0TmFtZSB9ID0gbGFzdE1zZ1dpdGhQcm9qZWN0IHx8IHt9XG4gICAgaWYgKCFwcm9qZWN0SWQpIHJldHVyblxuXG4gICAgZmV0Y2hQcm9qZWN0cyhwcm9qZWN0SWQpLnRoZW4ocHJvamVjdHMgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gTnVtYmVyKHByb2plY3RJZCkpXG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmQubmFtZSxcbiAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZC5jbGllbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmQuaWQpLFxuICAgICAgICB9KVxuICAgICAgICBzZXRQcm9qZWN0KGZvdW5kKVxuICAgICAgfSBlbHNlIGlmIChwcm9qZWN0TmFtZSkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6ICcnLFxuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoeyBpZDogTnVtYmVyKHByb2plY3RJZCksIG5hbWU6IHByb2plY3ROYW1lIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW21lc3NhZ2VzLCBjaGlwc1Byb2plY3QsIGxvYWRpbmdNZXNzYWdlcywgZmV0Y2hQcm9qZWN0cywgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0XSlcblxuICAvLyBTaW5jcm9uaXphciBjbGllbnQgY3VhbmRvIGhheSBtZW5zYWplcyBjb24gY2xpZW50SWQgcGVybyBjbGllbnQgbm8gc2UgaGEgc2V0ZWFkb1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjbGllbnQgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aENsaWVudCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLmNsaWVudElkICE9IG51bGwgJiYgbXNnLmNsaWVudE5hbWUpLmF0KC0xKVxuICAgIGNvbnN0IHsgY2xpZW50SWQ6IG1zZ0NsaWVudElkLCBjbGllbnROYW1lOiBtc2dDbGllbnROYW1lIH0gPSBsYXN0TXNnV2l0aENsaWVudCB8fCB7fVxuICAgIGlmIChtc2dDbGllbnRJZCA9PSBudWxsIHx8ICFtc2dDbGllbnROYW1lKSByZXR1cm5cblxuICAgIHNldENsaWVudD8uKHsgaWQ6IE51bWJlcihtc2dDbGllbnRJZCksIG5hbWU6IG1zZ0NsaWVudE5hbWUgfSlcbiAgfSwgW21lc3NhZ2VzLCBjbGllbnQsIGxvYWRpbmdNZXNzYWdlcywgc2V0Q2xpZW50XSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChlcnJvck1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICBlcnJvck1lc3NhZ2UgPT09IFwiQWNjZXNzIGRlbmllZDogWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBhZ2VudFwiXG4gICAgICAgICAgPyB0KCdjaGF0LmVycm9yQWNjZXNzRGVuaWVkJylcbiAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IHRlbXBNZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2U6IGNvbnRlbnQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1GaW5pc2ggPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgICBzb3VyY2VzOiBhbnksXG4gICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBjb25zdCBUQVNLX0NSRUFUSU9OX1RPT0xTID0gWydjcmVhdGVfdGFzaycsICdjcmVhdGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgVEFTS19FRElUX1RPT0xTID0gW1xuICAgICAgICAnZWRpdF90YXNrJyxcbiAgICAgICAgJ2VkaXRfdGFza3NfYmF0Y2gnLFxuICAgICAgICAndGFza19hc3NpZ24nLFxuICAgICAgICAndGFza191bmFzc2lnbicsXG4gICAgICAgICd1cGRhdGVfdGFza190eXBlJyxcbiAgICAgICAgJ3VwZGF0ZV9lc3RpbWF0ZWRfaG91cnMnLFxuICAgICAgICAnYXNzaWduX3Rhc2tfbGFiZWwnLFxuICAgICAgXVxuICAgICAgY29uc3QgVEFTS19ERUxFVEVfVE9PTFMgPSBbJ2RlbGV0ZV90YXNrJywgJ2RlbGV0ZV90YXNrc19iYXRjaCddXG4gICAgICBjb25zdCBwZW5kaW5nQWN0aW9ucyA9IHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucyB8fCBbXVxuICAgICAgY29uc3Qgd2FzVGFza0NyZWF0aW9uID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19DUkVBVElPTl9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tFZGl0ID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJiBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0RlbGV0ZSA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfREVMRVRFX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2NyZWF0ZV9hZ2VudCcpXG4gICAgICBsZXQgY3JlYXRlQWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpKSB7XG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFza0lkc0Zyb21VcmxzID0gbWF0Y2hlcy5tYXAobWF0Y2ggPT4gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSlcbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwgPSBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0ID1cbiAgICAgICAgd2FzVGFza0RlbGV0ZSAmJiB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID09PSAwICYmIHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID09PSAwXG4gICAgICAgICAgPyBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQoY29udGVudClcbiAgICAgICAgICA6IFtdXG4gICAgICBjb25zdCB0YXNrSWRzRm9yRGFzaGJvYXJkID1cbiAgICAgICAgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRhc2tJZHNGcm9tVXJsc1xuICAgICAgICAgIDogdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWxcbiAgICAgICAgICAgIDogdGFza0lkc0Zyb21EZWxldGlvblRleHRcblxuICAgICAgY29uc3Qgc2hvdWxkU3luY0Rhc2hib2FyZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgKHdhc1Rhc2tDcmVhdGlvbiB8fCB3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlKSAmJlxuICAgICAgICB0YXNrSWRzRm9yRGFzaGJvYXJkLmxlbmd0aCA+IDBcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gZGVwdXJhY2nDs24gc2luY3Jvbml6YWNpw7NuIGRhc2hib2FyZCAvIHdlYlxuICAgICAgY29uc29sZS5sb2coJ1t1c2VDaGF0TWFuYWdlcl0gaGFuZGxlU3RyZWFtRmluaXNoIGRhc2hib2FyZCBnYXRlJywge1xuICAgICAgICB1cmxNYXRjaENvdW50OiBtYXRjaGVzLmxlbmd0aCxcbiAgICAgICAgdGFza0lkc0Zyb21VcmxzLFxuICAgICAgICB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLFxuICAgICAgICB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCxcbiAgICAgICAgdGFza0lkc0ZvckRhc2hib2FyZCxcbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSxcbiAgICAgICAgd2FzVGFza0NyZWF0aW9uLFxuICAgICAgICB3YXNUYXNrRWRpdCxcbiAgICAgICAgd2FzVGFza0RlbGV0ZSxcbiAgICAgICAgc2hvdWxkU3luY0Rhc2hib2FyZCxcbiAgICAgICAgY29udGVudFNuaXBwZXQ6IGNvbnRlbnQubGVuZ3RoID4gMjIwID8gYCR7Y29udGVudC5zbGljZSgwLCAyMjApfeKApmAgOiBjb250ZW50LFxuICAgICAgfSlcblxuICAgICAgaWYgKHNob3VsZFN5bmNEYXNoYm9hcmQpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IHRhc2tJZHNGb3JEYXNoYm9hcmRcbiAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICAgIGNvbnRlbnRUb0FkZCA9IGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFByb2plY3RNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkUmF3ID0gcHJvamVjdD8uaWQgfHwgbGFzdFByb2plY3RNZXNzYWdlPy5wcm9qZWN0SWRcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvcHJvamVjdHNcXC8oXFxkKylcXC8vKVxuICAgICAgICBjb25zdCByb3V0ZVByb2plY3RJZCA9IHBhdGhNYXRjaCA/IHBhcnNlSW50KHBhdGhNYXRjaFsxXSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBpc09uUHJvamVjdFJvdXRlID0gY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZFxuICAgICAgICBsZXQgZGFzaGJvYXJkTWV0aG9kczoge1xuICAgICAgICAgIGFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkOiBzdHJpbmdcbiAgICAgICAgICBlZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ6IHN0cmluZ1xuICAgICAgICAgIGRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ6IHN0cmluZ1xuICAgICAgICB9IHwgbnVsbCA9IG51bGxcbiAgICAgICAgaWYgKHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkKSB7XG4gICAgICAgICAgZGFzaGJvYXJkTWV0aG9kcyA9IHtcbiAgICAgICAgICAgIGFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkOiB0eXBlb2Ygd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQuYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQsXG4gICAgICAgICAgICBlZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ6IHR5cGVvZiB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZC5lZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQsXG4gICAgICAgICAgICBkZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkOiB0eXBlb2Ygd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQuZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZCxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gZGVwdXJhY2nDs24gc2luY3Jvbml6YWNpw7NuIGRhc2hib2FyZCAvIHdlYlxuICAgICAgICBjb25zb2xlLmxvZygnW3VzZUNoYXRNYW5hZ2VyXSBEYXNoYm9hcmQgc3luYyBjb25kaXRpb25zJywge1xuICAgICAgICAgIHRhc2tJZHMsXG4gICAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSxcbiAgICAgICAgICB3YXNUYXNrQ3JlYXRpb24sXG4gICAgICAgICAgd2FzVGFza0VkaXQsXG4gICAgICAgICAgd2FzVGFza0RlbGV0ZSxcbiAgICAgICAgICBjb250ZXh0UHJvamVjdElkLFxuICAgICAgICAgIHJvdXRlUHJvamVjdElkLFxuICAgICAgICAgIGlzT25Qcm9qZWN0Um91dGUsXG4gICAgICAgICAgaGFzRGFzaGJvYXJkQnJpZGdlOiAhIXdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkLFxuICAgICAgICAgIGF2YWlsYWJsZURhc2hib2FyZE1ldGhvZHM6IGRhc2hib2FyZE1ldGhvZHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGlzT25Qcm9qZWN0Um91dGUpIHtcbiAgICAgICAgICBpZiAod2FzVGFza0NyZWF0aW9uKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBkZXB1cmFjacOzbiBzaW5jcm9uaXphY2nDs24gZGFzaGJvYXJkIC8gd2ViXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW3VzZUNoYXRNYW5hZ2VyXSBDYWxsaW5nIGFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkJywgeyB0YXNrSWRzIH0pXG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0VkaXQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIGRlcHVyYWNpw7NuIHNpbmNyb25pemFjacOzbiBkYXNoYm9hcmQgLyB3ZWJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdXNlQ2hhdE1hbmFnZXJdIENhbGxpbmcgZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkJywgeyB0YXNrSWRzIH0pXG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc1Rhc2tEZWxldGUpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIGRlcHVyYWNpw7NuIHNpbmNyb25pemFjacOzbiBkYXNoYm9hcmQgLyB3ZWJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdXNlQ2hhdE1hbmFnZXJdIENhbGxpbmcgZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZCcsIHsgdGFza0lkcyB9KVxuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBkZXB1cmFjacOzbiBzaW5jcm9uaXphY2nDs24gZGFzaGJvYXJkIC8gd2ViXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW3VzZUNoYXRNYW5hZ2VyXSBObyBkYXNoYm9hcmQgc3luYyBhY3Rpb24gbWF0Y2hlZCcsIHsgcGVuZGluZ0FjdGlvbnMgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gZGVwdXJhY2nDs24gc2luY3Jvbml6YWNpw7NuIGRhc2hib2FyZCAvIHdlYlxuICAgICAgICAgIGNvbnNvbGUud2FybignW3VzZUNoYXRNYW5hZ2VyXSBEYXNoYm9hcmQgc3luYyBza2lwcGVkOiBub3Qgb24gbWF0Y2hpbmcgcHJvamVjdCByb3V0ZScsIHtcbiAgICAgICAgICAgIGNvbnRleHRQcm9qZWN0SWQsXG4gICAgICAgICAgICByb3V0ZVByb2plY3RJZCxcbiAgICAgICAgICAgIHBhdGhuYW1lOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMgfHwgW10sXG4gICAgICAgIC4uLihjcmVhdGVBZ2VudEZvbGxvd1VwID8geyBjcmVhdGVBZ2VudEZvbGxvd1VwIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBpZiAoY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGNyZWF0ZUFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyBhw7FhZGlyIGVsIGFnZW50ZSByZWNpw6luIGNyZWFkbyBhbCBsaXN0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlmIChmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHByb2plY3QsIGdldFRhYlRhc2tEZWZhdWx0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtU3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhZGRNZXNzYWdlKHtcbiAgICAgIGlkOiBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1jYW5jZWxsZWRgLFxuICAgICAgbWVzc2FnZTogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkOiB0cnVlLFxuICAgIH0pXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgIH0sIDUwMClcbiAgfSwgW2FkZE1lc3NhZ2UsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQgPSB1c2VDYWxsYmFjayhcbiAgICAoYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIC8vIEFkZCBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXBwcm92YWwgcmVxdWVzdFxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2VdXG4gIClcblxuICBjb25zdCB7XG4gICAgYXNrTWFpYSxcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgfSA9IHVzZU9yY2hlc3RyYXRvclN0cmVhbSh7XG4gICAgb25FcnJvcjogaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgb25TdHJlYW1VcGRhdGU6IGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICBvbkZpbmlzaFN0cmVhbTogaGFuZGxlU3RyZWFtRmluaXNoLFxuICAgIG9uU3RvcDogaGFuZGxlU3RyZWFtU3RvcCxcbiAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gIH0pXG5cbiAgY29uc3QgY3VycmVudFByb2plY3QgPSBwcm9qZWN0XG5cbiAgY29uc3Qgc2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnMsXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgfHwgd2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBhdHRhY2htZW50cywgb3B0aW9ucyB9ID0gbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzKGF0dGFjaG1lbnRzT3JPcHRpb25zKVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG1lc3NhZ2VcblxuICAgICAgaWYgKCFyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQpXG4gICAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGNvbnRleHRvIGdsb2JhbCBlc3TDoSBkZXNhY3R1YWxpemFkb1xuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcblxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gbWVzc2FnZXNSZWYuY3VycmVudD8uW21lc3NhZ2VzUmVmLmN1cnJlbnQubGVuZ3RoIC0gMV0/LmFnZW50SWRcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgcXVlc3Rpb24tJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5VU0VSLFxuICAgICAgICBzb3VyY2VzOiBhdHRhY2htZW50cyxcbiAgICAgIH0pXG5cbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBsZXQgZmluYWxNZXNzYWdlID0gbWVzc2FnZVxuXG4gICAgICBpZiAobWVzc2FnZSA9PT0gdCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJykpIHtcbiAgICAgICAgZmluYWxNZXNzYWdlID0gYEZBUTogJHt0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKX0gLSBUaXBvIGRlIHJlbnRhYmlsaWRhZDogJHtcbiAgICAgICAgICBvcHRpb25zLnByb2plY3RDaGFuZ2VkPy5pbmNvbWVUeXBlIHx8IHByb2plY3Q/LmluY29tZVR5cGVcbiAgICAgICAgfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgLy8gVmVyaWZpY2FyIGNvbnNpc3RlbmNpYSBlbnRyZSBjb250ZXh0byBnbG9iYWwgeSDDumx0aW1vIG1lbnNhamVcbiAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBwcm9qZWN0Py5pZFxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcblxuICAgICAgbGV0IHByb2plY3RUb1JlcXVlc3Q6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgICAgIC8vIFNpIGhheSDDumx0aW1vIG1lbnNhamUgY29uIHByb2plY3RJZCwgdXNhcmxvIChtw6FzIGNvbmZpYWJsZSlcbiAgICAgIGlmIChsYXN0TWVzc2FnZVByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICAgICAgcHJvamVjdFRvUmVxdWVzdCA9IE51bWJlci5pc0Zpbml0ZShwYXJzZWQpID8gcGFyc2VkIDogbnVsbFxuICAgICAgfVxuICAgICAgLy8gU2kgbm8gaGF5IMO6bHRpbW8gbWVuc2FqZSwgdXNhciBlbCBjb250ZXh0byBnbG9iYWxcbiAgICAgIGVsc2UgaWYgKGNvbnRleHRQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gY29udGV4dFByb2plY3RJZFxuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihjbGllbnQ/LmlkXG4gICAgICAgICAgPyB7IGNsaWVudElkOiBjbGllbnQuaWQsIC4uLihjbGllbnQubmFtZSA/IHsgY2xpZW50TmFtZTogY2xpZW50Lm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiBwcm9qZWN0Py5jbGllbnQ/LmlkXG4gICAgICAgICAgICA/IHsgY2xpZW50SWQ6IHByb2plY3QuY2xpZW50LmlkLCAuLi4ocHJvamVjdC5jbGllbnQubmFtZSA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4ocHJvamVjdHM/Lmxlbmd0aCA/IHsgcHJvamVjdE5hbWU6IHByb2plY3RzWzBdLm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRmFxSWQgPyB7IGZhcUlkOiBwYXlsb2FkRmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICB9XG5cbiAgICAgIGFza01haWEocGF5bG9hZERhdGEpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZGRNZXNzYWdlLFxuICAgICAgZXZlbnQsXG4gICAgICBhc2tNYWlhLFxuICAgICAgcHJvamVjdCxcbiAgICAgIGNsaWVudCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmUsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGFsZ3VubyBkZSBlc3RvcyB0aHJlYWRJZHMgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1lc3NhZ2VXaXRoQXBwcm92YWwgfHwgIW1lc3NhZ2VXaXRoQXBwcm92YWwuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG4gICAgICAvLyBVc2UgZmlyc3QgdGhyZWFkSWQgYXMgdGhlIGxvYWRpbmcga2V5XG4gICAgICBjb25zdCBsb2FkaW5nS2V5ID0gdGhyZWFkSWRzWzBdXG4gICAgICAvLyBVcGRhdGUgbWVzc2FnZSBzdGF0dXMgaW1tZWRpYXRlbHlcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IG1lc3NhZ2VJZCkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VyIHJlLXJlbmRlclxuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT4gbS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgYWRkTWVzc2FnZSh7IC4uLmV4aXN0aW5nTWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIEFMTCB0aHJlYWRfaWRzIGluIGEgc2luZ2xlIHJlcXVlc3RcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgLy8gQWRkIGxvYWRpbmdcbiAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2xvYWRpbmdLZXldOiB0KCdjaGF0LnByb2Nlc3NpbmcnKSxcbiAgICAgIH0pKVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKHtcbiAgICAgICAgICB0aHJlYWRJZHMsIC8vIFNlbmQgYWxsIGFjdGlvbiB0aHJlYWRfaWRzIGF0IG9uY2VcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbbG9hZGluZ0tleV1cbiAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBzdHJlYW1cbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgbG9hZGluZ0tleSwge1xuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlNc2cgPSBtZXNzYWdlLmluY2x1ZGVzKCdjcmVhdGVfdGFzaycpID8gbWVzc2FnZSA6IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJylcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJlbnRUaHJlYWRJZF06IGRpc3BsYXlNc2csXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ29tcGxldGU6IChcbiAgICAgICAgICAgIGZpbmFsQ29udGVudDogc3RyaW5nLFxuICAgICAgICAgICAgc291cmNlczogYW55LFxuICAgICAgICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgc3VnZ2VzdGlvbnMsIGFnZW50SWQpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IChhcHByb3ZhbFBheWxvYWQ6IGFueSwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAvLyBOZXcgSElUTCBpbnRlcnJ1cHRpb24gZGV0ZWN0ZWQgYWZ0ZXIgcmVzdW1lIChjaGFpbmVkIGFjdGlvbnMpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGFwcHJvdmFsUGF5bG9hZCBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGVycm9yKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbbG9hZGluZ0tleV1cbiAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFthdXRoVXNlciwgYWdlbnQsIGFkZE1lc3NhZ2UsIGhhbmRsZVN0cmVhbUVycm9yLCBoYW5kbGVTdHJlYW1VcGRhdGUsIGhhbmRsZVN0cmVhbUZpbmlzaCwgaGFuZGxlQXBwcm92YWxSZXF1aXJlZF1cbiAgKVxuXG4gIGNvbnN0IGluaXRpYWxpemVDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoaW5pdGlhbENoYXRJZCkge1xuICAgICAgYXdhaXQgbG9hZE1lc3NhZ2VzKClcbiAgICB9IGVsc2UgaWYgKHVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgY29uc3QgaGFzSW5pdGlhbE1lc3NhZ2UgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlPy50cmltKCkpXG4gICAgICBjb25zdCBoYXNJbml0aWFsQXR0YWNobWVudHMgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEZhcSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0Py5pZCB8fCBudWxsLFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGNsaWVudD8uaWQgPyB7IGNsaWVudElkOiBjbGllbnQuaWQgfSA6IHByb2plY3Q/LmNsaWVudD8uaWQgPyB7IGNsaWVudElkOiBwcm9qZWN0LmNsaWVudC5pZCB9IDoge30pLFxuICAgICAgICAuLi4ocHJvamVjdD8ubmFtZSA/IHsgcHJvamVjdE5hbWU6IHByb2plY3QubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4ocHJvamVjdD8uY2xpZW50Py5uYW1lXG4gICAgICAgICAgPyB7IGNsaWVudE5hbWU6IHByb2plY3QuY2xpZW50Lm5hbWUgfVxuICAgICAgICAgIDogY2xpZW50Py5uYW1lXG4gICAgICAgICAgICA/IHsgY2xpZW50TmFtZTogY2xpZW50Lm5hbWUgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogdXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgaW5pdGlhbENoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgYXV0aFVzZXIsXG4gICAgYWdlbnQsXG4gICAgYXNrTWFpYSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gIF0pXG5cbiAgY29uc3QgcmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3RvcEdlbmVyYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcFN0cmVhbWluZygpXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbc3RvcFN0cmVhbWluZ10pXG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlcyxcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgYWN0aXZlTG9hZGluZ3MsXG4gICAgY3VycmVudFByb2plY3QsXG4gICAgY3VycmVudENoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgIGN1cnJlbnRNZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcblxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgcmVzZXRDaGF0LFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuXG4gICAgaXNEaXNhYmxlZDogd2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlcyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsU0FBU0MsRUFBRSxJQUFJQyxNQUFNLFFBQVEsTUFBTTtBQUNuQyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUc5QixTQUFTQyxPQUFPLFFBQWlCLHdCQUF3QjtBQUN6RCxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0Ms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
|