@projectcor/maia-components 2.11.19 → 2.11.20-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +3 -2
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +6 -5
- package/lib/components/atoms/icons/MaiaStoreIcon.js +31 -0
- package/lib/components/atoms/icons/MyAgentsNavIcon.js +51 -0
- package/lib/components/atoms/icons/index.js +3 -1
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +24 -5
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +26 -61
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +98 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +67 -0
- package/lib/components/molecules/ChatAIHome/styles.js +34 -42
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +137 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +52 -4
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +43 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +37 -0
- package/lib/components/molecules/ChatAIMessages/newStyles.js +24 -21
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +161 -14
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +16 -41
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -13
- package/lib/components/molecules/ChatAIModal/constants.js +6 -2
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +326 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +168 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +162 -197
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +114 -0
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +13 -1
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +99 -52
- package/lib/hooks/index.js +4 -1
- package/lib/hooks/useAgentSuggestions.js +60 -0
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +105 -60
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +19 -7
- package/lib/lang/br/index.js +72 -9
- package/lib/lang/en/index.js +72 -9
- package/lib/lang/es/index.js +70 -7
- package/lib/lang/fr/index.js +56 -4
- package/lib/services/maia/Agents/fetchAgentDetail.js +122 -0
- package/lib/services/maia/Agents/getAgentById.js +9 -5
- package/lib/services/maia/Agents/getAgentSuggestions.js +44 -0
- package/lib/services/maia/Agents/getAgents.js +5 -8
- package/lib/services/maia/Orchestrator/orchestrator.js +29 -22
- package/lib/services/utils/mapChatMessages.js +2 -1
- package/lib/types/AgentSuggestion.js +2 -0
- package/lib/types/Chat.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/types/agentModal.js +1 -1
- package/package.json +1 -1
|
@@ -84,6 +84,54 @@ var validateFieldValues = function validateFieldValues(valueToValidate) {
|
|
|
84
84
|
}
|
|
85
85
|
return true;
|
|
86
86
|
};
|
|
87
|
+
|
|
88
|
+
/** Misma estructura que el efecto que hidrata desde useGetAgentById (todas las pestañas del ABM). */
|
|
89
|
+
function buildEditingModalValuesFromAgentDetail(agentById, agentModels, prev) {
|
|
90
|
+
var _agentById$knowledgeB, _agentById$clients;
|
|
91
|
+
var agentModel = agentModels.find(function (model) {
|
|
92
|
+
return model.id === agentById.modelAiId;
|
|
93
|
+
});
|
|
94
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
95
|
+
isEditing: true,
|
|
96
|
+
general: {
|
|
97
|
+
emoji: agentById.emoji,
|
|
98
|
+
name: agentById.name,
|
|
99
|
+
introduction: agentById.introduction,
|
|
100
|
+
inputPlaceholder: agentById.inputPlaceholder,
|
|
101
|
+
isActive: agentById.isActive,
|
|
102
|
+
aiModel: agentModel || null,
|
|
103
|
+
id: agentById.id,
|
|
104
|
+
userPrompt: agentById.userPrompt,
|
|
105
|
+
knowledgeBases: [],
|
|
106
|
+
is_favorite: agentById.is_favorite,
|
|
107
|
+
created_by: agentById.createdBy
|
|
108
|
+
},
|
|
109
|
+
knowledge: ((_agentById$knowledgeB = agentById.knowledgeBases) === null || _agentById$knowledgeB === void 0 ? void 0 : _agentById$knowledgeB.map(function (k) {
|
|
110
|
+
return {
|
|
111
|
+
file: new File([], k.filename),
|
|
112
|
+
id: k.id.toString(),
|
|
113
|
+
name: k.filename,
|
|
114
|
+
size: k.file_size_bytes || 0,
|
|
115
|
+
type: k.original_file_type,
|
|
116
|
+
status: k.status,
|
|
117
|
+
url_original: k.url_original || undefined,
|
|
118
|
+
url_thumbnail: k.url_thumbnail || undefined
|
|
119
|
+
};
|
|
120
|
+
})) || [],
|
|
121
|
+
accessibility: {
|
|
122
|
+
accessType: agentById.access,
|
|
123
|
+
clients: ((_agentById$clients = agentById.clients) === null || _agentById$clients === void 0 ? void 0 : _agentById$clients.map(function (client) {
|
|
124
|
+
var _client$id, _client$is_active, _client$is_deleted;
|
|
125
|
+
return {
|
|
126
|
+
id: ((_client$id = client.id) === null || _client$id === void 0 ? void 0 : _client$id.toString()) || '',
|
|
127
|
+
name: client.name,
|
|
128
|
+
is_active: (_client$is_active = client.is_active) !== null && _client$is_active !== void 0 ? _client$is_active : false,
|
|
129
|
+
is_deleted: (_client$is_deleted = client.is_deleted) !== null && _client$is_deleted !== void 0 ? _client$is_deleted : false
|
|
130
|
+
};
|
|
131
|
+
})) || null
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
87
135
|
export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
88
136
|
var _user$permissions, _modalValues$accessib2, _modalValues$general3, _modalValues$general4, _modalValues$general5, _modalValues$general6;
|
|
89
137
|
var addAgent = _ref.addAgent,
|
|
@@ -121,6 +169,8 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
121
169
|
});
|
|
122
170
|
var accessHandledRef = useRef(false);
|
|
123
171
|
var agentCreatedRef = useRef(null);
|
|
172
|
+
var pendingInitialSectionRef = useRef(null);
|
|
173
|
+
var prefetchedAgentByIdRef = useRef(null);
|
|
124
174
|
var filesFinishedRef = useRef(false);
|
|
125
175
|
var _useState3 = useState(0),
|
|
126
176
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
@@ -293,6 +343,8 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
293
343
|
setSection('general');
|
|
294
344
|
setIsOpen(false);
|
|
295
345
|
agentCreatedRef.current = null;
|
|
346
|
+
pendingInitialSectionRef.current = null;
|
|
347
|
+
prefetchedAgentByIdRef.current = null;
|
|
296
348
|
};
|
|
297
349
|
var handleBackdropClick = function handleBackdropClick(event) {
|
|
298
350
|
if (event.target === event.currentTarget && !isShowProcessFiles) {
|
|
@@ -392,8 +444,10 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
392
444
|
}();
|
|
393
445
|
useEffect(function () {
|
|
394
446
|
var handleSetAgentValues = function handleSetAgentValues(event) {
|
|
395
|
-
var _agentValues$values;
|
|
447
|
+
var _agentValues$values, _agentValues$values3;
|
|
396
448
|
var agentValues = event.detail.agentValues;
|
|
449
|
+
var initialSection = agentValues === null || agentValues === void 0 ? void 0 : agentValues.initialSection;
|
|
450
|
+
pendingInitialSectionRef.current = initialSection && ['general', 'knowledge', 'accessibility'].includes(initialSection) ? initialSection : null;
|
|
397
451
|
getAllAgentModels();
|
|
398
452
|
setIsOpen(true);
|
|
399
453
|
setIsLoading(true);
|
|
@@ -411,11 +465,31 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
411
465
|
handleSnackbarError(t('errorAccessDenied'));
|
|
412
466
|
setIsOpen(false);
|
|
413
467
|
setIsLoading(false);
|
|
468
|
+
pendingInitialSectionRef.current = null;
|
|
469
|
+
prefetchedAgentByIdRef.current = null;
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
if (agentValues.prefetchedAgentById) {
|
|
473
|
+
handleCleanAgent();
|
|
474
|
+
prefetchedAgentByIdRef.current = agentValues.prefetchedAgentById;
|
|
414
475
|
return;
|
|
415
476
|
}
|
|
416
477
|
handleGetAgentById(agentValues === null || agentValues === void 0 || (_agentValues$values2 = agentValues.values) === null || _agentValues$values2 === void 0 || (_agentValues$values2 = _agentValues$values2.general) === null || _agentValues$values2 === void 0 ? void 0 : _agentValues$values2.id);
|
|
417
478
|
return;
|
|
418
479
|
}
|
|
480
|
+
if (agentValues.values) {
|
|
481
|
+
var nextValues = _objectSpread(_objectSpread(_objectSpread({}, initialValues), agentValues.values), {}, {
|
|
482
|
+
general: _objectSpread(_objectSpread({}, initialValues.general), agentValues.values.general || {}),
|
|
483
|
+
accessibility: _objectSpread(_objectSpread({}, initialValues.accessibility), agentValues.values.accessibility || {}),
|
|
484
|
+
knowledge: agentValues.values.knowledge || []
|
|
485
|
+
});
|
|
486
|
+
firstValueAgent.current = nextValues;
|
|
487
|
+
setModalValues(nextValues);
|
|
488
|
+
}
|
|
489
|
+
if (pendingInitialSectionRef.current && !((_agentValues$values3 = agentValues.values) !== null && _agentValues$values3 !== void 0 && _agentValues$values3.isEditing)) {
|
|
490
|
+
setSection(pendingInitialSectionRef.current);
|
|
491
|
+
pendingInitialSectionRef.current = null;
|
|
492
|
+
}
|
|
419
493
|
setIsLoading(false);
|
|
420
494
|
};
|
|
421
495
|
document.addEventListener('abm-agent-modal-set-values', handleSetAgentValues);
|
|
@@ -1019,67 +1093,40 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
1019
1093
|
}
|
|
1020
1094
|
}, [isShowProcessFiles, isSubscribed, $_sc, agentById, successCreate]);
|
|
1021
1095
|
useEffect(function () {
|
|
1022
|
-
if (
|
|
1023
|
-
|
|
1024
|
-
|
|
1096
|
+
if (!isOpen || !agentModels.length) return;
|
|
1097
|
+
if (agentLoading && !prefetchedAgentByIdRef.current) return;
|
|
1098
|
+
var applyEditingAgent = function applyEditingAgent(source) {
|
|
1099
|
+
if (source.type !== 'custom' || !window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
|
|
1025
1100
|
handleSnackbarError(t('errorAccessDenied'));
|
|
1101
|
+
setIsLoading(false);
|
|
1026
1102
|
setTimeout(function () {
|
|
1027
1103
|
handleClose();
|
|
1028
1104
|
}, 3000);
|
|
1029
|
-
return;
|
|
1105
|
+
return false;
|
|
1030
1106
|
}
|
|
1031
1107
|
setModalValues(function (prev) {
|
|
1032
|
-
var
|
|
1033
|
-
var agentModel = agentModels.find(function (model) {
|
|
1034
|
-
return model.id === agentById.modelAiId;
|
|
1035
|
-
});
|
|
1036
|
-
var agentValuesToSet = _objectSpread(_objectSpread({}, prev), {}, {
|
|
1037
|
-
isEditing: true,
|
|
1038
|
-
general: {
|
|
1039
|
-
emoji: agentById.emoji,
|
|
1040
|
-
name: agentById.name,
|
|
1041
|
-
introduction: agentById.introduction,
|
|
1042
|
-
inputPlaceholder: agentById.inputPlaceholder,
|
|
1043
|
-
isActive: agentById.isActive,
|
|
1044
|
-
aiModel: agentModel || null,
|
|
1045
|
-
id: agentById.id,
|
|
1046
|
-
userPrompt: agentById.userPrompt,
|
|
1047
|
-
is_favorite: agentById.is_favorite,
|
|
1048
|
-
created_by: agentById.createdBy
|
|
1049
|
-
},
|
|
1050
|
-
knowledge: (_agentById$knowledgeB = agentById.knowledgeBases) === null || _agentById$knowledgeB === void 0 ? void 0 : _agentById$knowledgeB.map(function (k) {
|
|
1051
|
-
var mappedAttachment = {
|
|
1052
|
-
file: new File([], k.filename),
|
|
1053
|
-
id: k.id.toString(),
|
|
1054
|
-
name: k.filename,
|
|
1055
|
-
size: k.file_size_bytes || 0,
|
|
1056
|
-
type: k.original_file_type,
|
|
1057
|
-
status: k.status,
|
|
1058
|
-
url_original: k.url_original || undefined,
|
|
1059
|
-
url_thumbnail: k.url_thumbnail || undefined
|
|
1060
|
-
};
|
|
1061
|
-
return mappedAttachment;
|
|
1062
|
-
}),
|
|
1063
|
-
accessibility: {
|
|
1064
|
-
accessType: agentById.access,
|
|
1065
|
-
clients: ((_agentById$clients = agentById.clients) === null || _agentById$clients === void 0 ? void 0 : _agentById$clients.map(function (client) {
|
|
1066
|
-
var _client$id, _client$is_active, _client$is_deleted;
|
|
1067
|
-
return {
|
|
1068
|
-
id: ((_client$id = client.id) === null || _client$id === void 0 ? void 0 : _client$id.toString()) || '',
|
|
1069
|
-
name: client.name,
|
|
1070
|
-
is_active: (_client$is_active = client.is_active) !== null && _client$is_active !== void 0 ? _client$is_active : false,
|
|
1071
|
-
is_deleted: (_client$is_deleted = client.is_deleted) !== null && _client$is_deleted !== void 0 ? _client$is_deleted : false
|
|
1072
|
-
};
|
|
1073
|
-
})) || null
|
|
1074
|
-
}
|
|
1075
|
-
});
|
|
1108
|
+
var agentValuesToSet = buildEditingModalValuesFromAgentDetail(source, agentModels, prev);
|
|
1076
1109
|
firstValueAgent.current = agentValuesToSet;
|
|
1077
1110
|
return agentValuesToSet;
|
|
1078
1111
|
});
|
|
1079
1112
|
setIsLoading(false);
|
|
1113
|
+
if (pendingInitialSectionRef.current) {
|
|
1114
|
+
setSection(pendingInitialSectionRef.current);
|
|
1115
|
+
pendingInitialSectionRef.current = null;
|
|
1116
|
+
}
|
|
1117
|
+
return true;
|
|
1118
|
+
};
|
|
1119
|
+
var prefetched = prefetchedAgentByIdRef.current;
|
|
1120
|
+
if (prefetched) {
|
|
1121
|
+
prefetchedAgentByIdRef.current = null;
|
|
1122
|
+
applyEditingAgent(prefetched);
|
|
1123
|
+
return;
|
|
1124
|
+
}
|
|
1125
|
+
if (agentById && !agentLoading && agentModels.length) {
|
|
1126
|
+
applyEditingAgent(agentById);
|
|
1080
1127
|
return;
|
|
1081
1128
|
}
|
|
1082
|
-
if (
|
|
1129
|
+
if (!isLoading && !agentLoading && !agentById && !modalValues.isEditing) {
|
|
1083
1130
|
setModalValues(function (prev) {
|
|
1084
1131
|
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
1085
1132
|
general: _objectSpread(_objectSpread({}, prev.general), {}, {
|
|
@@ -1088,7 +1135,7 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
1088
1135
|
});
|
|
1089
1136
|
});
|
|
1090
1137
|
}
|
|
1091
|
-
}, [agentById, isOpen, isLoading, agentLoading, agentModels === null || agentModels === void 0 ? void 0 : agentModels.length]);
|
|
1138
|
+
}, [agentById, isOpen, isLoading, agentLoading, agentModels === null || agentModels === void 0 ? void 0 : agentModels.length, modalValues.isEditing, t]);
|
|
1092
1139
|
useEffect(function () {
|
|
1093
1140
|
if (errorGetAgentById) {
|
|
1094
1141
|
if (errorGetAgentById === "Access denied: You don't have permission to access this agent") {
|
|
@@ -1315,4 +1362,4 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
1315
1362
|
})]
|
|
1316
1363
|
}), selector);
|
|
1317
1364
|
};
|
|
1318
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJBYm1Lbm93bGVkZ2VTZWN0aW9uIiwiU0NBQU1Db250ZW50IiwiU0NBQU1Gb290ZXIiLCJTQ0FBTUhlYWRlciIsIlNDQUFNSGVhZGVyVGl0bGUiLCJTQ0FBTUhlYWRlckxlZnQiLCJTQ0FBTUhlYWRlckZhdm9yaXRlIiwiU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbiIsIlNDQUFNU2lkZWJhciIsIlNDQUFNV3JhcHBlciIsIlNDQUFNU2lkZWJhckl0ZW0iLCJTQ0FBTVNpZGViYXJJdGVtVGl0bGUiLCJTQ0FBTURlbGV0ZUJ1dHRvbiIsIlNDQUFNU2F2ZUJ1dHRvbiIsIlNDQUFNV3JhcHBlclNwaW5uZXIiLCJTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCIsIlNDQUFNU2lkZWJhckl0ZW1FcnJvciIsInVzZUNyZWF0ZUFnZW50IiwidXNlRGVsZXRlQWdlbnQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVXBkYXRlQWdlbnQiLCJ1c2VLbm93bGVkZ2VPcGVyYXRpb25zIiwiQWJtTG9hZGVyRmlsZXMiLCJXcmFwcGVyQ2VudGVySWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInVzZUFjY2Vzc0NsaWVudCIsInVzZVRvZ2dsZUZhdm9yaXRlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiaW5pdGlhbFZhbHVlcyIsIk9iamVjdCIsImZyZWV6ZSIsImlzRWRpdGluZyIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJuYW1lIiwiZW1vamkiLCJpbnRyb2R1Y3Rpb24iLCJpbnB1dFBsYWNlaG9sZGVyIiwiaXNBY3RpdmUiLCJhaU1vZGVsIiwiaWQiLCJ1c2VyUHJvbXB0Iiwia25vd2xlZGdlQmFzZXMiLCJpc19mYXZvcml0ZSIsImFjY2Vzc2liaWxpdHkiLCJhY2Nlc3NUeXBlIiwiY2xpZW50cyIsIlNlY3Rpb25CeUtleSIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsInZhbGlkYXRlRmllbGRWYWx1ZXMiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJBYm1BZ2VudE1vZGFsIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liMiIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsMyIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNSIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNiIsImFkZEFnZW50IiwidXBkYXRlQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwiY3VycmVudFNlbGVjdGVkQWdlbnQiLCJhZ2VudCIsInNlbGVjdEFnZW50IiwiX3VzZVRvZ2dsZUZhdm9yaXRlIiwidG9nZ2xlRmF2b3JpdGUiLCJzZWxlY3RvciIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc1N1YnNjcmliZWQiLCJzZXRJc1N1YnNjcmliZWQiLCJtb2RhbFJlZiIsImhhc1BlbmRpbmdGaWxlc1JlZiIsImFjdGlvbnNUb0ZpbGVzIiwidG9EZWxldGUiLCJ0b1VwbG9hZCIsImFjY2Vzc1VwZGF0ZUNvbnRleHQiLCJpc0Zyb21DcmVhdGlvbiIsImlzRnJvbUVkaXRpbmciLCJoYXNBY3Rpb25GaWxlcyIsIm9wZXJhdGlvblR5cGUiLCJoYXNCZWVuQ2FsbGVkIiwiYWNjZXNzSGFuZGxlZFJlZiIsImFnZW50Q3JlYXRlZFJlZiIsImZpbGVzRmluaXNoZWRSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZpbGVzUHJvY2Vzc2VkIiwic2V0RmlsZXNQcm9jZXNzZWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd01vZGFsRGVsZXRlIiwic2V0U2hvd01vZGFsRGVsZXRlIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzZWN0aW9uIiwic2V0U2VjdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJtb2RhbFZhbHVlcyIsInNldE1vZGFsVmFsdWVzIiwiX3VzZUdldEFnZW50QnlJZCIsImFnZW50TG9hZGluZyIsImxvYWRpbmciLCJoYW5kbGVHZXRBZ2VudEJ5SWQiLCJhZ2VudEJ5SWQiLCJoYW5kbGVDbGVhbkFnZW50IiwiZXJyb3JHZXRBZ2VudEJ5SWQiLCJlcnJvciIsIl91c2VBZ2VudE1vZGVsIiwiYWdlbnRNb2RlbHMiLCJnZXRBbGxBZ2VudE1vZGVscyIsImZpcnN0VmFsdWVBZ2VudCIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJpc1Nob3dQcm9jZXNzRmlsZXMiLCJzZXRJc1Nob3dQcm9jZXNzRmlsZXMiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaGFzRmlsZUVycm9ycyIsInNldEhhc0ZpbGVFcnJvcnMiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsIl91c2VEZWxldGVBZ2VudCIsImhhbmRsZURlbGV0ZUFnZW50Iiwic3VjY2Vzc0RlbGV0ZSIsInN1Y2Nlc3MiLCJyZXNldFN1Y2Nlc3MiLCJfdXNlVXBkYXRlQWdlbnQiLCJoYW5kbGVVcGRhdGVBZ2VudCIsInN1Y2Nlc3NVcGRhdGUiLCJyZXNldFN1Y2Nlc3NVcGRhdGUiLCJfdXNlQ3JlYXRlQWdlbnQiLCJoYW5kbGVDcmVhdGVBZ2VudCIsImlzTG9hZGluZ0NyZWF0ZSIsInN1Y2Nlc3NDcmVhdGUiLCJyZXNldFN1Y2Nlc3NDcmVhdGUiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VLbm93bGVkZ2VPcGVyYXRpbyIsImhhbmRsZUNyZWF0ZUtub3dsZWRnZXMiLCJoYW5kbGVEZWxldGVLbm93bGVkZ2VzIiwiaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyIsImlzTG9hZGluZ0tub3dsZWRnZSIsImVycm9yS25vd2xlZGdlIiwic3VjY2Vzc0tub3dsZWRnZURlbGV0ZSIsImhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUiLCJoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUiLCJfdXNlQWNjZXNzQ2xpZW50IiwiaGFuZGxlQWNjZXNzQ2xpZW50Iiwic3VjY2Vzc1VwZGF0ZUFjY2VzcyIsImlzTG9hZGluZ1VwZGF0ZUFjY2VzcyIsInJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyIsImhhbmRsZVJlc2V0U3VjY2VzcyIsImFyZUNsaWVudHNBcnJheXNFcXVhbCIsImNsaWVudHMxIiwiY2xpZW50czIiLCJsZW5ndGgiLCJjbGllbnRzMUlkcyIsIm1hcCIsImMiLCJjbGllbnRJZCIsInNvcnQiLCJjbGllbnRzMklkcyIsImV2ZXJ5IiwiaW5kZXgiLCJoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCIsIl9maXJzdFZhbHVlQWdlbnQkY3VyciIsImN1cnJlbnQiLCJhY2Nlc3NUeXBlU2FtZSIsImNsaWVudHNTYW1lIiwidmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjIiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCQiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIzIiwiX21vZGFsVmFsdWVzJGtub3dsZWRnIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNCIsIl9tb2RhbFZhbHVlcyRrbm93bGVkZzIiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI1IiwiX2FjdGlvbnNUb0ZpbGVzJGN1cnJlIiwiX2FjdGlvbnNUb0ZpbGVzJGN1cnJlMiIsInRvVXBkYXRlIiwiaGFzQW55VmFsdWVGb3JDcmVhdGlvbiIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsJDIiLCJfYWdlbnRNb2RlbHMkIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkMyIsImlzRGVmYXVsdEFpTW9kZWwiLCJkZWZhdWx0SW5wdXRQbGFjZWhvbGRlciIsImlzRGVmYXVsdElucHV0UGxhY2Vob2xkZXIiLCJkZWZhdWx0VXNlclByb21wdFBsYWNlaG9sZGVyIiwiaXNEZWZhdWx0VXNlclByb21wdCIsImhhc05hbWUiLCJ0cmltIiwiaGFzRW1vamkiLCJoYXNJbnRyb2R1Y3Rpb24iLCJoYXNJbnB1dFBsYWNlaG9sZGVyIiwiaGFzVXNlclByb21wdCIsImhhc0tub3dsZWRnZSIsImhhc0N1c3RvbUFpTW9kZWwiLCJoYXNBY2Nlc3NpYmlsaXR5IiwiaGFzQ2hhbmdlc0ZvckVkaXRpbmciLCJoYXNQZW5kaW5nQ2hhbmdlcyIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQiLCJhZ2VudElkIiwib25TdWNjZXNzIiwib25FcnJvciIsInVwZGF0ZWRBZ2VudCIsImhhbmRsZUNsb3NlIiwiY29uZmlybU1lc3NhZ2UiLCJ3aW5kb3ciLCJjb25maXJtIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImhhbmRsZVNlY3Rpb25DaGFuZ2UiLCJuZXdTZWN0aW9uIiwidGFiU2VjdGlvbiIsIm9wdGlvbiIsImhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzIiwiX3JlZjIiLCJrZXkiLCJ2YWx1ZSIsImRlbGV0ZUtub3dsZWRnZSIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZTMiLCJwdXNoIiwiYXBwbHkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJmaWxlc1ByZXZJZHMiLCJTZXQiLCJmaWxlIiwibmV3RmlsZXMiLCJmaWx0ZXIiLCJoYXMiLCJzdGF0dXMiLCJ2YWx1ZUlkcyIsImNvbmNhdCIsInByZXYiLCJrbm93bGVkZ2VGaWxlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY2hhdCIsImFjdGlvbiIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiYWJydXB0IiwiY29uZmlybUFjdGlvbiIsInN0b3AiLCJfeCIsIl94MiIsImFyZ3VtZW50cyIsImhhbmRsZVNldEFnZW50VmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlcyIsImFnZW50VmFsdWVzIiwiZGV0YWlsIiwidmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlczIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInVuZGVmaW5lZCIsIl9kb2N1bWVudCIsImJvZHkiLCJvcmlnaW5hbE92ZXJmbG93Iiwic3R5bGUiLCJvdmVyZmxvdyIsImhhbmRsZUJlZm9yZVVubG9hZCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJwcm9taXNlcyIsImZpbGVzVG9EZWxldGUiLCJmaWxlc1RvQ3JlYXRlIiwidG9TdHJpbmciLCJhZ2VudFdpdGhGYXZvcml0ZSIsImFnZW50Rm9yVG9nZ2xlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGwiLCJmaWxlcyIsImFpQ2hhdEZhdm9yaXRlIiwiZmlsZXNUb1VwbG9hZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsIndlYlNvY2tldEZ1bmN0aW9uIiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwiZmlsZVN0YXR1cyIsInVwZGF0ZWRLbm93bGVkZ2UiLCJmaWxlbmFtZSIsImtub3dsZWRnZV9iYXNlX2lkIiwiaGFzUGVuZGluZ0ZpbGVzIiwic29tZSIsImhhc0Vycm9yRmlsZXMiLCJwcmV2Q291bnQiLCJjb250ZXh0IiwiYWdlbnRUb0FkZCIsIl9zdWNjZXNzQ3JlYXRlJGlkIiwiY2hhbm5lbCIsIiRfc2MiLCJfJF9zYyIsInN1YnNjcmliZUhhbmRsZXIiLCJfJF9zYzIiLCJfJF9zYzMiLCJfJF9zYyRjaGFubmVsVHlwZSIsIm1vZGVsX2hhc2giLCJhY3Rpb25UeXBlIiwiU1VCU0NSSUJFIiwidXBkYXRlQ29ubmVjdGlvbk1vZGVsIiwiY2hhbm5lbFR5cGUiLCJNT0RFTF9DSEFOTkVMIiwidHlwZSIsInNldFRpbWVvdXQiLCJfYWdlbnRCeUlkJGtub3dsZWRnZUIiLCJfYWdlbnRCeUlkJGNsaWVudHMiLCJhZ2VudE1vZGVsIiwiZmluZCIsIm1vZGVsIiwibW9kZWxBaUlkIiwiYWdlbnRWYWx1ZXNUb1NldCIsImNyZWF0ZWRfYnkiLCJjcmVhdGVkQnkiLCJrIiwibWFwcGVkQXR0YWNobWVudCIsIkZpbGUiLCJzaXplIiwiZmlsZV9zaXplX2J5dGVzIiwib3JpZ2luYWxfZmlsZV90eXBlIiwidXJsX29yaWdpbmFsIiwidXJsX3RodW1ibmFpbCIsImFjY2VzcyIsImNsaWVudCIsIl9jbGllbnQkaWQiLCJfY2xpZW50JGlzX2FjdGl2ZSIsIl9jbGllbnQkaXNfZGVsZXRlZCIsImlzX2FjdGl2ZSIsImlzX2RlbGV0ZWQiLCJzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIiLCJoYW5kbGVUb2dnbGVGYXZvcml0ZSIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwyIiwiY3JlYXRlIiwiZWRpdCIsInpJbmRleCIsIm9uQ2xpY2siLCJjaGlsZHJlbiIsInJlZiIsInRhYkluZGV4IiwiY29sb3IiLCJhdHRhY2htZW50cyIsImxhYmVsIiwidGl0bGUiLCJ3aWR0aCIsImhlaWdodCIsImZpbGwiLCJ2YXJpYW50IiwiY2xhc3NOYW1lIiwiY2FuY2VsTW9kYWwiLCJkaXNhYmxlZCIsImhhc1Njcm9sbCIsImV4aXN0aW5nS25vd2xlZGdlIiwibmV3S25vd2xlZGdlIiwib25SZW1vdmVFeGlzdGluZ0tub3dsZWRnZSIsIm9uUmVtb3ZlTmV3S25vd2xlZGdlIiwib25GaWxlRXJyb3JDaGFuZ2UiLCJjaGlsZHJlbldpdGhJY29uIiwiZGlzcGxheSIsImdhcCIsImlzRGlzYWJsZWQiLCJvbkNsb3NlIiwiaGFuZGxlcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hbGVydCAqL1xuLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWN5Y2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2F0ZWdvcnknXG5pbXBvcnQgeyBBbGVydCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0FsZXJ0J1xuaW1wb3J0IHsgVHJhc2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9UcmFzaCdcbmltcG9ydCB7IFN0YXIgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9TdGFyJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IFNwaW5uZXJMb3R0aWUgfSBmcm9tICdAcHJvamVjdGNvci9jb3ItY29tbW9ucy9saWIvY29tcG9uZW50cy9zcGlubmVyLWxvdHRpZSdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0FibVNlY3Rpb24vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24nXG5pbXBvcnQgeyBCYWNrZHJvcCB9IGZyb20gJy4uLy4uL2F0b21zL0JhY2tkcm9wJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5SWNvbiwgQnJhaW5JY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyB1c2VBZ2VudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VBZ2VudE1vZGVsJ1xuaW1wb3J0IHsgQWdlbnQsIEFnZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IHVzZUdldEFnZW50QnlJZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50QnlJZCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IEFibUdlbmVyYWxTZWN0aW9uLCBBYm1Lbm93bGVkZ2VTZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0FibVNlY3Rpb24nXG5pbXBvcnQgeyBNb2RhbFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50TW9kYWwnXG5pbXBvcnQge1xuICBTQ0FBTUNvbnRlbnQsXG4gIFNDQUFNRm9vdGVyLFxuICBTQ0FBTUhlYWRlcixcbiAgU0NBQU1IZWFkZXJUaXRsZSxcbiAgU0NBQU1IZWFkZXJMZWZ0LFxuICBTQ0FBTUhlYWRlckZhdm9yaXRlLFxuICBTQ0FBTUhlYWRlckNsb3NlQnV0dG9uLFxuICBTQ0FBTVNpZGViYXIsXG4gIFNDQUFNV3JhcHBlcixcbiAgU0NBQU1TaWRlYmFySXRlbSxcbiAgU0NBQU1TaWRlYmFySXRlbVRpdGxlLFxuICBTQ0FBTURlbGV0ZUJ1dHRvbixcbiAgU0NBQU1TYXZlQnV0dG9uLFxuICBTQ0FBTVdyYXBwZXJTcGlubmVyLFxuICBTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCxcbiAgU0NBQU1TaWRlYmFySXRlbUVycm9yLFxufSBmcm9tICcuL0FibUFnZW50TW9kYWwuc3R5bGVzJ1xuaW1wb3J0IHsgdXNlQ3JlYXRlQWdlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZUNyZWF0ZUFnZW50J1xuaW1wb3J0IHsgdXNlRGVsZXRlQWdlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZURlbGV0ZUFnZW50J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVXBkYXRlQWdlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZVVwZGF0ZUFnZW50J1xuaW1wb3J0IHsgdXNlS25vd2xlZGdlT3BlcmF0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUtub3dsZWRnZSdcbmltcG9ydCB7IEFibUxvYWRlckZpbGVzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0FibVNlY3Rpb24vQWJtTG9hZGVyRmlsZXMnXG5pbXBvcnQgeyBXcmFwcGVyQ2VudGVySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL1dyYXBwZXJDZW50ZXJJY29uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IHVzZUFjY2Vzc0NsaWVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFjY2Vzc0NsaWVudC91c2VBY2Nlc3NDbGllbnQnXG5pbXBvcnQgeyB1c2VUb2dnbGVGYXZvcml0ZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzJ1xuXG5jb25zdCBpbml0aWFsVmFsdWVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGtub3dsZWRnZTogW10sXG4gIGdlbmVyYWw6IHtcbiAgICBuYW1lOiAnJyxcbiAgICBlbW9qaTogJycsXG4gICAgaW50cm9kdWN0aW9uOiAnJyxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiAnJyxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgYWlNb2RlbDogbnVsbCxcbiAgICBpZDogbnVsbCxcbiAgICB1c2VyUHJvbXB0OiBudWxsLFxuICAgIGtub3dsZWRnZUJhc2VzOiBbXSxcbiAgICBpc19mYXZvcml0ZTogZmFsc2UsXG4gIH0sXG4gIGFjY2Vzc2liaWxpdHk6IHtcbiAgICBhY2Nlc3NUeXBlOiAnY29tcGFueScsXG4gICAgY2xpZW50czogbnVsbCxcbiAgfSxcbn0pXG5cbnR5cGUgQWJtU2VjdGlvbiA9ICdnZW5lcmFsJyB8ICdrbm93bGVkZ2UnIHwgJ3RyYWluaW5nJyB8ICd0ZXN0aW5nJyB8ICdhY2Nlc3NpYmlsaXR5J1xuXG5leHBvcnQgY29uc3QgU2VjdGlvbkJ5S2V5ID0ge1xuICBnZW5lcmFsOiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZSxcbiAgICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgICB9OiB7XG4gICAgICBrZXk6IHN0cmluZ1xuICAgICAgdmFsdWU6IHVua25vd25cbiAgICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgICB9KSA9PiB2b2lkXG4gICAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXVxuICAgIGxvYWRpbmc6IGJvb2xlYW5cbiAgfSkgPT4gPEFibUdlbmVyYWxTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG4gIGtub3dsZWRnZTogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgICBleGlzdGluZ0tub3dsZWRnZTogQXR0YWNobWVudEZpbGVbXVxuICAgIG5ld0tub3dsZWRnZTogQXR0YWNobWVudEZpbGVbXVxuICAgIG9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2U6IChmaWxlSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uUmVtb3ZlTmV3S25vd2xlZGdlOiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkZpbGVFcnJvckNoYW5nZTogKGhhc0Vycm9yczogYm9vbGVhbikgPT4gdm9pZFxuICB9KSA9PiA8QWJtS25vd2xlZGdlU2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBhY2Nlc3NpYmlsaXR5OiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxuICB9KSA9PiA8QWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gey4uLnByb3BzfSAvPixcbn1cblxudHlwZSBBYm1BZ2VudE1vZGFsUHJvcHMgPSB7XG4gIGFkZEFnZW50OiAobmV3QWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIHJlbW92ZUFnZW50OiAoYWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkXG4gIHVwZGF0ZUFnZW50OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICB1cGRhdGVBZ2VudEZhdm9yaXRlOiAodXBkYXRlZEFnZW50OiBBZ2VudCwgc2hvdWxkU29ydD86IGJvb2xlYW4pID0+IHZvaWRcbiAgc2VsZWN0Rmlyc3RBZ2VudDogKGFnZW50SWQ6IHN0cmluZykgPT4gdm9pZFxufVxuXG5jb25zdCB2YWxpZGF0ZUZpZWxkVmFsdWVzID0gKHZhbHVlVG9WYWxpZGF0ZTogTW9kYWxWYWx1ZXMpID0+IHtcbiAgaWYgKCF2YWx1ZVRvVmFsaWRhdGUuZ2VuZXJhbC5uYW1lIHx8ICF2YWx1ZVRvVmFsaWRhdGUuZ2VuZXJhbC51c2VyUHJvbXB0KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IEFibUFnZW50TW9kYWwgPSAoe1xuICBhZGRBZ2VudCxcbiAgdXBkYXRlQWdlbnQsXG4gIHJlbW92ZUFnZW50LFxuICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICBzZWxlY3RGaXJzdEFnZW50LFxufTogQWJtQWdlbnRNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgLy8gY29uc3QgJF9zYzogYW55ID0gbnVsbFxuICBjb25zdCB7IGFnZW50OiBjdXJyZW50U2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IHRvZ2dsZUZhdm9yaXRlIH0gPSB1c2VUb2dnbGVGYXZvcml0ZSgpXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FibS1hZ2VudC1tb2RhbCcpXG4gIGNvbnN0IFtpc1N1YnNjcmliZWQsIHNldElzU3Vic2NyaWJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgbW9kYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGhhc1BlbmRpbmdGaWxlc1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aW9uc1RvRmlsZXMgPSB1c2VSZWY8YW55Pih7XG4gICAgdG9EZWxldGU6IFtdLFxuICAgIHRvVXBsb2FkOiBbXSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzVXBkYXRlQ29udGV4dCA9IHVzZVJlZjx7XG4gICAgaXNGcm9tQ3JlYXRpb246IGJvb2xlYW5cbiAgICBpc0Zyb21FZGl0aW5nOiBib29sZWFuXG4gICAgaGFzQWN0aW9uRmlsZXM6IGJvb2xlYW5cbiAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyB8ICd1cGRhdGUnIHwgbnVsbFxuICAgIGhhc0JlZW5DYWxsZWQ/OiBib29sZWFuXG4gIH0+KHtcbiAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gIH0pXG4gIGNvbnN0IGFjY2Vzc0hhbmRsZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFnZW50Q3JlYXRlZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBmaWxlc0ZpbmlzaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBbZmlsZXNQcm9jZXNzZWQsIHNldEZpbGVzUHJvY2Vzc2VkXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dNb2RhbERlbGV0ZSwgc2V0U2hvd01vZGFsRGVsZXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VjdGlvbiwgc2V0U2VjdGlvbl0gPSB1c2VTdGF0ZTxBYm1TZWN0aW9uPignZ2VuZXJhbCcpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21vZGFsVmFsdWVzLCBzZXRNb2RhbFZhbHVlc10gPSB1c2VTdGF0ZTx7XG4gICAgZ2VuZXJhbDogYW55XG4gICAga25vd2xlZGdlOiBhbnlcbiAgICBpc0VkaXRpbmc6IGJvb2xlYW5cbiAgICBhY2Nlc3NpYmlsaXR5OiBhbnlcbiAgfT4oaW5pdGlhbFZhbHVlcylcbiAgY29uc3Qge1xuICAgIGxvYWRpbmc6IGFnZW50TG9hZGluZyxcbiAgICBoYW5kbGVHZXRBZ2VudEJ5SWQsXG4gICAgYWdlbnQ6IGFnZW50QnlJZCxcbiAgICBoYW5kbGVDbGVhbkFnZW50LFxuICAgIGVycm9yOiBlcnJvckdldEFnZW50QnlJZCxcbiAgfSA9IHVzZUdldEFnZW50QnlJZCgpXG4gIGNvbnN0IHsgYWdlbnRNb2RlbHMsIGdldEFsbEFnZW50TW9kZWxzIH0gPSB1c2VBZ2VudE1vZGVsKClcbiAgY29uc3QgZmlyc3RWYWx1ZUFnZW50ID0gdXNlUmVmPGFueT4obnVsbClcbiAgY29uc3QgW2lzU2hvd1Byb2Nlc3NGaWxlcywgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaGFzRmlsZUVycm9ycywgc2V0SGFzRmlsZUVycm9yc10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG5cbiAgY29uc3QgeyBoYW5kbGVEZWxldGVBZ2VudCwgc3VjY2Vzczogc3VjY2Vzc0RlbGV0ZSwgcmVzZXRTdWNjZXNzIH0gPSB1c2VEZWxldGVBZ2VudCgpXG4gIGNvbnN0IHsgaGFuZGxlVXBkYXRlQWdlbnQsIHN1Y2Nlc3M6IHN1Y2Nlc3NVcGRhdGUsIHJlc2V0U3VjY2VzczogcmVzZXRTdWNjZXNzVXBkYXRlIH0gPSB1c2VVcGRhdGVBZ2VudCgpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUNyZWF0ZUFnZW50LFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nQ3JlYXRlLFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NDcmVhdGUsXG4gICAgcmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gIH0gPSB1c2VDcmVhdGVBZ2VudCgpXG5cbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nS25vd2xlZGdlLFxuICAgIGVycm9yOiBlcnJvcktub3dsZWRnZSxcbiAgICBzdWNjZXNzRGVsZXRlOiBzdWNjZXNzS25vd2xlZGdlRGVsZXRlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICB9ID0gdXNlS25vd2xlZGdlT3BlcmF0aW9ucygpXG5cbiAgY29uc3Qge1xuICAgIGhhbmRsZUFjY2Vzc0NsaWVudCxcbiAgICBzdWNjZXNzOiBzdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZVJlc2V0U3VjY2VzczogcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICB9ID0gdXNlQWNjZXNzQ2xpZW50KClcblxuICBpZiAoIXNlbGVjdG9yKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGFyZUNsaWVudHNBcnJheXNFcXVhbCA9IChjbGllbnRzMTogYW55W10gfCBudWxsLCBjbGllbnRzMjogYW55W10gfCBudWxsKSA9PiB7XG4gICAgaWYgKCFjbGllbnRzMSAmJiAhY2xpZW50czIpIHJldHVybiB0cnVlXG4gICAgaWYgKCFjbGllbnRzMSB8fCAhY2xpZW50czIpIHJldHVybiBmYWxzZVxuICAgIGlmIChjbGllbnRzMS5sZW5ndGggIT09IGNsaWVudHMyLmxlbmd0aCkgcmV0dXJuIGZhbHNlXG5cbiAgICBjb25zdCBjbGllbnRzMUlkcyA9IGNsaWVudHMxLm1hcChjID0+IGMuY2xpZW50SWQpLnNvcnQoKVxuICAgIGNvbnN0IGNsaWVudHMySWRzID0gY2xpZW50czIubWFwKGMgPT4gYy5jbGllbnRJZCkuc29ydCgpXG5cbiAgICByZXR1cm4gY2xpZW50czFJZHMuZXZlcnkoKGlkLCBpbmRleCkgPT4gaWQgPT09IGNsaWVudHMySWRzW2luZGV4XSlcbiAgfVxuXG4gIGNvbnN0IGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkID0gKCkgPT4ge1xuICAgIGlmICghZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/LmFjY2Vzc2liaWxpdHkgfHwgIW1vZGFsVmFsdWVzPy5hY2Nlc3NpYmlsaXR5KSByZXR1cm4gdHJ1ZVxuXG4gICAgY29uc3QgYWNjZXNzVHlwZVNhbWUgPSBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZVxuICAgIGNvbnN0IGNsaWVudHNTYW1lID0gYXJlQ2xpZW50c0FycmF5c0VxdWFsKFxuICAgICAgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5jbGllbnRzLFxuICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuYWNjZXNzaWJpbGl0eS5jbGllbnRzXG4gICAgKVxuXG4gICAgcmV0dXJuICFhY2Nlc3NUeXBlU2FtZSB8fCAhY2xpZW50c1NhbWVcbiAgfVxuXG4gIGNvbnN0IHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uZ2VuZXJhbCB8fCAhbW9kYWxWYWx1ZXM/LmdlbmVyYWwpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5uYW1lICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmVtb2ppID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmVtb2ppICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbiA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWw/LmlkID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmFpTW9kZWw/LmlkICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwudXNlclByb21wdCAmJlxuICAgICAgKG1vZGFsVmFsdWVzLmtub3dsZWRnZT8ubGVuZ3RoID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8ua25vd2xlZGdlPy5sZW5ndGggfHxcbiAgICAgICAgKCFtb2RhbFZhbHVlcy5rbm93bGVkZ2U/Lmxlbmd0aCAmJiAhZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/Lmtub3dsZWRnZT8ubGVuZ3RoKSkgJiZcbiAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBkYXRlPy5sZW5ndGggJiZcbiAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlPy5sZW5ndGggJiZcbiAgICAgICFoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzQW55VmFsdWVGb3JDcmVhdGlvbiA9ICgpID0+IHtcbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGlzRGVmYXVsdEFpTW9kZWwgPSAhIWFnZW50TW9kZWxzLmxlbmd0aCAmJiBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWw/LmlkID09PSBhZ2VudE1vZGVsc1swXT8uaWRcblxuICAgIGNvbnN0IGRlZmF1bHRJbnB1dFBsYWNlaG9sZGVyID0gdCgnZ2VuZXJhbFNlY3Rpb24uaW5wdXRQbGFjZWhvbGRlcicpXG4gICAgY29uc3QgaXNEZWZhdWx0SW5wdXRQbGFjZWhvbGRlciA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciA9PT0gZGVmYXVsdElucHV0UGxhY2Vob2xkZXJcblxuICAgIGNvbnN0IGRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIgPSB0KCdnZW5lcmFsU2VjdGlvbi5pbml0aWFsUHJvbXB0UGxhY2Vob2xkZXInKVxuICAgIGNvbnN0IGlzRGVmYXVsdFVzZXJQcm9tcHQgPVxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSBkZWZhdWx0VXNlclByb21wdFBsYWNlaG9sZGVyIHx8XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09ICcnIHx8XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IG51bGxcblxuICAgIGNvbnN0IGhhc05hbWUgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUudHJpbSgpICE9PSAnJ1xuICAgIGNvbnN0IGhhc0Vtb2ppID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5lbW9qaS50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzSW50cm9kdWN0aW9uID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24udHJpbSgpICE9PSAnJ1xuICAgIGNvbnN0IGhhc0lucHV0UGxhY2Vob2xkZXIgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIudHJpbSgpICE9PSAnJyAmJiAhaXNEZWZhdWx0SW5wdXRQbGFjZWhvbGRlclxuICAgIGNvbnN0IGhhc1VzZXJQcm9tcHQgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQ/LnRyaW0oKSAhPT0gJycgJiYgIWlzRGVmYXVsdFVzZXJQcm9tcHRcbiAgICBjb25zdCBoYXNLbm93bGVkZ2UgPSAhIW1vZGFsVmFsdWVzLmtub3dsZWRnZS5sZW5ndGhcbiAgICBjb25zdCBoYXNDdXN0b21BaU1vZGVsID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5haU1vZGVsICYmICFpc0RlZmF1bHRBaU1vZGVsXG4gICAgY29uc3QgaGFzQWNjZXNzaWJpbGl0eSA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknXG5cbiAgICByZXR1cm4gKFxuICAgICAgaGFzTmFtZSB8fFxuICAgICAgaGFzRW1vamkgfHxcbiAgICAgIGhhc0ludHJvZHVjdGlvbiB8fFxuICAgICAgaGFzSW5wdXRQbGFjZWhvbGRlciB8fFxuICAgICAgaGFzVXNlclByb21wdCB8fFxuICAgICAgaGFzS25vd2xlZGdlIHx8XG4gICAgICBoYXNDdXN0b21BaU1vZGVsIHx8XG4gICAgICBoYXNBY2Nlc3NpYmlsaXR5XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzQ2hhbmdlc0ZvckVkaXRpbmcgPSAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIChcbiAgICAgICF2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkgfHxcbiAgICAgICEhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggfHxcbiAgICAgICEhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGhcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNQZW5kaW5nQ2hhbmdlcyA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFzQW55VmFsdWVGb3JDcmVhdGlvbigpIHx8IGhhc0NoYW5nZXNGb3JFZGl0aW5nKClcbiAgfVxuXG4gIC8vIEhlbHBlciBwYXJhIG1hbmVqYXIgZWwgdG9nZ2xlIGRlIGZhdm9yaXRvIHkgYWN0dWFsaXphciBlbCBlc3RhZG8gY29uIG9yZGVuYW1pZW50b1xuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZywgYWdlbnQ6IEFnZW50LCBvblN1Y2Nlc3M/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZCwgb25FcnJvcj86ICgpID0+IHZvaWQpID0+IHtcbiAgICAgIHRvZ2dsZUZhdm9yaXRlKFxuICAgICAgICBhZ2VudElkLFxuICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgIC8vIEFjdHVhbGl6YXIgZWwgZXN0YWRvIGRlIGFnZW50ZXMgY29uIGVsIHJlc3VsdGFkbyBkZWwgc2Vydmlkb3IgeSBvcmRlbmFyXG4gICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZSh1cGRhdGVkQWdlbnQsIHRydWUpXG4gICAgICAgICAgaWYgKG9uU3VjY2Vzcykge1xuICAgICAgICAgICAgb25TdWNjZXNzKHVwZGF0ZWRBZ2VudClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgb25FcnJvcigpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhZ2VudC5pc19mYXZvcml0ZVxuICAgICAgKVxuICAgIH0sXG4gICAgW3RvZ2dsZUZhdm9yaXRlLCB1cGRhdGVBZ2VudEZhdm9yaXRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKGhhc1BlbmRpbmdDaGFuZ2VzKCkgJiYgIXN1Y2Nlc3NDcmVhdGUgJiYgIXN1Y2Nlc3NVcGRhdGUgJiYgIXN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnY29uZmlybUNsb3NlRWRpdEFnZW50JykgOiB0KCdjb25maXJtQ2xvc2VDcmVhdGVBZ2VudCcpXG5cbiAgICAgIGlmICghd2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIHNldE1vZGFsVmFsdWVzKGluaXRpYWxWYWx1ZXMpXG4gICAgaGFuZGxlQ2xlYW5BZ2VudCgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQgPSB7XG4gICAgICB0b0RlbGV0ZTogW10sXG4gICAgICB0b1VwbG9hZDogW10sXG4gICAgfVxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgIH1cbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgc2V0SXNTdWJzY3JpYmVkKGZhbHNlKVxuICAgIHNldEZpbGVzUHJvY2Vzc2VkKDApXG4gICAgc2V0U2VjdGlvbignZ2VuZXJhbCcpXG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgIWlzU2hvd1Byb2Nlc3NGaWxlcykge1xuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlY3Rpb25DaGFuZ2UgPSAobmV3U2VjdGlvbjogQWJtU2VjdGlvbikgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy50YWJTZWN0aW9uLCB7IG9wdGlvbjogbmV3U2VjdGlvbiB9KVxuICAgIHNldFNlY3Rpb24obmV3U2VjdGlvbilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzID0gKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgZGVsZXRlS25vd2xlZGdlLFxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogYW55XG4gICAgZGVsZXRlS25vd2xlZGdlOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoa2V5ID09PSAna25vd2xlZGdlJykge1xuICAgICAgaWYgKCFkZWxldGVLbm93bGVkZ2UpIHtcbiAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5wdXNoKC4uLih2YWx1ZSB8fCBbXSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmaWxlc1ByZXZJZHMgPSB2YWx1ZS5sZW5ndGggPyBuZXcgU2V0KHZhbHVlLm1hcChmaWxlID0+IGZpbGUuaWQpKSA6IG5ldyBTZXQoKVxuICAgICAgICBjb25zdCBuZXdGaWxlcyA9IG1vZGFsVmFsdWVzLmtub3dsZWRnZS5maWx0ZXIoZmlsZSA9PiAhZmlsZXNQcmV2SWRzLmhhcyhmaWxlLmlkKSAmJiBmaWxlLnN0YXR1cyAhPT0gJ3N0YXJ0ZWQnKVxuICAgICAgICBpZiAoIW5ld0ZpbGVzLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlSWRzID0gbmV3IFNldCh2YWx1ZS5tYXAoZmlsZSA9PiBmaWxlLmlkKSlcbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5maWx0ZXIoZmlsZSA9PiB2YWx1ZUlkcy5oYXMoZmlsZS5pZCkpXG4gICAgICAgIH1cbiAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFsuLi4oYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSB8fCBbXSksIC4uLm5ld0ZpbGVzXVxuICAgICAgfVxuICAgIH1cbiAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IGtub3dsZWRnZUZpbGVzID1cbiAgICAgICAga2V5ID09PSAna25vd2xlZGdlJ1xuICAgICAgICAgID8gZGVsZXRlS25vd2xlZGdlXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IFsuLi4ocHJldi5rbm93bGVkZ2UgfHwgW10pLCAuLi4oKHZhbHVlIGFzIEF0dGFjaG1lbnRGaWxlW10pIHx8IFtdKV1cbiAgICAgICAgICA6IG51bGxcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIC4uLihrZXkgPT09ICdrbm93bGVkZ2UnXG4gICAgICAgICAgPyB7IGtub3dsZWRnZToga25vd2xlZGdlRmlsZXMgfVxuICAgICAgICAgIDoga2V5ID09PSAnYWNjZXNzaWJpbGl0eSdcbiAgICAgICAgICAgID8geyBhY2Nlc3NpYmlsaXR5OiB2YWx1ZSB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgICAgICAgICBba2V5XTogdmFsdWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSBhc3luYyAoY2hhdDogYW55LCBhY3Rpb246ICdkZWxldGUnIHwgJ3VwZGF0ZScgfCAnY3JlYXRlJykgPT4ge1xuICAgIC8vIFNvbG8gcGVybWl0aXIgb3BlcmFjaW9uZXMgZGUgYWdlbnRlcyBjdXN0b20gc2kgbGEgZmVhdHVyZSBmbGFnIGVzdMOhIGhhYmlsaXRhZGFcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uID09PSAnZGVsZXRlJykge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmRlbGV0ZSlcbiAgICAgIGhhbmRsZURlbGV0ZUFnZW50KGNoYXQuaWQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNvbmZpcm1BY3Rpb24sIHsgb3B0aW9uOiBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyAnZWRpdGUnIDogJ2NyZWF0ZScgfSlcbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSB7XG4gICAgICBpZiAoIXZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSkge1xuICAgICAgICBhd2FpdCBoYW5kbGVVcGRhdGVBZ2VudChtb2RhbFZhbHVlcylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgaGFuZGxlQ3JlYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRBZ2VudFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50VmFsdWVzIH0gPSBldmVudC5kZXRhaWxcbiAgICAgIGdldEFsbEFnZW50TW9kZWxzKClcbiAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG5cbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cblxuICAgICAgaWYgKGFnZW50VmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nKSB7XG4gICAgICAgIC8vIFZhbGlkYXIgcXVlIGxhIGZlYXR1cmUgZmxhZyBlc3TDqSBoYWJpbGl0YWRhIGFudGVzIGRlIGNhcmdhciBlbCBhZ2VudGUgcGFyYSBlZGl0YXJcbiAgICAgICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUdldEFnZW50QnlJZChhZ2VudFZhbHVlcz8udmFsdWVzPy5nZW5lcmFsPy5pZCBhcyB1bmtub3duIGFzIHN0cmluZylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgYXMgRXZlbnRMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIHVzZUVmZmVjdCB0byBoYW5kbGUgdGhlIG92ZXJmbG93IG9mIHRoZSBib2R5IHdoZW4gdGhlIG1vZGFsIGlzIG9wZW5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHsgYm9keSB9ID0gZG9jdW1lbnRcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE92ZXJmbG93ID0gYm9keS5zdHlsZS5vdmVyZmxvd1xuICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSBvcmlnaW5hbE92ZXJmbG93XG4gICAgfVxuICB9LCBbaXNPcGVuXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUJlZm9yZVVubG9hZCA9IChldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpID0+IHtcbiAgICAgIGlmIChoYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gdCgnY29uZmlybVJlbG9hZEJyb3dzZXInKVxuICAgICAgICByZXR1cm4gdCgnY29uZmlybVJlbG9hZEJyb3dzZXInKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpXG4gICAgfVxuICB9LCBbaXNPcGVuLCBoYXNQZW5kaW5nQ2hhbmdlcywgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc0RlbGV0ZSkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudERlbGV0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2VzcygpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkIGFzIHN0cmluZylcbiAgICAgIH1cbiAgICAgIHJlbW92ZUFnZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpXG4gICAgICBzZXRTaG93TW9kYWxEZWxldGUoZmFsc2UpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0RlbGV0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBFdml0YXIgZWplY3VjacOzbiBtw7psdGlwbGUgZGVsIGVmZWN0b1xuICAgIGlmIChzdWNjZXNzQ3JlYXRlICYmICFpc0xvYWRpbmdDcmVhdGUgJiYgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQgIT09IHN1Y2Nlc3NDcmVhdGUuaWQpIHtcbiAgICAgIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ID0gc3VjY2Vzc0NyZWF0ZS5pZFxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoICYmIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICBmaWxlc1RvRGVsZXRlOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLFxuICAgICAgICAgICAgZmlsZXNUb0NyZWF0ZTogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCxcbiAgICAgICAgICAgIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZXNvbHZlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxuXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFjY2VzaWJpbGlkYWQgcGVybyBoYXkgYXJjaGl2b3MsIGVzdGFibGVjZXIgZWwgY29udGV4dG8gcGFyYSBjcmVhY2nDs25cbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KSxcbiAgICAgICAgXVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZXNvbHZlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAvLyBTb2xvIHJlc2V0ZWFyIGVsIGNvbnRleHRvIHNpIE5PIHNlIGhhIGxsYW1hZG8gdG9kYXbDrWFcbiAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICAgIGNvbnN0IHsgaGFzQWN0aW9uRmlsZXMgfSA9IGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudFxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogaGFzQWN0aW9uRmlsZXMgfHwgZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICBoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KVxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBoYW5kbGVBY2Nlc3NDbGllbnQsIGVsIGFnZW50ZSBzZSBhZ3JlZ2Fyw6EgeSBlbCB0b2dnbGUgc2UgaGFyw6EgZW4gc3VjY2Vzc1VwZGF0ZUFjY2Vzc1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGZhdm9yaXRlIGlmIGl0IHdhcyBtYXJrZWQgZHVyaW5nIGNyZWF0aW9uXG4gICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAvLyBQcmltZXJvIGFncmVnYXIgZWwgYWdlbnRlIGEgbGEgbGlzdGEgKGFkZEFnZW50IHlhIG9yZGVuYSlcbiAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG5cbiAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAvLyBMdWVnbyBoYWNlciBlbCB0b2dnbGUgZGUgZmF2b3JpdG8gZW4gZWwgc2Vydmlkb3IgeSBhY3R1YWxpemFyIGVsIGVzdGFkb1xuICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7IG9wdGlvbjogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlID8gJ2FkZCcgOiAncmVtb3ZlJyB9KVxuICAgICAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgICAgIHNlbGVjdEFnZW50KHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgfSlcbiAgICAgICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7IG9wdGlvbjogJ2FkZCcgfSlcbiAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzTG9hZGluZ0NyZWF0ZSxcbiAgICBzdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIGFkZEFnZW50LFxuICAgIHNlbGVjdEFnZW50LFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlQ2xvc2UsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdWNjZXNzVXBkYXRlKSB7XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggJiYgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgY29uc3QgZmlsZXNUb0RlbGV0ZSA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlXVxuICAgICAgICAgIGNvbnN0IGZpbGVzVG9VcGxvYWQgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZF1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gW11cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlc1RvRGVsZXRlLFxuICAgICAgICAgICAgICBmaWxlc1RvQ3JlYXRlOiBmaWxlc1RvVXBsb2FkLFxuICAgICAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLihoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgY29uc3QgZmlsZXNUb0RlbGV0ZSA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbXVxuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICAgIGZpbGVzOiBmaWxlc1RvRGVsZXRlLFxuICAgICAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLihoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9VcGxvYWQgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZF1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlczogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgLy8gU29sbyByZXNldGVhciBlbCBjb250ZXh0byBzaSBOTyBzZSBoYSBsbGFtYWRvIHRvZGF2w61hIHkgTk8gaGF5IGFyY2hpdm9zIHBlbmRpZW50ZXNcbiAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCAmJiAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICAvLyBMbGFtYXIgYSBoYW5kbGVBY2Nlc3NDbGllbnQgc29sbyB1bmEgdmV6XG4gICAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICAgICAgaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSlcbiAgICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU29sbyBjZXJyYXIgc2kgbm8gaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zIG5pIGFjY2VzcyBwZW5kaWVudGVcbiAgICAgIGlmIChcbiAgICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAgICFpc1Nob3dQcm9jZXNzRmlsZXMgJiZcbiAgICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoICYmXG4gICAgICAgICFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgICAgIXN1Y2Nlc3NVcGRhdGVBY2Nlc3NcbiAgICAgICkge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGUoKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBzdWNjZXNzVXBkYXRlLFxuICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQsXG4gICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICBjb25zdCB3ZWJTb2NrZXRGdW5jdGlvbiA9ICh7IG1vZGVsX2RhdGE6IG1vZGVsRGF0YSB9OiB7IG1vZGVsX2RhdGE6IGFueSB9KSA9PiB7XG4gICAgY29uc3QgZmlsZVN0YXR1cyA9IG1vZGVsRGF0YVxuICAgIGlmIChmaWxlU3RhdHVzLnN0YXR1cyA9PT0gJ2RvbmUnIHx8IGZpbGVTdGF0dXMuc3RhdHVzID09PSAnZmFpbGVkJykge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRLbm93bGVkZ2UgPSBwcmV2Lmtub3dsZWRnZS5tYXAoZmlsZSA9PiB7XG4gICAgICAgICAgaWYgKGZpbGUubmFtZSA9PT0gZmlsZVN0YXR1cy5maWxlbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgICAgc3RhdHVzOiBmaWxlU3RhdHVzLnN0YXR1cyxcbiAgICAgICAgICAgICAgaWQ6IGZpbGVTdGF0dXMua25vd2xlZGdlX2Jhc2VfaWQgfHwgZmlsZS5pZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZpbGVcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzID0gdXBkYXRlZEtub3dsZWRnZS5zb21lKGZpbGUgPT4gZmlsZS5zdGF0dXMgPT09ICdwZW5kaW5nJylcbiAgICAgICAgY29uc3QgaGFzRXJyb3JGaWxlcyA9IHVwZGF0ZWRLbm93bGVkZ2Uuc29tZShmaWxlID0+IGZpbGUuc3RhdHVzID09PSAnZmFpbGVkJylcbiAgICAgICAgaWYgKGhhc0Vycm9yRmlsZXMgJiYgIWhhc1BlbmRpbmdGaWxlcykge1xuICAgICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihcbiAgICAgICAgICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWRXaXRoRmlsZXNFcnJvcicpIDogdCgnY29uZmlybUFnZW50V2l0aEZpbGVzRXJyb3InKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIGlmICghaGFzUGVuZGluZ0ZpbGVzICYmICFoYXNFcnJvckZpbGVzKSB7XG4gICAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcblxuICAgICAgICAgIC8vIFNpIGhhYsOtYSBhY2Nlc3MgcGVuZGllbnRlIHkgeWEgZXN0YWJhIG1hbmVqYWRvLCBmb3J6YXIgcXVlIGVsIHVzZUVmZmVjdCBkZSBhY2Nlc3Mgc2UgZWplY3V0ZSBkZSBudWV2b1xuICAgICAgICAgIGlmIChhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiYgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRGaWxlc1Byb2Nlc3NlZChwcmV2Q291bnQgPT4gcHJldkNvdW50ICsgMSlcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICAgICAgICAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICAgICAgICAhZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTaSBlcyBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWQsIG1hcmNhciBxdWUgbG9zIGFyY2hpdm9zIHRlcm1pbmFyb25cbiAgICAgICAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICAgIHNldEZpbGVzUHJvY2Vzc2VkKHByZXZDb3VudCA9PiBwcmV2Q291bnQgKyAxKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAga25vd2xlZGdlOiB1cGRhdGVkS25vd2xlZGdlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUgJiYgIWlzTG9hZGluZ0tub3dsZWRnZSAmJiAhZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIC8vIFNvbG8gY2VycmFyIHNpIE5PIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvc1xuICAgICAgaWYgKGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50IHx8IGlzU2hvd1Byb2Nlc3NGaWxlcyB8fCBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgICBpZiAoZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoXG4gICAgICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWRXaXRoRmlsZXNFcnJvcicpIDogdCgnY29uZmlybUFnZW50V2l0aEZpbGVzRXJyb3InKVxuICAgICAgKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICB9XG4gIH0sIFtzdWNjZXNzS25vd2xlZGdlRGVsZXRlLCBpc0xvYWRpbmdLbm93bGVkZ2UsIGVycm9yS25vd2xlZGdlLCBpc1Nob3dQcm9jZXNzRmlsZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudFxuXG4gICAgLy8gU2kgaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zLCBlc3BlcmFyIGEgcXVlIHRlcm1pbmVuXG4gICAgaWYgKGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiYgKGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50IHx8IGlzU2hvd1Byb2Nlc3NGaWxlcykpIHtcbiAgICAgIC8vIFNpIHN1Y2Nlc3NVcGRhdGVBY2Nlc3MgZXN0w6EgYWN0aXZvLCBtYXJjYXIgY29tbyBtYW5lamFkbyBwZXJvIE5PIHJlc2V0ZWFyIGhhc3RhIHF1ZSB0ZXJtaW5lbiBsb3MgYXJjaGl2b3NcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzICYmICFhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gU2kgeWEgZnVlIG1hbmVqYWRvIHkgbm8gaGF5IGFyY2hpdm9zIHBlbmRpZW50ZXMsIGVqZWN1dGFyIGVsIGNpZXJyZVxuICAgIGlmIChhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgJiYgY29udGV4dC5oYXNBY3Rpb25GaWxlcyAmJiBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXN1Y2Nlc3NVcGRhdGVBY2Nlc3MpIHtcbiAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcblxuICAgIGlmIChjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICAvLyBTaSBoYXkgYXJjaGl2b3MsIGVsIGFnZW50ZSB5YSBmdWUgYWdyZWdhZG8geSBlbCB0b2dnbGUgeWEgc2UgaGl6byBlbiBzdWNjZXNzQ3JlYXRlXG4gICAgICAvLyBTb2xvIG5lY2VzaXRhbW9zIGNlcnJhciBlbCBtb2RhbFxuICAgICAgaWYgKGNvbnRleHQuaGFzQWN0aW9uRmlsZXMpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIGZ1ZSBjcmVhZG8gY29uIGZhdm9yaXRvLCBuZWNlc2l0YW1vcyBvcmRlbmFyIGRlc3B1w6lzIGRlIGFncmVnYXJsb1xuICAgICAgY29uc3QgYWdlbnRUb0FkZCA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUgPyB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH0gOiBzdWNjZXNzQ3JlYXRlXG5cbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICBhZGRBZ2VudChhZ2VudFRvQWRkKVxuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRUb0FkZClcblxuICAgICAgLy8gU2kgdGllbmUgZmF2b3JpdG8sIGhhY2VyIHRvZ2dsZSB5IGFjdHVhbGl6YXIgZXN0YWRvIGFudGVzIGRlIGNlcnJhclxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50VG9BZGQsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIC8vIENlcnJhciBkZXNwdcOpcyBkZSBxdWUgZWwgdG9nZ2xlIGNvbXBsZXRlIHkgYWN0dWFsaWNlIGVsIGVzdGFkb1xuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IHN1Y2Nlc3NVcGRhdGUuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIH1cbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuXG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgfVxuICB9LCBbc3VjY2Vzc1VwZGF0ZUFjY2VzcywgZmlsZXNQcm9jZXNzZWRdKVxuXG4gIC8vIHVzZUVmZmVjdCBwYXJhIG1hbmVqYXIgZWwgY2llcnJlIGRlbCBtb2RhbCBjdWFuZG8gdGVybWluYW4gbG9zIGFyY2hpdm9zIGVuIGNyZWFjacOzbiBzaW4gYWNjZXNpYmlsaWRhZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIC8vIFNvbG8gcHJvY2VzYXIgc2k6XG4gICAgLy8gLSBFcyB1bmEgb3BlcmFjacOzbiBkZSBjcmVhY2nDs25cbiAgICAvLyAtIE5vIGhheSBhY2Nlc2liaWxpZGFkIHBlbmRpZW50ZVxuICAgIC8vIC0gTG9zIGFyY2hpdm9zIHRlcm1pbmFyb24gZGUgcHJvY2VzYXJzZVxuICAgIC8vIC0gRWwgYWdlbnRlIGZ1ZSBjcmVhZG8gZXhpdG9zYW1lbnRlXG4gICAgLy8gLSBBw7puIG5vIHNlIGhhIGNlcnJhZG8gZWwgbW9kYWxcbiAgICBpZiAoXG4gICAgICBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICAhY29udGV4dC5oYXNBY3Rpb25GaWxlcyAmJlxuICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ICYmXG4gICAgICBzdWNjZXNzQ3JlYXRlICYmXG4gICAgICAhaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgJiZcbiAgICAgICFpc1Nob3dQcm9jZXNzRmlsZXNcbiAgICApIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYW1iacOpbiBtYW5lamFyIGVsIGNhc28gY3VhbmRvIGhheSBhY2Nlc2liaWxpZGFkIHkgYXJjaGl2b3MgdGVybWluYXJvblxuICAgIGlmIChcbiAgICAgIGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScgJiZcbiAgICAgIGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCAmJlxuICAgICAgc3VjY2Vzc0NyZWF0ZSAmJlxuICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgZmlsZXNQcm9jZXNzZWQsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICBzdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU2hvd1Byb2Nlc3NGaWxlcykge1xuICAgICAgY29uc3QgY2hhbm5lbCA9IGBrbm93bGVkZ2UtYmFzZS5zdGF0dXM6JHthZ2VudEJ5SWQgPyBhZ2VudEJ5SWQ/LmlkIDogc3VjY2Vzc0NyZWF0ZT8uaWQ/LnRvU3RyaW5nKCl9YFxuICAgICAgaWYgKCRfc2MpIHtcbiAgICAgICAgaWYgKGlzU3Vic2NyaWJlZCkge1xuICAgICAgICAgICRfc2M/LnN1YnNjcmliZUhhbmRsZXIoY2hhbm5lbCwgd2ViU29ja2V0RnVuY3Rpb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbW9kZWxEYXRhID0ge1xuICAgICAgICAgICAgbW9kZWxfaGFzaDogY2hhbm5lbCxcbiAgICAgICAgICAgIGFjdGlvbjogJF9zYz8uYWN0aW9uVHlwZT8uU1VCU0NSSUJFLFxuICAgICAgICAgIH1cbiAgICAgICAgICAkX3NjPy51cGRhdGVDb25uZWN0aW9uTW9kZWwobW9kZWxEYXRhLCBjaGFubmVsLCB1c2VyLCB1c2VyLCAkX3NjLmNoYW5uZWxUeXBlPy5NT0RFTF9DSEFOTkVMKVxuICAgICAgICAgIHNldElzU3Vic2NyaWJlZCh0cnVlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBpc1N1YnNjcmliZWQsICRfc2MsIGFnZW50QnlJZCwgc3VjY2Vzc0NyZWF0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWdlbnRCeUlkICYmIGlzT3BlbiAmJiAhYWdlbnRMb2FkaW5nICYmIGFnZW50TW9kZWxzLmxlbmd0aCkge1xuICAgICAgLy8gVmFsaWRhciBxdWUgc29sbyBzZSBwdWVkYW4gZWRpdGFyIGFnZW50ZXMgY3VzdG9tIHkgcXVlIGxhIGZlYXR1cmUgZmxhZyBlc3TDqSBoYWJpbGl0YWRhXG4gICAgICBpZiAoYWdlbnRCeUlkLnR5cGUgIT09ICdjdXN0b20nIHx8ICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBhZ2VudE1vZGVsID0gYWdlbnRNb2RlbHMuZmluZChtb2RlbCA9PiBtb2RlbC5pZCA9PT0gYWdlbnRCeUlkLm1vZGVsQWlJZClcbiAgICAgICAgY29uc3QgYWdlbnRWYWx1ZXNUb1NldCA9IHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICBlbW9qaTogYWdlbnRCeUlkLmVtb2ppLFxuICAgICAgICAgICAgbmFtZTogYWdlbnRCeUlkLm5hbWUsXG4gICAgICAgICAgICBpbnRyb2R1Y3Rpb246IGFnZW50QnlJZC5pbnRyb2R1Y3Rpb24sXG4gICAgICAgICAgICBpbnB1dFBsYWNlaG9sZGVyOiBhZ2VudEJ5SWQuaW5wdXRQbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGlzQWN0aXZlOiBhZ2VudEJ5SWQuaXNBY3RpdmUsXG4gICAgICAgICAgICBhaU1vZGVsOiBhZ2VudE1vZGVsIHx8IG51bGwsXG4gICAgICAgICAgICBpZDogYWdlbnRCeUlkLmlkLFxuICAgICAgICAgICAgdXNlclByb21wdDogYWdlbnRCeUlkLnVzZXJQcm9tcHQsXG4gICAgICAgICAgICBpc19mYXZvcml0ZTogYWdlbnRCeUlkLmlzX2Zhdm9yaXRlLFxuICAgICAgICAgICAgY3JlYXRlZF9ieTogYWdlbnRCeUlkLmNyZWF0ZWRCeSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtub3dsZWRnZTogYWdlbnRCeUlkLmtub3dsZWRnZUJhc2VzPy5tYXAoayA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRBdHRhY2htZW50ID0ge1xuICAgICAgICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgay5maWxlbmFtZSksXG4gICAgICAgICAgICAgIGlkOiBrLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgIG5hbWU6IGsuZmlsZW5hbWUsXG4gICAgICAgICAgICAgIHNpemU6IGsuZmlsZV9zaXplX2J5dGVzIHx8IDAsXG4gICAgICAgICAgICAgIHR5cGU6IGsub3JpZ2luYWxfZmlsZV90eXBlLFxuICAgICAgICAgICAgICBzdGF0dXM6IGsuc3RhdHVzLFxuICAgICAgICAgICAgICB1cmxfb3JpZ2luYWw6IGsudXJsX29yaWdpbmFsIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgdXJsX3RodW1ibmFpbDogay51cmxfdGh1bWJuYWlsIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRBdHRhY2htZW50XG4gICAgICAgICAgfSksXG4gICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgYWNjZXNzVHlwZTogYWdlbnRCeUlkLmFjY2VzcyxcbiAgICAgICAgICAgIGNsaWVudHM6XG4gICAgICAgICAgICAgIGFnZW50QnlJZC5jbGllbnRzPy5tYXAoY2xpZW50ID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNsaWVudC5pZD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBjbGllbnQubmFtZSxcbiAgICAgICAgICAgICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNfZGVsZXRlZDogY2xpZW50LmlzX2RlbGV0ZWQgPz8gZmFsc2UsXG4gICAgICAgICAgICAgIH0pKSB8fCBudWxsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cblxuICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IGFnZW50VmFsdWVzVG9TZXRcblxuICAgICAgICByZXR1cm4gYWdlbnRWYWx1ZXNUb1NldFxuICAgICAgfSlcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoaXNPcGVuICYmICFpc0xvYWRpbmcgJiYgYWdlbnRNb2RlbHMubGVuZ3RoICYmICFhZ2VudExvYWRpbmcgJiYgIWFnZW50QnlJZCkge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGFpTW9kZWw6IGFnZW50TW9kZWxzWzBdLFxuICAgICAgICB9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYWdlbnRCeUlkLCBpc09wZW4sIGlzTG9hZGluZywgYWdlbnRMb2FkaW5nLCBhZ2VudE1vZGVscz8ubGVuZ3RoXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlcnJvckdldEFnZW50QnlJZCkge1xuICAgICAgaWYgKGVycm9yR2V0QWdlbnRCeUlkID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIikge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKGVycm9yR2V0QWdlbnRCeUlkKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH0sIDMwMDApXG4gICAgfVxuICB9LCBbZXJyb3JHZXRBZ2VudEJ5SWRdKVxuXG4gIGNvbnN0IHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHMgfHwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5jbGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMuc29tZShjbGllbnQgPT4gY2xpZW50LmlzX2FjdGl2ZSA9PT0gZmFsc2UgfHwgY2xpZW50LmlzX2RlbGV0ZWQgPT09IHRydWUpXG4gIH0sIFttb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50c10pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGUgPSAoKSA9PiB7XG4gICAgaWYgKG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pZCkge1xuICAgICAgLy8gRXhpc3RpbmcgYWdlbnRcbiAgICAgIHRvZ2dsZUZhdm9yaXRlKFxuICAgICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLFxuICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICAgICAgaXNfZmF2b3JpdGU6IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpXG4gICAgICAgICAgLy8gQWN0dWFsaXphciBlbCBlc3RhZG8gZGUgYWdlbnRlcyB5IG9yZGVuYXIgY3VhbmRvIHNlIGhhY2UgZGVzZGUgZWwgbW9kYWwgQUJNXG4gICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZSh1cGRhdGVkQWdlbnQsIHRydWUpXG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7XG4gICAgICAgICAgICBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBhZ2VudFxuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGlzX2Zhdm9yaXRlOiAhcHJldi5nZW5lcmFsLmlzX2Zhdm9yaXRlLFxuICAgICAgICB9LFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc09wZW4gfHwgKCF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZSAmJiAhdXNlclBlcm1pc3Npb25zPy5lZGl0ICYmICF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZSkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8QmFja2Ryb3AgekluZGV4PXsxMTEyfSBvbkNsaWNrPXtoYW5kbGVCYWNrZHJvcENsaWNrfT5cbiAgICAgIDxTQ0FBTVdyYXBwZXIgcmVmPXttb2RhbFJlZn0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U0NBQU1XcmFwcGVyU3Bpbm5lcj5cbiAgICAgICAgICAgIDxTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudD5cbiAgICAgICAgICAgICAgPFNwaW5uZXJMb3R0aWUgc2l6ZT1cIjgwcHhcIiBjb2xvcj1cInByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPC9TQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudD5cbiAgICAgICAgICA8L1NDQUFNV3JhcHBlclNwaW5uZXI+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHtpc1Nob3dQcm9jZXNzRmlsZXMgJiYgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPyAoXG4gICAgICAgICAgICAgIDxBYm1Mb2FkZXJGaWxlc1xuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzPXttb2RhbFZhbHVlcy5rbm93bGVkZ2V9XG4gICAgICAgICAgICAgICAgbGFiZWw9e3QoYHByb2Nlc3NpbmdLbm93bGVkZ2UuJHttb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyAnZGVzY3JpcHRpb25VcGRhdGUnIDogJ2Rlc2NyaXB0aW9uQ3JlYXRlJ31gKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdnZW5lcmFsU2VjdGlvbi5yZW1vdmVGYXZvcml0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnZ2VuZXJhbFNlY3Rpb24uYWRkRmF2b3JpdGUnKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckZhdm9yaXRlIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZUZhdm9yaXRlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsyMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsyMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICcjYTZhNmE2J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJ25vbmUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic29saWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcnIDogJ3N0YXItZmF2b3JpdGUtaWNvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXJGYXZvcml0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJUaXRsZT57bW9kYWxWYWx1ZXM/LmlzRWRpdGluZyA/IHQoJ2VkaXRBZ2VudCcpIDogdCgnbmV3QWdlbnQnKX08L1NDQUFNSGVhZGVyVGl0bGU+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckNsb3NlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2FuY2VsTW9kYWwpXG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nIHx8IGlzTG9hZGluZ0tub3dsZWRnZSB8fCBpc0xvYWRpbmdDcmVhdGUgfHwgaXNMb2FkaW5nVXBkYXRlQWNjZXNzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckNsb3NlQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQUFNQ29udGVudCBoYXNTY3JvbGw9e3NlY3Rpb24gIT09ICdrbm93bGVkZ2UnfT5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ31cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdnZW5lcmFsJyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtZ2VuZXJhbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Q2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnZ2VuZXJhbCcgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnZ2VuZXJhbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2dlbmVyYWxTZWN0aW9uLnRpdGxlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbT5cblxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzZWN0aW9uID09PSAna25vd2xlZGdlJ31cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdrbm93bGVkZ2UnKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1rbm93bGVkZ2VcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEJyYWluSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2tub3dsZWRnZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuXG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5J31cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdhY2Nlc3NpYmlsaXR5Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtYWNjZXNzaWJpbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJpbGl0eUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnRpdGxlVGFiJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY2xpZW50c0Vycm9yJyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbUVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbGVydCBjb2xvcj1cIiNDNzA1MDVcIiB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtRXJyb3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXI+XG4gICAgICAgICAgICAgICAgICB7U2VjdGlvbkJ5S2V5W3NlY3Rpb25dKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBtb2RhbFZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6IGhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzLFxuICAgICAgICAgICAgICAgICAgICBhZ2VudE1vZGVscyxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nS25vd2xlZGdlOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgbmV3S25vd2xlZGdlOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVFeGlzdGluZ0tub3dsZWRnZTogKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlTmV3S25vd2xlZGdlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgb25GaWxlRXJyb3JDaGFuZ2U6IHNldEhhc0ZpbGVFcnJvcnMsXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L1NDQUFNQ29udGVudD5cbiAgICAgICAgICAgICAgICA8U0NBQU1Gb290ZXIgaXNFZGl0aW5nPXshIW1vZGFsVmFsdWVzPy5pc0VkaXRpbmcgJiYgISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZX0+XG4gICAgICAgICAgICAgICAgICB7ISFtb2RhbFZhbHVlcz8uaXNFZGl0aW5nICYmXG4gICAgICAgICAgICAgICAgICAgICEhdXNlclBlcm1pc3Npb25zPy5kZWxldGUgJiZcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTURlbGV0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuV2l0aEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dNb2RhbERlbGV0ZSh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nIHx8IGlzTG9hZGluZ0tub3dsZWRnZSB8fCBpc0xvYWRpbmdDcmVhdGUgfHwgaXNMb2FkaW5nVXBkYXRlQWNjZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8V3JhcHBlckNlbnRlckljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRyYXNoIGNvbG9yPVwiIzA4Y1wiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnZGVsZXRlQWdlbnQnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9XcmFwcGVyQ2VudGVySWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTURlbGV0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICcyNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2F2ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgIXZhbGlkYXRlRmllbGRWYWx1ZXMobW9kYWxWYWx1ZXMpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nS25vd2xlZGdlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdDcmVhdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNGaWxlRXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uKG51bGwsICdjcmVhdGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIXZhbGlkYXRlRmllbGRWYWx1ZXMobW9kYWxWYWx1ZXMpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nS25vd2xlZGdlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NyZWF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZpbGVFcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnc2F2ZUNoYW5nZXMnKSA6IHQoJ2NyZWF0ZUFnZW50TGFiZWxCdXR0b24nKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2F2ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvU0NBQU1Gb290ZXI+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NBQU1XcmFwcGVyPlxuICAgICAge3Nob3dNb2RhbERlbGV0ZSAmJiAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01vZGFsRGVsZXRlKGZhbHNlKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogKHByb3BzOiBhbnkpID0+IGhhbmRsZUNvbmZpcm1BY3Rpb24ocHJvcHMsICdkZWxldGUnKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e3sgdGl0bGU6IG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZSwgaWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQgfX1cbiAgICAgICAgICBhY3Rpb249XCJhZ2VudFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvQmFja2Ryb3A+LFxuICAgIHNlbGVjdG9yXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLFFBQVEsT0FBTztBQUN6RSxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUU5QyxTQUFTQyxRQUFRLFFBQVEsNENBQTRDO0FBQ3JFLFNBQVNDLFFBQVEsUUFBUSwyQ0FBMkM7QUFDcEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxhQUFhLFFBQVEsdURBQXVEO0FBQ3JGLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsdUJBQXVCLFFBQVEsNEVBQTRFO0FBQ3BILFNBQVNDLFFBQVEsUUFBUSxzQkFBc0I7QUFDL0MsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUNuRCxTQUFTQyxpQkFBaUIsRUFBRUMs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
|
|
1365
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJBYm1Lbm93bGVkZ2VTZWN0aW9uIiwiU0NBQU1Db250ZW50IiwiU0NBQU1Gb290ZXIiLCJTQ0FBTUhlYWRlciIsIlNDQUFNSGVhZGVyVGl0bGUiLCJTQ0FBTUhlYWRlckxlZnQiLCJTQ0FBTUhlYWRlckZhdm9yaXRlIiwiU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbiIsIlNDQUFNU2lkZWJhciIsIlNDQUFNV3JhcHBlciIsIlNDQUFNU2lkZWJhckl0ZW0iLCJTQ0FBTVNpZGViYXJJdGVtVGl0bGUiLCJTQ0FBTURlbGV0ZUJ1dHRvbiIsIlNDQUFNU2F2ZUJ1dHRvbiIsIlNDQUFNV3JhcHBlclNwaW5uZXIiLCJTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCIsIlNDQUFNU2lkZWJhckl0ZW1FcnJvciIsInVzZUNyZWF0ZUFnZW50IiwidXNlRGVsZXRlQWdlbnQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVXBkYXRlQWdlbnQiLCJ1c2VLbm93bGVkZ2VPcGVyYXRpb25zIiwiQWJtTG9hZGVyRmlsZXMiLCJXcmFwcGVyQ2VudGVySWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInVzZUFjY2Vzc0NsaWVudCIsInVzZVRvZ2dsZUZhdm9yaXRlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiaW5pdGlhbFZhbHVlcyIsIk9iamVjdCIsImZyZWV6ZSIsImlzRWRpdGluZyIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJuYW1lIiwiZW1vamkiLCJpbnRyb2R1Y3Rpb24iLCJpbnB1dFBsYWNlaG9sZGVyIiwiaXNBY3RpdmUiLCJhaU1vZGVsIiwiaWQiLCJ1c2VyUHJvbXB0Iiwia25vd2xlZGdlQmFzZXMiLCJpc19mYXZvcml0ZSIsImFjY2Vzc2liaWxpdHkiLCJhY2Nlc3NUeXBlIiwiY2xpZW50cyIsIlNlY3Rpb25CeUtleSIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsInZhbGlkYXRlRmllbGRWYWx1ZXMiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbCIsImFnZW50QnlJZCIsImFnZW50TW9kZWxzIiwicHJldiIsIl9hZ2VudEJ5SWQka25vd2xlZGdlQiIsIl9hZ2VudEJ5SWQkY2xpZW50cyIsImFnZW50TW9kZWwiLCJmaW5kIiwibW9kZWwiLCJtb2RlbEFpSWQiLCJjcmVhdGVkX2J5IiwiY3JlYXRlZEJ5IiwibWFwIiwiayIsImZpbGUiLCJGaWxlIiwiZmlsZW5hbWUiLCJ0b1N0cmluZyIsInNpemUiLCJmaWxlX3NpemVfYnl0ZXMiLCJ0eXBlIiwib3JpZ2luYWxfZmlsZV90eXBlIiwic3RhdHVzIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsImFjY2VzcyIsImNsaWVudCIsIl9jbGllbnQkaWQiLCJfY2xpZW50JGlzX2FjdGl2ZSIsIl9jbGllbnQkaXNfZGVsZXRlZCIsImlzX2FjdGl2ZSIsImlzX2RlbGV0ZWQiLCJBYm1BZ2VudE1vZGFsIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liMiIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsMyIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNSIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNiIsImFkZEFnZW50IiwidXBkYXRlQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwiY3VycmVudFNlbGVjdGVkQWdlbnQiLCJhZ2VudCIsInNlbGVjdEFnZW50IiwiX3VzZVRvZ2dsZUZhdm9yaXRlIiwidG9nZ2xlRmF2b3JpdGUiLCJzZWxlY3RvciIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc1N1YnNjcmliZWQiLCJzZXRJc1N1YnNjcmliZWQiLCJtb2RhbFJlZiIsImhhc1BlbmRpbmdGaWxlc1JlZiIsImFjdGlvbnNUb0ZpbGVzIiwidG9EZWxldGUiLCJ0b1VwbG9hZCIsImFjY2Vzc1VwZGF0ZUNvbnRleHQiLCJpc0Zyb21DcmVhdGlvbiIsImlzRnJvbUVkaXRpbmciLCJoYXNBY3Rpb25GaWxlcyIsIm9wZXJhdGlvblR5cGUiLCJoYXNCZWVuQ2FsbGVkIiwiYWNjZXNzSGFuZGxlZFJlZiIsImFnZW50Q3JlYXRlZFJlZiIsInBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiIsInByZWZldGNoZWRBZ2VudEJ5SWRSZWYiLCJmaWxlc0ZpbmlzaGVkUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJmaWxlc1Byb2Nlc3NlZCIsInNldEZpbGVzUHJvY2Vzc2VkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dNb2RhbERlbGV0ZSIsInNldFNob3dNb2RhbERlbGV0ZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VjdGlvbiIsInNldFNlY3Rpb24iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibW9kYWxWYWx1ZXMiLCJzZXRNb2RhbFZhbHVlcyIsIl91c2VHZXRBZ2VudEJ5SWQiLCJhZ2VudExvYWRpbmciLCJsb2FkaW5nIiwiaGFuZGxlR2V0QWdlbnRCeUlkIiwiaGFuZGxlQ2xlYW5BZ2VudCIsImVycm9yR2V0QWdlbnRCeUlkIiwiZXJyb3IiLCJfdXNlQWdlbnRNb2RlbCIsImdldEFsbEFnZW50TW9kZWxzIiwiZmlyc3RWYWx1ZUFnZW50IiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzU2hvd1Byb2Nlc3NGaWxlcyIsInNldElzU2hvd1Byb2Nlc3NGaWxlcyIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJoYXNGaWxlRXJyb3JzIiwic2V0SGFzRmlsZUVycm9ycyIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZURlbGV0ZUFnZW50IiwiaGFuZGxlRGVsZXRlQWdlbnQiLCJzdWNjZXNzRGVsZXRlIiwic3VjY2VzcyIsInJlc2V0U3VjY2VzcyIsIl91c2VVcGRhdGVBZ2VudCIsImhhbmRsZVVwZGF0ZUFnZW50Iiwic3VjY2Vzc1VwZGF0ZSIsInJlc2V0U3VjY2Vzc1VwZGF0ZSIsIl91c2VDcmVhdGVBZ2VudCIsImhhbmRsZUNyZWF0ZUFnZW50IiwiaXNMb2FkaW5nQ3JlYXRlIiwic3VjY2Vzc0NyZWF0ZSIsInJlc2V0U3VjY2Vzc0NyZWF0ZSIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhclN1Y2Nlc3MiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiX3VzZUtub3dsZWRnZU9wZXJhdGlvIiwiaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUtub3dsZWRnZXMiLCJoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzIiwiaXNMb2FkaW5nS25vd2xlZGdlIiwiZXJyb3JLbm93bGVkZ2UiLCJzdWNjZXNzS25vd2xlZGdlRGVsZXRlIiwiaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSIsImhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSIsIl91c2VBY2Nlc3NDbGllbnQiLCJoYW5kbGVBY2Nlc3NDbGllbnQiLCJzdWNjZXNzVXBkYXRlQWNjZXNzIiwiaXNMb2FkaW5nVXBkYXRlQWNjZXNzIiwicmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzIiwiaGFuZGxlUmVzZXRTdWNjZXNzIiwiYXJlQ2xpZW50c0FycmF5c0VxdWFsIiwiY2xpZW50czEiLCJjbGllbnRzMiIsImxlbmd0aCIsImNsaWVudHMxSWRzIiwiYyIsImNsaWVudElkIiwic29ydCIsImNsaWVudHMySWRzIiwiZXZlcnkiLCJpbmRleCIsImhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyIiwiY3VycmVudCIsImFjY2Vzc1R5cGVTYW1lIiwiY2xpZW50c1NhbWUiLCJ2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyMiIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsJCIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjMiLCJfbW9kYWxWYWx1ZXMka25vd2xlZGciLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI0IiwiX21vZGFsVmFsdWVzJGtub3dsZWRnMiIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjUiLCJfYWN0aW9uc1RvRmlsZXMkY3VycmUiLCJfYWN0aW9uc1RvRmlsZXMkY3VycmUyIiwidG9VcGRhdGUiLCJoYXNBbnlWYWx1ZUZvckNyZWF0aW9uIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkMiIsIl9hZ2VudE1vZGVscyQiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCQzIiwiaXNEZWZhdWx0QWlNb2RlbCIsImRlZmF1bHRJbnB1dFBsYWNlaG9sZGVyIiwiaXNEZWZhdWx0SW5wdXRQbGFjZWhvbGRlciIsImRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIiLCJpc0RlZmF1bHRVc2VyUHJvbXB0IiwiaGFzTmFtZSIsInRyaW0iLCJoYXNFbW9qaSIsImhhc0ludHJvZHVjdGlvbiIsImhhc0lucHV0UGxhY2Vob2xkZXIiLCJoYXNVc2VyUHJvbXB0IiwiaGFzS25vd2xlZGdlIiwiaGFzQ3VzdG9tQWlNb2RlbCIsImhhc0FjY2Vzc2liaWxpdHkiLCJoYXNDaGFuZ2VzRm9yRWRpdGluZyIsImhhc1BlbmRpbmdDaGFuZ2VzIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudCIsImFnZW50SWQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwidXBkYXRlZEFnZW50IiwiaGFuZGxlQ2xvc2UiLCJjb25maXJtTWVzc2FnZSIsIndpbmRvdyIsImNvbmZpcm0iLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiZXZlbnQiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiaGFuZGxlU2VjdGlvbkNoYW5nZSIsIm5ld1NlY3Rpb24iLCJ0YWJTZWN0aW9uIiwib3B0aW9uIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMiLCJfcmVmMiIsImtleSIsInZhbHVlIiwiZGVsZXRlS25vd2xlZGdlIiwiX2FjdGlvbnNUb0ZpbGVzJGN1cnJlMyIsInB1c2giLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImZpbGVzUHJldklkcyIsIlNldCIsIm5ld0ZpbGVzIiwiZmlsdGVyIiwiaGFzIiwidmFsdWVJZHMiLCJjb25jYXQiLCJrbm93bGVkZ2VGaWxlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY2hhdCIsImFjdGlvbiIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiYWJydXB0IiwiY29uZmlybUFjdGlvbiIsInN0b3AiLCJfeCIsIl94MiIsImFyZ3VtZW50cyIsImhhbmRsZVNldEFnZW50VmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlcyIsIl9hZ2VudFZhbHVlcyR2YWx1ZXMzIiwiYWdlbnRWYWx1ZXMiLCJkZXRhaWwiLCJpbml0aWFsU2VjdGlvbiIsImluY2x1ZGVzIiwidmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlczIiLCJwcmVmZXRjaGVkQWdlbnRCeUlkIiwibmV4dFZhbHVlcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiX2RvY3VtZW50IiwiYm9keSIsIm9yaWdpbmFsT3ZlcmZsb3ciLCJzdHlsZSIsIm92ZXJmbG93IiwiaGFuZGxlQmVmb3JlVW5sb2FkIiwicHJldmVudERlZmF1bHQiLCJyZXR1cm5WYWx1ZSIsInByb21pc2VzIiwiZmlsZXNUb0RlbGV0ZSIsImZpbGVzVG9DcmVhdGUiLCJhZ2VudFdpdGhGYXZvcml0ZSIsImFnZW50Rm9yVG9nZ2xlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGwiLCJmaWxlcyIsImFpQ2hhdEZhdm9yaXRlIiwiZmlsZXNUb1VwbG9hZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsIndlYlNvY2tldEZ1bmN0aW9uIiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwiZmlsZVN0YXR1cyIsInVwZGF0ZWRLbm93bGVkZ2UiLCJrbm93bGVkZ2VfYmFzZV9pZCIsImhhc1BlbmRpbmdGaWxlcyIsInNvbWUiLCJoYXNFcnJvckZpbGVzIiwicHJldkNvdW50IiwiY29udGV4dCIsImFnZW50VG9BZGQiLCJfc3VjY2Vzc0NyZWF0ZSRpZCIsImNoYW5uZWwiLCIkX3NjIiwiXyRfc2MiLCJzdWJzY3JpYmVIYW5kbGVyIiwiXyRfc2MyIiwiXyRfc2MzIiwiXyRfc2MkY2hhbm5lbFR5cGUiLCJtb2RlbF9oYXNoIiwiYWN0aW9uVHlwZSIsIlNVQlNDUklCRSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsImNoYW5uZWxUeXBlIiwiTU9ERUxfQ0hBTk5FTCIsImFwcGx5RWRpdGluZ0FnZW50Iiwic291cmNlIiwic2V0VGltZW91dCIsImFnZW50VmFsdWVzVG9TZXQiLCJwcmVmZXRjaGVkIiwic2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGUiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsMiIsImNyZWF0ZSIsImVkaXQiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJyZWYiLCJ0YWJJbmRleCIsImNvbG9yIiwiYXR0YWNobWVudHMiLCJsYWJlbCIsInRpdGxlIiwid2lkdGgiLCJoZWlnaHQiLCJmaWxsIiwidmFyaWFudCIsImNsYXNzTmFtZSIsImNhbmNlbE1vZGFsIiwiZGlzYWJsZWQiLCJoYXNTY3JvbGwiLCJleGlzdGluZ0tub3dsZWRnZSIsIm5ld0tub3dsZWRnZSIsIm9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2UiLCJvblJlbW92ZU5ld0tub3dsZWRnZSIsIm9uRmlsZUVycm9yQ2hhbmdlIiwiY2hpbGRyZW5XaXRoSWNvbiIsImRpc3BsYXkiLCJnYXAiLCJpc0Rpc2FibGVkIiwib25DbG9zZSIsImhhbmRsZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYWxlcnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1jeWNsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcblxuaW1wb3J0IHsgQ1VCdXR0b24gfSBmcm9tICdAcHJvamVjdGNvci9idXR0b24vbGliL2NvbXBvbmVudHMvQ1VCdXR0b24nXG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NhdGVnb3J5J1xuaW1wb3J0IHsgQWxlcnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9BbGVydCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5pbXBvcnQgeyBTdGFyIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU3RhcidcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBTcGlubmVyTG90dGllIH0gZnJvbSAnQHByb2plY3Rjb3IvY29yLWNvbW1vbnMvbGliL2NvbXBvbmVudHMvc3Bpbm5lci1sb3R0aWUnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uJ1xuaW1wb3J0IHsgQmFja2Ryb3AgfSBmcm9tICcuLi8uLi9hdG9tcy9CYWNrZHJvcCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUljb24sIEJyYWluSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgdXNlQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlQWdlbnRNb2RlbCdcbmltcG9ydCB7IEFnZW50LCBBZ2VudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB1c2VHZXRBZ2VudEJ5SWQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudEJ5SWQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBBYm1HZW5lcmFsU2VjdGlvbiwgQWJtS25vd2xlZGdlU2VjdGlvbiB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uJ1xuaW1wb3J0IHsgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHtcbiAgU0NBQU1Db250ZW50LFxuICBTQ0FBTUZvb3RlcixcbiAgU0NBQU1IZWFkZXIsXG4gIFNDQUFNSGVhZGVyVGl0bGUsXG4gIFNDQUFNSGVhZGVyTGVmdCxcbiAgU0NBQU1IZWFkZXJGYXZvcml0ZSxcbiAgU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbixcbiAgU0NBQU1TaWRlYmFyLFxuICBTQ0FBTVdyYXBwZXIsXG4gIFNDQUFNU2lkZWJhckl0ZW0sXG4gIFNDQUFNU2lkZWJhckl0ZW1UaXRsZSxcbiAgU0NBQU1EZWxldGVCdXR0b24sXG4gIFNDQUFNU2F2ZUJ1dHRvbixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lcixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQsXG4gIFNDQUFNU2lkZWJhckl0ZW1FcnJvcixcbn0gZnJvbSAnLi9BYm1BZ2VudE1vZGFsLnN0eWxlcydcbmltcG9ydCB7IHVzZUNyZWF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VDcmVhdGVBZ2VudCdcbmltcG9ydCB7IHVzZURlbGV0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VEZWxldGVBZ2VudCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVwZGF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VVcGRhdGVBZ2VudCdcbmltcG9ydCB7IHVzZUtub3dsZWRnZU9wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VLbm93bGVkZ2UnXG5pbXBvcnQgeyBBYm1Mb2FkZXJGaWxlcyB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUxvYWRlckZpbGVzJ1xuaW1wb3J0IHsgV3JhcHBlckNlbnRlckljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9XcmFwcGVyQ2VudGVySWNvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyB1c2VBY2Nlc3NDbGllbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBY2Nlc3NDbGllbnQvdXNlQWNjZXNzQ2xpZW50J1xuaW1wb3J0IHsgdXNlVG9nZ2xlRmF2b3JpdGUgfSBmcm9tICcuLi8uLi8uLi9ob29rcydcblxuY29uc3QgaW5pdGlhbFZhbHVlcyA9IE9iamVjdC5mcmVlemUoe1xuICBpc0VkaXRpbmc6IGZhbHNlLFxuICBrbm93bGVkZ2U6IFtdLFxuICBnZW5lcmFsOiB7XG4gICAgbmFtZTogJycsXG4gICAgZW1vamk6ICcnLFxuICAgIGludHJvZHVjdGlvbjogJycsXG4gICAgaW5wdXRQbGFjZWhvbGRlcjogJycsXG4gICAgaXNBY3RpdmU6IGZhbHNlLFxuICAgIGFpTW9kZWw6IG51bGwsXG4gICAgaWQ6IG51bGwsXG4gICAgdXNlclByb21wdDogbnVsbCxcbiAgICBrbm93bGVkZ2VCYXNlczogW10sXG4gICAgaXNfZmF2b3JpdGU6IGZhbHNlLFxuICB9LFxuICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgYWNjZXNzVHlwZTogJ2NvbXBhbnknLFxuICAgIGNsaWVudHM6IG51bGwsXG4gIH0sXG59KVxuXG50eXBlIEFibVNlY3Rpb24gPSAnZ2VuZXJhbCcgfCAna25vd2xlZGdlJyB8ICd0cmFpbmluZycgfCAndGVzdGluZycgfCAnYWNjZXNzaWJpbGl0eSdcblxuZXhwb3J0IGNvbnN0IFNlY3Rpb25CeUtleSA9IHtcbiAgZ2VuZXJhbDogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoe1xuICAgICAga2V5LFxuICAgICAgdmFsdWUsXG4gICAgICBkZWxldGVLbm93bGVkZ2UsXG4gICAgfToge1xuICAgICAga2V5OiBzdHJpbmdcbiAgICAgIHZhbHVlOiB1bmtub3duXG4gICAgICBkZWxldGVLbm93bGVkZ2U/OiBib29sZWFuXG4gICAgfSkgPT4gdm9pZFxuICAgIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW11cbiAgICBsb2FkaW5nOiBib29sZWFuXG4gIH0pID0+IDxBYm1HZW5lcmFsU2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBrbm93bGVkZ2U6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gICAgZXhpc3RpbmdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBuZXdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvblJlbW92ZU5ld0tub3dsZWRnZTogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25GaWxlRXJyb3JDaGFuZ2U6IChoYXNFcnJvcnM6IGJvb2xlYW4pID0+IHZvaWRcbiAgfSkgPT4gPEFibUtub3dsZWRnZVNlY3Rpb24gey4uLnByb3BzfSAvPixcbiAgYWNjZXNzaWJpbGl0eTogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgfSkgPT4gPEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG59XG5cbnR5cGUgQWJtQWdlbnRNb2RhbFByb3BzID0ge1xuICBhZGRBZ2VudDogKG5ld0FnZW50OiBBZ2VudCkgPT4gdm9pZFxuICByZW1vdmVBZ2VudDogKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZFxuICB1cGRhdGVBZ2VudDogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgdXBkYXRlQWdlbnRGYXZvcml0ZTogKHVwZGF0ZWRBZ2VudDogQWdlbnQsIHNob3VsZFNvcnQ/OiBib29sZWFuKSA9PiB2b2lkXG4gIHNlbGVjdEZpcnN0QWdlbnQ6IChhZ2VudElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuY29uc3QgdmFsaWRhdGVGaWVsZFZhbHVlcyA9ICh2YWx1ZVRvVmFsaWRhdGU6IE1vZGFsVmFsdWVzKSA9PiB7XG4gIGlmICghdmFsdWVUb1ZhbGlkYXRlLmdlbmVyYWwubmFtZSB8fCAhdmFsdWVUb1ZhbGlkYXRlLmdlbmVyYWwudXNlclByb21wdCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKiBNaXNtYSBlc3RydWN0dXJhIHF1ZSBlbCBlZmVjdG8gcXVlIGhpZHJhdGEgZGVzZGUgdXNlR2V0QWdlbnRCeUlkICh0b2RhcyBsYXMgcGVzdGHDsWFzIGRlbCBBQk0pLiAqL1xuZnVuY3Rpb24gYnVpbGRFZGl0aW5nTW9kYWxWYWx1ZXNGcm9tQWdlbnREZXRhaWwoXG4gIGFnZW50QnlJZDogYW55LFxuICBhZ2VudE1vZGVsczogQWdlbnRNb2RlbFtdLFxuICBwcmV2OiBNb2RhbFZhbHVlc1xuKTogTW9kYWxWYWx1ZXMge1xuICBjb25zdCBhZ2VudE1vZGVsID0gYWdlbnRNb2RlbHMuZmluZChtb2RlbCA9PiBtb2RlbC5pZCA9PT0gYWdlbnRCeUlkLm1vZGVsQWlJZClcbiAgcmV0dXJuIHtcbiAgICAuLi5wcmV2LFxuICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICBnZW5lcmFsOiB7XG4gICAgICBlbW9qaTogYWdlbnRCeUlkLmVtb2ppLFxuICAgICAgbmFtZTogYWdlbnRCeUlkLm5hbWUsXG4gICAgICBpbnRyb2R1Y3Rpb246IGFnZW50QnlJZC5pbnRyb2R1Y3Rpb24sXG4gICAgICBpbnB1dFBsYWNlaG9sZGVyOiBhZ2VudEJ5SWQuaW5wdXRQbGFjZWhvbGRlcixcbiAgICAgIGlzQWN0aXZlOiBhZ2VudEJ5SWQuaXNBY3RpdmUsXG4gICAgICBhaU1vZGVsOiBhZ2VudE1vZGVsIHx8IG51bGwsXG4gICAgICBpZDogYWdlbnRCeUlkLmlkLFxuICAgICAgdXNlclByb21wdDogYWdlbnRCeUlkLnVzZXJQcm9tcHQsXG4gICAgICBrbm93bGVkZ2VCYXNlczogW10sXG4gICAgICBpc19mYXZvcml0ZTogYWdlbnRCeUlkLmlzX2Zhdm9yaXRlLFxuICAgICAgY3JlYXRlZF9ieTogYWdlbnRCeUlkLmNyZWF0ZWRCeSxcbiAgICB9LFxuICAgIGtub3dsZWRnZTpcbiAgICAgIGFnZW50QnlJZC5rbm93bGVkZ2VCYXNlcz8ubWFwKChrOiBhbnkpID0+ICh7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBrLmZpbGVuYW1lKSxcbiAgICAgICAgaWQ6IGsuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogay5maWxlbmFtZSxcbiAgICAgICAgc2l6ZTogay5maWxlX3NpemVfYnl0ZXMgfHwgMCxcbiAgICAgICAgdHlwZTogay5vcmlnaW5hbF9maWxlX3R5cGUsXG4gICAgICAgIHN0YXR1czogay5zdGF0dXMsXG4gICAgICAgIHVybF9vcmlnaW5hbDogay51cmxfb3JpZ2luYWwgfHwgdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiBrLnVybF90aHVtYm5haWwgfHwgdW5kZWZpbmVkLFxuICAgICAgfSkpIHx8IFtdLFxuICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgIGFjY2Vzc1R5cGU6IGFnZW50QnlJZC5hY2Nlc3MsXG4gICAgICBjbGllbnRzOlxuICAgICAgICBhZ2VudEJ5SWQuY2xpZW50cz8ubWFwKChjbGllbnQ6IGFueSkgPT4gKHtcbiAgICAgICAgICBpZDogY2xpZW50LmlkPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgICAgIG5hbWU6IGNsaWVudC5uYW1lLFxuICAgICAgICAgIGlzX2FjdGl2ZTogY2xpZW50LmlzX2FjdGl2ZSA/PyBmYWxzZSxcbiAgICAgICAgICBpc19kZWxldGVkOiBjbGllbnQuaXNfZGVsZXRlZCA/PyBmYWxzZSxcbiAgICAgICAgfSkpIHx8IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQWJtQWdlbnRNb2RhbCA9ICh7XG4gIGFkZEFnZW50LFxuICB1cGRhdGVBZ2VudCxcbiAgcmVtb3ZlQWdlbnQsXG4gIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gIHNlbGVjdEZpcnN0QWdlbnQsXG59OiBBYm1BZ2VudE1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignYWJtX2FnZW50X3NlY3Rpb24nKVxuICAvLyBjb25zdCAkX3NjOiBhbnkgPSBudWxsXG4gIGNvbnN0IHsgYWdlbnQ6IGN1cnJlbnRTZWxlY3RlZEFnZW50LCBzZWxlY3RBZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgdG9nZ2xlRmF2b3JpdGUgfSA9IHVzZVRvZ2dsZUZhdm9yaXRlKClcbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWJtLWFnZW50LW1vZGFsJylcbiAgY29uc3QgW2lzU3Vic2NyaWJlZCwgc2V0SXNTdWJzY3JpYmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBtb2RhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhY3Rpb25zVG9GaWxlcyA9IHVzZVJlZjxhbnk+KHtcbiAgICB0b0RlbGV0ZTogW10sXG4gICAgdG9VcGxvYWQ6IFtdLFxuICB9KVxuICBjb25zdCBhY2Nlc3NVcGRhdGVDb250ZXh0ID0gdXNlUmVmPHtcbiAgICBpc0Zyb21DcmVhdGlvbjogYm9vbGVhblxuICAgIGlzRnJvbUVkaXRpbmc6IGJvb2xlYW5cbiAgICBoYXNBY3Rpb25GaWxlczogYm9vbGVhblxuICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCBudWxsXG4gICAgaGFzQmVlbkNhbGxlZD86IGJvb2xlYW5cbiAgfT4oe1xuICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzSGFuZGxlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWdlbnRDcmVhdGVkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiA9IHVzZVJlZjxBYm1TZWN0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG4gIGNvbnN0IGZpbGVzRmluaXNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IFtmaWxlc1Byb2Nlc3NlZCwgc2V0RmlsZXNQcm9jZXNzZWRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd01vZGFsRGVsZXRlLCBzZXRTaG93TW9kYWxEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWN0aW9uLCBzZXRTZWN0aW9uXSA9IHVzZVN0YXRlPEFibVNlY3Rpb24+KCdnZW5lcmFsJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbW9kYWxWYWx1ZXMsIHNldE1vZGFsVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBnZW5lcmFsOiBhbnlcbiAgICBrbm93bGVkZ2U6IGFueVxuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGFjY2Vzc2liaWxpdHk6IGFueVxuICB9Pihpbml0aWFsVmFsdWVzKVxuICBjb25zdCB7XG4gICAgbG9hZGluZzogYWdlbnRMb2FkaW5nLFxuICAgIGhhbmRsZUdldEFnZW50QnlJZCxcbiAgICBhZ2VudDogYWdlbnRCeUlkLFxuICAgIGhhbmRsZUNsZWFuQWdlbnQsXG4gICAgZXJyb3I6IGVycm9yR2V0QWdlbnRCeUlkLFxuICB9ID0gdXNlR2V0QWdlbnRCeUlkKClcbiAgY29uc3QgeyBhZ2VudE1vZGVscywgZ2V0QWxsQWdlbnRNb2RlbHMgfSA9IHVzZUFnZW50TW9kZWwoKVxuICBjb25zdCBmaXJzdFZhbHVlQWdlbnQgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBzZXRJc1Nob3dQcm9jZXNzRmlsZXNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNGaWxlRXJyb3JzLCBzZXRIYXNGaWxlRXJyb3JzXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcblxuICBjb25zdCB7IGhhbmRsZURlbGV0ZUFnZW50LCBzdWNjZXNzOiBzdWNjZXNzRGVsZXRlLCByZXNldFN1Y2Nlc3MgfSA9IHVzZURlbGV0ZUFnZW50KClcbiAgY29uc3QgeyBoYW5kbGVVcGRhdGVBZ2VudCwgc3VjY2Vzczogc3VjY2Vzc1VwZGF0ZSwgcmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGUgfSA9IHVzZVVwZGF0ZUFnZW50KClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlQWdlbnQsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdDcmVhdGUsXG4gICAgc3VjY2Vzczogc3VjY2Vzc0NyZWF0ZSxcbiAgICByZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgfSA9IHVzZUNyZWF0ZUFnZW50KClcblxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgZXJyb3I6IGVycm9yS25vd2xlZGdlLFxuICAgIHN1Y2Nlc3NEZWxldGU6IHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gIH0gPSB1c2VLbm93bGVkZ2VPcGVyYXRpb25zKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQWNjZXNzQ2xpZW50LFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gIH0gPSB1c2VBY2Nlc3NDbGllbnQoKVxuXG4gIGlmICghc2VsZWN0b3IpIHJldHVybiBudWxsXG5cbiAgY29uc3QgYXJlQ2xpZW50c0FycmF5c0VxdWFsID0gKGNsaWVudHMxOiBhbnlbXSB8IG51bGwsIGNsaWVudHMyOiBhbnlbXSB8IG51bGwpID0+IHtcbiAgICBpZiAoIWNsaWVudHMxICYmICFjbGllbnRzMikgcmV0dXJuIHRydWVcbiAgICBpZiAoIWNsaWVudHMxIHx8ICFjbGllbnRzMikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGNsaWVudHMxLmxlbmd0aCAhPT0gY2xpZW50czIubGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGNsaWVudHMxSWRzID0gY2xpZW50czEubWFwKGMgPT4gYy5jbGllbnRJZCkuc29ydCgpXG4gICAgY29uc3QgY2xpZW50czJJZHMgPSBjbGllbnRzMi5tYXAoYyA9PiBjLmNsaWVudElkKS5zb3J0KClcblxuICAgIHJldHVybiBjbGllbnRzMUlkcy5ldmVyeSgoaWQsIGluZGV4KSA9PiBpZCA9PT0gY2xpZW50czJJZHNbaW5kZXhdKVxuICB9XG5cbiAgY29uc3QgaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uYWNjZXNzaWJpbGl0eSB8fCAhbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHkpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBhY2Nlc3NUeXBlU2FtZSA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlXG4gICAgY29uc3QgY2xpZW50c1NhbWUgPSBhcmVDbGllbnRzQXJyYXlzRXF1YWwoXG4gICAgICBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMsXG4gICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5hY2Nlc3NpYmlsaXR5LmNsaWVudHNcbiAgICApXG5cbiAgICByZXR1cm4gIWFjY2Vzc1R5cGVTYW1lIHx8ICFjbGllbnRzU2FtZVxuICB9XG5cbiAgY29uc3QgdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSA9ICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5nZW5lcmFsIHx8ICFtb2RhbFZhbHVlcz8uZ2VuZXJhbCkgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gKFxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5uYW1lID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLm5hbWUgJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuZW1vamkgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwuZW1vamkgJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmludHJvZHVjdGlvbiAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuYWlNb2RlbD8uaWQgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwuYWlNb2RlbD8uaWQgJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC51c2VyUHJvbXB0ICYmXG4gICAgICAobW9kYWxWYWx1ZXMua25vd2xlZGdlPy5sZW5ndGggPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5rbm93bGVkZ2U/Lmxlbmd0aCB8fFxuICAgICAgICAoIW1vZGFsVmFsdWVzLmtub3dsZWRnZT8ubGVuZ3RoICYmICFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8ua25vd2xlZGdlPy5sZW5ndGgpKSAmJlxuICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGRhdGU/Lmxlbmd0aCAmJlxuICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGU/Lmxlbmd0aCAmJlxuICAgICAgIWhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNBbnlWYWx1ZUZvckNyZWF0aW9uID0gKCkgPT4ge1xuICAgIGlmIChtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgaXNEZWZhdWx0QWlNb2RlbCA9ICEhYWdlbnRNb2RlbHMubGVuZ3RoICYmIG1vZGFsVmFsdWVzLmdlbmVyYWwuYWlNb2RlbD8uaWQgPT09IGFnZW50TW9kZWxzWzBdPy5pZFxuXG4gICAgY29uc3QgZGVmYXVsdElucHV0UGxhY2Vob2xkZXIgPSB0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyJylcbiAgICBjb25zdCBpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyID09PSBkZWZhdWx0SW5wdXRQbGFjZWhvbGRlclxuXG4gICAgY29uc3QgZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciA9IHQoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHRQbGFjZWhvbGRlcicpXG4gICAgY29uc3QgaXNEZWZhdWx0VXNlclByb21wdCA9XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IGRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIgfHxcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gJycgfHxcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gbnVsbFxuXG4gICAgY29uc3QgaGFzTmFtZSA9IG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZS50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzRW1vamkgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmVtb2ppLnRyaW0oKSAhPT0gJydcbiAgICBjb25zdCBoYXNJbnRyb2R1Y3Rpb24gPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbi50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzSW5wdXRQbGFjZWhvbGRlciA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlci50cmltKCkgIT09ICcnICYmICFpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyXG4gICAgY29uc3QgaGFzVXNlclByb21wdCA9IG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdD8udHJpbSgpICE9PSAnJyAmJiAhaXNEZWZhdWx0VXNlclByb21wdFxuICAgIGNvbnN0IGhhc0tub3dsZWRnZSA9ICEhbW9kYWxWYWx1ZXMua25vd2xlZGdlLmxlbmd0aFxuICAgIGNvbnN0IGhhc0N1c3RvbUFpTW9kZWwgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWwgJiYgIWlzRGVmYXVsdEFpTW9kZWxcbiAgICBjb25zdCBoYXNBY2Nlc3NpYmlsaXR5ID0gbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueSdcblxuICAgIHJldHVybiAoXG4gICAgICBoYXNOYW1lIHx8XG4gICAgICBoYXNFbW9qaSB8fFxuICAgICAgaGFzSW50cm9kdWN0aW9uIHx8XG4gICAgICBoYXNJbnB1dFBsYWNlaG9sZGVyIHx8XG4gICAgICBoYXNVc2VyUHJvbXB0IHx8XG4gICAgICBoYXNLbm93bGVkZ2UgfHxcbiAgICAgIGhhc0N1c3RvbUFpTW9kZWwgfHxcbiAgICAgIGhhc0FjY2Vzc2liaWxpdHlcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNDaGFuZ2VzRm9yRWRpdGluZyA9ICgpID0+IHtcbiAgICBpZiAoIW1vZGFsVmFsdWVzLmlzRWRpdGluZykgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gKFxuICAgICAgIXZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgICAgISFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCB8fFxuICAgICAgISFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhc1BlbmRpbmdDaGFuZ2VzID0gKCkgPT4ge1xuICAgIHJldHVybiBoYXNBbnlWYWx1ZUZvckNyZWF0aW9uKCkgfHwgaGFzQ2hhbmdlc0ZvckVkaXRpbmcoKVxuICB9XG5cbiAgLy8gSGVscGVyIHBhcmEgbWFuZWphciBlbCB0b2dnbGUgZGUgZmF2b3JpdG8geSBhY3R1YWxpemFyIGVsIGVzdGFkbyBjb24gb3JkZW5hbWllbnRvXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nLCBhZ2VudDogQWdlbnQsIG9uU3VjY2Vzcz86ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkLCBvbkVycm9yPzogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICAgIGFnZW50SWQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgLy8gQWN0dWFsaXphciBlbCBlc3RhZG8gZGUgYWdlbnRlcyBjb24gZWwgcmVzdWx0YWRvIGRlbCBzZXJ2aWRvciB5IG9yZGVuYXJcbiAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlKHVwZGF0ZWRBZ2VudCwgdHJ1ZSlcbiAgICAgICAgICBpZiAob25TdWNjZXNzKSB7XG4gICAgICAgICAgICBvblN1Y2Nlc3ModXBkYXRlZEFnZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgICAgICBvbkVycm9yKClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFnZW50LmlzX2Zhdm9yaXRlXG4gICAgICApXG4gICAgfSxcbiAgICBbdG9nZ2xlRmF2b3JpdGUsIHVwZGF0ZUFnZW50RmF2b3JpdGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICBpZiAoaGFzUGVuZGluZ0NoYW5nZXMoKSAmJiAhc3VjY2Vzc0NyZWF0ZSAmJiAhc3VjY2Vzc1VwZGF0ZSAmJiAhc3VjY2Vzc0RlbGV0ZSkge1xuICAgICAgY29uc3QgY29uZmlybU1lc3NhZ2UgPSBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQ2xvc2VFZGl0QWdlbnQnKSA6IHQoJ2NvbmZpcm1DbG9zZUNyZWF0ZUFnZW50JylcblxuICAgICAgaWYgKCF3aW5kb3cuY29uZmlybShjb25maXJtTWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0TW9kYWxWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgICBoYW5kbGVDbGVhbkFnZW50KClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlKClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudCA9IHtcbiAgICAgIHRvRGVsZXRlOiBbXSxcbiAgICAgIHRvVXBsb2FkOiBbXSxcbiAgICB9XG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgfVxuICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcbiAgICBzZXRJc1N1YnNjcmliZWQoZmFsc2UpXG4gICAgc2V0RmlsZXNQcm9jZXNzZWQoMClcbiAgICBzZXRTZWN0aW9uKCdnZW5lcmFsJylcbiAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgIWlzU2hvd1Byb2Nlc3NGaWxlcykge1xuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlY3Rpb25DaGFuZ2UgPSAobmV3U2VjdGlvbjogQWJtU2VjdGlvbikgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy50YWJTZWN0aW9uLCB7IG9wdGlvbjogbmV3U2VjdGlvbiB9KVxuICAgIHNldFNlY3Rpb24obmV3U2VjdGlvbilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzID0gKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgZGVsZXRlS25vd2xlZGdlLFxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogYW55XG4gICAgZGVsZXRlS25vd2xlZGdlOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoa2V5ID09PSAna25vd2xlZGdlJykge1xuICAgICAgaWYgKCFkZWxldGVLbm93bGVkZ2UpIHtcbiAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5wdXNoKC4uLih2YWx1ZSB8fCBbXSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmaWxlc1ByZXZJZHMgPSB2YWx1ZS5sZW5ndGggPyBuZXcgU2V0KHZhbHVlLm1hcChmaWxlID0+IGZpbGUuaWQpKSA6IG5ldyBTZXQoKVxuICAgICAgICBjb25zdCBuZXdGaWxlcyA9IG1vZGFsVmFsdWVzLmtub3dsZWRnZS5maWx0ZXIoZmlsZSA9PiAhZmlsZXNQcmV2SWRzLmhhcyhmaWxlLmlkKSAmJiBmaWxlLnN0YXR1cyAhPT0gJ3N0YXJ0ZWQnKVxuICAgICAgICBpZiAoIW5ld0ZpbGVzLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlSWRzID0gbmV3IFNldCh2YWx1ZS5tYXAoZmlsZSA9PiBmaWxlLmlkKSlcbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5maWx0ZXIoZmlsZSA9PiB2YWx1ZUlkcy5oYXMoZmlsZS5pZCkpXG4gICAgICAgIH1cbiAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFsuLi4oYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSB8fCBbXSksIC4uLm5ld0ZpbGVzXVxuICAgICAgfVxuICAgIH1cbiAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IGtub3dsZWRnZUZpbGVzID1cbiAgICAgICAga2V5ID09PSAna25vd2xlZGdlJ1xuICAgICAgICAgID8gZGVsZXRlS25vd2xlZGdlXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IFsuLi4ocHJldi5rbm93bGVkZ2UgfHwgW10pLCAuLi4oKHZhbHVlIGFzIEF0dGFjaG1lbnRGaWxlW10pIHx8IFtdKV1cbiAgICAgICAgICA6IG51bGxcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIC4uLihrZXkgPT09ICdrbm93bGVkZ2UnXG4gICAgICAgICAgPyB7IGtub3dsZWRnZToga25vd2xlZGdlRmlsZXMgfVxuICAgICAgICAgIDoga2V5ID09PSAnYWNjZXNzaWJpbGl0eSdcbiAgICAgICAgICAgID8geyBhY2Nlc3NpYmlsaXR5OiB2YWx1ZSB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgICAgICAgICBba2V5XTogdmFsdWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSBhc3luYyAoY2hhdDogYW55LCBhY3Rpb246ICdkZWxldGUnIHwgJ3VwZGF0ZScgfCAnY3JlYXRlJykgPT4ge1xuICAgIC8vIFNvbG8gcGVybWl0aXIgb3BlcmFjaW9uZXMgZGUgYWdlbnRlcyBjdXN0b20gc2kgbGEgZmVhdHVyZSBmbGFnIGVzdMOhIGhhYmlsaXRhZGFcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uID09PSAnZGVsZXRlJykge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmRlbGV0ZSlcbiAgICAgIGhhbmRsZURlbGV0ZUFnZW50KGNoYXQuaWQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNvbmZpcm1BY3Rpb24sIHsgb3B0aW9uOiBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyAnZWRpdGUnIDogJ2NyZWF0ZScgfSlcbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSB7XG4gICAgICBpZiAoIXZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSkge1xuICAgICAgICBhd2FpdCBoYW5kbGVVcGRhdGVBZ2VudChtb2RhbFZhbHVlcylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgaGFuZGxlQ3JlYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRBZ2VudFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50VmFsdWVzIH0gPSBldmVudC5kZXRhaWxcbiAgICAgIGNvbnN0IGluaXRpYWxTZWN0aW9uID0gYWdlbnRWYWx1ZXM/LmluaXRpYWxTZWN0aW9uIGFzIEFibVNlY3Rpb24gfCB1bmRlZmluZWRcbiAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID1cbiAgICAgICAgaW5pdGlhbFNlY3Rpb24gJiYgWydnZW5lcmFsJywgJ2tub3dsZWRnZScsICdhY2Nlc3NpYmlsaXR5J10uaW5jbHVkZXMoaW5pdGlhbFNlY3Rpb24pID8gaW5pdGlhbFNlY3Rpb24gOiBudWxsXG5cbiAgICAgIGdldEFsbEFnZW50TW9kZWxzKClcbiAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG5cbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cblxuICAgICAgaWYgKGFnZW50VmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nKSB7XG4gICAgICAgIC8vIFZhbGlkYXIgcXVlIGxhIGZlYXR1cmUgZmxhZyBlc3TDqSBoYWJpbGl0YWRhIGFudGVzIGRlIGNhcmdhciBlbCBhZ2VudGUgcGFyYSBlZGl0YXJcbiAgICAgICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWdlbnRWYWx1ZXMucHJlZmV0Y2hlZEFnZW50QnlJZCkge1xuICAgICAgICAgIGhhbmRsZUNsZWFuQWdlbnQoKVxuICAgICAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IGFnZW50VmFsdWVzLnByZWZldGNoZWRBZ2VudEJ5SWRcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVHZXRBZ2VudEJ5SWQoYWdlbnRWYWx1ZXM/LnZhbHVlcz8uZ2VuZXJhbD8uaWQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoYWdlbnRWYWx1ZXMudmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZXMgPSB7XG4gICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgICAuLi5hZ2VudFZhbHVlcy52YWx1ZXMsXG4gICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcy5nZW5lcmFsLFxuICAgICAgICAgICAgLi4uKGFnZW50VmFsdWVzLnZhbHVlcy5nZW5lcmFsIHx8IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSxcbiAgICAgICAgICAgIC4uLihhZ2VudFZhbHVlcy52YWx1ZXMuYWNjZXNzaWJpbGl0eSB8fCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBrbm93bGVkZ2U6IGFnZW50VmFsdWVzLnZhbHVlcy5rbm93bGVkZ2UgfHwgW10sXG4gICAgICAgIH1cblxuICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IG5leHRWYWx1ZXNcbiAgICAgICAgc2V0TW9kYWxWYWx1ZXMobmV4dFZhbHVlcylcbiAgICAgIH1cblxuICAgICAgaWYgKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ICYmICFhZ2VudFZhbHVlcy52YWx1ZXM/LmlzRWRpdGluZykge1xuICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KVxuICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzIGFzIEV2ZW50TGlzdGVuZXIpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyB1c2VFZmZlY3QgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBvZiB0aGUgYm9keSB3aGVuIHRoZSBtb2RhbCBpcyBvcGVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IGJvZHkgfSA9IGRvY3VtZW50XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxPdmVyZmxvdyA9IGJvZHkuc3R5bGUub3ZlcmZsb3dcbiAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gb3JpZ2luYWxPdmVyZmxvd1xuICAgIH1cbiAgfSwgW2lzT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVCZWZvcmVVbmxvYWQgPSAoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgICAgcmV0dXJuIHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgaGFzUGVuZGluZ0NoYW5nZXMsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnREZWxldGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3MoKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCBhcyBzdHJpbmcpXG4gICAgICB9XG4gICAgICByZW1vdmVBZ2VudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKVxuICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKGZhbHNlKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NEZWxldGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRXZpdGFyIGVqZWN1Y2nDs24gbcO6bHRpcGxlIGRlbCBlZmVjdG9cbiAgICBpZiAoc3VjY2Vzc0NyZWF0ZSAmJiAhaXNMb2FkaW5nQ3JlYXRlICYmIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ICE9PSBzdWNjZXNzQ3JlYXRlLmlkKSB7XG4gICAgICBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCA9IHN1Y2Nlc3NDcmVhdGUuaWRcbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWNjZXNpYmlsaWRhZCBwZXJvIGhheSBhcmNoaXZvcywgZXN0YWJsZWNlciBlbCBjb250ZXh0byBwYXJhIGNyZWFjacOzblxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW1xuICAgICAgICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZTogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSxcbiAgICAgICAgICAgIGZpbGVzVG9DcmVhdGU6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQsXG4gICAgICAgICAgICBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcblxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSlcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWNjZXNpYmlsaWRhZCBwZXJvIGhheSBhcmNoaXZvcywgZXN0YWJsZWNlciBlbCBjb250ZXh0byBwYXJhIGNyZWFjacOzblxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW1xuICAgICAgICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMoeyBmaWxlczogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCwgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpIH0pLFxuICAgICAgICBdXG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICAgICAgICgpID0+IHJlc29sdmUoKSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICB9XG5cbiAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgLy8gU29sbyByZXNldGVhciBlbCBjb250ZXh0byBzaSBOTyBzZSBoYSBsbGFtYWRvIHRvZGF2w61hXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICBjb25zdCB7IGhhc0FjdGlvbkZpbGVzIH0gPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGhhc0FjdGlvbkZpbGVzIHx8IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgICAgaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSlcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNvbG8gZWplY3V0YXIgaGFuZGxlQWNjZXNzQ2xpZW50LCBlbCBhZ2VudGUgc2UgYWdyZWdhcsOhIHkgZWwgdG9nZ2xlIHNlIGhhcsOhIGVuIHN1Y2Nlc3NVcGRhdGVBY2Nlc3NcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBmYXZvcml0ZSBpZiBpdCB3YXMgbWFya2VkIGR1cmluZyBjcmVhdGlvblxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgLy8gUHJpbWVybyBhZ3JlZ2FyIGVsIGFnZW50ZSBhIGxhIGxpc3RhIChhZGRBZ2VudCB5YSBvcmRlbmEpXG4gICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuXG4gICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgLy8gTHVlZ28gaGFjZXIgZWwgdG9nZ2xlIGRlIGZhdm9yaXRvIGVuIGVsIHNlcnZpZG9yIHkgYWN0dWFsaXphciBlbCBlc3RhZG9cbiAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScgfSlcbiAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgICBzZWxlY3RBZ2VudCh7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlIH0pXG4gICAgICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246ICdhZGQnIH0pXG4gICAgICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0xvYWRpbmdDcmVhdGUsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICBhZGRBZ2VudCxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZUNsb3NlLFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gIF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc1VwZGF0ZSkge1xuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoICYmIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZV1cbiAgICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWRdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFtdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IFtdXG5cbiAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgZmlsZXNUb0NyZWF0ZTogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZV1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlczogZmlsZXNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWRdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IFtdXG5cbiAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzVG9VcGxvYWQsXG4gICAgICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICAgICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgIC8vIFNvbG8gcmVzZXRlYXIgZWwgY29udGV4dG8gc2kgTk8gc2UgaGEgbGxhbWFkbyB0b2RhdsOtYSB5IE5PIGhheSBhcmNoaXZvcyBwZW5kaWVudGVzXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgJiYgIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgLy8gTGxhbWFyIGEgaGFuZGxlQWNjZXNzQ2xpZW50IHNvbG8gdW5hIHZlelxuICAgICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICAgIGhhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXG4gICAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFNvbG8gY2VycmFyIHNpIG5vIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvcyBuaSBhY2Nlc3MgcGVuZGllbnRlXG4gICAgICBpZiAoXG4gICAgICAgICFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJlxuICAgICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzICYmXG4gICAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCAmJlxuICAgICAgICAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICAgICFzdWNjZXNzVXBkYXRlQWNjZXNzXG4gICAgICApIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlKClcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgc3VjY2Vzc1VwZGF0ZSxcbiAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGUsXG4gICAgaGFuZGxlQ2xvc2UsXG4gIF0pXG5cbiAgY29uc3Qgd2ViU29ja2V0RnVuY3Rpb24gPSAoeyBtb2RlbF9kYXRhOiBtb2RlbERhdGEgfTogeyBtb2RlbF9kYXRhOiBhbnkgfSkgPT4ge1xuICAgIGNvbnN0IGZpbGVTdGF0dXMgPSBtb2RlbERhdGFcbiAgICBpZiAoZmlsZVN0YXR1cy5zdGF0dXMgPT09ICdkb25lJyB8fCBmaWxlU3RhdHVzLnN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkS25vd2xlZGdlID0gcHJldi5rbm93bGVkZ2UubWFwKGZpbGUgPT4ge1xuICAgICAgICAgIGlmIChmaWxlLm5hbWUgPT09IGZpbGVTdGF0dXMuZmlsZW5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmZpbGUsXG4gICAgICAgICAgICAgIHN0YXR1czogZmlsZVN0YXR1cy5zdGF0dXMsXG4gICAgICAgICAgICAgIGlkOiBmaWxlU3RhdHVzLmtub3dsZWRnZV9iYXNlX2lkIHx8IGZpbGUuaWQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmaWxlXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGhhc1BlbmRpbmdGaWxlcyA9IHVwZGF0ZWRLbm93bGVkZ2Uuc29tZShmaWxlID0+IGZpbGUuc3RhdHVzID09PSAncGVuZGluZycpXG4gICAgICAgIGNvbnN0IGhhc0Vycm9yRmlsZXMgPSB1cGRhdGVkS25vd2xlZGdlLnNvbWUoZmlsZSA9PiBmaWxlLnN0YXR1cyA9PT0gJ2ZhaWxlZCcpXG4gICAgICAgIGlmIChoYXNFcnJvckZpbGVzICYmICFoYXNQZW5kaW5nRmlsZXMpIHtcbiAgICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKVxuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoXG4gICAgICAgICAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQWdlbnRVcGRhdGVkV2l0aEZpbGVzRXJyb3InKSA6IHQoJ2NvbmZpcm1BZ2VudFdpdGhGaWxlc0Vycm9yJylcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc1BlbmRpbmdGaWxlcyAmJiAhaGFzRXJyb3JGaWxlcykge1xuICAgICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG5cbiAgICAgICAgICAvLyBTaSBoYWLDrWEgYWNjZXNzIHBlbmRpZW50ZSB5IHlhIGVzdGFiYSBtYW5lamFkbywgZm9yemFyIHF1ZSBlbCB1c2VFZmZlY3QgZGUgYWNjZXNzIHNlIGVqZWN1dGUgZGUgbnVldm9cbiAgICAgICAgICBpZiAoYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgc2V0RmlsZXNQcm9jZXNzZWQocHJldkNvdW50ID0+IHByZXZDb3VudCArIDEpXG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJyAmJlxuICAgICAgICAgICAgIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcyAmJlxuICAgICAgICAgICAgIWZpbGVzRmluaXNoZWRSZWYuY3VycmVudFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gU2kgZXMgY3JlYWNpw7NuIHNpbiBhY2Nlc2liaWxpZGFkLCBtYXJjYXIgcXVlIGxvcyBhcmNoaXZvcyB0ZXJtaW5hcm9uXG4gICAgICAgICAgICBmaWxlc0ZpbmlzaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgICBzZXRGaWxlc1Byb2Nlc3NlZChwcmV2Q291bnQgPT4gcHJldkNvdW50ICsgMSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIGtub3dsZWRnZTogdXBkYXRlZEtub3dsZWRnZSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdWNjZXNzS25vd2xlZGdlRGVsZXRlICYmICFpc0xvYWRpbmdLbm93bGVkZ2UgJiYgIWVycm9yS25vd2xlZGdlKSB7XG4gICAgICAvLyBTb2xvIGNlcnJhciBzaSBOTyBoYXkgYXJjaGl2b3Mgc2llbmRvIHByb2Nlc2Fkb3NcbiAgICAgIGlmIChoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCB8fCBpc1Nob3dQcm9jZXNzRmlsZXMgfHwgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gICAgaWYgKGVycm9yS25vd2xlZGdlKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKFxuICAgICAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQWdlbnRVcGRhdGVkV2l0aEZpbGVzRXJyb3InKSA6IHQoJ2NvbmZpcm1BZ2VudFdpdGhGaWxlc0Vycm9yJylcbiAgICAgIClcbiAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSwgaXNMb2FkaW5nS25vd2xlZGdlLCBlcnJvcktub3dsZWRnZSwgaXNTaG93UHJvY2Vzc0ZpbGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIC8vIFNpIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvcywgZXNwZXJhciBhIHF1ZSB0ZXJtaW5lblxuICAgIGlmIChjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmIChoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCB8fCBpc1Nob3dQcm9jZXNzRmlsZXMpKSB7XG4gICAgICAvLyBTaSBzdWNjZXNzVXBkYXRlQWNjZXNzIGVzdMOhIGFjdGl2bywgbWFyY2FyIGNvbW8gbWFuZWphZG8gcGVybyBOTyByZXNldGVhciBoYXN0YSBxdWUgdGVybWluZW4gbG9zIGFyY2hpdm9zXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2VzcyAmJiAhYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNpIHlhIGZ1ZSBtYW5lamFkbyB5IG5vIGhheSBhcmNoaXZvcyBwZW5kaWVudGVzLCBlamVjdXRhciBlbCBjaWVycmVcbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ICYmIGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiYgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG5cbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgLy8gU2kgaGF5IGFyY2hpdm9zLCBlbCBhZ2VudGUgeWEgZnVlIGFncmVnYWRvIHkgZWwgdG9nZ2xlIHlhIHNlIGhpem8gZW4gc3VjY2Vzc0NyZWF0ZVxuICAgICAgLy8gU29sbyBuZWNlc2l0YW1vcyBjZXJyYXIgZWwgbW9kYWxcbiAgICAgIGlmIChjb250ZXh0Lmhhc0FjdGlvbkZpbGVzKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBmdWUgY3JlYWRvIGNvbiBmYXZvcml0bywgbmVjZXNpdGFtb3Mgb3JkZW5hciBkZXNwdcOpcyBkZSBhZ3JlZ2FybG9cbiAgICAgIGNvbnN0IGFnZW50VG9BZGQgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlID8geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9IDogc3VjY2Vzc0NyZWF0ZVxuXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgYWRkQWdlbnQoYWdlbnRUb0FkZClcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50VG9BZGQpXG5cbiAgICAgIC8vIFNpIHRpZW5lIGZhdm9yaXRvLCBoYWNlciB0b2dnbGUgeSBhY3R1YWxpemFyIGVzdGFkbyBhbnRlcyBkZSBjZXJyYXJcbiAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFRvQWRkLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAvLyBDZXJyYXIgZGVzcHXDqXMgZGUgcXVlIGVsIHRvZ2dsZSBjb21wbGV0ZSB5IGFjdHVhbGljZSBlbCBlc3RhZG9cbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAndXBkYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICB9XG4gICAgICByZXNldFN1Y2Nlc3NVcGRhdGUoKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cblxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NVcGRhdGVBY2Nlc3MsIGZpbGVzUHJvY2Vzc2VkXSlcblxuICAvLyB1c2VFZmZlY3QgcGFyYSBtYW5lamFyIGVsIGNpZXJyZSBkZWwgbW9kYWwgY3VhbmRvIHRlcm1pbmFuIGxvcyBhcmNoaXZvcyBlbiBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50XG5cbiAgICAvLyBTb2xvIHByb2Nlc2FyIHNpOlxuICAgIC8vIC0gRXMgdW5hIG9wZXJhY2nDs24gZGUgY3JlYWNpw7NuXG4gICAgLy8gLSBObyBoYXkgYWNjZXNpYmlsaWRhZCBwZW5kaWVudGVcbiAgICAvLyAtIExvcyBhcmNoaXZvcyB0ZXJtaW5hcm9uIGRlIHByb2Nlc2Fyc2VcbiAgICAvLyAtIEVsIGFnZW50ZSBmdWUgY3JlYWRvIGV4aXRvc2FtZW50ZVxuICAgIC8vIC0gQcO6biBubyBzZSBoYSBjZXJyYWRvIGVsIG1vZGFsXG4gICAgaWYgKFxuICAgICAgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJyAmJlxuICAgICAgIWNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCAmJlxuICAgICAgc3VjY2Vzc0NyZWF0ZSAmJlxuICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFtYmnDqW4gbWFuZWphciBlbCBjYXNvIGN1YW5kbyBoYXkgYWNjZXNpYmlsaWRhZCB5IGFyY2hpdm9zIHRlcm1pbmFyb25cbiAgICBpZiAoXG4gICAgICBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICBjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgJiZcbiAgICAgIHN1Y2Nlc3NDcmVhdGUgJiZcbiAgICAgICFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJlxuICAgICAgIWlzU2hvd1Byb2Nlc3NGaWxlc1xuICAgICkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGZpbGVzUHJvY2Vzc2VkLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgc3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Nob3dQcm9jZXNzRmlsZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSBga25vd2xlZGdlLWJhc2Uuc3RhdHVzOiR7YWdlbnRCeUlkID8gYWdlbnRCeUlkPy5pZCA6IHN1Y2Nlc3NDcmVhdGU/LmlkPy50b1N0cmluZygpfWBcbiAgICAgIGlmICgkX3NjKSB7XG4gICAgICAgIGlmIChpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICAkX3NjPy5zdWJzY3JpYmVIYW5kbGVyKGNoYW5uZWwsIHdlYlNvY2tldEZ1bmN0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG1vZGVsRGF0YSA9IHtcbiAgICAgICAgICAgIG1vZGVsX2hhc2g6IGNoYW5uZWwsXG4gICAgICAgICAgICBhY3Rpb246ICRfc2M/LmFjdGlvblR5cGU/LlNVQlNDUklCRSxcbiAgICAgICAgICB9XG4gICAgICAgICAgJF9zYz8udXBkYXRlQ29ubmVjdGlvbk1vZGVsKG1vZGVsRGF0YSwgY2hhbm5lbCwgdXNlciwgdXNlciwgJF9zYy5jaGFubmVsVHlwZT8uTU9ERUxfQ0hBTk5FTClcbiAgICAgICAgICBzZXRJc1N1YnNjcmliZWQodHJ1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzU2hvd1Byb2Nlc3NGaWxlcywgaXNTdWJzY3JpYmVkLCAkX3NjLCBhZ2VudEJ5SWQsIHN1Y2Nlc3NDcmVhdGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4gfHwgIWFnZW50TW9kZWxzLmxlbmd0aCkgcmV0dXJuXG4gICAgaWYgKGFnZW50TG9hZGluZyAmJiAhcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGFwcGx5RWRpdGluZ0FnZW50ID0gKHNvdXJjZTogYW55KSA9PiB7XG4gICAgICBpZiAoc291cmNlLnR5cGUgIT09ICdjdXN0b20nIHx8ICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBhZ2VudFZhbHVlc1RvU2V0ID0gYnVpbGRFZGl0aW5nTW9kYWxWYWx1ZXNGcm9tQWdlbnREZXRhaWwoc291cmNlLCBhZ2VudE1vZGVscywgcHJldilcbiAgICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQgPSBhZ2VudFZhbHVlc1RvU2V0XG4gICAgICAgIHJldHVybiBhZ2VudFZhbHVlc1RvU2V0XG4gICAgICB9KVxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgaWYgKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldFNlY3Rpb24ocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpXG4gICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmZXRjaGVkID0gcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50XG4gICAgaWYgKHByZWZldGNoZWQpIHtcbiAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFwcGx5RWRpdGluZ0FnZW50KHByZWZldGNoZWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWdlbnRCeUlkICYmICFhZ2VudExvYWRpbmcgJiYgYWdlbnRNb2RlbHMubGVuZ3RoKSB7XG4gICAgICBhcHBseUVkaXRpbmdBZ2VudChhZ2VudEJ5SWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzTG9hZGluZyAmJiAhYWdlbnRMb2FkaW5nICYmICFhZ2VudEJ5SWQgJiYgIW1vZGFsVmFsdWVzLmlzRWRpdGluZykge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGFpTW9kZWw6IGFnZW50TW9kZWxzWzBdLFxuICAgICAgICB9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYWdlbnRCeUlkLCBpc09wZW4sIGlzTG9hZGluZywgYWdlbnRMb2FkaW5nLCBhZ2VudE1vZGVscz8ubGVuZ3RoLCBtb2RhbFZhbHVlcy5pc0VkaXRpbmcsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVycm9yR2V0QWdlbnRCeUlkKSB7XG4gICAgICBpZiAoZXJyb3JHZXRBZ2VudEJ5SWQgPT09IFwiQWNjZXNzIGRlbmllZDogWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBhZ2VudFwiKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoZXJyb3JHZXRBZ2VudEJ5SWQpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfSwgMzAwMClcbiAgICB9XG4gIH0sIFtlcnJvckdldEFnZW50QnlJZF0pXG5cbiAgY29uc3Qgc2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFtb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50cyB8fCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY2xpZW50cy5zb21lKGNsaWVudCA9PiBjbGllbnQuaXNfYWN0aXZlID09PSBmYWxzZSB8fCBjbGllbnQuaXNfZGVsZXRlZCA9PT0gdHJ1ZSlcbiAgfSwgW21vZGFsVmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jbGllbnRzXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZSA9ICgpID0+IHtcbiAgICBpZiAobW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlkKSB7XG4gICAgICAvLyBFeGlzdGluZyBhZ2VudFxuICAgICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgICAgICBpc19mYXZvcml0ZTogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAvLyBBY3R1YWxpemFyIGVsIGVzdGFkbyBkZSBhZ2VudGVzIHkgb3JkZW5hciBjdWFuZG8gc2UgaGFjZSBkZXNkZSBlbCBtb2RhbCBBQk1cbiAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlKHVwZGF0ZWRBZ2VudCwgdHJ1ZSlcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHtcbiAgICAgICAgICAgIG9wdGlvbjogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlID8gJ2FkZCcgOiAncmVtb3ZlJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgbmV3IGFnZW50XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgaXNfZmF2b3JpdGU6ICFwcmV2LmdlbmVyYWwuaXNfZmF2b3JpdGUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbiB8fCAoIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmICF1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiYgIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxCYWNrZHJvcCB6SW5kZXg9ezExMTJ9IG9uQ2xpY2s9e2hhbmRsZUJhY2tkcm9wQ2xpY2t9PlxuICAgICAgPFNDQUFNV3JhcHBlciByZWY9e21vZGFsUmVmfSB0YWJJbmRleD17LTF9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTQ0FBTVdyYXBwZXJTcGlubmVyPlxuICAgICAgICAgICAgPFNDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50PlxuICAgICAgICAgICAgICA8U3Bpbm5lckxvdHRpZSBzaXplPVwiODBweFwiIGNvbG9yPVwicHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1NDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50PlxuICAgICAgICAgIDwvU0NBQU1XcmFwcGVyU3Bpbm5lcj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAge2lzU2hvd1Byb2Nlc3NGaWxlcyAmJiBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA/IChcbiAgICAgICAgICAgICAgPEFibUxvYWRlckZpbGVzXG4gICAgICAgICAgICAgICAgYXR0YWNobWVudHM9e21vZGFsVmFsdWVzLmtub3dsZWRnZX1cbiAgICAgICAgICAgICAgICBsYWJlbD17dChgcHJvY2Vzc2luZ0tub3dsZWRnZS4ke21vZGFsVmFsdWVzLmlzRWRpdGluZyA/ICdkZXNjcmlwdGlvblVwZGF0ZScgOiAnZGVzY3JpcHRpb25DcmVhdGUnfWApfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJMZWZ0PlxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2dlbmVyYWxTZWN0aW9uLnJlbW92ZUZhdm9yaXRlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdnZW5lcmFsU2VjdGlvbi5hZGRGYXZvcml0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyRmF2b3JpdGUgb25DbGljaz17aGFuZGxlVG9nZ2xlRmF2b3JpdGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJyNhNmE2YTYnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnbm9uZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJycgOiAnc3Rhci1mYXZvcml0ZS1pY29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckZhdm9yaXRlPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlclRpdGxlPnttb2RhbFZhbHVlcz8uaXNFZGl0aW5nID8gdCgnZWRpdEFnZW50JykgOiB0KCduZXdBZ2VudCcpfTwvU0NBQU1IZWFkZXJUaXRsZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXJMZWZ0PlxuICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyQ2xvc2VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jYW5jZWxNb2RhbClcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xvYWRpbmcgfHwgaXNMb2FkaW5nS25vd2xlZGdlIHx8IGlzTG9hZGluZ0NyZWF0ZSB8fCBpc0xvYWRpbmdVcGRhdGVBY2Nlc3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxDcm9zcyBjb2xvcj1cIiNhNmE2YTZcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyQ2xvc2VCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlcj5cbiAgICAgICAgICAgICAgICA8U0NBQU1Db250ZW50IGhhc1Njcm9sbD17c2VjdGlvbiAhPT0gJ2tub3dsZWRnZSd9PlxuICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2dlbmVyYWwnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2dlbmVyYWwnKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1nZW5lcmFsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdnZW5lcmFsJyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnZ2VuZXJhbFNlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuXG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2tub3dsZWRnZScpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWtub3dsZWRnZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QnJhaW5JY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2tub3dsZWRnZScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAna25vd2xlZGdlJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgna25vd2xlZGdlU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2FjY2Vzc2liaWxpdHknfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2FjY2Vzc2liaWxpdHknKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1hY2Nlc3NpYmlsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmlsaXR5SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5JyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5J30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24udGl0bGVUYWInKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICB7c2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnRzRXJyb3InKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtRXJyb3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IGNvbG9yPVwiI0M3MDUwNVwiIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1FcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgIHtTZWN0aW9uQnlLZXlbc2VjdGlvbl0oe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IG1vZGFsVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMsXG4gICAgICAgICAgICAgICAgICAgIGFnZW50TW9kZWxzLFxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBuZXdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVOZXdLbm93bGVkZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICBvbkZpbGVFcnJvckNoYW5nZTogc2V0SGFzRmlsZUVycm9ycyxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvU0NBQU1Db250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0FBTUZvb3RlciBpc0VkaXRpbmc9eyEhbW9kYWxWYWx1ZXM/LmlzRWRpdGluZyAmJiAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlfT5cbiAgICAgICAgICAgICAgICAgIHshIW1vZGFsVmFsdWVzPy5pc0VkaXRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5XaXRoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xvYWRpbmcgfHwgaXNMb2FkaW5nS25vd2xlZGdlIHx8IGlzTG9hZGluZ0NyZWF0ZSB8fCBpc0xvYWRpbmdVcGRhdGVBY2Nlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxXcmFwcGVyQ2VudGVySWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJhc2ggY29sb3I9XCIjMDhjXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdkZWxldGVBZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1dyYXBwZXJDZW50ZXJJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogJzI0cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TYXZlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAhdmFsaWRhdGVGaWVsZFZhbHVlcyhtb2RhbFZhbHVlcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NyZWF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXBkYXRlQWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZpbGVFcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24obnVsbCwgJ2NyZWF0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAhdmFsaWRhdGVGaWVsZFZhbHVlcyhtb2RhbFZhbHVlcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nQ3JlYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRmlsZUVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdzYXZlQ2hhbmdlcycpIDogdCgnY3JlYXRlQWdlbnRMYWJlbEJ1dHRvbicpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TYXZlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9TQ0FBTUZvb3Rlcj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9TQ0FBTVdyYXBwZXI+XG4gICAgICB7c2hvd01vZGFsRGVsZXRlICYmIChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93TW9kYWxEZWxldGUoZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiAocHJvcHM6IGFueSkgPT4gaGFuZGxlQ29uZmlybUFjdGlvbihwcm9wcywgJ2RlbGV0ZScpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17eyB0aXRsZTogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5uYW1lLCBpZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCB9fVxuICAgICAgICAgIGFjdGlvbj1cImFnZW50XCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9CYWNrZHJvcD4sXG4gICAgc2VsZWN0b3JcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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
|