@projectcor/maia-components 2.11.109-0 → 2.11.109-1

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.
@@ -40,6 +40,7 @@ import { isStreamingPlaceholderMessageId, streamingPlaceholderMessageId } from '
40
40
  import { getChatsStoreState, useChatsStore } from '../../store/useChatsStore';
41
41
  import { reasoningStore } from '../useReasoningTrace';
42
42
  import { buildReasoningTrace, mapReasoningTrace } from '../../utils/reasoningMappers';
43
+ /** Trace acumulado en vivo para `messageId`, o null si el store apunta a otro mensaje. */
43
44
  var reasoningTraceFor = function reasoningTraceFor(messageId) {
44
45
  var snapshot = reasoningStore.getSnapshot();
45
46
  if (snapshot.id !== messageId) return null;
@@ -592,7 +593,7 @@ export var useChatManager = function useChatManager(_ref4) {
592
593
  var handleStreamFinish = useCallback(/*#__PURE__*/function () {
593
594
  var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(ctx, content, sources, memorySessionId, rawAttachments, suggestions, completedAgentId, _resolvedContext, reasoning) {
594
595
  var _mapReasoningTrace, _previousMessage$appr, _window$taskPanel, _createAgentFollowUp, _editAgentFollowUp;
595
- var sessionId, placeholderId, isActive, tempMessageId, attachments, finishTrace, finalMessageId, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, TASK_DELETE_TOOLS, pendingActions, wasTaskCreation, wasTaskEdit, wasTaskDelete, wasCreateAgentApproved, wasConfigureAgentAccessApproved, createAgentFollowUp, configuredAgentId, wasEditAgentApproved, editAgentFollowUp, fromStream, fromArgs, resolvedAgentId, taskIdsFromUrls, taskIdsFromDeleteApproval, taskIdsFromDeletionText, taskIdsForDashboard, shouldSyncDashboard, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, isOnProjectRoute, _window$newProjectDas, _window$newProjectDas2, _window$newProjectDas3, _window$newProjectDas4, _window$newProjectDas5, _window$newProjectDas6, openTaskPanelId, manualApproval, manualWasTaskEdit, manualWasTaskDelete, hoursToolsFromApproval, wasHoursChargeApproved, manualHoursTool, wasHoursChargeManualApproved, tools, _manualApproval$toolA, manualPseudoAction, affectedTaskIds, _window$taskPanel2, _window$taskPanel2$re, _getChatsStoreState, isChatViewVisible, markChatAsRead, customEvent;
596
+ var sessionId, placeholderId, isActive, tempMessageId, attachments, finalMessageId, finalTrace, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, TASK_DELETE_TOOLS, pendingActions, wasTaskCreation, wasTaskEdit, wasTaskDelete, wasCreateAgentApproved, wasConfigureAgentAccessApproved, createAgentFollowUp, configuredAgentId, wasEditAgentApproved, editAgentFollowUp, fromStream, fromArgs, resolvedAgentId, taskIdsFromUrls, taskIdsFromDeleteApproval, taskIdsFromDeletionText, taskIdsForDashboard, shouldSyncDashboard, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, isOnProjectRoute, _window$newProjectDas, _window$newProjectDas2, _window$newProjectDas3, _window$newProjectDas4, _window$newProjectDas5, _window$newProjectDas6, openTaskPanelId, manualApproval, manualWasTaskEdit, manualWasTaskDelete, hoursToolsFromApproval, wasHoursChargeApproved, manualHoursTool, wasHoursChargeManualApproved, tools, _manualApproval$toolA, manualPseudoAction, affectedTaskIds, _window$taskPanel2, _window$taskPanel2$re, _getChatsStoreState, isChatViewVisible, markChatAsRead, customEvent;
596
597
  return _regeneratorRuntime.wrap(function (_context) {
597
598
  while (1) switch (_context.prev = _context.next) {
598
599
  case 0:
@@ -601,9 +602,10 @@ export var useChatManager = function useChatManager(_ref4) {
601
602
  tempMessageId = placeholderId;
602
603
  sessionStreamingText.clear(sessionId);
603
604
  dropFromSession(sessionId, tempMessageId);
604
- attachments = normalizeAssistantAttachments(rawAttachments);
605
- finishTrace = (_mapReasoningTrace = mapReasoningTrace(reasoning)) !== null && _mapReasoningTrace !== void 0 ? _mapReasoningTrace : reasoningTraceFor(tempMessageId);
605
+ attachments = normalizeAssistantAttachments(rawAttachments); // El trace acumulado en vivo está keyed por el placeholder; lo movemos al
606
+ // id definitivo para que el bloque de razonamiento sobreviva al swap.
606
607
  finalMessageId = "answer-".concat(memorySessionId);
608
+ finalTrace = (_mapReasoningTrace = mapReasoningTrace(reasoning)) !== null && _mapReasoningTrace !== void 0 ? _mapReasoningTrace : reasoningTraceFor(tempMessageId);
607
609
  reasoningStore.rename(tempMessageId, finalMessageId);
608
610
 
609
611
  // Sesión en background: cerramos lean. El backend ya persistió la
@@ -628,7 +630,7 @@ export var useChatManager = function useChatManager(_ref4) {
628
630
  } : {}), {}, {
629
631
  memorySessionId: memorySessionId,
630
632
  suggestions: suggestions || [],
631
- reasoning: finishTrace
633
+ reasoning: finalTrace
632
634
  }));
633
635
  clearSessionTail(sessionId);
634
636
  getChatsStoreState().markChatAsUnread(sessionId);
@@ -795,7 +797,7 @@ export var useChatManager = function useChatManager(_ref4) {
795
797
  }, createAgentFollowUp ? {
796
798
  createAgentFollowUp: createAgentFollowUp
797
799
  } : {}), {}, {
798
- reasoning: finishTrace
800
+ reasoning: finalTrace
799
801
  }));
800
802
  clearSessionTail(sessionId);
801
803
  if ((_createAgentFollowUp = createAgentFollowUp) !== null && _createAgentFollowUp !== void 0 && _createAgentFollowUp.agentId) {
@@ -878,7 +880,6 @@ export var useChatManager = function useChatManager(_ref4) {
878
880
  var sessionId = ctx.sessionId,
879
881
  placeholderId = ctx.placeholderId;
880
882
  var isActive = activeView.is(sessionId);
881
- var tempMessageId = placeholderId;
882
883
  sessionStreamingText.clear(sessionId);
883
884
  dropFromSession(sessionId, placeholderId);
884
885
  if (isActive) {
@@ -897,6 +898,9 @@ export var useChatManager = function useChatManager(_ref4) {
897
898
  if (isActive) {
898
899
  hitlExecutionContextRef.current = hitlContext;
899
900
  }
901
+
902
+ // Preaprobado: por detección manual o por auto-approve. En ambos casos el
903
+ // stream continúa y no hay que pintar la caja de aprobación.
900
904
  if (approval.manual_approval_detected || approval.auto_approved || approval.approval_status === 'approved') {
901
905
  var _approval$pending_act2, _ref6, _tool_name, _tool_args;
902
906
  var firstAction = (_approval$pending_act2 = approval.pending_actions) === null || _approval$pending_act2 === void 0 ? void 0 : _approval$pending_act2[0];
@@ -916,8 +920,7 @@ export var useChatManager = function useChatManager(_ref4) {
916
920
 
917
921
  // Add a message with the approval request
918
922
  var approvalMessageId = "approval-".concat(approval.original_thread_id);
919
- reasoningStore.finish(tempMessageId, approval.reasoning);
920
- reasoningStore.rename(tempMessageId, approvalMessageId);
923
+ reasoningStore.rename(placeholderId, approvalMessageId);
921
924
  var approvalTrace = (_mapReasoningTrace2 = mapReasoningTrace(approval.reasoning)) !== null && _mapReasoningTrace2 !== void 0 ? _mapReasoningTrace2 : reasoningTraceFor(approvalMessageId);
922
925
  commitToSession(sessionId, {
923
926
  id: approvalMessageId,
@@ -1277,7 +1280,7 @@ export var useChatManager = function useChatManager(_ref4) {
1277
1280
  hitlCtx = {
1278
1281
  sessionId: sessionId,
1279
1282
  messageId: streamMessageId,
1280
- placeholderId: "answer-".concat(streamMessageId, "-streaming")
1283
+ placeholderId: streamingPlaceholderMessageId(streamMessageId)
1281
1284
  };
1282
1285
  releaseActiveProcessing = function releaseActiveProcessing() {
1283
1286
  if (!isActiveSession) return;
@@ -1459,6 +1462,7 @@ export var useChatManager = function useChatManager(_ref4) {
1459
1462
  var resetChat = useCallback(function () {
1460
1463
  var previousSessionId = currentChatId.current;
1461
1464
  sessionStreamingText.clear(previousSessionId);
1465
+ reasoningStore.clear();
1462
1466
  currentMessageId.current = uuidv4();
1463
1467
  currentUserQuestion.current = null;
1464
1468
  currentChatId.current = uuidv4();
@@ -1495,4 +1499,4 @@ export var useChatManager = function useChatManager(_ref4) {
1495
1499
  isDisabled: waitingResponse || loadingMessages
1496
1500
  };
1497
1501
  };
1498
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsImZldGNoQWdlbnREZXRhaWwiLCJidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJzZXNzaW9uU3RyZWFtaW5nVGV4dCIsInVzZVNlc3Npb25zU3RvcmUiLCJ1c2VTZXNzaW9uTWV0YSIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyIsImFjdGl2ZVZpZXciLCJub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQiLCJidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUiLCJlbnN1cmVTZXNzaW9uSW5TaWRlYmFyIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCIsInN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwidXNlQ2hhdHNTdG9yZSIsInJlYXNvbmluZ1N0b3JlIiwiYnVpbGRSZWFzb25pbmdUcmFjZSIsIm1hcFJlYXNvbmluZ1RyYWNlIiwicmVhc29uaW5nVHJhY2VGb3IiLCJtZXNzYWdlSWQiLCJzbmFwc2hvdCIsImdldFNuYXBzaG90IiwiaWQiLCJzdGVwcyIsInN1bW1hcnkiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJfb2JqZWN0U3ByZWFkIiwiY2xpZW50SWQiLCJuYW1lIiwiY2xpZW50TmFtZSIsImNsaWVudCIsIm5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzIiwicmF3QXR0YWNobWVudHMiLCJmaWx0ZXIiLCJhdHRhY2htZW50IiwiX3R5cGVvZiIsIm1hcCIsImluZGV4IiwidHJpbSIsImNvbmNhdCIsInR5cGUiLCJtaW1lVHlwZSIsIm1pbWVfdHlwZSIsImZ1bGxGaWxlTmFtZSIsImluY2x1ZGVzIiwibnVtZXJpY1NpemUiLCJzaXplIiwiZmlsZSIsIkZpbGUiLCJ1cmxfb3JpZ2luYWwiLCJ1bmRlZmluZWQiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX2ZpbGUiLCJyb2xlIiwiZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzIiwicGVuZGluZ0FjdGlvbnMiLCJpZHMiLCJwdXNoSWQiLCJyYXciLCJuIiwicGFyc2VJbnQiLCJTdHJpbmciLCJpc05hTiIsInB1c2giLCJmb3JFYWNoIiwiYWN0aW9uIiwiX3JlYyR0YXNrX2lkIiwiYXJncyIsInRvb2xfYXJncyIsInJlYyIsInRhc2tfaWQiLCJ0YXNrX2lkcyIsInRhc2tzIiwidCIsIl90cmVjJHRhc2tfaWQiLCJ0cmVjIiwiZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMiLCJ0b29sX25hbWUiLCJfcmVjJHRhc2tfaWQyIiwibGlzdCIsInRpZCIsImV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zIiwiX3JlYyRhZ2VudF9pZCIsImVkaXRBY3Rpb24iLCJmaW5kIiwiYSIsInRvTG93ZXJDYXNlIiwiYWdlbnRfaWQiLCJhZ2VudElkIiwiZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lIiwidG9vbE5hbWUiLCJfcmVmIiwiX3JlYyRhZ2VudF9pZDIiLCJleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQiLCJ0ZXh0IiwibGFiZWxlZCIsIm1hdGNoIiwiYm9sZCIsInVzZVN0YWJsZUNhbGxiYWNrcyIsImF1dGhVc2VyIiwiY3VycmVudFVzZXIiLCJ0b1N0cmluZyIsImZpcnN0TmFtZSIsImF2YXRhciIsInBpY3R1cmUiLCJjdXJyZW50IiwiZmluZE1lc3NhZ2VXaXRoQXBwcm92YWxCeVRocmVhZElkcyIsInRocmVhZElkcyIsImFjdGl2ZU1lc3NhZ2VzIiwiZnJvbUFjdGl2ZVZpZXciLCJtZXNzYWdlIiwiX21lc3NhZ2UkYXBwcm92YWwiLCJhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsInNvbWUiLCJ0aHJlYWRfaWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwiZ2V0IiwiX3VzZVNlc3Npb25zU3RvcmUkZ2V0IiwiZ2V0U3RhdGUiLCJtZXNzYWdlcyIsInNlc3Npb25FbnRyeSIsIk9iamVjdCIsImVudHJpZXMiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXNzaW9uTWVzc2FnZXMiLCJfbWVzc2FnZSRhcHByb3ZhbDIiLCJfc2Vzc2lvbkVudHJ5IiwiZm91bmQiLCJfbWVzc2FnZSRhcHByb3ZhbDMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWY0IiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIm9uRXJyb3IiLCJfcmVmNCRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJ0YXNrIiwic2V0VGFzayIsImFnZW50IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJpc0F1dG9BcHByb3ZlQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0IiwiZXZlbnQiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZVN0YWJsZUNhbGxiYWNrcyIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwiY3VycmVudE1lc3NhZ2VJZCIsImN1cnJlbnRVc2VyUXVlc3Rpb24iLCJjdXJyZW50Q2hhdElkIiwic2V0QWN0aXZlQ2hhdElkIiwic3RhdGUiLCJyZXBvcnRlZEV2ZW50IiwibWVzc2FnZXNSZWYiLCJsYXN0TWFudWFsQXBwcm92YWxSZWYiLCJoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYiLCJhY3RpdmVTdHJlYW1DaGF0SWRSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVNlc3Npb25JZCIsInNldEFjdGl2ZVNlc3Npb25JZCIsImlzTW91bnRlZFJlZiIsImxhc3RIYW5kbGVkVGVybWluYWxSZWYiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsImlzQXV0b0FwcHJvdmVBY3RpdmVSZWYiLCJjb250ZXh0UmVmIiwiX3VzZUNoYXRNZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY29tbWl0VG9TZXNzaW9uIiwiaXMiLCJkcm9wRnJvbVNlc3Npb24iLCJjbGVhclNlc3Npb25UYWlsIiwic2V0TWVzc2FnZXMiLCJzZXQiLCJhY3RpdmVTZXNzaW9uTWV0YSIsIl9hY3RpdmVTZXNzaW9uTWV0YSRmaSIsInN0YXR1cyIsImlzVGVybWluYWwiLCJrZXkiLCJmaW5pc2hlZEF0IiwidGFpbCIsImdldE1lc3NhZ2VzIiwiaGFzU3RhbGVQbGFjZWhvbGRlciIsIm1zZyIsImZvcmNlIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsInByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiIsInByZXZpb3VzSW5pdGlhbENoYXRJZCIsImlzQWN0aXZlIiwiaGFuZGxlU3RyZWFtRXJyb3IiLCJjdHgiLCJlcnJvck1lc3NhZ2UiLCJlcnJvclJhd01lc3NhZ2UiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMyIiwicGxhY2Vob2xkZXJJZCIsImNsZWFyIiwiaXNBY2Nlc3NEZW5pZWQiLCJpc1Byb21wdFRvb0xvbmciLCJ1c2VkIiwiaXNFcnJvciIsInN1Z2dlc3Rpb25zIiwiZGF0ZSIsIkRhdGUiLCJ1c2VyIiwiQVNTSVNUQU5UIiwibWFya0NoYXRBc1VucmVhZCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsImNvbnRlbnQiLCJwbGFjZWhvbGRlckV4aXN0cyIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiY29tcGxldGVkQWdlbnRJZCIsIl9yZXNvbHZlZENvbnRleHQiLCJyZWFzb25pbmciLCJfbWFwUmVhc29uaW5nVHJhY2UiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfd2luZG93JHRhc2tQYW5lbCIsIl9jcmVhdGVBZ2VudEZvbGxvd1VwIiwiX2VkaXRBZ2VudEZvbGxvd1VwIiwidGVtcE1lc3NhZ2VJZCIsImZpbmlzaFRyYWNlIiwiZmluYWxNZXNzYWdlSWQiLCJ0YXNrVXJsUmVnZXgiLCJtYXRjaGVzIiwiY29udGVudFRvQWRkIiwicHJldmlvdXNNZXNzYWdlIiwiaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSIsIlRBU0tfQ1JFQVRJT05fVE9PTFMiLCJUQVNLX0VESVRfVE9PTFMiLCJUQVNLX0RFTEVURV9UT09MUyIsIndhc1Rhc2tDcmVhdGlvbiIsIndhc1Rhc2tFZGl0Iiwid2FzVGFza0RlbGV0ZSIsIndhc0NyZWF0ZUFnZW50QXBwcm92ZWQiLCJ3YXNDb25maWd1cmVBZ2VudEFjY2Vzc0FwcHJvdmVkIiwiY3JlYXRlQWdlbnRGb2xsb3dVcCIsImNvbmZpZ3VyZWRBZ2VudElkIiwid2FzRWRpdEFnZW50QXBwcm92ZWQiLCJlZGl0QWdlbnRGb2xsb3dVcCIsImZyb21TdHJlYW0iLCJmcm9tQXJncyIsInJlc29sdmVkQWdlbnRJZCIsInRhc2tJZHNGcm9tVXJscyIsInRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwiLCJ0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCIsInRhc2tJZHNGb3JEYXNoYm9hcmQiLCJzaG91bGRTeW5jRGFzaGJvYXJkIiwidGFza0lkcyIsInRhYiIsInRhYlNlZ21lbnQiLCJsYXN0UHJvamVjdE1lc3NhZ2UiLCJjb250ZXh0UHJvamVjdElkUmF3IiwiY29udGV4dFByb2plY3RJZCIsInBhdGhNYXRjaCIsInJvdXRlUHJvamVjdElkIiwiaXNPblByb2plY3RSb3V0ZSIsIl93aW5kb3ckbmV3UHJvamVjdERhcyIsIl93aW5kb3ckbmV3UHJvamVjdERhczIiLCJfd2luZG93JG5ld1Byb2plY3REYXMzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNCIsIl93aW5kb3ckbmV3UHJvamVjdERhczUiLCJfd2luZG93JG5ld1Byb2plY3REYXM2Iiwib3BlblRhc2tQYW5lbElkIiwibWFudWFsQXBwcm92YWwiLCJtYW51YWxXYXNUYXNrRWRpdCIsIm1hbnVhbFdhc1Rhc2tEZWxldGUiLCJob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsIiwid2FzSG91cnNDaGFyZ2VBcHByb3ZlZCIsIm1hbnVhbEhvdXJzVG9vbCIsIndhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQiLCJ0b29scyIsIl9tYW51YWxBcHByb3ZhbCR0b29sQSIsIm1hbnVhbFBzZXVkb0FjdGlvbiIsImFmZmVjdGVkVGFza0lkcyIsIl93aW5kb3ckdGFza1BhbmVsMiIsIl93aW5kb3ckdGFza1BhbmVsMiRyZSIsIl9nZXRDaGF0c1N0b3JlU3RhdGUiLCJpc0NoYXRWaWV3VmlzaWJsZSIsIm1hcmtDaGF0QXNSZWFkIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJyZW5hbWUiLCJsZW5ndGgiLCJhYnJ1cHQiLCJSZWdFeHAiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJtYXRjaEFsbCIsIm0iLCJhdCIsImFwcHJvdmFsU3RhdHVzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImFpQ2hhdEhpdGxPcHRpb24iLCJhZ2VudF90eXBlIiwiYWN0aW9uX3R5cGUiLCJkZWNpc2lvbiIsIm9wdGlvbiIsImNyZWF0ZWRfYWdlbnRfaWQiLCJzZW50IiwicmVwbGFjZSIsInVybCIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJuZXdQcm9qZWN0RGFzaGJvYXJkIiwiYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQiLCJjYWxsIiwiZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkIiwiZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZCIsInRhc2tQYW5lbCIsInRhc2tJZCIsInNvdXJjZSIsInRvb2xBcmdzIiwicmVmZXRjaFRhc2siLCJ0aGVuIiwiY2hhdEFnZW50IiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiX3g0IiwiX3g1IiwiX3g2IiwiX3g3IiwiX3g4IiwiX3g5IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVTdHJlYW1TdG9wIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsInNldFRpbWVvdXQiLCJoYW5kbGVBcHByb3ZhbFJlcXVpcmVkIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0IiwiX21hcFJlYXNvbmluZ1RyYWNlMiIsImhpdGxDb250ZXh0Iiwib3JpZ2luYWxfdGhyZWFkX2lkIiwibWVzc2FnZVRleHQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJhdXRvX2FwcHJvdmVkIiwiYXBwcm92YWxfc3RhdHVzIiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0MiIsIl9yZWY2IiwiX3Rvb2xfbmFtZSIsIl90b29sX2FyZ3MiLCJmaXJzdEFjdGlvbiIsImFwcHJvdmFsTWVzc2FnZUlkIiwiZmluaXNoIiwiYXBwcm92YWxUcmFjZSIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmNyIsIl9jYWxsZWUyIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJ3aWxsU3RhcnROZXdTdHJlYW0iLCJfbm9ybWFsaXplU2VuZE1lc3NhZ2UiLCJlZmZlY3RpdmVNZW50aW9ucyIsImNvbnRleHRNZXNzYWdlIiwicGF5bG9hZEZ1YUlkIiwicGF5bG9hZFNjSWQiLCJwYXlsb2FkQ29udGV4dERhdGEiLCJkaXNwbGF5TWVzc2FnZSIsIm5ld01lc3NhZ2VJZCIsImxhc3RNZXNzYWdlV2l0aFByb2plY3QiLCJjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMiLCJfY29udGV4dFJlZiRjdXJyZW50IiwiY3R4Q2hpcHNQcm9qZWN0IiwiY3R4VGFzayIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWQiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJfY29udGV4dFJlZiRjdXJyZW50JHAiLCJoaXN0b3J5IiwicHJvamVjdFRvUmVxdWVzdCIsInByb2plY3RzIiwicGF5bG9hZEZhcUlkIiwicGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIiwicGF5bG9hZERhdGEiLCJfY29udGV4dDIiLCJnZXRBY3RpdmVDb3VudCIsInNob3ciLCJzZXZlcml0eSIsImNvbnRleHREYXRhIiwicG1BaVR5cGVkVGV4dCIsInRpdGxlIiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwibGFuZyIsInVzZXJJZCIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsImFnZW50TmFtZSIsImZlZUlkIiwicHJvamVjdE5hbWUiLCJ0YXNrTmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiYWdlbnRUeXBlIiwiZW1vamkiLCJhZ2VudEVtb2ppIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJjaGFuZ2VQcm9qZWN0IiwiaGFuZGxlRmVlZGJhY2siLCJfcmVmOCIsIl9jYWxsZWUzIiwiZmVlZGJhY2tQcm9wIiwiY2hhdE1lc3NhZ2VJZCIsInJlc3BvbnNlIiwiX2NvbnRleHQzIiwiQ2hhdHMiLCJ3YXNIZWxwZnVsQ2hhdCIsIlRIVU1CU19VUCIsIndhc0hlbHBmdWwiLCJfeDE1IiwiX3gxNiIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmOSIsIl9jYWxsZWU0IiwiZWRpdGVkQWN0aW9ucyIsIm1lc3NhZ2VXaXRoQXBwcm92YWwiLCJmb3VuZFNlc3Npb25JZCIsIm5ld1N0YXR1cyIsImlzQWN0aXZlU2Vzc2lvbiIsInN0cmVhbU1lc3NhZ2VJZCIsImhpdGxDdHgiLCJyZWxlYXNlQWN0aXZlUHJvY2Vzc2luZyIsInJlc3VsdCIsIl9jb250ZXh0NCIsInN0YXJ0Q29udGludWVTdHJlYW0iLCJjb250aW51ZVJlcXVlc3QiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsImNhbGxiYWNrcyIsImZpbmlzaFBheWxvYWQiLCJyZXNvbHZlZENvbnRleHQiLCJhcHByb3ZhbFBheWxvYWQiLCJzdGFydGVkIiwicmVhc29uIiwiX3gxNyIsIl94MTgiLCJfeDE5IiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9yZWYxIiwiX3Jlc29sdmVQcm9qZWN0VG9SZXF1IiwiX2N0eFByb2plY3QkaWQiLCJfY3R4Q2xpZW50JGlkIiwiX2N0eFRhc2skaWQiLCJfY3R4Q2hpcHNQcm9qZWN0JHByb2oiLCJoYXNJbml0aWFsTWVzc2FnZSIsImhhc0luaXRpYWxBdHRhY2htZW50cyIsImhhc0luaXRpYWxGYXEiLCJoYXNJbml0aWFsRnVhIiwiaGFzSW5pdGlhbFNjIiwiX2NvbnRleHRSZWYkY3VycmVudDIiLCJpbml0aWFsRGlzcGxheU1lc3NhZ2UiLCJfY29udGV4dDUiLCJCb29sZWFuIiwiaW5mbyIsInByb2plY3RQcm9wSWQiLCJyZXNldENoYXQiLCJwcmV2aW91c1Nlc3Npb25JZCIsInN0b3BHZW5lcmF0aW9uIiwiaXNEaXNhYmxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByYWRpeCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRlZC1vcHRpb25hbC1jaGFpbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IHVzZUNoYXRNZXNzYWdlcyB9IGZyb20gJy4uL3VzZUNoYXRNZXNzYWdlcydcbmltcG9ydCB7IHVzZU9yY2hlc3RyYXRvclN0cmVhbSB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbSdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi91c2VUJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBTZW5kTWVzc2FnZU9wdGlvbnMsIFVzZUNoYXRNYW5hZ2VyUHJvcHMgfSBmcm9tICcuL3VzZUNoYXRNYW5hZ2VyLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vdXNlRXZlbnQnXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRNZXNzYWdlVXNlciwgQ2hhdEhpc3RvcnlSb2xlLCBBcHByb3ZhbFJlcXVlc3QsIFBlbmRpbmdBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZXNzYWdlLCBidWlsZENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlJ1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IHVzZVByb2plY3RzIH0gZnJvbSAnLi4vdXNlUHJvamVjdHMnXG5pbXBvcnQgeyB1c2VUYWJUYXNrRGVmYXVsdCB9IGZyb20gJy4uL3VzZVRhYlRhc2tEZWZhdWx0J1xuaW1wb3J0IHsgVEFTS19VUkxfUkVHRVhfUEFUVEVSTiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90YXNrVXJscydcbmltcG9ydCB7IGRpc3BhdGNoTWFpYUhvdXJzQ2hhcmdlZCwgaXNIb3Vyc0NoYXJnZVRvb2wgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvcGxhbm5lclN5bmNFdmVudHMnXG5pbXBvcnQgeyBmZXRjaEFnZW50RGV0YWlsIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZmV0Y2hBZ2VudERldGFpbCdcbmltcG9ydCB7IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0LCBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB7IHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbWluZ1RleHQgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uU3RyZWFtaW5nVGV4dCdcbmltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uc1N0b3JlJ1xuaW1wb3J0IHsgdXNlU2Vzc2lvbk1ldGEgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uTWV0YSdcbmltcG9ydCB7IHNlc3Npb25TdHJlYW1NYW5hZ2VyLCBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvblN0cmVhbU1hbmFnZXInXG5pbXBvcnQgeyBhY3RpdmVWaWV3IH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvYWN0aXZlVmlldydcbmltcG9ydCB7IG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZCB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25Ob3RpZmljYXRpb25zJ1xuaW1wb3J0IHsgYnVpbGRTaWRlYmFyU2Vzc2lvblRpdGxlLCBlbnN1cmVTZXNzaW9uSW5TaWRlYmFyIH0gZnJvbSAnLi4vLi4vc3RvcmUvY2hhdHNTaWRlYmFyT3B0aW1pc3RpYydcbmltcG9ydCB7IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQsIHN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB0eXBlIHsgU3RyZWFtQ29udGV4dCB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlLCB1c2VDaGF0c1N0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB7IHJlYXNvbmluZ1N0b3JlIH0gZnJvbSAnLi4vdXNlUmVhc29uaW5nVHJhY2UnXG5pbXBvcnQgeyBidWlsZFJlYXNvbmluZ1RyYWNlLCBtYXBSZWFzb25pbmdUcmFjZSB9IGZyb20gJy4uLy4uL3V0aWxzL3JlYXNvbmluZ01hcHBlcnMnXG5pbXBvcnQgdHlwZSB7IFJlYXNvbmluZ1RyYWNlLCBSZWFzb25pbmdUcmFjZVBheWxvYWQgfSBmcm9tICcuLi8uLi90eXBlcy9yZWFzb25pbmcnXG5cbnR5cGUgQXR0YWNobWVudHNPck9wdGlvbnMgPSBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zXG5cbmNvbnN0IHJlYXNvbmluZ1RyYWNlRm9yID0gKG1lc3NhZ2VJZDogc3RyaW5nKTogUmVhc29uaW5nVHJhY2UgfCBudWxsID0+IHtcbiAgY29uc3Qgc25hcHNob3QgPSByZWFzb25pbmdTdG9yZS5nZXRTbmFwc2hvdCgpXG4gIGlmIChzbmFwc2hvdC5pZCAhPT0gbWVzc2FnZUlkKSByZXR1cm4gbnVsbFxuICByZXR1cm4gYnVpbGRSZWFzb25pbmdUcmFjZShzbmFwc2hvdC5zdGVwcywgc25hcHNob3Quc3VtbWFyeSlcbn1cblxuY29uc3Qgbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzID0gKGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudHNPck9wdGlvbnMpID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXR0YWNobWVudHNPck9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHsgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzT3JPcHRpb25zLCBvcHRpb25zOiB7fSBhcyBTZW5kTWVzc2FnZU9wdGlvbnMgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gYXR0YWNobWVudHNPck9wdGlvbnMgPz8ge31cbiAgcmV0dXJuIHsgYXR0YWNobWVudHM6IG9wdGlvbnMuYXR0YWNobWVudHMgPz8gW10sIG9wdGlvbnMgfVxufVxuXG4vKiogY2hpcHNQcm9qZWN0IGVzIGxhIGZ1ZW50ZSBkZSB2ZXJkYWQgZGVsIHBpbiB2aXNpYmxlOyBzaSBubyBoYXkgcGluLCByZXN0YXVyYXIgZGVzZGUgaGlzdG9yaWFsLiAqL1xuY29uc3QgcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QgPSAoXG4gIGNoaXBzUHJvamVjdDogeyBwcm9qZWN0SWQ/OiBzdHJpbmcgfSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGxhc3RNZXNzYWdlUHJvamVjdElkOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBudW1iZXIgfCBudWxsID0+IHtcbiAgY29uc3QgY2hpcHNQcm9qZWN0SWQgPSBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/IE51bWJlcihjaGlwc1Byb2plY3QucHJvamVjdElkKSA6IG51bGxcbiAgaWYgKGNoaXBzUHJvamVjdElkICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKGNoaXBzUHJvamVjdElkKSkge1xuICAgIHJldHVybiBjaGlwc1Byb2plY3RJZFxuICB9XG4gIGlmIChsYXN0TWVzc2FnZVByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IG51bGxcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCByZXNvbHZlQ2xpZW50UGF5bG9hZCA9IChcbiAgY3R4Q2xpZW50OiB7IGlkPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjdHhQcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogeyBjbGllbnRJZD86IG51bWJlcjsgY2xpZW50TmFtZT86IHN0cmluZyB9ID0+IHtcbiAgaWYgKGN0eENsaWVudD8uaWQpIHtcbiAgICByZXR1cm4geyBjbGllbnRJZDogY3R4Q2xpZW50LmlkLCAuLi4oY3R4Q2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGN0eENsaWVudC5uYW1lIH0gOiB7fSkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnRJZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IE51bWJlcihjdHhQcm9qZWN0LmNsaWVudElkKSB9XG4gIH1cbiAgaWYgKGN0eFByb2plY3Q/LmNsaWVudD8uaWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50SWQ6IGN0eFByb2plY3QuY2xpZW50LmlkLFxuICAgICAgLi4uKGN0eFByb2plY3QuY2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGN0eFByb2plY3QuY2xpZW50Lm5hbWUgfSA6IHt9KSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHt9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzID0gKHJhd0F0dGFjaG1lbnRzOiB1bmtub3duKTogQXR0YWNobWVudEZpbGVbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdBdHRhY2htZW50cykpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiByYXdBdHRhY2htZW50c1xuICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+ICEhYXR0YWNobWVudCAmJiB0eXBlb2YgYXR0YWNobWVudCA9PT0gJ29iamVjdCcpXG4gICAgLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5uYW1lID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50Lm5hbWUudHJpbSgpID8gYXR0YWNobWVudC5uYW1lLnRyaW0oKSA6IGBmaWxlLSR7aW5kZXggKyAxfWBcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC50eXBlID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LnR5cGUudHJpbSgpID8gYXR0YWNobWVudC50eXBlLnRyaW0oKSA6ICdwZGYnXG4gICAgICBjb25zdCBtaW1lVHlwZSA9IHR5cGVvZiBhdHRhY2htZW50Lm1pbWVfdHlwZSA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50Lm1pbWVfdHlwZSA6ICcnXG4gICAgICBjb25zdCBmdWxsRmlsZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCcuJykgPyBuYW1lIDogYCR7bmFtZX0uJHt0eXBlfWBcbiAgICAgIGNvbnN0IG51bWVyaWNTaXplID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQuc2l6ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IGF0dGFjaG1lbnQuc2l6ZVxuICAgICAgICAgIDogTnVtYmVyLmlzRmluaXRlKE51bWJlcihhdHRhY2htZW50LnNpemUpKVxuICAgICAgICAgICAgPyBOdW1iZXIoYXR0YWNobWVudC5zaXplKVxuICAgICAgICAgICAgOiAwXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBmdWxsRmlsZU5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSksXG4gICAgICAgIGlkOlxuICAgICAgICAgIHR5cGVvZiBhdHRhY2htZW50LmlkID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LmlkLnRyaW0oKVxuICAgICAgICAgICAgPyBhdHRhY2htZW50LmlkXG4gICAgICAgICAgICA6IGBhc3Npc3RhbnQtZmlsZS0ke2luZGV4fS0ke2Z1bGxGaWxlTmFtZX1gLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzaXplOiBudW1lcmljU2l6ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXJsX29yaWdpbmFsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IHR5cGVvZiBhdHRhY2htZW50LnVybF90aHVtYm5haWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfZmlsZTogdHlwZW9mIGF0dGFjaG1lbnQudXJsX2ZpbGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfZmlsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcm9sZTogYXR0YWNobWVudC5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdhc3Npc3RhbnQnIDogJ3VzZXInLFxuICAgICAgfVxuICAgIH0pXG59XG5cbi8qKiBFeHRyYWUgdGFza19pZHMgZGUgbG9zIHRvb2xfYXJncyBkZSBwZW5kaW5nX2FjdGlvbnMsIGN1YnJpZW5kbyBsYXMgZm9ybWFzIGNvbXVuZXM6XG4gKiAgLSBgeyB0YXNrX2lkIH1gIG8gYHsgaWQgfWBcbiAqICAtIGB7IHRhc2tfaWRzOiBbXSB9YFxuICogIC0gYHsgdGFza3M6IFt7IHRhc2tfaWR8aWQgfSwgLi4uXSB9YFxuICogIMOadGlsIHBhcmEgdG9vbHMgZGUgZWRpdC9hc3NpZ24vZGVsZXRlIGN1YW5kbyBsYSByZXNwdWVzdGEgZGVsIExMTSBubyBpbmNsdXllIFVSTHMgL3Rhc2tzLy4uLi9kZXRhaWwuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IG51bWJlcltdIHtcbiAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdXG4gIGNvbnN0IHB1c2hJZCA9IChyYXc6IHVua25vd24pID0+IHtcbiAgICBpZiAocmF3ID09IG51bGwpIHJldHVyblxuICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gIH1cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHB1c2hJZChyZWMudGFza19pZCA/PyByZWMuaWQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tfaWRzKSkge1xuICAgICAgcmVjLnRhc2tfaWRzLmZvckVhY2gocHVzaElkKVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWMudGFza3MpKSB7XG4gICAgICByZWMudGFza3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgY29uc3QgdHJlYyA9IHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgICBwdXNoSWQodHJlYy50YXNrX2lkID8/IHRyZWMuaWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbi8qKiB0YXNrX2lkIC8gdGFza19pZHMgZW4gcGVuZGluZ19hY3Rpb25zIGRlIGRlbGV0ZV8qIChsYSByZXNwdWVzdGEgcHVlZGUgbm8gaW5jbHVpciBVUkxzIC90YXNrcy/igKYvZGV0YWlsKS4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBwZW5kaW5nQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgdHlwZW9mIGFjdGlvbiAhPT0gJ29iamVjdCcpIHJldHVyblxuICAgIGNvbnN0IGFyZ3MgPSBhY3Rpb24udG9vbF9hcmdzXG4gICAgaWYgKCEoYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpKSByZXR1cm5cbiAgICBjb25zdCByZWMgPSBhcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFzaycpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHJlYy50YXNrX2lkID8/IHJlYy5pZFxuICAgICAgaWYgKHJhdyAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2RlbGV0ZV90YXNrc19iYXRjaCcpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSByZWMudGFza19pZHNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCh0aWQgPT4ge1xuICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcodGlkKSwgMTApXG4gICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZWRpdEFjdGlvbiA9IHBlbmRpbmdBY3Rpb25zLmZpbmQoYSA9PiAoYS50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcbiAgaWYgKFxuICAgICFlZGl0QWN0aW9uIHx8XG4gICAgIWVkaXRBY3Rpb24udG9vbF9hcmdzIHx8XG4gICAgdHlwZW9mIGVkaXRBY3Rpb24udG9vbF9hcmdzICE9PSAnb2JqZWN0JyB8fFxuICAgIEFycmF5LmlzQXJyYXkoZWRpdEFjdGlvbi50b29sX2FyZ3MpXG4gICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gZWRpdEFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSwgdG9vbE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBhY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB0b29sTmFtZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnRvb2xfYXJncyB8fCB0eXBlb2YgYWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShhY3Rpb24udG9vbF9hcmdzKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gYWN0aW9uLnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCByYXcgPSByZWMuYWdlbnRfaWQgPz8gcmVjLmFnZW50SWQgPz8gcmVjLmlkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG4vKiogw5psdGltbyByZWN1cnNvIHNpIG5vIGhheSBsaW5rcyBuaSB0b29sX2FyZ3MgcGFyc2VhYmxlcyAocC4gZWouIFwiSUQgKio3NTk3MTA2KipcIikuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCBsYWJlbGVkID0gdGV4dC5tYXRjaCgvXFxiSURcXHMqXFwqXFwqKFxcZCspXFwqXFwqL2kpXG4gIGlmIChsYWJlbGVkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGxhYmVsZWRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIGNvbnN0IGJvbGQgPSB0ZXh0Lm1hdGNoKC9cXCpcXCooXFxkezUsfSlcXCpcXCovKVxuICBpZiAoYm9sZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChib2xkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBmaW5kTWVzc2FnZVdpdGhBcHByb3ZhbEJ5VGhyZWFkSWRzID0gKFxuICB0aHJlYWRJZHM6IHN0cmluZ1tdLFxuICBhY3RpdmVNZXNzYWdlczogQ2hhdE1lc3NhZ2VbXVxuKTogeyBtZXNzYWdlOiBDaGF0TWVzc2FnZTsgc2Vzc2lvbklkOiBzdHJpbmcgfSB8IG51bGwgPT4ge1xuICBjb25zdCBmcm9tQWN0aXZlVmlldyA9IGFjdGl2ZU1lc3NhZ2VzLmZpbmQobWVzc2FnZSA9PlxuICAgIG1lc3NhZ2UuYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICApXG4gIGlmIChmcm9tQWN0aXZlVmlldz8uYXBwcm92YWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZnJvbUFjdGl2ZVZpZXcsXG4gICAgICBzZXNzaW9uSWQ6IGZyb21BY3RpdmVWaWV3LmFwcHJvdmFsLnNlc3Npb25faWQgfHwgYWN0aXZlVmlldy5nZXQoKSB8fCAnJyxcbiAgICB9XG4gIH1cblxuICBjb25zdCB7IG1lc3NhZ2VzIH0gPSB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKClcbiAgY29uc3Qgc2Vzc2lvbkVudHJ5ID0gT2JqZWN0LmVudHJpZXMobWVzc2FnZXMpLmZpbmQoKFssIHNlc3Npb25NZXNzYWdlc10pID0+XG4gICAgc2Vzc2lvbk1lc3NhZ2VzLnNvbWUobWVzc2FnZSA9PlxuICAgICAgbWVzc2FnZS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgKVxuICApXG4gIGlmIChzZXNzaW9uRW50cnkpIHtcbiAgICBjb25zdCBbc2Vzc2lvbklkLCBzZXNzaW9uTWVzc2FnZXNdID0gc2Vzc2lvbkVudHJ5XG4gICAgY29uc3QgZm91bmQgPSBzZXNzaW9uTWVzc2FnZXMuZmluZChtZXNzYWdlID0+XG4gICAgICBtZXNzYWdlLmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoYWN0aW9uID0+IHRocmVhZElkcy5pbmNsdWRlcyhhY3Rpb24udGhyZWFkX2lkKSlcbiAgICApXG4gICAgaWYgKGZvdW5kPy5hcHByb3ZhbCkge1xuICAgICAgcmV0dXJuIHsgbWVzc2FnZTogZm91bmQsIHNlc3Npb25JZDogZm91bmQuYXBwcm92YWwuc2Vzc2lvbl9pZCB8fCBzZXNzaW9uSWQgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgaXNBdXRvQXBwcm92ZUFjdGl2ZSxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBjdXJyZW50VXNlciB9ID0gdXNlU3RhYmxlQ2FsbGJhY2tzKGF1dGhVc2VyKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG5cbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHNldEFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuc2V0QWN0aXZlQ2hhdElkKVxuICBjb25zdCByZXBvcnRlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxDaGF0TWVzc2FnZVtdPihbXSlcbiAgLyoqXG4gICAqIEd1YXJkYSBpbmZvIGRlbCDDumx0aW1vIGFwcHJvdmFsIG1hbnVhbCAoY3VhbmRvIGVsIHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIiBlbiBsdWdhclxuICAgKiBkZSBjbGlja2VhciBlbCBib3TDs24pLiBFbiBtYW51YWwgYXBwcm92YWwsIGBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkYCByZXRvcm5hIGVhcmx5XG4gICAqIHNpbiBhZ3JlZ2FyIHVuIG1lbnNhamUgY29uIGBhcHByb3ZhbGAsIGFzw60gcXVlIGxhIGzDs2dpY2EgZGUgcmVmZXRjaCBlbiBgb25TdHJlYW1GaW5pc2hgXG4gICAqIG5vIGxvIGRldGVjdGEgdsOtYSBgcHJldmlvdXNNZXNzYWdlLmFwcHJvdmFsYC4gTG8gZ3VhcmRhbW9zIGFjw6EgcGFyYSBjb25zdW1pcmxvIGRlc3B1w6lzLlxuICAgKi9cbiAgY29uc3QgbGFzdE1hbnVhbEFwcHJvdmFsUmVmID0gdXNlUmVmPHtcbiAgICB0b29sTmFtZTogc3RyaW5nXG4gICAgdG9vbEFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICB9IHwgbnVsbD4obnVsbClcbiAgLyoqIENvbnRleHRvIGRlbCBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIHByZXZpbyBhbCBlamVjdXRhciBjb250aW51ZS10aHJlYWQuICovXG4gIGNvbnN0IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmID0gdXNlUmVmPEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNQcm9jZXNzaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBmaXJzdFRpbWVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIC8qKiBJZCBkZWwgcGxhY2Vob2xkZXIgZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nIGFjdGl2byAoc2kgaGF5KS4gKi9cbiAgY29uc3Qgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICAvKipcbiAgICogQ2hhdCBhbCBxdWUgcGVydGVuZWNlIGVsIHN0cmVhbSBhY3R1YWxtZW50ZSBhY3Rpdm8uIFNpIGNhbWJpYSBlbCBjaGF0XG4gICAqIG1pZW50cmFzIHVuIHN0cmVhbSBlc3TDoSBlbiB2dWVsbywgZGVzY2FydGFtb3MgbG9zIHRva2VucyByZXNpZHVhbGVzXG4gICAqIHF1ZSBwdWVkYW4gbGxlZ2FyIGFudGVzIGRlIHF1ZSBlbCBhYm9ydCBzZSBjb21wbGV0ZS5cbiAgICovXG4gIGNvbnN0IGFjdGl2ZVN0cmVhbUNoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjbGVhclN0cmVhbVVpUmVmID0gdXNlUmVmPCgpID0+IHZvaWQ+KCgpID0+IHVuZGVmaW5lZClcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcbiAgLyoqXG4gICAqIFNlc2nDs24gYWN0dWFsbWVudGUgdmlzaWJsZS4gU2UgbWFudGllbmUgZW4gc3RhdGUgKG5vIHNvbG8gZW4gcmVmKSBwYXJhIHF1ZVxuICAgKiBlbCBtb3RvciBkZSBzdHJlYW1pbmcgcHVlZGEgbGVlciByZWFjdGl2YW1lbnRlIGxvcyBmbGFncyBkZSBFU1RBIHNlc2nDs25cbiAgICogZGVzZGUgZWwgc3RvcmUsIG1pZW50cmFzIG90cmFzIHNpZ3VlbiBnZW5lcmFuZG8gZW4gYmFja2dyb3VuZC5cbiAgICovXG4gIGNvbnN0IFthY3RpdmVTZXNzaW9uSWQsIHNldEFjdGl2ZVNlc3Npb25JZF0gPSB1c2VTdGF0ZTxzdHJpbmc+KGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgLyoqIFRydWUgbWllbnRyYXMgZXN0YSBpbnN0YW5jaWEgZXN0w6kgbW9udGFkYSAoZXZpdGEgc2V0U3RhdGUgdHJhcyBkZXNtb250YXIpLiAqL1xuICBjb25zdCBpc01vdW50ZWRSZWYgPSB1c2VSZWYodHJ1ZSlcbiAgLyoqIEV2aXRhIHJlY29uY2lsaWFyIGRvcyB2ZWNlcyBlbCBtaXNtbyBlc3RhZG8gdGVybWluYWwgZGUgdW5hIHNlc2nDs24uICovXG4gIGNvbnN0IGxhc3RIYW5kbGVkVGVybWluYWxSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNBdXRvQXBwcm92ZUFjdGl2ZVJlZiA9IHVzZVJlZihpc0F1dG9BcHByb3ZlQWN0aXZlKVxuICAvKiogRXZpdGEgY2xvc3VyZXMgb2Jzb2xldGFzIGN1YW5kbyBlbCBmb290ZXIgY29uc2VydmEgc2VuZE1lc3NhZ2UgZW50cmUgcmVuZGVycy4gKi9cbiAgY29uc3QgY29udGV4dFJlZiA9IHVzZVJlZih7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH0pXG4gIGNvbnRleHRSZWYuY3VycmVudCA9IHsgY2hpcHNQcm9qZWN0LCBwcm9qZWN0LCBjbGllbnQsIHRhc2sgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICBpc0F1dG9BcHByb3ZlQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0F1dG9BcHByb3ZlQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlLCBpc0F1dG9BcHByb3ZlQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICAvKipcbiAgICogRXNjcmliZSB1biBtZW5zYWplIGVuIGVsIHN0b3JlIHBvci1zZXNpw7NuIHksIHNpIGxhIHNlc2nDs24gZXMgbGEgYWN0aXZhLFxuICAgKiB0YW1iacOpbiBlbiBsYSB2aXN0YSBsb2NhbC4gUGVybWl0ZSBxdWUgc2VzaW9uZXMgZW4gYmFja2dyb3VuZCBhY3VtdWxlbiBzdVxuICAgKiByZXN1bHRhZG8gc2luIHBpc2FyIGVsIGNoYXQgcXVlIGVsIHVzdWFyaW8gZXN0w6EgbWlyYW5kby5cbiAgICovXG4gIGNvbnN0IGNvbW1pdFRvU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICAgIHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5hZGRNZXNzYWdlKHNlc3Npb25JZCwgbWVzc2FnZSlcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgYWRkTWVzc2FnZShtZXNzYWdlKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBkcm9wRnJvbVNlc3Npb24gPSB1c2VDYWxsYmFjayhcbiAgICAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkucmVtb3ZlTWVzc2FnZShzZXNzaW9uSWQsIG1lc3NhZ2VJZClcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgcmVtb3ZlTWVzc2FnZShtZXNzYWdlSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIC8qKiBMaW1waWEgZWwgdGFpbCBlbiB2dWVsbyBkZSB1bmEgc2VzacOzbiAodHJhcyB0ZXJtaW5hcjsgZWwgYmFja2VuZCBwYXNhIGEgc2VyIGZ1ZW50ZSkuICovXG4gIGNvbnN0IGNsZWFyU2Vzc2lvblRhaWwgPSB1c2VDYWxsYmFjaygoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuc2V0TWVzc2FnZXMoc2Vzc2lvbklkLCBbXSlcbiAgfSwgW10pXG5cbiAgLy8gUmVnaXN0cmFyIGxhIHNlc2nDs24gdmlzaWJsZSBlbiBlbCB0cmFja2VyIGdsb2JhbCBwYXJhIHF1ZSBsb3MgY2FsbGJhY2tzIGRlbFxuICAvLyBtb3RvciAocXVlIHB1ZWRlbiBwZXJ0ZW5lY2VyIGEgdW5hIGluc3RhbmNpYSB5YSBkZXNtb250YWRhKSBzZXBhbiBjdcOhbCBlcyBsYVxuICAvLyBzZXNpw7NuIGFjdGl2YSBhY3R1YWwuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYWN0aXZlVmlldy5zZXQoYWN0aXZlU2Vzc2lvbklkKVxuICB9LCBbYWN0aXZlU2Vzc2lvbklkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoYWN0aXZlVmlldy5pcyhjdXJyZW50Q2hhdElkLmN1cnJlbnQpKSB7XG4gICAgICAgIGFjdGl2ZVZpZXcuc2V0KG51bGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBSZWNvbmNpbGlhY2nDs246IHNpIGxhIHNlc2nDs24gYWN0aXZhIHRlcm1pbmEgKGNvbXBsZXRlL2Vycm9yL2NhbmNlbGxlZCkgcGVybyBlbFxuICAvLyBzdG9yZSBwb3Itc2VzacOzbiB0b2RhdsOtYSB0aWVuZSB1biBwbGFjZWhvbGRlciBkZSBzdHJlYW1pbmcsIHJlZnJlc2NhbW9zIGRlc2RlXG4gIC8vIGVsIGJhY2tlbmQuIFVzYW1vcyBlbCBzdG9yZSAobm8gbWVzc2FnZXNSZWYpOiBoYW5kbGVTdHJlYW1GaW5pc2ggbGltcGlhIGVsXG4gIC8vIHBsYWNlaG9sZGVyIGFow60gZGUgZm9ybWEgc8OtbmNyb25hOyBtZXNzYWdlc1JlZiBwdWVkZSBxdWVkYXIgc3RhbGUgdW4gcmVuZGVyXG4gIC8vIHBvcnF1ZSBzZXRTdGF0dXMgKFp1c3RhbmQpIHkgcmVtb3ZlTWVzc2FnZSAoUmVhY3QpIG5vIGJhdGNoYW4ganVudG9zLlxuICBjb25zdCBhY3RpdmVTZXNzaW9uTWV0YSA9IHVzZVNlc3Npb25NZXRhKGFjdGl2ZVNlc3Npb25JZClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzdGF0dXMgPSBhY3RpdmVTZXNzaW9uTWV0YT8uc3RhdHVzXG4gICAgaWYgKCFzdGF0dXMpIHJldHVyblxuICAgIGNvbnN0IGlzVGVybWluYWwgPSBzdGF0dXMgPT09ICdjb21wbGV0ZScgfHwgc3RhdHVzID09PSAnZXJyb3InIHx8IHN0YXR1cyA9PT0gJ2NhbmNlbGxlZCdcbiAgICBpZiAoIWlzVGVybWluYWwpIHJldHVyblxuICAgIGNvbnN0IGtleSA9IGAke2FjdGl2ZVNlc3Npb25JZH06JHtzdGF0dXN9OiR7YWN0aXZlU2Vzc2lvbk1ldGE/LmZpbmlzaGVkQXQgPz8gJyd9YFxuICAgIGlmIChsYXN0SGFuZGxlZFRlcm1pbmFsUmVmLmN1cnJlbnQgPT09IGtleSkgcmV0dXJuXG4gICAgbGFzdEhhbmRsZWRUZXJtaW5hbFJlZi5jdXJyZW50ID0ga2V5XG5cbiAgICBjb25zdCB0YWlsID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLmdldE1lc3NhZ2VzKGFjdGl2ZVNlc3Npb25JZClcbiAgICBjb25zdCBoYXNTdGFsZVBsYWNlaG9sZGVyID0gdGFpbC5zb21lKG1zZyA9PiBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKG1zZy5pZCkpXG4gICAgaWYgKGhhc1N0YWxlUGxhY2Vob2xkZXIpIHtcbiAgICAgIGxvYWRNZXNzYWdlcyh7IGZvcmNlOiB0cnVlIH0pXG4gICAgfVxuICB9LCBbYWN0aXZlU2Vzc2lvbk1ldGE/LnN0YXR1cywgYWN0aXZlU2Vzc2lvbk1ldGE/LmZpbmlzaGVkQXQsIGFjdGl2ZVNlc3Npb25JZCwgbG9hZE1lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIGNvbnN0IHByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihpbml0aWFsQ2hhdElkKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcHJldmlvdXNJbml0aWFsQ2hhdElkID0gcHJldmlvdXNJbml0aWFsQ2hhdElkUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0luaXRpYWxDaGF0SWRSZWYuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcblxuICAgIC8vIENoYXQgbnVldm8gLyBob21lOiBpbml0aWFsQ2hhdElkIHBhc2EgYSBudWxsLCBhc8OtIHF1ZSBsYSByYW1hIGRlIGFiYWpvIG5vXG4gICAgLy8gYXBsaWNhLiBIYXkgcXVlIHJvdGFyIGEgdW5hIHNlc2nDs24gbnVldmEgaWd1YWw6IHNpIHNlZ3VpbW9zIGFwdW50YW5kbyBhIGxhXG4gICAgLy8gYW50ZXJpb3IsIGBhY3RpdmVWaWV3YCBsYSBzaWd1ZSBtYXJjYW5kbyBjb21vIGFjdGl2YSB5IGN1YW5kbyB0ZXJtaW5hIG5vIHNlXG4gICAgLy8gbm90aWZpY2EgKHkgc3UgcmVzcHVlc3RhIHNlIGNvbW1pdGVhIHNvYnJlIGxhIHZpc3RhIG51ZXZhKS4gRWwgw6FyYm9sIG5vXG4gICAgLy8gcmVtb250YSBlbiBlc3RlIGZsdWpvIChubyBoYXkgYGtleWApIHkgbmFkaWUgY29uc3VtZSBgcmVzZXRDaGF0YC5cbiAgICBpZiAoIWluaXRpYWxDaGF0SWQgJiYgcHJldmlvdXNJbml0aWFsQ2hhdElkKSB7XG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgc2V0QWN0aXZlU2Vzc2lvbklkKGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIE5PIGFib3J0YW1vcyBlbCBzdHJlYW0gYW50ZXJpb3I6IHB1ZWRlIHNlZ3VpciBnZW5lcmFuZG8gZW4gYmFja2dyb3VuZC5cbiAgICAgIC8vIFNvbG8gY2FtYmlhbW9zIGRlIHNlc2nDs24gYWN0aXZhOyBlbCBtb3RvciBydXRlYSBjYWRhIHN0cmVhbSBwb3Igc3VcbiAgICAgIC8vIHNlc3Npb25JZCwgYXPDrSBxdWUgbG9zIHRva2VucyBkZSBsYSBzZXNpw7NuIHByZXZpYSBzaWd1ZW4gYXBsaWPDoW5kb3NlIGFcbiAgICAgIC8vIEVTQSBzZXNpw7NuIChzdG9yZSksIG5vIGEgbGEgbnVldmEuXG5cbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBzZXRBY3RpdmVTZXNzaW9uSWQoaW5pdGlhbENoYXRJZClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgLy8gaXNQcm9jZXNzaW5nUmVmIHJlZmxlamEgc2kgbGEgc2VzacOzbiBBQ1RJVkEgZXN0w6Egb2N1cGFkYS4gU2kgbGEgc2VzacOzblxuICAgICAgLy8gYSBsYSBxdWUgZW50cmFtb3Mgc2lndWUgZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQsIHF1ZWRhIGJsb3F1ZWFkYTsgc2kgbm8sXG4gICAgICAvLyBzZSBoYWJpbGl0YSBlbCBlbnbDrW8gYXVucXVlIG90cmFzIHNlc2lvbmVzIHNpZ2FuIGdlbmVyYW5kby5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gc2Vzc2lvblN0cmVhbU1hbmFnZXIuaXNBY3RpdmUoaW5pdGlhbENoYXRJZClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICAvLyBsb2FkTWVzc2FnZXMgbG8gZGlzcGFyYSB1c2VDaGF0TWVzc2FnZXMgYWwgY2FtYmlhciBjaGF0SWQgKGNvbiBjYWNoZSBlbiBtZW1vcmlhKS5cbiAgICB9XG4gIH0sIFtpbml0aWFsQ2hhdElkLCBwcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRBY3RpdmVDaGF0SWQoaW5pdGlhbENoYXRJZCB8fCBudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZCwgc2V0QWN0aXZlQ2hhdElkXSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgbWVzc2FnZUlkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG5cbiAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQWNjZXNzRGVuaWVkID0gZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgY29uc3QgaXNQcm9tcHRUb29Mb25nID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSAnaW52YWxpZF9yZXF1ZXN0X2Vycm9yJyAmJiBlcnJvclJhd01lc3NhZ2U/LmluY2x1ZGVzKCdwcm9tcHQgaXMgdG9vIGxvbmcnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGlzQWNjZXNzRGVuaWVkXG4gICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgIDogaXNQcm9tcHRUb29Mb25nXG4gICAgICAgICAgPyB0KCdjaGF0LmVycm9yUHJvbXB0VG9vTG9uZycsIHsgdXNlZDogZXJyb3JSYXdNZXNzYWdlPy5tYXRjaCgvKFxcZCspIHRva2Vucy8pPy5bMV0gPz8gJycgfSlcbiAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7bWVzc2FnZUlkfWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICAgIC8vIENoaXAgXCJSZWludGVudGFyXCIgc29sbyBlbiBlbCBlcnJvciBnZW7DqXJpY28gKHAuIGVqLiA1MDApOyBubyBhcGxpY2EgYSBhY2Nlc3MgZGVuaWVkIG5pIHByb21wdCB0b28gbG9uZy5cbiAgICAgICAgLi4uKCFpc0FjY2Vzc0RlbmllZCAmJiAhaXNQcm9tcHRUb29Mb25nID8geyBzdWdnZXN0aW9uczogW3QoJ2NoYXQucmV0cnknKV0gfSA6IHt9KSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgY2xlYXJTZXNzaW9uVGFpbChzZXNzaW9uSWQpXG5cbiAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY3R4OiBTdHJlYW1Db250ZXh0LCBjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcblxuICAgICAgLy8gQXNlZ3VyYW1vcyBlbCBwbGFjZWhvbGRlciB1bmEgw7puaWNhIHZleiBwb3Igc3RyZWFtLCB0YW50byBlbiBlbCBzdG9yZVxuICAgICAgLy8gZGUgbGEgc2VzacOzbiBjb21vIGVuIGxhIHZpc3RhIHNpIGVzIGxhIGFjdGl2YS4gRWwgdGV4dG8gZW4gdml2byB2aWFqYVxuICAgICAgLy8gcG9yIHNlc3Npb25TdHJlYW1pbmdUZXh0IChleHRlcm5vKSwgc2luIHJlLXJlbmRlciBkZWwgw6FyYm9sIGNvbXBsZXRvLlxuICAgICAgY29uc3QgcGxhY2Vob2xkZXJFeGlzdHMgPSB1c2VTZXNzaW9uc1N0b3JlXG4gICAgICAgIC5nZXRTdGF0ZSgpXG4gICAgICAgIC5nZXRNZXNzYWdlcyhzZXNzaW9uSWQpXG4gICAgICAgIC5zb21lKG1zZyA9PiBtc2cuaWQgPT09IHBsYWNlaG9sZGVySWQpXG5cbiAgICAgIGlmICghcGxhY2Vob2xkZXJFeGlzdHMpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IHBsYWNlaG9sZGVySWQsXG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpKSB7XG4gICAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IHBsYWNlaG9sZGVySWRcbiAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBzZXNzaW9uSWRcbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc2V0VGV4dChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIGNvbnRlbnQpXG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY3R4OiBTdHJlYW1Db250ZXh0LFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGwsXG4gICAgICBfcmVzb2x2ZWRDb250ZXh0PzogdW5rbm93bixcbiAgICAgIHJlYXNvbmluZz86IFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBwbGFjZWhvbGRlcklkXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBkcm9wRnJvbVNlc3Npb24oc2Vzc2lvbklkLCB0ZW1wTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyhyYXdBdHRhY2htZW50cylcbiAgICAgIGNvbnN0IGZpbmlzaFRyYWNlID0gbWFwUmVhc29uaW5nVHJhY2UocmVhc29uaW5nKSA/PyByZWFzb25pbmdUcmFjZUZvcih0ZW1wTWVzc2FnZUlkKVxuICAgICAgY29uc3QgZmluYWxNZXNzYWdlSWQgPSBgYW5zd2VyLSR7bWVtb3J5U2Vzc2lvbklkfWBcbiAgICAgIHJlYXNvbmluZ1N0b3JlLnJlbmFtZSh0ZW1wTWVzc2FnZUlkLCBmaW5hbE1lc3NhZ2VJZClcblxuICAgICAgLy8gU2VzacOzbiBlbiBiYWNrZ3JvdW5kOiBjZXJyYW1vcyBsZWFuLiBFbCBiYWNrZW5kIHlhIHBlcnNpc3Rpw7MgbGFcbiAgICAgIC8vIHJlc3B1ZXN0YSwgYXPDrSBxdWUgYWwgdm9sdmVyIGEgbGEgc2VzacOzbiBzZSBjYXJnYSBkZXNkZSBhaMOtLiBBdmlzYW1vc1xuICAgICAgLy8gcXVlIHRlcm1pbsOzICh1bnJlYWQgKyBldmVudG8gcGFyYSB0b2FzdC9zb25pZG8pLlxuICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IGZpbmFsTWVzc2FnZUlkLFxuICAgICAgICAgIG1lc3NhZ2U6IGNvbnRlbnQsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgICByZWFzb25pbmc6IGZpbmlzaFRyYWNlLFxuICAgICAgICB9KVxuICAgICAgICBjbGVhclNlc3Npb25UYWlsKHNlc3Npb25JZClcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdjb21wbGV0ZScpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBjb25zdCBUQVNLX0NSRUFUSU9OX1RPT0xTID0gWydjcmVhdGVfdGFzaycsICdjcmVhdGVfdGFza3NfYmF0Y2gnLCAnY2xvbmVfdGFzayddXG4gICAgICBjb25zdCBUQVNLX0VESVRfVE9PTFMgPSBbXG4gICAgICAgICdlZGl0X3Rhc2snLFxuICAgICAgICAnZWRpdF90YXNrc19iYXRjaCcsXG4gICAgICAgICd0YXNrX2Fzc2lnbicsXG4gICAgICAgICd0YXNrX3VuYXNzaWduJyxcbiAgICAgICAgJ3VwZGF0ZV90YXNrX3R5cGUnLFxuICAgICAgICAndXBkYXRlX2VzdGltYXRlZF9ob3VycycsXG4gICAgICAgICdhc3NpZ25fdGFza19sYWJlbCcsXG4gICAgICBdXG4gICAgICBjb25zdCBUQVNLX0RFTEVURV9UT09MUyA9IFsnZGVsZXRlX3Rhc2snLCAnZGVsZXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zIHx8IFtdXG4gICAgICBjb25zdCB3YXNUYXNrQ3JlYXRpb24gPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0NSRUFUSU9OX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0VkaXQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRGVsZXRlID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNDcmVhdGVBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBhY3Rpb24udG9vbF9uYW1lID09PSAnY3JlYXRlX2FnZW50JylcbiAgICAgIGNvbnN0IHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICBsZXQgY3JlYXRlQWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpKSB7XG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgJiZcbiAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiZcbiAgICAgICAgKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSB8fFxuICAgICAgICAgIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9ucywgJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjb25maWd1cmVkQWdlbnRJZCA9XG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7XG4gICAgICAgICAgYWdlbnRJZDogY29uZmlndXJlZEFnZW50SWQgYXMgc3RyaW5nLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRIaXRsT3B0aW9uLCB7XG4gICAgICAgICAgYWdlbnRfdHlwZTogZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZShhZ2VudCksXG4gICAgICAgICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICAuLi4oY29tcGxldGVkQWdlbnRJZD8udHJpbSgpID8geyBjcmVhdGVkX2FnZW50X2lkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB3YXNFZGl0QWdlbnRBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcblxuICAgICAgbGV0IGVkaXRBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzRWRpdEFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgZnJvbVN0cmVhbSA9IGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKVxuICAgICAgICBjb25zdCBmcm9tQXJncyA9IGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgICBjb25zdCByZXNvbHZlZEFnZW50SWQgPSBmcm9tU3RyZWFtIHx8IGZyb21BcmdzXG4gICAgICAgIGlmIChyZXNvbHZlZEFnZW50SWQpIHtcbiAgICAgICAgICBlZGl0QWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogcmVzb2x2ZWRBZ2VudElkIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbVVybHMgPSBtYXRjaGVzLm1hcChtYXRjaCA9PiBwYXJzZUludChtYXRjaFsxXSwgMTApKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCA9IGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGlvblRleHQgPVxuICAgICAgICB3YXNUYXNrRGVsZXRlICYmIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPT09IDAgJiYgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IGV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dChjb250ZW50KVxuICAgICAgICAgIDogW11cbiAgICAgIGNvbnN0IHRhc2tJZHNGb3JEYXNoYm9hcmQgPVxuICAgICAgICB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGFza0lkc0Zyb21VcmxzXG4gICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbFxuICAgICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dFxuXG4gICAgICBjb25zdCBzaG91bGRTeW5jRGFzaGJvYXJkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICAod2FzVGFza0NyZWF0aW9uIHx8IHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUpICYmXG4gICAgICAgIHRhc2tJZHNGb3JEYXNoYm9hcmQubGVuZ3RoID4gMFxuXG4gICAgICBpZiAoc2hvdWxkU3luY0Rhc2hib2FyZCkge1xuICAgICAgICBjb25zdCB0YXNrSWRzID0gdGFza0lkc0ZvckRhc2hib2FyZFxuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQodGFza0lkc1swXSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgICB1cmwucmVwbGFjZSgvXFwvKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpKD89JHxcXD8pLywgdGFiU2VnbWVudClcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0UHJvamVjdE1lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWRSYXcgPSBwcm9qZWN0Py5pZCB8fCBsYXN0UHJvamVjdE1lc3NhZ2U/LnByb2plY3RJZFxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gY29udGV4dFByb2plY3RJZFJhdyA/IHBhcnNlSW50KFN0cmluZyhjb250ZXh0UHJvamVjdElkUmF3KSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC9wcm9qZWN0c1xcLyhcXGQrKVxcLy8pXG4gICAgICAgIGNvbnN0IHJvdXRlUHJvamVjdElkID0gcGF0aE1hdGNoID8gcGFyc2VJbnQocGF0aE1hdGNoWzFdLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IGlzT25Qcm9qZWN0Um91dGUgPSBjb250ZXh0UHJvamVjdElkICYmIHJvdXRlUHJvamVjdElkICYmIGNvbnRleHRQcm9qZWN0SWQgPT09IHJvdXRlUHJvamVjdElkXG5cbiAgICAgICAgaWYgKGlzT25Qcm9qZWN0Um91dGUpIHtcbiAgICAgICAgICBpZiAod2FzVGFza0NyZWF0aW9uKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0VkaXQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5lZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0RlbGV0ZSkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZWZldGNoIGRlbCB0YXNrIHBhbmVsIHNpIGVzdMOhIGFiaWVydG8geSBsYSB0b29sIGFwcm9iYWRhIGVkaXTDsy9ib3Jyw7MgZXNhIHRhcmVhLlxuICAgICAgLy8gQ3VicmUgbG9zIGRvcyBmbHVqb3MgZGUgYXBwcm92YWw6XG4gICAgICAvLyAgIDEpIEFwcHJvdmFsIHBvciBib3TDs24g4oaSIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWwucGVuZGluZ19hY3Rpb25zYCAodsOtYSBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlKVxuICAgICAgLy8gICAyKSBNYW51YWwgYXBwcm92YWwgKHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIikg4oaSIGBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudGBcbiAgICAgIGNvbnN0IG9wZW5UYXNrUGFuZWxJZCA9IHdpbmRvdy50YXNrUGFuZWw/LnRhc2tJZFxuICAgICAgY29uc3QgbWFudWFsQXBwcm92YWwgPSBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudFxuICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSBudWxsIC8vIGNvbnN1bWlyIHVuYSBzb2xhIHZlelxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0VkaXQgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tEZWxldGUgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfREVMRVRFX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuXG4gICAgICAvLyBTeW5jIFBsYW5uZXI6IGF2aXNhciBjYXJnYSBkZSBob3JhcyBjb25maXJtYWRhIChjcmVhdGVfaG91ciAvIGNyZWF0ZV9ob3VycykuXG4gICAgICBjb25zdCBob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsID0gcGVuZGluZ0FjdGlvbnNcbiAgICAgICAgLm1hcCgoYWN0aW9uOiBQZW5kaW5nQWN0aW9uKSA9PiBhY3Rpb24udG9vbF9uYW1lKVxuICAgICAgICAuZmlsdGVyKCh0b29sTmFtZSk6IHRvb2xOYW1lIGlzIHN0cmluZyA9PiBpc0hvdXJzQ2hhcmdlVG9vbCh0b29sTmFtZSkpXG4gICAgICBjb25zdCB3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIGhvdXJzVG9vbHNGcm9tQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgY29uc3QgbWFudWFsSG91cnNUb29sID0gbWFudWFsQXBwcm92YWw/LnRvb2xOYW1lXG4gICAgICBjb25zdCB3YXNIb3Vyc0NoYXJnZU1hbnVhbEFwcHJvdmVkID0gaXNIb3Vyc0NoYXJnZVRvb2wobWFudWFsSG91cnNUb29sKVxuXG4gICAgICBpZiAod2FzSG91cnNDaGFyZ2VBcHByb3ZlZCB8fCB3YXNIb3Vyc0NoYXJnZU1hbnVhbEFwcHJvdmVkKSB7XG4gICAgICAgIGNvbnN0IHRvb2xzID0gd2FzSG91cnNDaGFyZ2VBcHByb3ZlZCA/IGhvdXJzVG9vbHNGcm9tQXBwcm92YWwgOiBtYW51YWxIb3Vyc1Rvb2wgPyBbbWFudWFsSG91cnNUb29sXSA6IFtdXG4gICAgICAgIGRpc3BhdGNoTWFpYUhvdXJzQ2hhcmdlZCh7XG4gICAgICAgICAgc291cmNlOiAnbWFpYScsXG4gICAgICAgICAgdG9vbHMsXG4gICAgICAgICAgc2Vzc2lvbklkOiBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuVGFza1BhbmVsSWQgJiYgKHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUgfHwgbWFudWFsV2FzVGFza0VkaXQgfHwgbWFudWFsV2FzVGFza0RlbGV0ZSkpIHtcbiAgICAgICAgY29uc3QgbWFudWFsUHNldWRvQWN0aW9uOiBQZW5kaW5nQWN0aW9uIHwgbnVsbCA9IG1hbnVhbEFwcHJvdmFsXG4gICAgICAgICAgPyAoeyB0b29sX25hbWU6IG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lLCB0b29sX2FyZ3M6IG1hbnVhbEFwcHJvdmFsLnRvb2xBcmdzID8/IHt9IH0gYXMgUGVuZGluZ0FjdGlvbilcbiAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRUYXNrSWRzID0gW1xuICAgICAgICAgIC4uLmV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhwZW5kaW5nQWN0aW9ucyksXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21VcmxzLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwsXG4gICAgICAgICAgLi4uKG1hbnVhbFBzZXVkb0FjdGlvbiA/IGV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhbbWFudWFsUHNldWRvQWN0aW9uXSkgOiBbXSksXG4gICAgICAgIF0ubWFwKFN0cmluZylcbiAgICAgICAgaWYgKGFmZmVjdGVkVGFza0lkcy5pbmNsdWRlcyhTdHJpbmcob3BlblRhc2tQYW5lbElkKSkpIHtcbiAgICAgICAgICB3aW5kb3cudGFza1BhbmVsPy5yZWZldGNoVGFzaz8uKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBmaW5hbE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgICByZWFzb25pbmc6IGZpbmlzaFRyYWNlLFxuICAgICAgfSlcbiAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuXG4gICAgICBpZiAoY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGNyZWF0ZUFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyBhw7FhZGlyIGVsIGFnZW50ZSByZWNpw6luIGNyZWFkbyBhbCBsaXN0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChlZGl0QWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGVkaXRBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIHJlZnJlc2NhciBlbCBhZ2VudGUgZWRpdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG5cbiAgICAgIGNvbnN0IHsgaXNDaGF0Vmlld1Zpc2libGUsIG1hcmtDaGF0QXNSZWFkIH0gPSBnZXRDaGF0c1N0b3JlU3RhdGUoKVxuICAgICAgaWYgKGlzQWN0aXZlICYmIGlzQ2hhdFZpZXdWaXNpYmxlKSB7XG4gICAgICAgIGF3YWl0IG1hcmtDaGF0QXNSZWFkKHNlc3Npb25JZCwgeyBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjb21taXRUb1Nlc3Npb24sIGRyb3BGcm9tU2Vzc2lvbiwgY2xlYXJTZXNzaW9uVGFpbCwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHQsIGV2ZW50LCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gRWwgc3RvcCBzaWVtcHJlIGFwbGljYSBhIGxhIHNlc2nDs24gYWN0aXZhIChib3TDs24gZGVsIGlucHV0IHZpc2libGUpLlxuICAgIGNvbnN0IHNlc3Npb25JZCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IHN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudClcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHRlbXBNZXNzYWdlSWQpXG5cbiAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFtjb21taXRUb1Nlc3Npb24sIGRyb3BGcm9tU2Vzc2lvbiwgY2xlYXJTZXNzaW9uVGFpbCwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG4gICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IHBsYWNlaG9sZGVySWRcblxuICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgZHJvcEZyb21TZXNzaW9uKHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcblxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50aHJlYWRfaWQpLFxuICAgICAgfVxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgfVxuXG4gICAgICBpZiAoYXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIHx8IGFwcHJvdmFsLmF1dG9fYXBwcm92ZWQgfHwgYXBwcm92YWwuYXBwcm92YWxfc3RhdHVzID09PSAnYXBwcm92ZWQnKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWN0aW9uID0gYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5bMF1cbiAgICAgICAgY29uc3QgdG9vbE5hbWUgPSAoYXBwcm92YWwgYXMgeyB0b29sX25hbWU/OiBzdHJpbmcgfSkudG9vbF9uYW1lID8/IGZpcnN0QWN0aW9uPy50b29sX25hbWUgPz8gJydcbiAgICAgICAgY29uc3QgdG9vbEFyZ3MgPVxuICAgICAgICAgICgoYXBwcm92YWwgYXMgeyB0b29sX2FyZ3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KS50b29sX2FyZ3MgPz9cbiAgICAgICAgICAgIChmaXJzdEFjdGlvbj8udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkKSkgfHxcbiAgICAgICAgICBudWxsXG4gICAgICAgIGlmICh0b29sTmFtZSAmJiBpc0FjdGl2ZSkge1xuICAgICAgICAgIGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50ID0geyB0b29sTmFtZSwgdG9vbEFyZ3MgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGEgbWVzc2FnZSB3aXRoIHRoZSBhcHByb3ZhbCByZXF1ZXN0XG4gICAgICBjb25zdCBhcHByb3ZhbE1lc3NhZ2VJZCA9IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gXG4gICAgICByZWFzb25pbmdTdG9yZS5maW5pc2godGVtcE1lc3NhZ2VJZCwgYXBwcm92YWwucmVhc29uaW5nKVxuICAgICAgcmVhc29uaW5nU3RvcmUucmVuYW1lKHRlbXBNZXNzYWdlSWQsIGFwcHJvdmFsTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXBwcm92YWxUcmFjZSA9IG1hcFJlYXNvbmluZ1RyYWNlKGFwcHJvdmFsLnJlYXNvbmluZykgPz8gcmVhc29uaW5nVHJhY2VGb3IoYXBwcm92YWxNZXNzYWdlSWQpXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBhcHByb3ZhbE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICAgIHJlYXNvbmluZzogYXBwcm92YWxUcmFjZSxcbiAgICAgIH0pXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdhcHByb3ZhbF9yZXF1aXJlZCcpXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb25dXG4gIClcblxuICBjb25zdCB7XG4gICAgYXNrTWFpYSxcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgfSA9IHVzZU9yY2hlc3RyYXRvclN0cmVhbSh7XG4gICAgYWN0aXZlU2Vzc2lvbklkLFxuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldEFjdGl2ZUxvYWRpbmdzKHt9KVxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBUb3BlIGRlIGNvbmN1cnJlbmNpYTogc2kgZXN0YSBzZXNpw7NuIG5vIGVzdMOhIGdlbmVyYW5kbyB5IHlhIGhheVxuICAgICAgLy8gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyBhY3RpdmFzLCBhdmlzYW1vcyB5IG5vIGFycmFuY2Ftb3Mgb3RyYS5cbiAgICAgIGNvbnN0IHdpbGxTdGFydE5ld1N0cmVhbSA9ICFzZXNzaW9uU3RyZWFtTWFuYWdlci5pc0FjdGl2ZShjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBpZiAod2lsbFN0YXJ0TmV3U3RyZWFtICYmIHNlc3Npb25TdHJlYW1NYW5hZ2VyLmdldEFjdGl2ZUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIHNldEFjdGl2ZUNoYXRJZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG5cbiAgICAgIGVuc3VyZVNlc3Npb25JblNpZGViYXIoe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHRpdGxlOiBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUoZGlzcGxheU1lc3NhZ2UpLFxuICAgICAgICBhZ2VudCxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2U6IGRpc3BsYXlNZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQoY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50KVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBzZXNzaW9uSWRcbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZClcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogYWdlbnQ/Lm5hbWUgfHwgJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG5cbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgY29udGV4dFJlZi5jdXJyZW50LnByb2plY3Q/LmluY29tZVR5cGVcbiAgICAgICAgfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIGxhc3RNZXNzYWdlUHJvamVjdElkKVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKHByb2plY3RzPy5sZW5ndGggPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0c1swXS5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihjdHhUYXNrPy5pZCAhPSBudWxsXG4gICAgICAgICAgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpLCAuLi4oY3R4VGFzay5uYW1lID8geyB0YXNrTmFtZTogY3R4VGFzay5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRnVhSWQgPyB7IGZ1YUlkOiBwYXlsb2FkRnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRTY0lkID8geyBzY0lkOiBwYXlsb2FkU2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQ29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiBwYXlsb2FkQ29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBjb21taXRUb1Nlc3Npb24sXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKG9wdGlvbi5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogTnVtYmVyKG9wdGlvbi5jbGllbnRJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyB0aHJlYWRfaWRzIHByb3ZpZGVkIGZvciBhcHByb3ZhbCBkZWNpc2lvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3VuZCA9IGZpbmRNZXNzYWdlV2l0aEFwcHJvdmFsQnlUaHJlYWRJZHModGhyZWFkSWRzLCBtZXNzYWdlc1JlZi5jdXJyZW50KVxuICAgICAgaWYgKCFmb3VuZD8ubWVzc2FnZS5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWRzOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbWVzc2FnZTogbWVzc2FnZVdpdGhBcHByb3ZhbCwgc2Vzc2lvbklkOiBmb3VuZFNlc3Npb25JZCB9ID0gZm91bmRcbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGlmICghYXBwcm92YWwpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGFwcHJvdmFsLnNlc3Npb25faWQgfHwgZm91bmRTZXNzaW9uSWRcbiAgICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlc3Npb25faWQgZGlzcG9uaWJsZSBwYXJhIGFwcHJvdmFsOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzZXNzaW9uU3RyZWFtTWFuYWdlci5pc0FjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuZ2V0QWN0aXZlQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZUlkID0gbWVzc2FnZVdpdGhBcHByb3ZhbC5pZFxuICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IG1lc3NhZ2VXaXRoQXBwcm92YWwubWVzc2FnZSxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkcyxcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNBY3RpdmVTZXNzaW9uID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG4gICAgICBpZiAoaXNBY3RpdmVTZXNzaW9uKSB7XG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwgeyAuLi5tZXNzYWdlV2l0aEFwcHJvdmFsLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG5cbiAgICAgIGNvbnN0IHN0cmVhbU1lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBpZiAoaXNBY3RpdmVTZXNzaW9uKSB7XG4gICAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHN0cmVhbU1lc3NhZ2VJZFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXRsQ3R4OiBTdHJlYW1Db250ZXh0ID0ge1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIG1lc3NhZ2VJZDogc3RyZWFtTWVzc2FnZUlkLFxuICAgICAgICBwbGFjZWhvbGRlcklkOiBgYW5zd2VyLSR7c3RyZWFtTWVzc2FnZUlkfS1zdHJlYW1pbmdgLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFpc0FjdGl2ZVNlc3Npb24pIHJldHVyblxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlc3Npb25TdHJlYW1NYW5hZ2VyLnN0YXJ0Q29udGludWVTdHJlYW0oe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHBsYWNlaG9sZGVySWQ6IGhpdGxDdHgucGxhY2Vob2xkZXJJZCxcbiAgICAgICAgY29udGludWVSZXF1ZXN0OiB7XG4gICAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgaXNBdXRvQXBwcm92ZUFjdGl2ZTogaXNBdXRvQXBwcm92ZUFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICB9LFxuICAgICAgICB0LFxuICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dDogaGl0bENvbnRleHQsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSxcbiAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgb25TdHJlYW1VcGRhdGU6IGNvbnRlbnQgPT4gaGFuZGxlU3RyZWFtVXBkYXRlKGhpdGxDdHgsIGNvbnRlbnQpLFxuICAgICAgICAgIG9uRmluaXNoU3RyZWFtOiBmaW5pc2hQYXlsb2FkID0+IHtcbiAgICAgICAgICAgIHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nKClcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChcbiAgICAgICAgICAgICAgaGl0bEN0eCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5jb250ZW50LFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLnNvdXJjZXMsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQubWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLmF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLnN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLmNvbXBsZXRlZEFnZW50SWQsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQucmVzb2x2ZWRDb250ZXh0LFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLnJlYXNvbmluZ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcoKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoaGl0bEN0eClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQXBwcm92YWxSZXF1aXJlZDogKGFwcHJvdmFsUGF5bG9hZCwgYWNjdW11bGF0ZWRDb250ZW50KSA9PiB7XG4gICAgICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGhpdGxDdHgsIGFwcHJvdmFsUGF5bG9hZCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3VsdC5zdGFydGVkKSB7XG4gICAgICAgIHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nKClcbiAgICAgICAgaWYgKHJlc3VsdC5yZWFzb24gPT09ICdsaW1pdCcpIHtcbiAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgICAgZGV0YWlsOiB7IHNob3c6IHRydWUsIHNldmVyaXR5OiAnaW5mbycsIG1lc3NhZ2U6IHQoJ2NoYXQudG9vTWFueUFjdGl2ZVNlc3Npb25zJykgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhdXRoVXNlcixcbiAgICAgIGFnZW50LFxuICAgICAgY29tbWl0VG9TZXNzaW9uLFxuICAgICAgaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgICBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgICBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgICAgdCxcbiAgICBdXG4gIClcblxuICBjb25zdCBpbml0aWFsaXplQ2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGluaXRpYWxDaGF0SWQpIHtcbiAgICAgIGF3YWl0IGxvYWRNZXNzYWdlcygpXG4gICAgfSBlbHNlIGlmICh1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxNZXNzYWdlID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZT8udHJpbSgpKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEF0dGFjaG1lbnRzID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGYXEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGdWEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxTYyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQpXG5cbiAgICAgIGlmICghaGFzSW5pdGlhbE1lc3NhZ2UgJiYgIWhhc0luaXRpYWxBdHRhY2htZW50cyAmJiAhaGFzSW5pdGlhbEZhcSAmJiAhaGFzSW5pdGlhbEZ1YSAmJiAhaGFzSW5pdGlhbFNjKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgdGFzazogY3R4VGFzayxcbiAgICAgIH0gPSBjb250ZXh0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIG51bGwpID8/IGN0eFByb2plY3Q/LmlkID8/IG51bGxcblxuICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIFBBVEg9aW5pdGlhbGl6ZUNoYXQvdXNlckluaXRpYWxNZXNzYWdlIOKAlCBjb250ZXh0UmVmIHJlc29sdXRpb246Jywge1xuICAgICAgICBwcm9qZWN0UHJvcElkOiBjdHhQcm9qZWN0Py5pZCA/PyBudWxsLFxuICAgICAgICBjbGllbnRJZDogY3R4Q2xpZW50Py5pZCA/PyBudWxsLFxuICAgICAgICB0YXNrSWQ6IGN0eFRhc2s/LmlkID8/IG51bGwsXG4gICAgICAgIGNoaXBzUHJvamVjdElkOiBjdHhDaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBhZ2VudFR5cGU6IGFnZW50Py50eXBlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgaW5pdGlhbERpc3BsYXlNZXNzYWdlID0gZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICAgIH0pXG5cbiAgICAgIGVuc3VyZVNlc3Npb25JblNpZGViYXIoe1xuICAgICAgICBzZXNzaW9uSWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgdGl0bGU6IGJ1aWxkU2lkZWJhclNlc3Npb25UaXRsZShpbml0aWFsRGlzcGxheU1lc3NhZ2UpLFxuICAgICAgICBhZ2VudCxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkLFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyxcbiAgICAgIH0pXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNBdXRvQXBwcm92ZUFjdGl2ZTogaXNBdXRvQXBwcm92ZUFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi5yZXNvbHZlQ2xpZW50UGF5bG9hZChjdHhDbGllbnQsIGN0eFByb2plY3QpLFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8ubmFtZSA/IHsgcHJvamVjdE5hbWU6IGN0eFByb2plY3QubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oY3R4VGFzaz8uaWQgIT0gbnVsbFxuICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiB1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCA/IHsgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQgPyB7IHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVtb2ppICE9IG51bGwgPyB7IGFnZW50RW1vamk6IGFnZW50LmVtb2ppIH0gOiB7fSksXG4gICAgICAgIC4uLihidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucylcbiAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiB1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgaW5pdGlhbENoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgcHJldmlvdXNTZXNzaW9uSWQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihwcmV2aW91c1Nlc3Npb25JZClcbiAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIHNldEFjdGl2ZVNlc3Npb25JZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgc2V0QWN0aXZlQ2hhdElkKG51bGwpXG4gIH0sIFtzZXRBY3RpdmVDaGF0SWRdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJt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
1502
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsImZldGNoQWdlbnREZXRhaWwiLCJidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJzZXNzaW9uU3RyZWFtaW5nVGV4dCIsInVzZVNlc3Npb25zU3RvcmUiLCJ1c2VTZXNzaW9uTWV0YSIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyIsImFjdGl2ZVZpZXciLCJub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQiLCJidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUiLCJlbnN1cmVTZXNzaW9uSW5TaWRlYmFyIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCIsInN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwidXNlQ2hhdHNTdG9yZSIsInJlYXNvbmluZ1N0b3JlIiwiYnVpbGRSZWFzb25pbmdUcmFjZSIsIm1hcFJlYXNvbmluZ1RyYWNlIiwicmVhc29uaW5nVHJhY2VGb3IiLCJtZXNzYWdlSWQiLCJzbmFwc2hvdCIsImdldFNuYXBzaG90IiwiaWQiLCJzdGVwcyIsInN1bW1hcnkiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJfb2JqZWN0U3ByZWFkIiwiY2xpZW50SWQiLCJuYW1lIiwiY2xpZW50TmFtZSIsImNsaWVudCIsIm5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzIiwicmF3QXR0YWNobWVudHMiLCJmaWx0ZXIiLCJhdHRhY2htZW50IiwiX3R5cGVvZiIsIm1hcCIsImluZGV4IiwidHJpbSIsImNvbmNhdCIsInR5cGUiLCJtaW1lVHlwZSIsIm1pbWVfdHlwZSIsImZ1bGxGaWxlTmFtZSIsImluY2x1ZGVzIiwibnVtZXJpY1NpemUiLCJzaXplIiwiZmlsZSIsIkZpbGUiLCJ1cmxfb3JpZ2luYWwiLCJ1bmRlZmluZWQiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX2ZpbGUiLCJyb2xlIiwiZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzIiwicGVuZGluZ0FjdGlvbnMiLCJpZHMiLCJwdXNoSWQiLCJyYXciLCJuIiwicGFyc2VJbnQiLCJTdHJpbmciLCJpc05hTiIsInB1c2giLCJmb3JFYWNoIiwiYWN0aW9uIiwiX3JlYyR0YXNrX2lkIiwiYXJncyIsInRvb2xfYXJncyIsInJlYyIsInRhc2tfaWQiLCJ0YXNrX2lkcyIsInRhc2tzIiwidCIsIl90cmVjJHRhc2tfaWQiLCJ0cmVjIiwiZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMiLCJ0b29sX25hbWUiLCJfcmVjJHRhc2tfaWQyIiwibGlzdCIsInRpZCIsImV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zIiwiX3JlYyRhZ2VudF9pZCIsImVkaXRBY3Rpb24iLCJmaW5kIiwiYSIsInRvTG93ZXJDYXNlIiwiYWdlbnRfaWQiLCJhZ2VudElkIiwiZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lIiwidG9vbE5hbWUiLCJfcmVmIiwiX3JlYyRhZ2VudF9pZDIiLCJleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQiLCJ0ZXh0IiwibGFiZWxlZCIsIm1hdGNoIiwiYm9sZCIsInVzZVN0YWJsZUNhbGxiYWNrcyIsImF1dGhVc2VyIiwiY3VycmVudFVzZXIiLCJ0b1N0cmluZyIsImZpcnN0TmFtZSIsImF2YXRhciIsInBpY3R1cmUiLCJjdXJyZW50IiwiZmluZE1lc3NhZ2VXaXRoQXBwcm92YWxCeVRocmVhZElkcyIsInRocmVhZElkcyIsImFjdGl2ZU1lc3NhZ2VzIiwiZnJvbUFjdGl2ZVZpZXciLCJtZXNzYWdlIiwiX21lc3NhZ2UkYXBwcm92YWwiLCJhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsInNvbWUiLCJ0aHJlYWRfaWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwiZ2V0IiwiX3VzZVNlc3Npb25zU3RvcmUkZ2V0IiwiZ2V0U3RhdGUiLCJtZXNzYWdlcyIsInNlc3Npb25FbnRyeSIsIk9iamVjdCIsImVudHJpZXMiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXNzaW9uTWVzc2FnZXMiLCJfbWVzc2FnZSRhcHByb3ZhbDIiLCJfc2Vzc2lvbkVudHJ5IiwiZm91bmQiLCJfbWVzc2FnZSRhcHByb3ZhbDMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWY0IiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIm9uRXJyb3IiLCJfcmVmNCRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJ0YXNrIiwic2V0VGFzayIsImFnZW50IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJpc0F1dG9BcHByb3ZlQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0IiwiZXZlbnQiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZVN0YWJsZUNhbGxiYWNrcyIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwiY3VycmVudE1lc3NhZ2VJZCIsImN1cnJlbnRVc2VyUXVlc3Rpb24iLCJjdXJyZW50Q2hhdElkIiwic2V0QWN0aXZlQ2hhdElkIiwic3RhdGUiLCJyZXBvcnRlZEV2ZW50IiwibWVzc2FnZXNSZWYiLCJsYXN0TWFudWFsQXBwcm92YWxSZWYiLCJoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYiLCJhY3RpdmVTdHJlYW1DaGF0SWRSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVNlc3Npb25JZCIsInNldEFjdGl2ZVNlc3Npb25JZCIsImlzTW91bnRlZFJlZiIsImxhc3RIYW5kbGVkVGVybWluYWxSZWYiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsImlzQXV0b0FwcHJvdmVBY3RpdmVSZWYiLCJjb250ZXh0UmVmIiwiX3VzZUNoYXRNZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY29tbWl0VG9TZXNzaW9uIiwiaXMiLCJkcm9wRnJvbVNlc3Npb24iLCJjbGVhclNlc3Npb25UYWlsIiwic2V0TWVzc2FnZXMiLCJzZXQiLCJhY3RpdmVTZXNzaW9uTWV0YSIsIl9hY3RpdmVTZXNzaW9uTWV0YSRmaSIsInN0YXR1cyIsImlzVGVybWluYWwiLCJrZXkiLCJmaW5pc2hlZEF0IiwidGFpbCIsImdldE1lc3NhZ2VzIiwiaGFzU3RhbGVQbGFjZWhvbGRlciIsIm1zZyIsImZvcmNlIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsInByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiIsInByZXZpb3VzSW5pdGlhbENoYXRJZCIsImlzQWN0aXZlIiwiaGFuZGxlU3RyZWFtRXJyb3IiLCJjdHgiLCJlcnJvck1lc3NhZ2UiLCJlcnJvclJhd01lc3NhZ2UiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMyIiwicGxhY2Vob2xkZXJJZCIsImNsZWFyIiwiaXNBY2Nlc3NEZW5pZWQiLCJpc1Byb21wdFRvb0xvbmciLCJ1c2VkIiwiaXNFcnJvciIsInN1Z2dlc3Rpb25zIiwiZGF0ZSIsIkRhdGUiLCJ1c2VyIiwiQVNTSVNUQU5UIiwibWFya0NoYXRBc1VucmVhZCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsImNvbnRlbnQiLCJwbGFjZWhvbGRlckV4aXN0cyIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiY29tcGxldGVkQWdlbnRJZCIsIl9yZXNvbHZlZENvbnRleHQiLCJyZWFzb25pbmciLCJfbWFwUmVhc29uaW5nVHJhY2UiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfd2luZG93JHRhc2tQYW5lbCIsIl9jcmVhdGVBZ2VudEZvbGxvd1VwIiwiX2VkaXRBZ2VudEZvbGxvd1VwIiwidGVtcE1lc3NhZ2VJZCIsImZpbmFsTWVzc2FnZUlkIiwiZmluYWxUcmFjZSIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwiVEFTS19DUkVBVElPTl9UT09MUyIsIlRBU0tfRURJVF9UT09MUyIsIlRBU0tfREVMRVRFX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ3YXNUYXNrRGVsZXRlIiwid2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCIsIndhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiY29uZmlndXJlZEFnZW50SWQiLCJ3YXNFZGl0QWdlbnRBcHByb3ZlZCIsImVkaXRBZ2VudEZvbGxvd1VwIiwiZnJvbVN0cmVhbSIsImZyb21BcmdzIiwicmVzb2x2ZWRBZ2VudElkIiwidGFza0lkc0Zyb21VcmxzIiwidGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCIsInRhc2tJZHNGcm9tRGVsZXRpb25UZXh0IiwidGFza0lkc0ZvckRhc2hib2FyZCIsInNob3VsZFN5bmNEYXNoYm9hcmQiLCJ0YXNrSWRzIiwidGFiIiwidGFiU2VnbWVudCIsImxhc3RQcm9qZWN0TWVzc2FnZSIsImNvbnRleHRQcm9qZWN0SWRSYXciLCJjb250ZXh0UHJvamVjdElkIiwicGF0aE1hdGNoIiwicm91dGVQcm9qZWN0SWQiLCJpc09uUHJvamVjdFJvdXRlIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMiIsIl93aW5kb3ckbmV3UHJvamVjdERhczMiLCJfd2luZG93JG5ld1Byb2plY3REYXM0IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNSIsIl93aW5kb3ckbmV3UHJvamVjdERhczYiLCJvcGVuVGFza1BhbmVsSWQiLCJtYW51YWxBcHByb3ZhbCIsIm1hbnVhbFdhc1Rhc2tFZGl0IiwibWFudWFsV2FzVGFza0RlbGV0ZSIsImhvdXJzVG9vbHNGcm9tQXBwcm92YWwiLCJ3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkIiwibWFudWFsSG91cnNUb29sIiwid2FzSG91cnNDaGFyZ2VNYW51YWxBcHByb3ZlZCIsInRvb2xzIiwiX21hbnVhbEFwcHJvdmFsJHRvb2xBIiwibWFudWFsUHNldWRvQWN0aW9uIiwiYWZmZWN0ZWRUYXNrSWRzIiwiX3dpbmRvdyR0YXNrUGFuZWwyIiwiX3dpbmRvdyR0YXNrUGFuZWwyJHJlIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImlzQ2hhdFZpZXdWaXNpYmxlIiwibWFya0NoYXRBc1JlYWQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInJlbmFtZSIsImxlbmd0aCIsImFicnVwdCIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImF0IiwiYXBwcm92YWxTdGF0dXMiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiYWlDaGF0SGl0bE9wdGlvbiIsImFnZW50X3R5cGUiLCJhY3Rpb25fdHlwZSIsImRlY2lzaW9uIiwib3B0aW9uIiwiY3JlYXRlZF9hZ2VudF9pZCIsInNlbnQiLCJyZXBsYWNlIiwidXJsIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImNhbGwiLCJlZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQiLCJkZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkIiwidGFza1BhbmVsIiwidGFza0lkIiwic291cmNlIiwidG9vbEFyZ3MiLCJyZWZldGNoVGFzayIsInRoZW4iLCJjaGF0QWdlbnQiLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJzdG9wIiwiX3giLCJfeDIiLCJfeDMiLCJfeDQiLCJfeDUiLCJfeDYiLCJfeDciLCJfeDgiLCJfeDkiLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJfbWFwUmVhc29uaW5nVHJhY2UyIiwiaGl0bENvbnRleHQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJtZXNzYWdlVGV4dCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsImF1dG9fYXBwcm92ZWQiLCJhcHByb3ZhbF9zdGF0dXMiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QyIiwiX3JlZjYiLCJfdG9vbF9uYW1lIiwiX3Rvb2xfYXJncyIsImZpcnN0QWN0aW9uIiwiYXBwcm92YWxNZXNzYWdlSWQiLCJhcHByb3ZhbFRyYWNlIiwiX3VzZU9yY2hlc3RyYXRvclN0cmVhIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RvcCIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImFza01haWEiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsInN0cmVhbUFjdGl2aXR5IiwidXBkYXRlU3RyZWFtQWN0aXZpdHkiLCJzdG9wU3RyZWFtaW5nIiwiY3VycmVudFByb2plY3QiLCJzZW5kTWVzc2FnZSIsIl9yZWY3IiwiX2NhbGxlZTIiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsIndpbGxTdGFydE5ld1N0cmVhbSIsIl9ub3JtYWxpemVTZW5kTWVzc2FnZSIsImVmZmVjdGl2ZU1lbnRpb25zIiwiY29udGV4dE1lc3NhZ2UiLCJwYXlsb2FkRnVhSWQiLCJwYXlsb2FkU2NJZCIsInBheWxvYWRDb250ZXh0RGF0YSIsImRpc3BsYXlNZXNzYWdlIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsIl9jb250ZXh0UmVmJGN1cnJlbnQiLCJjdHhDaGlwc1Byb2plY3QiLCJjdHhUYXNrIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZCIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsIl9jb250ZXh0UmVmJGN1cnJlbnQkcCIsImhpc3RvcnkiLCJwcm9qZWN0VG9SZXF1ZXN0IiwicHJvamVjdHMiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MiIsImdldEFjdGl2ZUNvdW50Iiwic2hvdyIsInNldmVyaXR5IiwiY29udGV4dERhdGEiLCJwbUFpVHlwZWRUZXh0IiwidGl0bGUiLCJVU0VSIiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJsYW5nIiwidXNlcklkIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjb21wYW55X2lkIiwiYWdlbnROYW1lIiwiZmVlSWQiLCJwcm9qZWN0TmFtZSIsInRhc2tOYW1lIiwiZW50aXR5IiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJlbW9qaSIsImFnZW50RW1vamkiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfeDEzIiwiX3gxNCIsImNoYW5nZVByb2plY3QiLCJoYW5kbGVGZWVkYmFjayIsIl9yZWY4IiwiX2NhbGxlZTMiLCJmZWVkYmFja1Byb3AiLCJjaGF0TWVzc2FnZUlkIiwicmVzcG9uc2UiLCJfY29udGV4dDMiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MTUiLCJfeDE2IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWY5IiwiX2NhbGxlZTQiLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImZvdW5kU2Vzc2lvbklkIiwibmV3U3RhdHVzIiwiaXNBY3RpdmVTZXNzaW9uIiwic3RyZWFtTWVzc2FnZUlkIiwiaGl0bEN0eCIsInJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nIiwicmVzdWx0IiwiX2NvbnRleHQ0Iiwic3RhcnRDb250aW51ZVN0cmVhbSIsImNvbnRpbnVlUmVxdWVzdCIsImhpdGxFeGVjdXRpb25Db250ZXh0IiwiY2FsbGJhY2tzIiwiZmluaXNoUGF5bG9hZCIsInJlc29sdmVkQ29udGV4dCIsImFwcHJvdmFsUGF5bG9hZCIsInN0YXJ0ZWQiLCJyZWFzb24iLCJfeDE3IiwiX3gxOCIsIl94MTkiLCJpbml0aWFsaXplQ2hhdCIsIl9jYWxsZWU1IiwiX3VzZXJJbml0aWFsTWVzc2FnZSRtIiwiX3VzZXJJbml0aWFsTWVzc2FnZSRhIiwiX3JlZjEiLCJfcmVzb2x2ZVByb2plY3RUb1JlcXUiLCJfY3R4UHJvamVjdCRpZCIsIl9jdHhDbGllbnQkaWQiLCJfY3R4VGFzayRpZCIsIl9jdHhDaGlwc1Byb2plY3QkcHJvaiIsImhhc0luaXRpYWxNZXNzYWdlIiwiaGFzSW5pdGlhbEF0dGFjaG1lbnRzIiwiaGFzSW5pdGlhbEZhcSIsImhhc0luaXRpYWxGdWEiLCJoYXNJbml0aWFsU2MiLCJfY29udGV4dFJlZiRjdXJyZW50MiIsImluaXRpYWxEaXNwbGF5TWVzc2FnZSIsIl9jb250ZXh0NSIsIkJvb2xlYW4iLCJpbmZvIiwicHJvamVjdFByb3BJZCIsInJlc2V0Q2hhdCIsInByZXZpb3VzU2Vzc2lvbklkIiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkLCBpc0hvdXJzQ2hhcmdlVG9vbCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9wbGFubmVyU3luY0V2ZW50cydcbmltcG9ydCB7IGZldGNoQWdlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9mZXRjaEFnZW50RGV0YWlsJ1xuaW1wb3J0IHsgYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QsIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHsgdHlwZSBIaXRsRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1pbmdUZXh0J1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyB1c2VTZXNzaW9uTWV0YSB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25NZXRhJ1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbU1hbmFnZXIsIE1BWF9DT05DVVJSRU5UX1NUUkVBTVMgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uU3RyZWFtTWFuYWdlcidcbmltcG9ydCB7IGFjdGl2ZVZpZXcgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9hY3RpdmVWaWV3J1xuaW1wb3J0IHsgbm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvbk5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUsIGVuc3VyZVNlc3Npb25JblNpZGViYXIgfSBmcm9tICcuLi8uLi9zdG9yZS9jaGF0c1NpZGViYXJPcHRpbWlzdGljJ1xuaW1wb3J0IHsgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCwgc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1Db250ZXh0IH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBnZXRDaGF0c1N0b3JlU3RhdGUsIHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHsgcmVhc29uaW5nU3RvcmUgfSBmcm9tICcuLi91c2VSZWFzb25pbmdUcmFjZSdcbmltcG9ydCB7IGJ1aWxkUmVhc29uaW5nVHJhY2UsIG1hcFJlYXNvbmluZ1RyYWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVhc29uaW5nTWFwcGVycydcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nVHJhY2UsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3JlYXNvbmluZydcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuLyoqIFRyYWNlIGFjdW11bGFkbyBlbiB2aXZvIHBhcmEgYG1lc3NhZ2VJZGAsIG8gbnVsbCBzaSBlbCBzdG9yZSBhcHVudGEgYSBvdHJvIG1lbnNhamUuICovXG5jb25zdCByZWFzb25pbmdUcmFjZUZvciA9IChtZXNzYWdlSWQ6IHN0cmluZyk6IFJlYXNvbmluZ1RyYWNlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHNuYXBzaG90ID0gcmVhc29uaW5nU3RvcmUuZ2V0U25hcHNob3QoKVxuICBpZiAoc25hcHNob3QuaWQgIT09IG1lc3NhZ2VJZCkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIGJ1aWxkUmVhc29uaW5nVHJhY2Uoc25hcHNob3Quc3RlcHMsIHNuYXBzaG90LnN1bW1hcnkpXG59XG5cbmNvbnN0IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyA9IChhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRzT3JPcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzT3JPcHRpb25zKSkge1xuICAgIHJldHVybiB7IGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c09yT3B0aW9ucywgb3B0aW9uczoge30gYXMgU2VuZE1lc3NhZ2VPcHRpb25zIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IGF0dGFjaG1lbnRzT3JPcHRpb25zID8/IHt9XG4gIHJldHVybiB7IGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzID8/IFtdLCBvcHRpb25zIH1cbn1cblxuLyoqIGNoaXBzUHJvamVjdCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkIGRlbCBwaW4gdmlzaWJsZTsgc2kgbm8gaGF5IHBpbiwgcmVzdGF1cmFyIGRlc2RlIGhpc3RvcmlhbC4gKi9cbmNvbnN0IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0ID0gKFxuICBjaGlwc1Byb2plY3Q6IHsgcHJvamVjdElkPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBsYXN0TWVzc2FnZVByb2plY3RJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNoaXBzUHJvamVjdElkID0gY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsXG4gIGlmIChjaGlwc1Byb2plY3RJZCAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZShjaGlwc1Byb2plY3RJZCkpIHtcbiAgICByZXR1cm4gY2hpcHNQcm9qZWN0SWRcbiAgfVxuICBpZiAobGFzdE1lc3NhZ2VQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgcmVzb2x2ZUNsaWVudFBheWxvYWQgPSAoXG4gIGN0eENsaWVudDogeyBpZD86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY3R4UHJvamVjdDogUHJvamVjdCB8IG51bGwgfCB1bmRlZmluZWRcbik6IHsgY2xpZW50SWQ/OiBudW1iZXI7IGNsaWVudE5hbWU/OiBzdHJpbmcgfSA9PiB7XG4gIGlmIChjdHhDbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IGN0eENsaWVudC5pZCwgLi4uKGN0eENsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhDbGllbnQubmFtZSB9IDoge30pIH1cbiAgfVxuICBpZiAoY3R4UHJvamVjdD8uY2xpZW50SWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGNsaWVudElkOiBOdW1iZXIoY3R4UHJvamVjdC5jbGllbnRJZCkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudElkOiBjdHhQcm9qZWN0LmNsaWVudC5pZCxcbiAgICAgIC4uLihjdHhQcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhQcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSksXG4gICAgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG5jb25zdCBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyA9IChyYXdBdHRhY2htZW50czogdW5rbm93bik6IEF0dGFjaG1lbnRGaWxlW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3QXR0YWNobWVudHMpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gcmF3QXR0YWNobWVudHNcbiAgICAuZmlsdGVyKChhdHRhY2htZW50KTogYXR0YWNobWVudCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWF0dGFjaG1lbnQgJiYgdHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKVxuICAgIC5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQubmFtZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5uYW1lLnRyaW0oKSA/IGF0dGFjaG1lbnQubmFtZS50cmltKCkgOiBgZmlsZS0ke2luZGV4ICsgMX1gXG4gICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGF0dGFjaG1lbnQudHlwZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC50eXBlLnRyaW0oKSA/IGF0dGFjaG1lbnQudHlwZS50cmltKCkgOiAncGRmJ1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC5taW1lX3R5cGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC5taW1lX3R5cGUgOiAnJ1xuICAgICAgY29uc3QgZnVsbEZpbGVOYW1lID0gbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZSA6IGAke25hbWV9LiR7dHlwZX1gXG4gICAgICBjb25zdCBudW1lcmljU2l6ZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBhdHRhY2htZW50LnNpemVcbiAgICAgICAgICA6IE51bWJlci5pc0Zpbml0ZShOdW1iZXIoYXR0YWNobWVudC5zaXplKSlcbiAgICAgICAgICAgID8gTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgICAgICAgIDogMFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgZnVsbEZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pLFxuICAgICAgICBpZDpcbiAgICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5pZCA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5pZC50cmltKClcbiAgICAgICAgICAgID8gYXR0YWNobWVudC5pZFxuICAgICAgICAgICAgOiBgYXNzaXN0YW50LWZpbGUtJHtpbmRleH0tJHtmdWxsRmlsZU5hbWV9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2l6ZTogbnVtZXJpY1NpemUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVybF9vcmlnaW5hbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX2ZpbGU6IHR5cGVvZiBhdHRhY2htZW50LnVybF9maWxlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX2ZpbGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IGF0dGFjaG1lbnQucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYXNzaXN0YW50JyA6ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9KVxufVxuXG4vKiogRXh0cmFlIHRhc2tfaWRzIGRlIGxvcyB0b29sX2FyZ3MgZGUgcGVuZGluZ19hY3Rpb25zLCBjdWJyaWVuZG8gbGFzIGZvcm1hcyBjb211bmVzOlxuICogIC0gYHsgdGFza19pZCB9YCBvIGB7IGlkIH1gXG4gKiAgLSBgeyB0YXNrX2lkczogW10gfWBcbiAqICAtIGB7IHRhc2tzOiBbeyB0YXNrX2lkfGlkIH0sIC4uLl0gfWBcbiAqICDDmnRpbCBwYXJhIHRvb2xzIGRlIGVkaXQvYXNzaWduL2RlbGV0ZSBjdWFuZG8gbGEgcmVzcHVlc3RhIGRlbCBMTE0gbm8gaW5jbHV5ZSBVUkxzIC90YXNrcy8uLi4vZGV0YWlsLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBjb25zdCBwdXNoSWQgPSAocmF3OiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHJhdyA9PSBudWxsKSByZXR1cm5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICB9XG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBwdXNoSWQocmVjLnRhc2tfaWQgPz8gcmVjLmlkKVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrX2lkcykpIHtcbiAgICAgIHJlYy50YXNrX2lkcy5mb3JFYWNoKHB1c2hJZClcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tzKSkge1xuICAgICAgcmVjLnRhc2tzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgIGNvbnN0IHRyZWMgPSB0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgICAgcHVzaElkKHRyZWMudGFza19pZCA/PyB0cmVjLmlkKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVkaXRBY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG4gIGlmIChcbiAgICAhZWRpdEFjdGlvbiB8fFxuICAgICFlZGl0QWN0aW9uLnRvb2xfYXJncyB8fFxuICAgIHR5cGVvZiBlZGl0QWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHxcbiAgICBBcnJheS5pc0FycmF5KGVkaXRBY3Rpb24udG9vbF9hcmdzKVxuICApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGVkaXRBY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10sIHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdG9vbE5hbWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi50b29sX2FyZ3MgfHwgdHlwZW9mIGFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoYWN0aW9uLnRvb2xfYXJncykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkID8/IHJlYy5pZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuLyoqIMOabHRpbW8gcmVjdXJzbyBzaSBubyBoYXkgbGlua3MgbmkgdG9vbF9hcmdzIHBhcnNlYWJsZXMgKHAuIGVqLiBcIklEICoqNzU5NzEwNioqXCIpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgbGFiZWxlZCA9IHRleHQubWF0Y2goL1xcYklEXFxzKlxcKlxcKihcXGQrKVxcKlxcKi9pKVxuICBpZiAobGFiZWxlZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChsYWJlbGVkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICBjb25zdCBib2xkID0gdGV4dC5tYXRjaCgvXFwqXFwqKFxcZHs1LH0pXFwqXFwqLylcbiAgaWYgKGJvbGQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQoYm9sZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgZmluZE1lc3NhZ2VXaXRoQXBwcm92YWxCeVRocmVhZElkcyA9IChcbiAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgYWN0aXZlTWVzc2FnZXM6IENoYXRNZXNzYWdlW11cbik6IHsgbWVzc2FnZTogQ2hhdE1lc3NhZ2U7IHNlc3Npb25JZDogc3RyaW5nIH0gfCBudWxsID0+IHtcbiAgY29uc3QgZnJvbUFjdGl2ZVZpZXcgPSBhY3RpdmVNZXNzYWdlcy5maW5kKG1lc3NhZ2UgPT5cbiAgICBtZXNzYWdlLmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoYWN0aW9uID0+IHRocmVhZElkcy5pbmNsdWRlcyhhY3Rpb24udGhyZWFkX2lkKSlcbiAgKVxuICBpZiAoZnJvbUFjdGl2ZVZpZXc/LmFwcHJvdmFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IGZyb21BY3RpdmVWaWV3LFxuICAgICAgc2Vzc2lvbklkOiBmcm9tQWN0aXZlVmlldy5hcHByb3ZhbC5zZXNzaW9uX2lkIHx8IGFjdGl2ZVZpZXcuZ2V0KCkgfHwgJycsXG4gICAgfVxuICB9XG5cbiAgY29uc3QgeyBtZXNzYWdlcyB9ID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpXG4gIGNvbnN0IHNlc3Npb25FbnRyeSA9IE9iamVjdC5lbnRyaWVzKG1lc3NhZ2VzKS5maW5kKChbLCBzZXNzaW9uTWVzc2FnZXNdKSA9PlxuICAgIHNlc3Npb25NZXNzYWdlcy5zb21lKG1lc3NhZ2UgPT5cbiAgICAgIG1lc3NhZ2UuYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgIClcbiAgKVxuICBpZiAoc2Vzc2lvbkVudHJ5KSB7XG4gICAgY29uc3QgW3Nlc3Npb25JZCwgc2Vzc2lvbk1lc3NhZ2VzXSA9IHNlc3Npb25FbnRyeVxuICAgIGNvbnN0IGZvdW5kID0gc2Vzc2lvbk1lc3NhZ2VzLmZpbmQobWVzc2FnZSA9PlxuICAgICAgbWVzc2FnZS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgKVxuICAgIGlmIChmb3VuZD8uYXBwcm92YWwpIHtcbiAgICAgIHJldHVybiB7IG1lc3NhZ2U6IGZvdW5kLCBzZXNzaW9uSWQ6IGZvdW5kLmFwcHJvdmFsLnNlc3Npb25faWQgfHwgc2Vzc2lvbklkIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1hbmFnZXIgPSAoe1xuICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgb25FcnJvcixcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWFuYWdlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHNldENsaWVudCxcbiAgICB0YXNrLFxuICAgIHNldFRhc2ssXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuXG4gIGNvbnN0IGN1cnJlbnRNZXNzYWdlSWQgPSB1c2VSZWYodXVpZHY0KCkpXG4gIGNvbnN0IGN1cnJlbnRVc2VyUXVlc3Rpb24gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY3VycmVudENoYXRJZCA9IHVzZVJlZihpbml0aWFsQ2hhdElkIHx8IHV1aWR2NCgpKVxuICBjb25zdCBzZXRBY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldEFjdGl2ZUNoYXRJZClcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBDb250ZXh0byBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBwcmV2aW8gYWwgZWplY3V0YXIgY29udGludWUtdGhyZWFkLiAqL1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiA9IHVzZVJlZjxIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2xlYXJTdHJlYW1VaVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IFthY3RpdmVMb2FkaW5ncywgc2V0QWN0aXZlTG9hZGluZ3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG4gIC8qKlxuICAgKiBTZXNpw7NuIGFjdHVhbG1lbnRlIHZpc2libGUuIFNlIG1hbnRpZW5lIGVuIHN0YXRlIChubyBzb2xvIGVuIHJlZikgcGFyYSBxdWVcbiAgICogZWwgbW90b3IgZGUgc3RyZWFtaW5nIHB1ZWRhIGxlZXIgcmVhY3RpdmFtZW50ZSBsb3MgZmxhZ3MgZGUgRVNUQSBzZXNpw7NuXG4gICAqIGRlc2RlIGVsIHN0b3JlLCBtaWVudHJhcyBvdHJhcyBzaWd1ZW4gZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQuXG4gICAqL1xuICBjb25zdCBbYWN0aXZlU2Vzc2lvbklkLCBzZXRBY3RpdmVTZXNzaW9uSWRdID0gdXNlU3RhdGU8c3RyaW5nPihjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gIC8qKiBUcnVlIG1pZW50cmFzIGVzdGEgaW5zdGFuY2lhIGVzdMOpIG1vbnRhZGEgKGV2aXRhIHNldFN0YXRlIHRyYXMgZGVzbW9udGFyKS4gKi9cbiAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlUmVmKHRydWUpXG4gIC8qKiBFdml0YSByZWNvbmNpbGlhciBkb3MgdmVjZXMgZWwgbWlzbW8gZXN0YWRvIHRlcm1pbmFsIGRlIHVuYSBzZXNpw7NuLiAqL1xuICBjb25zdCBsYXN0SGFuZGxlZFRlcm1pbmFsUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaXNXZWJTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc0RlZXBTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYgPSB1c2VSZWYoaXNBdXRvQXBwcm92ZUFjdGl2ZSlcbiAgLyoqIEV2aXRhIGNsb3N1cmVzIG9ic29sZXRhcyBjdWFuZG8gZWwgZm9vdGVyIGNvbnNlcnZhIHNlbmRNZXNzYWdlIGVudHJlIHJlbmRlcnMuICovXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoeyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9KVxuICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgaXNBdXRvQXBwcm92ZUFjdGl2ZVJlZi5jdXJyZW50ID0gaXNBdXRvQXBwcm92ZUFjdGl2ZVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSwgaXNBdXRvQXBwcm92ZUFjdGl2ZV0pXG5cbiAgY29uc3QgeyBsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIGxvYWRNZXNzYWdlcywgYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgaGFuZGxlU2Nyb2xsIH0gPVxuICAgIHVzZUNoYXRNZXNzYWdlcyh7XG4gICAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgICBvbkVycm9yLFxuICAgICAgYWdlbnRzLFxuICAgIH0pXG5cbiAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzXG5cbiAgLyoqXG4gICAqIEVzY3JpYmUgdW4gbWVuc2FqZSBlbiBlbCBzdG9yZSBwb3Itc2VzacOzbiB5LCBzaSBsYSBzZXNpw7NuIGVzIGxhIGFjdGl2YSxcbiAgICogdGFtYmnDqW4gZW4gbGEgdmlzdGEgbG9jYWwuIFBlcm1pdGUgcXVlIHNlc2lvbmVzIGVuIGJhY2tncm91bmQgYWN1bXVsZW4gc3VcbiAgICogcmVzdWx0YWRvIHNpbiBwaXNhciBlbCBjaGF0IHF1ZSBlbCB1c3VhcmlvIGVzdMOhIG1pcmFuZG8uXG4gICAqL1xuICBjb25zdCBjb21taXRUb1Nlc3Npb24gPSB1c2VDYWxsYmFjayhcbiAgICAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2U6IENoYXRNZXNzYWdlKSA9PiB7XG4gICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuYWRkTWVzc2FnZShzZXNzaW9uSWQsIG1lc3NhZ2UpXG4gICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQgJiYgYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpKSB7XG4gICAgICAgIGFkZE1lc3NhZ2UobWVzc2FnZSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgZHJvcEZyb21TZXNzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlc3Npb25JZDogc3RyaW5nLCBtZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLnJlbW92ZU1lc3NhZ2Uoc2Vzc2lvbklkLCBtZXNzYWdlSWQpXG4gICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQgJiYgYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpKSB7XG4gICAgICAgIHJlbW92ZU1lc3NhZ2UobWVzc2FnZUlkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3JlbW92ZU1lc3NhZ2VdXG4gIClcblxuICAvKiogTGltcGlhIGVsIHRhaWwgZW4gdnVlbG8gZGUgdW5hIHNlc2nDs24gKHRyYXMgdGVybWluYXI7IGVsIGJhY2tlbmQgcGFzYSBhIHNlciBmdWVudGUpLiAqL1xuICBjb25zdCBjbGVhclNlc3Npb25UYWlsID0gdXNlQ2FsbGJhY2soKHNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLnNldE1lc3NhZ2VzKHNlc3Npb25JZCwgW10pXG4gIH0sIFtdKVxuXG4gIC8vIFJlZ2lzdHJhciBsYSBzZXNpw7NuIHZpc2libGUgZW4gZWwgdHJhY2tlciBnbG9iYWwgcGFyYSBxdWUgbG9zIGNhbGxiYWNrcyBkZWxcbiAgLy8gbW90b3IgKHF1ZSBwdWVkZW4gcGVydGVuZWNlciBhIHVuYSBpbnN0YW5jaWEgeWEgZGVzbW9udGFkYSkgc2VwYW4gY3XDoWwgZXMgbGFcbiAgLy8gc2VzacOzbiBhY3RpdmEgYWN0dWFsLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFjdGl2ZVZpZXcuc2V0KGFjdGl2ZVNlc3Npb25JZClcbiAgfSwgW2FjdGl2ZVNlc3Npb25JZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGFjdGl2ZVZpZXcuaXMoY3VycmVudENoYXRJZC5jdXJyZW50KSkge1xuICAgICAgICBhY3RpdmVWaWV3LnNldChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gUmVjb25jaWxpYWNpw7NuOiBzaSBsYSBzZXNpw7NuIGFjdGl2YSB0ZXJtaW5hIChjb21wbGV0ZS9lcnJvci9jYW5jZWxsZWQpIHBlcm8gZWxcbiAgLy8gc3RvcmUgcG9yLXNlc2nDs24gdG9kYXbDrWEgdGllbmUgdW4gcGxhY2Vob2xkZXIgZGUgc3RyZWFtaW5nLCByZWZyZXNjYW1vcyBkZXNkZVxuICAvLyBlbCBiYWNrZW5kLiBVc2Ftb3MgZWwgc3RvcmUgKG5vIG1lc3NhZ2VzUmVmKTogaGFuZGxlU3RyZWFtRmluaXNoIGxpbXBpYSBlbFxuICAvLyBwbGFjZWhvbGRlciBhaMOtIGRlIGZvcm1hIHPDrW5jcm9uYTsgbWVzc2FnZXNSZWYgcHVlZGUgcXVlZGFyIHN0YWxlIHVuIHJlbmRlclxuICAvLyBwb3JxdWUgc2V0U3RhdHVzIChadXN0YW5kKSB5IHJlbW92ZU1lc3NhZ2UgKFJlYWN0KSBubyBiYXRjaGFuIGp1bnRvcy5cbiAgY29uc3QgYWN0aXZlU2Vzc2lvbk1ldGEgPSB1c2VTZXNzaW9uTWV0YShhY3RpdmVTZXNzaW9uSWQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzID0gYWN0aXZlU2Vzc2lvbk1ldGE/LnN0YXR1c1xuICAgIGlmICghc3RhdHVzKSByZXR1cm5cbiAgICBjb25zdCBpc1Rlcm1pbmFsID0gc3RhdHVzID09PSAnY29tcGxldGUnIHx8IHN0YXR1cyA9PT0gJ2Vycm9yJyB8fCBzdGF0dXMgPT09ICdjYW5jZWxsZWQnXG4gICAgaWYgKCFpc1Rlcm1pbmFsKSByZXR1cm5cbiAgICBjb25zdCBrZXkgPSBgJHthY3RpdmVTZXNzaW9uSWR9OiR7c3RhdHVzfToke2FjdGl2ZVNlc3Npb25NZXRhPy5maW5pc2hlZEF0ID8/ICcnfWBcbiAgICBpZiAobGFzdEhhbmRsZWRUZXJtaW5hbFJlZi5jdXJyZW50ID09PSBrZXkpIHJldHVyblxuICAgIGxhc3RIYW5kbGVkVGVybWluYWxSZWYuY3VycmVudCA9IGtleVxuXG4gICAgY29uc3QgdGFpbCA9IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5nZXRNZXNzYWdlcyhhY3RpdmVTZXNzaW9uSWQpXG4gICAgY29uc3QgaGFzU3RhbGVQbGFjZWhvbGRlciA9IHRhaWwuc29tZShtc2cgPT4gaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChtc2cuaWQpKVxuICAgIGlmIChoYXNTdGFsZVBsYWNlaG9sZGVyKSB7XG4gICAgICBsb2FkTWVzc2FnZXMoeyBmb3JjZTogdHJ1ZSB9KVxuICAgIH1cbiAgfSwgW2FjdGl2ZVNlc3Npb25NZXRhPy5zdGF0dXMsIGFjdGl2ZVNlc3Npb25NZXRhPy5maW5pc2hlZEF0LCBhY3RpdmVTZXNzaW9uSWQsIGxvYWRNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCB7XG4gICAgICBkZXRhaWw6IHsgbG9hZGluZ01lc3NhZ2VzIH0sXG4gICAgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICB9LCBbbG9hZGluZ01lc3NhZ2VzXSlcblxuICBjb25zdCBwcmV2aW91c0luaXRpYWxDaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oaW5pdGlhbENoYXRJZClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHByZXZpb3VzSW5pdGlhbENoYXRJZCA9IHByZXZpb3VzSW5pdGlhbENoYXRJZFJlZi5jdXJyZW50XG4gICAgcHJldmlvdXNJbml0aWFsQ2hhdElkUmVmLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG5cbiAgICAvLyBDaGF0IG51ZXZvIC8gaG9tZTogaW5pdGlhbENoYXRJZCBwYXNhIGEgbnVsbCwgYXPDrSBxdWUgbGEgcmFtYSBkZSBhYmFqbyBub1xuICAgIC8vIGFwbGljYS4gSGF5IHF1ZSByb3RhciBhIHVuYSBzZXNpw7NuIG51ZXZhIGlndWFsOiBzaSBzZWd1aW1vcyBhcHVudGFuZG8gYSBsYVxuICAgIC8vIGFudGVyaW9yLCBgYWN0aXZlVmlld2AgbGEgc2lndWUgbWFyY2FuZG8gY29tbyBhY3RpdmEgeSBjdWFuZG8gdGVybWluYSBubyBzZVxuICAgIC8vIG5vdGlmaWNhICh5IHN1IHJlc3B1ZXN0YSBzZSBjb21taXRlYSBzb2JyZSBsYSB2aXN0YSBudWV2YSkuIEVsIMOhcmJvbCBub1xuICAgIC8vIHJlbW9udGEgZW4gZXN0ZSBmbHVqbyAobm8gaGF5IGBrZXlgKSB5IG5hZGllIGNvbnN1bWUgYHJlc2V0Q2hhdGAuXG4gICAgaWYgKCFpbml0aWFsQ2hhdElkICYmIHByZXZpb3VzSW5pdGlhbENoYXRJZCkge1xuICAgICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIHNldEFjdGl2ZVNlc3Npb25JZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBOTyBhYm9ydGFtb3MgZWwgc3RyZWFtIGFudGVyaW9yOiBwdWVkZSBzZWd1aXIgZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQuXG4gICAgICAvLyBTb2xvIGNhbWJpYW1vcyBkZSBzZXNpw7NuIGFjdGl2YTsgZWwgbW90b3IgcnV0ZWEgY2FkYSBzdHJlYW0gcG9yIHN1XG4gICAgICAvLyBzZXNzaW9uSWQsIGFzw60gcXVlIGxvcyB0b2tlbnMgZGUgbGEgc2VzacOzbiBwcmV2aWEgc2lndWVuIGFwbGljw6FuZG9zZSBhXG4gICAgICAvLyBFU0Egc2VzacOzbiAoc3RvcmUpLCBubyBhIGxhIG51ZXZhLlxuXG4gICAgICAvLyBMaW1waWFyIGNvbnRleHRvIGdsb2JhbCBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcblxuICAgICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gaW5pdGlhbENoYXRJZFxuICAgICAgc2V0QWN0aXZlU2Vzc2lvbklkKGluaXRpYWxDaGF0SWQpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIC8vIGlzUHJvY2Vzc2luZ1JlZiByZWZsZWphIHNpIGxhIHNlc2nDs24gQUNUSVZBIGVzdMOhIG9jdXBhZGEuIFNpIGxhIHNlc2nDs25cbiAgICAgIC8vIGEgbGEgcXVlIGVudHJhbW9zIHNpZ3VlIGdlbmVyYW5kbyBlbiBiYWNrZ3JvdW5kLCBxdWVkYSBibG9xdWVhZGE7IHNpIG5vLFxuICAgICAgLy8gc2UgaGFiaWxpdGEgZWwgZW52w61vIGF1bnF1ZSBvdHJhcyBzZXNpb25lcyBzaWdhbiBnZW5lcmFuZG8uXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHNlc3Npb25TdHJlYW1NYW5hZ2VyLmlzQWN0aXZlKGluaXRpYWxDaGF0SWQpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgLy8gbG9hZE1lc3NhZ2VzIGxvIGRpc3BhcmEgdXNlQ2hhdE1lc3NhZ2VzIGFsIGNhbWJpYXIgY2hhdElkIChjb24gY2FjaGUgZW4gbWVtb3JpYSkuXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFRhc2tdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0QWN0aXZlQ2hhdElkKGluaXRpYWxDaGF0SWQgfHwgbnVsbClcbiAgfSwgW2luaXRpYWxDaGF0SWQsIHNldEFjdGl2ZUNoYXRJZF0pXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRXJyb3IgPSB1c2VDYWxsYmFjayhcbiAgICAoY3R4OiBTdHJlYW1Db250ZXh0LCBlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIGVycm9yUmF3TWVzc2FnZT86IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9uSWQsIG1lc3NhZ2VJZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG4gICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBkcm9wRnJvbVNlc3Npb24oc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50KClcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0FjY2Vzc0RlbmllZCA9IGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgIGNvbnN0IGlzUHJvbXB0VG9vTG9uZyA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicgJiYgZXJyb3JSYXdNZXNzYWdlPy5pbmNsdWRlcygncHJvbXB0IGlzIHRvbyBsb25nJylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBpc0FjY2Vzc0RlbmllZFxuICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICA6IGlzUHJvbXB0VG9vTG9uZ1xuICAgICAgICAgID8gdCgnY2hhdC5lcnJvclByb21wdFRvb0xvbmcnLCB7IHVzZWQ6IGVycm9yUmF3TWVzc2FnZT8ubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgOiB0KCdjaGF0LmVycm9yJylcblxuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICBpZDogYGFuc3dlci0ke21lc3NhZ2VJZH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICAvLyBDaGlwIFwiUmVpbnRlbnRhclwiIHNvbG8gZW4gZWwgZXJyb3IgZ2Vuw6lyaWNvIChwLiBlai4gNTAwKTsgbm8gYXBsaWNhIGEgYWNjZXNzIGRlbmllZCBuaSBwcm9tcHQgdG9vIGxvbmcuXG4gICAgICAgIC4uLighaXNBY2Nlc3NEZW5pZWQgJiYgIWlzUHJvbXB0VG9vTG9uZyA/IHsgc3VnZ2VzdGlvbnM6IFt0KCdjaGF0LnJldHJ5JyldIH0gOiB7fSksXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSlcbiAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuXG4gICAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICAgIGdldENoYXRzU3RvcmVTdGF0ZSgpLm1hcmtDaGF0QXNVbnJlYWQoc2Vzc2lvbklkKVxuICAgICAgICBub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2NvbW1pdFRvU2Vzc2lvbiwgZHJvcEZyb21TZXNzaW9uLCBjbGVhclNlc3Npb25UYWlsLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtVXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKGN0eDogU3RyZWFtQ29udGV4dCwgY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG5cbiAgICAgIC8vIEFzZWd1cmFtb3MgZWwgcGxhY2Vob2xkZXIgdW5hIMO6bmljYSB2ZXogcG9yIHN0cmVhbSwgdGFudG8gZW4gZWwgc3RvcmVcbiAgICAgIC8vIGRlIGxhIHNlc2nDs24gY29tbyBlbiBsYSB2aXN0YSBzaSBlcyBsYSBhY3RpdmEuIEVsIHRleHRvIGVuIHZpdm8gdmlhamFcbiAgICAgIC8vIHBvciBzZXNzaW9uU3RyZWFtaW5nVGV4dCAoZXh0ZXJubyksIHNpbiByZS1yZW5kZXIgZGVsIMOhcmJvbCBjb21wbGV0by5cbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyRXhpc3RzID0gdXNlU2Vzc2lvbnNTdG9yZVxuICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAuZ2V0TWVzc2FnZXMoc2Vzc2lvbklkKVxuICAgICAgICAuc29tZShtc2cgPT4gbXNnLmlkID09PSBwbGFjZWhvbGRlcklkKVxuXG4gICAgICBpZiAoIXBsYWNlaG9sZGVyRXhpc3RzKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICAgIGlkOiBwbGFjZWhvbGRlcklkLFxuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKSkge1xuICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBwbGFjZWhvbGRlcklkXG4gICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gc2Vzc2lvbklkXG4gICAgICB9XG5cbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnNldFRleHQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjb250ZW50KVxuICAgIH0sXG4gICAgW2NvbW1pdFRvU2Vzc2lvbl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUZpbmlzaCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIGN0eDogU3RyZWFtQ29udGV4dCxcbiAgICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgcmF3QXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQ/OiBzdHJpbmcgfCBudWxsLFxuICAgICAgLyoqIFBvc2ljaW9uYWw6IG1hc3RlciBubyBsbyBjb25zdW1lLCBwZXJvIGByZWFzb25pbmdgIHZpZW5lIGRlc3B1w6lzLiAqL1xuICAgICAgX3Jlc29sdmVkQ29udGV4dD86IGFueSxcbiAgICAgIHJlYXNvbmluZz86IFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBwbGFjZWhvbGRlcklkXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBkcm9wRnJvbVNlc3Npb24oc2Vzc2lvbklkLCB0ZW1wTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyhyYXdBdHRhY2htZW50cylcblxuICAgICAgLy8gRWwgdHJhY2UgYWN1bXVsYWRvIGVuIHZpdm8gZXN0w6Ega2V5ZWQgcG9yIGVsIHBsYWNlaG9sZGVyOyBsbyBtb3ZlbW9zIGFsXG4gICAgICAvLyBpZCBkZWZpbml0aXZvIHBhcmEgcXVlIGVsIGJsb3F1ZSBkZSByYXpvbmFtaWVudG8gc29icmV2aXZhIGFsIHN3YXAuXG4gICAgICBjb25zdCBmaW5hbE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YFxuICAgICAgY29uc3QgZmluYWxUcmFjZSA9IG1hcFJlYXNvbmluZ1RyYWNlKHJlYXNvbmluZykgPz8gcmVhc29uaW5nVHJhY2VGb3IodGVtcE1lc3NhZ2VJZClcbiAgICAgIHJlYXNvbmluZ1N0b3JlLnJlbmFtZSh0ZW1wTWVzc2FnZUlkLCBmaW5hbE1lc3NhZ2VJZClcblxuICAgICAgLy8gU2VzacOzbiBlbiBiYWNrZ3JvdW5kOiBjZXJyYW1vcyBsZWFuLiBFbCBiYWNrZW5kIHlhIHBlcnNpc3Rpw7MgbGFcbiAgICAgIC8vIHJlc3B1ZXN0YSwgYXPDrSBxdWUgYWwgdm9sdmVyIGEgbGEgc2VzacOzbiBzZSBjYXJnYSBkZXNkZSBhaMOtLiBBdmlzYW1vc1xuICAgICAgLy8gcXVlIHRlcm1pbsOzICh1bnJlYWQgKyBldmVudG8gcGFyYSB0b2FzdC9zb25pZG8pLlxuICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IGZpbmFsTWVzc2FnZUlkLFxuICAgICAgICAgIG1lc3NhZ2U6IGNvbnRlbnQsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgICByZWFzb25pbmc6IGZpbmFsVHJhY2UsXG4gICAgICAgIH0pXG4gICAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuICAgICAgICBnZXRDaGF0c1N0b3JlU3RhdGUoKS5tYXJrQ2hhdEFzVW5yZWFkKHNlc3Npb25JZClcbiAgICAgICAgbm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kKHNlc3Npb25JZCwgJ2NvbXBsZXRlJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgLy8gRGV0ZWN0YXIgdG9kYXMgbGFzIFVSTHMgZGUgdGFyZWFzICguLi4vdGFza3MvMTIzL2RldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpXG4gICAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29udGVudC5tYXRjaEFsbCh0YXNrVXJsUmVnZXgpXVxuXG4gICAgICBsZXQgY29udGVudFRvQWRkID0gY29udGVudFxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobSA9PiBtLmlkICE9PSB0ZW1wTWVzc2FnZUlkKS5hdCgtMSlcbiAgICAgIGNvbnN0IGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsICE9IG51bGxcbiAgICAgIGNvbnN0IFRBU0tfQ1JFQVRJT05fVE9PTFMgPSBbJ2NyZWF0ZV90YXNrJywgJ2NyZWF0ZV90YXNrc19iYXRjaCcsICdjbG9uZV90YXNrJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgY29uc3Qgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgIGxldCBjcmVhdGVBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkpIHtcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCAmJlxuICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJlxuICAgICAgICAoY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRBZ2VudElkID1cbiAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHtcbiAgICAgICAgICBhZ2VudElkOiBjb25maWd1cmVkQWdlbnRJZCBhcyBzdHJpbmcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIGRlY2lzaW9uOiAnYWNjZXB0JyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc0VkaXRBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiAoYWN0aW9uLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2VkaXRfYWdlbnQnKVxuXG4gICAgICBsZXQgZWRpdEFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNFZGl0QWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCBmcm9tU3RyZWFtID0gY29tcGxldGVkQWdlbnRJZD8udHJpbSgpXG4gICAgICAgIGNvbnN0IGZyb21BcmdzID0gZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQWdlbnRJZCA9IGZyb21TdHJlYW0gfHwgZnJvbUFyZ3NcbiAgICAgICAgaWYgKHJlc29sdmVkQWdlbnRJZCkge1xuICAgICAgICAgIGVkaXRBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tVXJscyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsID0gZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCA9XG4gICAgICAgIHdhc1Rhc2tEZWxldGUgJiYgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA9PT0gMCAmJiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KGNvbnRlbnQpXG4gICAgICAgICAgOiBbXVxuICAgICAgY29uc3QgdGFza0lkc0ZvckRhc2hib2FyZCA9XG4gICAgICAgIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0YXNrSWRzRnJvbVVybHNcbiAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsXG4gICAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0XG5cbiAgICAgIGNvbnN0IHNob3VsZFN5bmNEYXNoYm9hcmQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgICh3YXNUYXNrQ3JlYXRpb24gfHwgd2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSkgJiZcbiAgICAgICAgdGFza0lkc0ZvckRhc2hib2FyZC5sZW5ndGggPiAwXG5cbiAgICAgIGlmIChzaG91bGRTeW5jRGFzaGJvYXJkKSB7XG4gICAgICAgIGNvbnN0IHRhc2tJZHMgPSB0YXNrSWRzRm9yRGFzaGJvYXJkXG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCh0YXNrSWRzWzBdKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBjb250ZW50VG9BZGQgPSBjb250ZW50LnJlcGxhY2UodGFza1VybFJlZ2V4LCB1cmwgPT5cbiAgICAgICAgICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RQcm9qZWN0TWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBjb250ZXh0UHJvamVjdElkUmF3ID8gcGFyc2VJbnQoU3RyaW5nKGNvbnRleHRQcm9qZWN0SWRSYXcpLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXlxcL3Byb2plY3RzXFwvKFxcZCspXFwvLylcbiAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgaXNPblByb2plY3RSb3V0ZSA9IGNvbnRleHRQcm9qZWN0SWQgJiYgcm91dGVQcm9qZWN0SWQgJiYgY29udGV4dFByb2plY3RJZCA9PT0gcm91dGVQcm9qZWN0SWRcblxuICAgICAgICBpZiAoaXNPblByb2plY3RSb3V0ZSkge1xuICAgICAgICAgIGlmICh3YXNUYXNrQ3JlYXRpb24pIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRWRpdCkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRGVsZXRlKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlZmV0Y2ggZGVsIHRhc2sgcGFuZWwgc2kgZXN0w6EgYWJpZXJ0byB5IGxhIHRvb2wgYXByb2JhZGEgZWRpdMOzL2JvcnLDsyBlc2EgdGFyZWEuXG4gICAgICAvLyBDdWJyZSBsb3MgZG9zIGZsdWpvcyBkZSBhcHByb3ZhbDpcbiAgICAgIC8vICAgMSkgQXBwcm92YWwgcG9yIGJvdMOzbiDihpIgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnNgICh2w61hIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpXG4gICAgICAvLyAgIDIpIE1hbnVhbCBhcHByb3ZhbCAodXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiKSDihpIgYGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50YFxuICAgICAgY29uc3Qgb3BlblRhc2tQYW5lbElkID0gd2luZG93LnRhc2tQYW5lbD8udGFza0lkXG4gICAgICBjb25zdCBtYW51YWxBcHByb3ZhbCA9IGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50XG4gICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IG51bGwgLy8gY29uc3VtaXIgdW5hIHNvbGEgdmV6XG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRWRpdCA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0RlbGV0ZSA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG5cbiAgICAgIC8vIFN5bmMgUGxhbm5lcjogYXZpc2FyIGNhcmdhIGRlIGhvcmFzIGNvbmZpcm1hZGEgKGNyZWF0ZV9ob3VyIC8gY3JlYXRlX2hvdXJzKS5cbiAgICAgIGNvbnN0IGhvdXJzVG9vbHNGcm9tQXBwcm92YWwgPSBwZW5kaW5nQWN0aW9uc1xuICAgICAgICAubWFwKChhY3Rpb246IFBlbmRpbmdBY3Rpb24pID0+IGFjdGlvbi50b29sX25hbWUpXG4gICAgICAgIC5maWx0ZXIoKHRvb2xOYW1lKTogdG9vbE5hbWUgaXMgc3RyaW5nID0+IGlzSG91cnNDaGFyZ2VUb29sKHRvb2xOYW1lKSlcbiAgICAgIGNvbnN0IHdhc0hvdXJzQ2hhcmdlQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgaG91cnNUb29sc0Zyb21BcHByb3ZhbC5sZW5ndGggPiAwXG4gICAgICBjb25zdCBtYW51YWxIb3Vyc1Rvb2wgPSBtYW51YWxBcHByb3ZhbD8udG9vbE5hbWVcbiAgICAgIGNvbnN0IHdhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQgPSBpc0hvdXJzQ2hhcmdlVG9vbChtYW51YWxIb3Vyc1Rvb2wpXG5cbiAgICAgIGlmICh3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkIHx8IHdhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgdG9vbHMgPSB3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkID8gaG91cnNUb29sc0Zyb21BcHByb3ZhbCA6IG1hbnVhbEhvdXJzVG9vbCA/IFttYW51YWxIb3Vyc1Rvb2xdIDogW11cbiAgICAgICAgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkKHtcbiAgICAgICAgICBzb3VyY2U6ICdtYWlhJyxcbiAgICAgICAgICB0b29scyxcbiAgICAgICAgICBzZXNzaW9uSWQ6IG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wZW5UYXNrUGFuZWxJZCAmJiAod2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSB8fCBtYW51YWxXYXNUYXNrRWRpdCB8fCBtYW51YWxXYXNUYXNrRGVsZXRlKSkge1xuICAgICAgICBjb25zdCBtYW51YWxQc2V1ZG9BY3Rpb246IFBlbmRpbmdBY3Rpb24gfCBudWxsID0gbWFudWFsQXBwcm92YWxcbiAgICAgICAgICA/ICh7IHRvb2xfbmFtZTogbWFudWFsQXBwcm92YWwudG9vbE5hbWUsIHRvb2xfYXJnczogbWFudWFsQXBwcm92YWwudG9vbEFyZ3MgPz8ge30gfSBhcyBQZW5kaW5nQWN0aW9uKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgICBjb25zdCBhZmZlY3RlZFRhc2tJZHMgPSBbXG4gICAgICAgICAgLi4uZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbVVybHMsXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCxcbiAgICAgICAgICAuLi4obWFudWFsUHNldWRvQWN0aW9uID8gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKFttYW51YWxQc2V1ZG9BY3Rpb25dKSA6IFtdKSxcbiAgICAgICAgXS5tYXAoU3RyaW5nKVxuICAgICAgICBpZiAoYWZmZWN0ZWRUYXNrSWRzLmluY2x1ZGVzKFN0cmluZyhvcGVuVGFza1BhbmVsSWQpKSkge1xuICAgICAgICAgIHdpbmRvdy50YXNrUGFuZWw/LnJlZmV0Y2hUYXNrPy4oKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IGZpbmFsTWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMgfHwgW10sXG4gICAgICAgIC4uLihjcmVhdGVBZ2VudEZvbGxvd1VwID8geyBjcmVhdGVBZ2VudEZvbGxvd1VwIH0gOiB7fSksXG4gICAgICAgIHJlYXNvbmluZzogZmluYWxUcmFjZSxcbiAgICAgIH0pXG4gICAgICBjbGVhclNlc3Npb25UYWlsKHNlc3Npb25JZClcblxuICAgICAgaWYgKGNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChjcmVhdGVBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gYcOxYWRpciBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8gYWwgbGlzdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZWRpdEFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChlZGl0QWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyByZWZyZXNjYXIgZWwgYWdlbnRlIGVkaXRhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuXG4gICAgICBjb25zdCB7IGlzQ2hhdFZpZXdWaXNpYmxlLCBtYXJrQ2hhdEFzUmVhZCB9ID0gZ2V0Q2hhdHNTdG9yZVN0YXRlKClcbiAgICAgIGlmIChpc0FjdGl2ZSAmJiBpc0NoYXRWaWV3VmlzaWJsZSkge1xuICAgICAgICBhd2FpdCBtYXJrQ2hhdEFzUmVhZChzZXNzaW9uSWQsIHsgZm9yY2U6IHRydWUgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHByb2plY3QsIGdldFRhYlRhc2tEZWZhdWx0LCBldmVudCwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1TdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIEVsIHN0b3Agc2llbXByZSBhcGxpY2EgYSBsYSBzZXNpw7NuIGFjdGl2YSAoYm90w7NuIGRlbCBpbnB1dCB2aXNpYmxlKS5cbiAgICBjb25zdCBzZXNzaW9uSWQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcbiAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBzdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBkcm9wRnJvbVNlc3Npb24oc2Vzc2lvbklkLCB0ZW1wTWVzc2FnZUlkKVxuXG4gICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LWNhbmNlbGxlZGAsXG4gICAgICBtZXNzYWdlOiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgfSlcbiAgICBjbGVhclNlc3Npb25UYWlsKHNlc3Npb25JZClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgfSwgNTAwKVxuICB9LCBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQgPSB1c2VDYWxsYmFjayhcbiAgICAoY3R4OiBTdHJlYW1Db250ZXh0LCBhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQgfSA9IGN0eFxuICAgICAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZClcblxuICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgZHJvcEZyb21TZXNzaW9uKHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcblxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50aHJlYWRfaWQpLFxuICAgICAgfVxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgfVxuXG4gICAgICAvLyBQcmVhcHJvYmFkbzogcG9yIGRldGVjY2nDs24gbWFudWFsIG8gcG9yIGF1dG8tYXBwcm92ZS4gRW4gYW1ib3MgY2Fzb3MgZWxcbiAgICAgIC8vIHN0cmVhbSBjb250aW7DumEgeSBubyBoYXkgcXVlIHBpbnRhciBsYSBjYWphIGRlIGFwcm9iYWNpw7NuLlxuICAgICAgaWYgKGFwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCB8fCBhcHByb3ZhbC5hdXRvX2FwcHJvdmVkIHx8IGFwcHJvdmFsLmFwcHJvdmFsX3N0YXR1cyA9PT0gJ2FwcHJvdmVkJykge1xuICAgICAgICBjb25zdCBmaXJzdEFjdGlvbiA9IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8uWzBdXG4gICAgICAgIGNvbnN0IHRvb2xOYW1lID0gKGFwcHJvdmFsIGFzIHsgdG9vbF9uYW1lPzogc3RyaW5nIH0pLnRvb2xfbmFtZSA/PyBmaXJzdEFjdGlvbj8udG9vbF9uYW1lID8/ICcnXG4gICAgICAgIGNvbnN0IHRvb2xBcmdzID1cbiAgICAgICAgICAoKGFwcHJvdmFsIGFzIHsgdG9vbF9hcmdzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSkudG9vbF9hcmdzID8/XG4gICAgICAgICAgICAoZmlyc3RBY3Rpb24/LnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCkpIHx8XG4gICAgICAgICAgbnVsbFxuICAgICAgICBpZiAodG9vbE5hbWUgJiYgaXNBY3RpdmUpIHtcbiAgICAgICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IHsgdG9vbE5hbWUsIHRvb2xBcmdzIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXBwcm92YWwgcmVxdWVzdFxuICAgICAgY29uc3QgYXBwcm92YWxNZXNzYWdlSWQgPSBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YFxuICAgICAgcmVhc29uaW5nU3RvcmUucmVuYW1lKHBsYWNlaG9sZGVySWQsIGFwcHJvdmFsTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXBwcm92YWxUcmFjZSA9IG1hcFJlYXNvbmluZ1RyYWNlKGFwcHJvdmFsLnJlYXNvbmluZykgPz8gcmVhc29uaW5nVHJhY2VGb3IoYXBwcm92YWxNZXNzYWdlSWQpXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBhcHByb3ZhbE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICAgIHJlYXNvbmluZzogYXBwcm92YWxUcmFjZSxcbiAgICAgIH0pXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdhcHByb3ZhbF9yZXF1aXJlZCcpXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb25dXG4gIClcblxuICBjb25zdCB7XG4gICAgYXNrTWFpYSxcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgfSA9IHVzZU9yY2hlc3RyYXRvclN0cmVhbSh7XG4gICAgYWN0aXZlU2Vzc2lvbklkLFxuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldEFjdGl2ZUxvYWRpbmdzKHt9KVxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBUb3BlIGRlIGNvbmN1cnJlbmNpYTogc2kgZXN0YSBzZXNpw7NuIG5vIGVzdMOhIGdlbmVyYW5kbyB5IHlhIGhheVxuICAgICAgLy8gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyBhY3RpdmFzLCBhdmlzYW1vcyB5IG5vIGFycmFuY2Ftb3Mgb3RyYS5cbiAgICAgIGNvbnN0IHdpbGxTdGFydE5ld1N0cmVhbSA9ICFzZXNzaW9uU3RyZWFtTWFuYWdlci5pc0FjdGl2ZShjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBpZiAod2lsbFN0YXJ0TmV3U3RyZWFtICYmIHNlc3Npb25TdHJlYW1NYW5hZ2VyLmdldEFjdGl2ZUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIHNldEFjdGl2ZUNoYXRJZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG5cbiAgICAgIGVuc3VyZVNlc3Npb25JblNpZGViYXIoe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHRpdGxlOiBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUoZGlzcGxheU1lc3NhZ2UpLFxuICAgICAgICBhZ2VudCxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2U6IGRpc3BsYXlNZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQoY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50KVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBzZXNzaW9uSWRcbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZClcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogYWdlbnQ/Lm5hbWUgfHwgJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG5cbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgY29udGV4dFJlZi5jdXJyZW50LnByb2plY3Q/LmluY29tZVR5cGVcbiAgICAgICAgfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIGxhc3RNZXNzYWdlUHJvamVjdElkKVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKHByb2plY3RzPy5sZW5ndGggPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0c1swXS5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihjdHhUYXNrPy5pZCAhPSBudWxsXG4gICAgICAgICAgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpLCAuLi4oY3R4VGFzay5uYW1lID8geyB0YXNrTmFtZTogY3R4VGFzay5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRnVhSWQgPyB7IGZ1YUlkOiBwYXlsb2FkRnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRTY0lkID8geyBzY0lkOiBwYXlsb2FkU2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQ29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiBwYXlsb2FkQ29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBjb21taXRUb1Nlc3Npb24sXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKG9wdGlvbi5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogTnVtYmVyKG9wdGlvbi5jbGllbnRJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyB0aHJlYWRfaWRzIHByb3ZpZGVkIGZvciBhcHByb3ZhbCBkZWNpc2lvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3VuZCA9IGZpbmRNZXNzYWdlV2l0aEFwcHJvdmFsQnlUaHJlYWRJZHModGhyZWFkSWRzLCBtZXNzYWdlc1JlZi5jdXJyZW50KVxuICAgICAgaWYgKCFmb3VuZD8ubWVzc2FnZS5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWRzOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbWVzc2FnZTogbWVzc2FnZVdpdGhBcHByb3ZhbCwgc2Vzc2lvbklkOiBmb3VuZFNlc3Npb25JZCB9ID0gZm91bmRcbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGlmICghYXBwcm92YWwpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGFwcHJvdmFsLnNlc3Npb25faWQgfHwgZm91bmRTZXNzaW9uSWRcbiAgICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlc3Npb25faWQgZGlzcG9uaWJsZSBwYXJhIGFwcHJvdmFsOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzZXNzaW9uU3RyZWFtTWFuYWdlci5pc0FjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuZ2V0QWN0aXZlQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZUlkID0gbWVzc2FnZVdpdGhBcHByb3ZhbC5pZFxuICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IG1lc3NhZ2VXaXRoQXBwcm92YWwubWVzc2FnZSxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkcyxcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNBY3RpdmVTZXNzaW9uID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG4gICAgICBpZiAoaXNBY3RpdmVTZXNzaW9uKSB7XG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwgeyAuLi5tZXNzYWdlV2l0aEFwcHJvdmFsLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG5cbiAgICAgIGNvbnN0IHN0cmVhbU1lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBpZiAoaXNBY3RpdmVTZXNzaW9uKSB7XG4gICAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHN0cmVhbU1lc3NhZ2VJZFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXRsQ3R4OiBTdHJlYW1Db250ZXh0ID0ge1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIG1lc3NhZ2VJZDogc3RyZWFtTWVzc2FnZUlkLFxuICAgICAgICBwbGFjZWhvbGRlcklkOiBzdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChzdHJlYW1NZXNzYWdlSWQpLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFpc0FjdGl2ZVNlc3Npb24pIHJldHVyblxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlc3Npb25TdHJlYW1NYW5hZ2VyLnN0YXJ0Q29udGludWVTdHJlYW0oe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHBsYWNlaG9sZGVySWQ6IGhpdGxDdHgucGxhY2Vob2xkZXJJZCxcbiAgICAgICAgY29udGludWVSZXF1ZXN0OiB7XG4gICAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgaXNBdXRvQXBwcm92ZUFjdGl2ZTogaXNBdXRvQXBwcm92ZUFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICB9LFxuICAgICAgICB0LFxuICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dDogaGl0bENvbnRleHQsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSxcbiAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgb25TdHJlYW1VcGRhdGU6IGNvbnRlbnQgPT4gaGFuZGxlU3RyZWFtVXBkYXRlKGhpdGxDdHgsIGNvbnRlbnQpLFxuICAgICAgICAgIG9uRmluaXNoU3RyZWFtOiBmaW5pc2hQYXlsb2FkID0+IHtcbiAgICAgICAgICAgIHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nKClcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChcbiAgICAgICAgICAgICAgaGl0bEN0eCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5jb250ZW50LFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLnNvdXJjZXMsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQubWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLmF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLnN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLmNvbXBsZXRlZEFnZW50SWQsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQucmVzb2x2ZWRDb250ZXh0LFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLnJlYXNvbmluZ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcoKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoaGl0bEN0eClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQXBwcm92YWxSZXF1aXJlZDogKGFwcHJvdmFsUGF5bG9hZCwgYWNjdW11bGF0ZWRDb250ZW50KSA9PiB7XG4gICAgICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGhpdGxDdHgsIGFwcHJvdmFsUGF5bG9hZCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3VsdC5zdGFydGVkKSB7XG4gICAgICAgIHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nKClcbiAgICAgICAgaWYgKHJlc3VsdC5yZWFzb24gPT09ICdsaW1pdCcpIHtcbiAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgICAgZGV0YWlsOiB7IHNob3c6IHRydWUsIHNldmVyaXR5OiAnaW5mbycsIG1lc3NhZ2U6IHQoJ2NoYXQudG9vTWFueUFjdGl2ZVNlc3Npb25zJykgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhdXRoVXNlcixcbiAgICAgIGFnZW50LFxuICAgICAgY29tbWl0VG9TZXNzaW9uLFxuICAgICAgaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgICBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgICBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgICAgdCxcbiAgICBdXG4gIClcblxuICBjb25zdCBpbml0aWFsaXplQ2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGluaXRpYWxDaGF0SWQpIHtcbiAgICAgIGF3YWl0IGxvYWRNZXNzYWdlcygpXG4gICAgfSBlbHNlIGlmICh1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxNZXNzYWdlID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZT8udHJpbSgpKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEF0dGFjaG1lbnRzID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGYXEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGdWEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxTYyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQpXG5cbiAgICAgIGlmICghaGFzSW5pdGlhbE1lc3NhZ2UgJiYgIWhhc0luaXRpYWxBdHRhY2htZW50cyAmJiAhaGFzSW5pdGlhbEZhcSAmJiAhaGFzSW5pdGlhbEZ1YSAmJiAhaGFzSW5pdGlhbFNjKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgdGFzazogY3R4VGFzayxcbiAgICAgIH0gPSBjb250ZXh0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIG51bGwpID8/IGN0eFByb2plY3Q/LmlkID8/IG51bGxcblxuICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIFBBVEg9aW5pdGlhbGl6ZUNoYXQvdXNlckluaXRpYWxNZXNzYWdlIOKAlCBjb250ZXh0UmVmIHJlc29sdXRpb246Jywge1xuICAgICAgICBwcm9qZWN0UHJvcElkOiBjdHhQcm9qZWN0Py5pZCA/PyBudWxsLFxuICAgICAgICBjbGllbnRJZDogY3R4Q2xpZW50Py5pZCA/PyBudWxsLFxuICAgICAgICB0YXNrSWQ6IGN0eFRhc2s/LmlkID8/IG51bGwsXG4gICAgICAgIGNoaXBzUHJvamVjdElkOiBjdHhDaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBhZ2VudFR5cGU6IGFnZW50Py50eXBlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgaW5pdGlhbERpc3BsYXlNZXNzYWdlID0gZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICAgIH0pXG5cbiAgICAgIGVuc3VyZVNlc3Npb25JblNpZGViYXIoe1xuICAgICAgICBzZXNzaW9uSWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgdGl0bGU6IGJ1aWxkU2lkZWJhclNlc3Npb25UaXRsZShpbml0aWFsRGlzcGxheU1lc3NhZ2UpLFxuICAgICAgICBhZ2VudCxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkLFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyxcbiAgICAgIH0pXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNBdXRvQXBwcm92ZUFjdGl2ZTogaXNBdXRvQXBwcm92ZUFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi5yZXNvbHZlQ2xpZW50UGF5bG9hZChjdHhDbGllbnQsIGN0eFByb2plY3QpLFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8ubmFtZSA/IHsgcHJvamVjdE5hbWU6IGN0eFByb2plY3QubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oY3R4VGFzaz8uaWQgIT0gbnVsbFxuICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiB1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCA/IHsgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQgPyB7IHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVtb2ppICE9IG51bGwgPyB7IGFnZW50RW1vamk6IGFnZW50LmVtb2ppIH0gOiB7fSksXG4gICAgICAgIC4uLihidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucylcbiAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiB1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgaW5pdGlhbENoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgcHJldmlvdXNTZXNzaW9uSWQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihwcmV2aW91c1Nlc3Npb25JZClcbiAgICByZWFzb25pbmdTdG9yZS5jbGVhcigpXG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBzZXRBY3RpdmVTZXNzaW9uSWQoY3VycmVudENoYXRJZC5jdXJyZW50KVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHNldEFjdGl2ZUNoYXRJZChudWxsKVxuICB9LCBbc2V0QWN0aXZlQ2hhdElkXSlcblxuICBjb25zdCBzdG9wR2VuZXJhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wU3RyZWFtaW5nKClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxFQUFFLElBQUlDLE1BQU0sUUFBUSxNQUFNO0FBQ25DLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRzlCLFNBQVNDLE9BQU8sUUFBaUIsd0JBQXdCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxhQUFhO0FBQzlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsUUFBUSxRQUFRLDREQUE0RDtBQUNyRixTQUF1Q0MsZUFBZSxRQUF3QyxrQkFBa0I7QUFDaEgsU0FBeUNDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUNoRyxTQUFTQyxrQ0FBa0MsUUFBUSxzQ0FBc0M7QUFHekYsU0FBU0MsV0FBVyxRQUFRLGdCQUFnQjtBQUM1QyxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBc0I7QUFDeEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLHdCQUF3QixFQUFFQyxpQkFBaUIsUUFBUSxtQ0FBbUM7QUFDL0YsU0FBU0MsZ0JBQWdCLFFBQVEsNkNBQTZDO0FBQzlFLFNBQVNDLHVCQUF1QixFQUFFQyx5QkFBeUIsUUFBUSwyQkFBMkI7QUFFOUYsU0FBU0Msb0JBQW9CLFFBQVEsMkNBQTJDO0FBQ2hGLFNBQVNDLGdCQUFnQixRQUFRLHVDQUF1QztBQUN4RSxTQUFTQyxjQUFjLFFBQVEscUNBQXFDO0FBQ3BFLFNBQVNDLG9CQUFvQixFQUFFQyxzQkFBc0IsUUFBUSwyQ0FBMkM7QUFDeEcsU0FBU0MsVUFBVSxRQUFRLGlDQUFpQztBQUM1RCxTQUFTQyxpQ0FBaUMsUUFBUSwyQ0FBMkM7QUFDN0YsU0FBU0Msd0JBQXdCLEVBQUVDLHNCQUFzQixRQUFRLG9DQUFvQztBQUNyRyxTQUFTQywrQkFBK0IsRUFBRUMsNkJBQTZCLFFBQVEsb0NBQW9DO0FBRW5ILFNBQVNDLGtCQUFrQixFQUFFQyxhQUFhLFFBQVEsMkJBQTJCO0FBQzdFLFNBQVNDLGNBQWMsUUFBUSxzQkFBc0I7QUFDckQsU0FBU0MsbUJBQW1CLEVBQUVDLGlCQUFpQixRQUFRLDhCQUE4QjtBQUtyRjtBQUNBLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUlDLFNBQWlCLEVBQTRCO0VBQ3RFLElBQU1DLFFBQVEsR0FBR0wsY0FBYyxDQUFDTSxXQUFXLENBQUMsQ0FBQztFQUM3QyxJQUFJRCxRQUFRLENBQUNFLEVBQUUsS0FBS0gsU0FBUyxFQUFFLE9BQU8sSUFBSTtFQUMxQyxPQUFPSCxtQkFBbUIsQ0FBQ0ksUUFBUSxDQUFDRyxLQUFLLEVBQUVILFFBQVEsQ0FBQ0ksT0FBTyxDQUFDO0FBQzlELENBQUM7QUFFRCxJQUFNQyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJQyxvQkFBMkMsRUFBSztFQUFBLElBQUFDLG9CQUFBO0VBQ2hGLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxvQkFBb0IsQ0FBQyxFQUFFO0lBQ3ZDLE9BQU87TUFBRUksV0FBVyxFQUFFSixvQkFBb0I7TUFBRUssT0FBTyxFQUFFLENBQUM7SUFBd0IsQ0FBQztFQUNqRjtFQUVBLElBQU1BLE9BQTJCLEdBQUdMLG9CQUFvQixhQUFwQkEsb0JBQW9CLGNBQXBCQSxvQkFBb0IsR0FBSSxDQUFDLENBQUM7RUFDOUQsT0FBTztJQUFFSSxXQUFXLEdBQUFILG9CQUFBLEdBQUVJLE9BQU8sQ0FBQ0QsV0FBVyxjQUFBSCxvQkFBQSxjQUFBQSxvQkFBQSxHQUFJLEVBQUU7SUFBRUksT0FBTyxFQUFQQTtFQUFRLENBQUM7QUFDNUQsQ0FBQzs7QUFFRDtBQUNBLElBQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQzNCQyxZQUF1RCxFQUN2REMsb0JBQXdELEVBQ3RDO0VBQ2xCLElBQU1DLGNBQWMsR0FBR0YsWUFBWSxhQUFaQSxZQUFZLGVBQVpBLFlBQVksQ0FBRUcsU0FBUyxHQUFHQyxNQUFNLENBQUNKLFlBQVksQ0FBQ0csU0FBUyxDQUFDLEdBQUcsSUFBSTtFQUN0RixJQUFJRCxjQUFjLElBQUksSUFBSSxJQUFJRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsY0FBYyxDQUFDLEVBQUU7SUFDN0QsT0FBT0EsY0FBYztFQUN2QjtFQUNBLElBQUlELG9CQUFvQixJQUFJLElBQUksRUFBRTtJQUNoQyxJQUFNSyxNQUFNLEdBQUdGLE1BQU0sQ0FBQ0gsb0JBQW9CLENBQUM7SUFDM0MsT0FBT0csTUFBTSxDQUFDQyxRQUFRLENBQUNDLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLEdBQUcsSUFBSTtFQUNoRDtFQUNBLE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFRCxJQUFNQyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUN4QkMsU0FBNEQsRUFDNURDLFVBQXNDLEVBQ1M7RUFBQSxJQUFBQyxrQkFBQTtFQUMvQyxJQUFJRixTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFFbkIsRUFBRSxFQUFFO0lBQ2pCLE9BQUFzQixhQUFBO01BQVNDLFFBQVEsRUFBRUosU0FBUyxDQUFDbkI7SUFBRSxHQUFNbUIsU0FBUyxDQUFDSyxJQUFJLEdBQUc7TUFBRUMsVUFBVSxFQUFFTixTQUFTLENBQUNLO0lBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzRjtFQUNBLElBQUksQ0FBQUosVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVHLFFBQVEsS0FBSSxJQUFJLEVBQUU7SUFDaEMsT0FBTztNQUFFQSxRQUFRLEVBQUVSLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDRyxRQUFRO0lBQUUsQ0FBQztFQUNsRDtFQUNBLElBQUlILFVBQVUsYUFBVkEsVUFBVSxnQkFBQUMsa0JBQUEsR0FBVkQsVUFBVSxDQUFFTSxNQUFNLGNBQUFMLGtCQUFBLGVBQWxCQSxrQkFBQSxDQUFvQnJCLEVBQUUsRUFBRTtJQUMxQixPQUFBc0IsYUFBQTtNQUNFQyxRQUFRLEVBQUVILFVBQVUsQ0FBQ00sTUFBTSxDQUFDMUI7SUFBRSxHQUMxQm9CLFVBQVUsQ0FBQ00sTUFBTSxDQUFDRixJQUFJLEdBQUc7TUFBRUMsVUFBVSxFQUFFTCxVQUFVLENBQUNNLE1BQU0sQ0FBQ0Y7SUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBRTVFO0VBQ0EsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsSUFBTUcsNkJBQTZCLEdBQUcsU0FBaENBLDZCQUE2QkEsQ0FBSUMsY0FBdUIsRUFBdUI7RUFDbkYsSUFBSSxDQUFDdEIsS0FBSyxDQUFDQyxPQUFPLENBQUNxQixjQUFjLENBQUMsRUFBRTtJQUNsQyxPQUFPLEVBQUU7RUFDWDtFQUVBLE9BQU9BLGNBQWMsQ0FDbEJDLE1BQU0sQ0FBQyxVQUFDQyxVQUFVO0lBQUEsT0FBNEMsQ0FBQyxDQUFDQSxVQUFVLElBQUlDLE9BQUEsQ0FBT0QsVUFBVSxNQUFLLFFBQVE7RUFBQSxFQUFDLENBQzdHRSxHQUFHLENBQUMsVUFBQ0YsVUFBVSxFQUFFRyxLQUFLLEVBQUs7SUFDMUIsSUFBTVQsSUFBSSxHQUNSLE9BQU9NLFVBQVUsQ0FBQ04sSUFBSSxLQUFLLFFBQVEsSUFBSU0sVUFBVSxDQUFDTixJQUFJLENBQUNVLElBQUksQ0FBQyxDQUFDLEdBQUdKLFVBQVUsQ0FBQ04sSUFBSSxDQUFDVSxJQUFJLENBQUMsQ0FBQyxXQUFBQyxNQUFBLENBQVdGLEtBQUssR0FBRyxDQUFDLENBQUU7SUFDOUcsSUFBTUcsSUFBSSxHQUFHLE9BQU9OLFVBQVUsQ0FBQ00sSUFBSSxLQUFLLFFBQVEsSUFBSU4sVUFBVSxDQUFDTSxJQUFJLENBQUNGLElBQUksQ0FBQyxDQUFDLEdBQUdKLFVBQVUsQ0FBQ00sSUFBSSxDQUFDRixJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUs7SUFDM0csSUFBTUcsUUFBUSxHQUFHLE9BQU9QLFVBQVUsQ0FBQ1EsU0FBUyxLQUFLLFFBQVEsR0FBR1IsVUFBVSxDQUFDUSxTQUFTLEdBQUcsRUFBRTtJQUNyRixJQUFNQyxZQUFZLEdBQUdmLElBQUksQ0FBQ2dCLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBR2hCLElBQUksTUFBQVcsTUFBQSxDQUFNWCxJQUFJLE9BQUFXLE1BQUEsQ0FBSUMsSUFBSSxDQUFFO0lBQ2xFLElBQU1LLFdBQVcsR0FDZixPQUFPWCxVQUFVLENBQUNZLElBQUksS0FBSyxRQUFRLEdBQy9CWixVQUFVLENBQUNZLElBQUksR0FDZjNCLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRCxNQUFNLENBQUNlLFVBQVUsQ0FBQ1ksSUFBSSxDQUFDLENBQUMsR0FDdEMzQixNQUFNLENBQUNlLFVBQVUsQ0FBQ1ksSUFBSSxDQUFDLEdBQ3ZCLENBQUM7SUFFVCxPQUFPO01BQ0xDLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsRUFBRSxFQUFFTCxZQUFZLEVBQUU7UUFBRUgsSUFBSSxFQUFFQztNQUFTLENBQUMsQ0FBQztNQUNwRHJDLEVBQUUsRUFDQSxPQUFPOEIsVUFBVSxDQUFDOUIsRUFBRSxLQUFLLFFBQVEsSUFBSThCLFVBQVUsQ0FBQzlCLEVBQUUsQ0FBQ2tDLElBQUksQ0FBQyxDQUFDLEdBQ3JESixVQUFVLENBQUM5QixFQUFFLHFCQUFBbUMsTUFBQSxDQUNLRixLQUFLLE9BQUFFLE1BQUEsQ0FBSUksWUFBWSxDQUFFO01BQy9DZixJQUFJLEVBQUpBLElBQUk7TUFDSmtCLElBQUksRUFBRUQsV0FBVztNQUNqQkwsSUFBSSxFQUFKQSxJQUFJO01BQ0pTLFlBQVksRUFBRSxPQUFPZixVQUFVLENBQUNlLFlBQVksS0FBSyxRQUFRLEdBQUdmLFVBQVUsQ0FBQ2UsWUFBWSxHQUFHQyxTQUFTO01BQy9GQyxhQUFhLEVBQUUsT0FBT2pCLFVBQVUsQ0FBQ2lCLGFBQWEsS0FBSyxRQUFRLEdBQUdqQixVQUFVLENBQUNpQixhQUFhLEdBQUdELFNBQVM7TUFDbEdFLFFBQVEsRUFBRSxPQUFPbEIsVUFBVSxDQUFDa0IsUUFBUSxLQUFLLFFBQVEsR0FBR2xCLFVBQVUsQ0FBQ2tCLFFBQVEsR0FBR0YsU0FBUztNQUNuRkcsSUFBSSxFQUFFbkIsVUFBVSxDQUFDbUIsSUFBSSxLQUFLLFdBQVcsR0FBRyxXQUFXLEdBQUc7SUFDeEQsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNOLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLG9DQUFvQ0EsQ0FBQ0MsY0FBK0IsRUFBWTtFQUN2RixJQUFNQyxHQUFhLEdBQUcsRUFBRTtFQUN4QixJQUFNQyxNQUFNLEdBQUcsU0FBVEEsTUFBTUEsQ0FBSUMsR0FBWSxFQUFLO0lBQy9CLElBQUlBLEdBQUcsSUFBSSxJQUFJLEVBQUU7SUFDakIsSUFBTUMsQ0FBQyxHQUFHQyxRQUFRLENBQUNDLE1BQU0sQ0FBQ0gsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25DLElBQUksQ0FBQ3ZDLE1BQU0sQ0FBQzJDLEtBQUssQ0FBQ0gsQ0FBQyxDQUFDLEVBQUVILEdBQUcsQ0FBQ08sSUFBSSxDQUFDSixDQUFDLENBQUM7RUFDbkMsQ0FBQztFQUNESixjQUFjLENBQUNTLE9BQU8sQ0FBQyxVQUFBQyxNQUFNLEVBQUk7SUFBQSxJQUFBQyxZQUFBO0lBQy9CLElBQUksQ0FBQ0QsTUFBTSxJQUFJOUIsT0FBQSxDQUFPOEIsTUFBTSxNQUFLLFFBQVEsRUFBRTtJQUMzQyxJQUFNRSxJQUFJLEdBQUdGLE1BQU0sQ0FBQ0csU0FBUztJQUM3QixJQUFJLEVBQUVELElBQUksSUFBSWhDLE9BQUEsQ0FBT2dDLElBQUksTUFBSyxRQUFRLElBQUksQ0FBQ3pELEtBQUssQ0FBQ0MsT0FBTyxDQUFDd0QsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqRSxJQUFNRSxHQUFHLEdBQUdGLElBQStCO0lBQzNDVixNQUFNLEVBQUFTLFlBQUEsR0FBQ0csR0FBRyxDQUFDQyxPQUFPLGNBQUFKLFlBQUEsY0FBQUEsWUFBQSxHQUFJRyxHQUFHLENBQUNqRSxFQUFFLENBQUM7SUFDN0IsSUFBSU0sS0FBSyxDQUFDQyxPQUFPLENBQUMwRCxHQUFHLENBQUNFLFFBQVEsQ0FBQyxFQUFFO01BQy9CRixHQUFHLENBQUNFLFFBQVEsQ0FBQ1AsT0FBTyxDQUFDUCxNQUFNLENBQUM7SUFDOUI7SUFDQSxJQUFJL0MsS0FBSyxDQUFDQyxPQUFPLENBQUMwRCxHQUFHLENBQUNHLEtBQUssQ0FBQyxFQUFFO01BQzVCSCxHQUFHLENBQUNHLEtBQUssQ0FBQ1IsT0FBTyxDQUFDLFVBQUFTLENBQUMsRUFBSTtRQUNyQixJQUFJQSxDQUFDLElBQUl0QyxPQUFBLENBQU9zQyxDQUFDLE1BQUssUUFBUSxJQUFJLENBQUMvRCxLQUFLLENBQUNDLE9BQU8sQ0FBQzhELENBQUMsQ0FBQyxFQUFFO1VBQUEsSUFBQUMsYUFBQTtVQUNuRCxJQUFNQyxJQUFJLEdBQUdGLENBQTRCO1VBQ3pDaEIsTUFBTSxFQUFBaUIsYUFBQSxHQUFDQyxJQUFJLENBQUNMLE9BQU8sY0FBQUksYUFBQSxjQUFBQSxhQUFBLEdBQUlDLElBQUksQ0FBQ3ZFLEVBQUUsQ0FBQztRQUNqQztNQUNGLENBQUMsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxDQUFDO0VBQ0YsT0FBT29ELEdBQUc7QUFDWjs7QUFFQTtBQUNBLFNBQVNvQixzQ0FBc0NBLENBQUNyQixjQUErQixFQUFZO0VBQ3pGLElBQU1DLEdBQWEsR0FBRyxFQUFFO0VBQ3hCRCxjQUFjLENBQUNTLE9BQU8sQ0FBQyxVQUFBQyxNQUFNLEVBQUk7SUFDL0IsSUFBSSxDQUFDQSxNQUFNLElBQUk5QixPQUFBLENBQU84QixNQUFNLE1BQUssUUFBUSxFQUFFO0lBQzNDLElBQU1FLElBQUksR0FBR0YsTUFBTSxDQUFDRyxTQUFTO0lBQzdCLElBQUksRUFBRUQsSUFBSSxJQUFJaEMsT0FBQSxDQUFPZ0MsSUFBSSxNQUFLLFFBQVEsSUFBSSxDQUFDekQsS0FBSyxDQUFDQyxPQUFPLENBQUN3RCxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ2pFLElBQU1FLEdBQUcsR0FBR0YsSUFBK0I7SUFDM0MsSUFBSUYsTUFBTSxDQUFDWSxTQUFTLEtBQUssYUFBYSxFQUFFO01BQUEsSUFBQUMsYUFBQTtNQUN0QyxJQUFNcEIsR0FBRyxJQUFBb0IsYUFBQSxHQUFHVCxHQUFHLENBQUNDLE9BQU8sY0FBQVEsYUFBQSxjQUFBQSxhQUFBLEdBQUlULEdBQUcsQ0FBQ2pFLEVBQUU7TUFDakMsSUFBSXNELEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDZixJQUFNQyxDQUFDLEdBQUdDLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDSCxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDdkMsTUFBTSxDQUFDMkMsS0FBSyxDQUFDSCxDQUFDLENBQUMsRUFBRUgsR0FBRyxDQUFDTyxJQUFJLENBQUNKLENBQUMsQ0FBQztNQUNuQztJQUNGO0lBQ0EsSUFBSU0sTUFBTSxDQUFDWSxTQUFTLEtBQUssb0JBQW9CLEVBQUU7TUFDN0MsSUFBTUUsSUFBSSxHQUFHVixHQUFHLENBQUNFLFFBQVE7TUFDekIsSUFBSTdELEtBQUssQ0FBQ0MsT0FBTyxDQUFDb0UsSUFBSSxDQUFDLEVBQUU7UUFDdkJBLElBQUksQ0FBQ2YsT0FBTyxDQUFDLFVBQUFnQixHQUFHLEVBQUk7VUFDbEIsSUFBTXJCLENBQUMsR0FBR0MsUUFBUSxDQUFDQyxNQUFNLENBQUNtQixHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7VUFDbkMsSUFBSSxDQUFDN0QsTUFBTSxDQUFDMkMsS0FBSyxDQUFDSCxDQUFDLENBQUMsRUFBRUgsR0FBRyxDQUFDTyxJQUFJLENBQUNKLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7TUFDSjtJQUNGO0VBQ0YsQ0FBQyxDQUFDO0VBQ0YsT0FBT0gsR0FBRztBQUNaO0FBRUEsU0FBU3lCLHlDQUF5Q0EsQ0FBQzFCLGNBQStCLEVBQWlCO0VBQUEsSUFBQTJCLGFBQUE7RUFDakcsSUFBTUMsVUFBVSxHQUFHNUIsY0FBYyxDQUFDNkIsSUFBSSxDQUFDLFVBQUFDLENBQUM7SUFBQSxPQUFJLENBQUNBLENBQUMsQ0FBQ1IsU0FBUyxJQUFJLEVBQUUsRUFBRVMsV0FBVyxDQUFDLENBQUMsS0FBSyxZQUFZO0VBQUEsRUFBQztFQUMvRixJQUNFLENBQUNILFVBQVUsSUFDWCxDQUFDQSxVQUFVLENBQUNmLFNBQVMsSUFDckJqQyxPQUFBLENBQU9nRCxVQUFVLENBQUNmLFNBQVMsTUFBSyxRQUFRLElBQ3hDMUQsS0FBSyxDQUFDQyxPQUFPLENBQUN3RSxVQUFVLENBQUNmLFNBQVMsQ0FBQyxFQUNuQztJQUNBLE9BQU8sSUFBSTtFQUNiO0VBQ0EsSUFBTUMsR0FBRyxHQUFHYyxVQUFVLENBQUNmLFNBQW9DO0VBQzNELElBQU1WLEdBQUcsSUFBQXdCLGFBQUEsR0FBR2IsR0FBRyxDQUFDa0IsUUFBUSxjQUFBTCxhQUFBLGNBQUFBLGFBQUEsR0FBSWIsR0FBRyxDQUFDbUIsT0FBTztFQUN2QyxPQUFPOUIsR0FBRyxJQUFJLElBQUksR0FBR0csTUFBTSxDQUFDSCxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQ3pDO0FBRUEsU0FBUytCLDBDQUEwQ0EsQ0FBQ2xDLGNBQStCLEVBQUVtQyxRQUFnQixFQUFpQjtFQUFBLElBQUFDLElBQUEsRUFBQUMsY0FBQTtFQUNwSCxJQUFNM0IsTUFBTSxHQUFHVixjQUFjLENBQUM2QixJQUFJLENBQUMsVUFBQUMsQ0FBQztJQUFBLE9BQUksQ0FBQ0EsQ0FBQyxDQUFDUixTQUFTLElBQUksRUFBRSxFQUFFUyxXQUFXLENBQUMsQ0FBQyxLQUFLSSxRQUFRLENBQUNKLFdBQVcsQ0FBQyxDQUFDO0VBQUEsRUFBQztFQUNyRyxJQUFJLENBQUNyQixNQUFNLElBQUksQ0FBQ0EsTUFBTSxDQUFDRyxTQUFTLElBQUlqQyxPQUFBLENBQU84QixNQUFNLENBQUNHLFNBQVMsTUFBSyxRQUFRLElBQUkxRCxLQUFLLENBQUNDLE9BQU8sQ0FBQ3NELE1BQU0sQ0FBQ0csU0FBUyxDQUFDLEVBQUU7SUFDM0csT0FBTyxJQUFJO0VBQ2I7RUFDQSxJQUFNQyxHQUFHLEdBQUdKLE1BQU0sQ0FBQ0csU0FBb0M7RUFDdkQsSUFBTVYsR0FBRyxJQUFBaUMsSUFBQSxJQUFBQyxjQUFBLEdBQUd2QixHQUFHLENBQUNrQixRQUFRLGNBQUFLLGNBQUEsY0FBQUEsY0FBQSxHQUFJdkIsR0FBRyxDQUFDbUIsT0FBTyxjQUFBRyxJQUFBLGNBQUFBLElBQUEsR0FBSXRCLEdBQUcsQ0FBQ2pFLEVBQUU7RUFDakQsT0FBT3NELEdBQUcsSUFBSSxJQUFJLEdBQUdHLE1BQU0sQ0FBQ0gsR0FBRyxDQUFDLEdBQUcsSUFBSTtBQUN6Qzs7QUFFQTtBQUNBLFNBQVNtQyx1Q0FBdUNBLENBQUNDLElBQVksRUFBWTtFQUN2RSxJQUFNQyxPQUFPLEdBQUdELElBQUksQ0FBQ0UsS0FBSyxDQUFDLHVCQUF1QixDQUFDO0VBQ25ELElBQUlELE9BQU8sRUFBRTtJQUNYLElBQU1wQyxDQUFDLEdBQUdDLFFBQVEsQ0FBQ21DLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEMsT0FBTzVFLE1BQU0sQ0FBQzJDLEtBQUssQ0FBQ0gsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUNBLENBQUMsQ0FBQztFQUNuQztFQUNBLElBQU1zQyxJQUFJLEdBQUdILElBQUksQ0FBQ0UsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0VBQzNDLElBQUlDLElBQUksRUFBRTtJQUNSLElBQU10QyxFQUFDLEdBQUdDLFFBQVEsQ0FBQ3FDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDL0IsT0FBTzlFLE1BQU0sQ0FBQzJDLEtBQUssQ0FBQ0gsRUFBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUNBLEVBQUMsQ0FBQztFQUNuQztFQUNBLE9BQU8sRUFBRTtBQUNYO0FBRUEsSUFBTXVDLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUlDLFFBQWlCLEVBQUs7RUFDaEQsSUFBTUMsV0FBVyxHQUFHN0ksTUFBTSxDQUFrQjtJQUMxQzZDLEVBQUUsRUFBRStGLFFBQVEsQ0FBQy9GLEVBQUUsQ0FBQ2lHLFFBQVEsQ0FBQyxDQUFDO0lBQzFCekUsSUFBSSxFQUFFdUUsUUFBUSxDQUFDRyxTQUFTO0lBQ3hCQyxNQUFNLEVBQUVKLFFBQVEsQ0FBQ0s7RUFDbkIsQ0FBQyxDQUFDO0VBRUYsSUFDRUosV0FBVyxDQUFDSyxPQUFPLENBQUNyRyxFQUFFLEtBQUsrRixRQUFRLENBQUMvRixFQUFFLENBQUNpRyxRQUFRLENBQUMsQ0FBQyxJQUNqREQsV0FBVyxDQUFDSyxPQUFPLENBQUM3RSxJQUFJLEtBQUt1RSxRQUFRLENBQUNHLFNBQVMsSUFDL0NGLFdBQVcsQ0FBQ0ssT0FBTyxDQUFDRixNQUFNLEtBQUtKLFFBQVEsQ0FBQ0ssT0FBTyxFQUMvQztJQUNBSixXQUFXLENBQUNLLE9BQU8sR0FBRztNQUNwQnJHLEVBQUUsRUFBRStGLFFBQVEsQ0FBQy9GLEVBQUUsQ0FBQ2lHLFFBQVEsQ0FBQyxDQUFDO01BQzFCekUsSUFBSSxFQUFFdUUsUUFBUSxDQUFDRyxTQUFTO01BQ3hCQyxNQUFNLEVBQUVKLFFBQVEsQ0FBQ0s7SUFDbkIsQ0FBQztFQUNIO0VBQ0EsT0FBTztJQUNMSixXQUFXLEVBQUVBLFdBQVcsQ0FBQ0s7RUFDM0IsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFNQyxrQ0FBa0MsR0FBRyxTQUFyQ0Esa0NBQWtDQSxDQUN0Q0MsU0FBbUIsRUFDbkJDLGNBQTZCLEVBQzBCO0VBQ3ZELElBQU1DLGNBQWMsR0FBR0QsY0FBYyxDQUFDeEIsSUFBSSxDQUFDLFVBQUEwQixPQUFPO0lBQUEsSUFBQUMsaUJBQUE7SUFBQSxRQUFBQSxpQkFBQSxHQUNoREQsT0FBTyxDQUFDRSxRQUFRLGNBQUFELGlCQUFBLGdCQUFBQSxpQkFBQSxHQUFoQkEsaUJBQUEsQ0FBa0JFLGVBQWUsY0FBQUYsaUJBQUEsdUJBQWpDQSxpQkFBQSxDQUFtQ0csSUFBSSxDQUFDLFVBQUFqRCxNQUFNO01BQUEsT0FBSTBDLFNBQVMsQ0FBQy9ELFFBQVEsQ0FBQ3FCLE1BQU0sQ0FBQ2tELFNBQVMsQ0FBQztJQUFBLEVBQUM7RUFBQSxDQUN6RixDQUFDO0VBQ0QsSUFBSU4sY0FBYyxhQUFkQSxjQUFjLGVBQWRBLGNBQWMsQ0FBRUcsUUFBUSxFQUFFO0lBQzVCLE9BQU87TUFDTEYsT0FBTyxFQUFFRCxjQUFjO01BQ3ZCTyxTQUFTLEVBQUVQLGNBQWMsQ0FBQ0csUUFBUSxDQUFDSyxVQUFVLElBQUloSSxVQUFVLENBQUNpSSxHQUFHLENBQUMsQ0FBQyxJQUFJO0lBQ3ZFLENBQUM7RUFDSDtFQUVBLElBQUFDLHFCQUFBLEdBQXFCdEksZ0JBQWdCLENBQUN1SSxRQUFRLENBQUMsQ0FBQztJQUF4Q0MsUUFBUSxHQUFBRixxQkFBQSxDQUFSRSxRQUFRO0VBQ2hCLElBQU1DLFlBQVksR0FBR0MsTUFBTSxDQUFDQyxPQUFPLENBQUNILFFBQVEsQ0FBQyxDQUFDckMsSUFBSSxDQUFDLFVBQUF5QyxLQUFBO0lBQUEsSUFBQUMsS0FBQSxHQUFBQyxjQUFBLENBQUFGLEtBQUE7TUFBSUcsZUFBZSxHQUFBRixLQUFBO0lBQUEsT0FDcEVFLGVBQWUsQ0FBQ2QsSUFBSSxDQUFDLFVBQUFKLE9BQU87TUFBQSxJQUFBbUIsa0JBQUE7TUFBQSxRQUFBQSxrQkFBQSxHQUMxQm5CLE9BQU8sQ0FBQ0UsUUFBUSxjQUFBaUIsa0JBQUEsZ0JBQUFBLGtCQUFBLEdBQWhCQSxrQkFBQSxDQUFrQmhCLGVBQWUsY0FBQWdCLGtCQUFBLHVCQUFqQ0Esa0JBQUEsQ0FBbUNmLElBQUksQ0FBQyxVQUFBakQsTUFBTTtRQUFBLE9BQUkwQyxTQUFTLENBQUMvRCxRQUFRLENBQUNxQixNQUFNLENBQUNrRCxTQUFTLENBQUM7TUFBQSxFQUFDO0lBQUEsQ0FDekYsQ0FBQztFQUFBLENBQ0gsQ0FBQztFQUNELElBQUlPLFlBQVksRUFBRTtJQUNoQixJQUFBUSxhQUFBLEdBQUFILGNBQUEsQ0FBcUNMLFlBQVk7TUFBMUNOLFNBQVMsR0FBQWMsYUFBQTtNQUFFRixlQUFlLEdBQUFFLGFBQUE7SUFDakMsSUFBTUMsS0FBSyxHQUFHSCxlQUFlLENBQUM1QyxJQUFJLENBQUMsVUFBQTBCLE9BQU87TUFBQSxJQUFBc0Isa0JBQUE7TUFBQSxRQUFBQSxrQkFBQSxHQUN4Q3RCLE9BQU8sQ0FBQ0UsUUFBUSxjQUFBb0Isa0JBQUEsZ0JBQUFBLGtCQUFBLEdBQWhCQSxrQkFBQSxDQUFrQm5CLGVBQWUsY0FBQW1CLGtCQUFBLHVCQUFqQ0Esa0JBQUEsQ0FBbUNsQixJQUFJLENBQUMsVUFBQWpELE1BQU07UUFBQSxPQUFJMEMsU0FBUyxDQUFDL0QsUUFBUSxDQUFDcUIsTUFBTSxDQUFDa0QsU0FBUyxDQUFDO01BQUEsRUFBQztJQUFBLENBQ3pGLENBQUM7SUFDRCxJQUFJZ0IsS0FBSyxhQUFMQSxLQUFLLGVBQUxBLEtBQUssQ0FBRW5CLFFBQVEsRUFBRTtNQUNuQixPQUFPO1FBQUVGLE9BQU8sRUFBRXFCLEtBQUs7UUFBRWYsU0FBUyxFQUFFZSxLQUFLLENBQUNuQixRQUFRLENBQUNLLFVBQVUsSUFBSUQ7TUFBVSxDQUFDO0lBQzlFO0VBQ0Y7RUFFQSxPQUFPLElBQUk7QUFDYixDQUFDO0FBRUQsT0FBTyxJQUFNaUIsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBQyxLQUFBLEVBS0E7RUFBQSxJQUpqQkMsYUFBYSxHQUFBRCxLQUFBLENBQXJCRSxNQUFNO0lBQ05DLGtCQUFrQixHQUFBSCxLQUFBLENBQWxCRyxrQkFBa0I7SUFDbEJDLE9BQU8sR0FBQUosS0FBQSxDQUFQSSxPQUFPO0lBQUFDLFlBQUEsR0FBQUwsS0FBQSxDQUNQTSxNQUFNO0lBQU5BLE1BQU0sR0FBQUQsWUFBQSxjQUFHLEVBQUUsR0FBQUEsWUFBQTtFQUVYLElBQUFFLEtBQUEsR0FBYy9LLElBQUksQ0FBQyxDQUFDO0lBQVoyRyxDQUFDLEdBQUFvRSxLQUFBLENBQURwRSxDQUFDO0VBQ1QsSUFBTTBCLFFBQVEsR0FBR3BJLE9BQU8sQ0FBQyxDQUFDO0VBQzFCLElBQUErSyxpQkFBQSxHQWFJOUssZ0JBQWdCLENBQUMsQ0FBQztJQVpwQitLLE9BQU8sR0FBQUQsaUJBQUEsQ0FBUEMsT0FBTztJQUNQQyxVQUFVLEdBQUFGLGlCQUFBLENBQVZFLFVBQVU7SUFDVmxILE1BQU0sR0FBQWdILGlCQUFBLENBQU5oSCxNQUFNO0lBQ05tSCxTQUFTLEdBQUFILGlCQUFBLENBQVRHLFNBQVM7SUFDVEMsSUFBSSxHQUFBSixpQkFBQSxDQUFKSSxJQUFJO0lBQ0pDLE9BQU8sR0FBQUwsaUJBQUEsQ0FBUEssT0FBTztJQUNQQyxLQUFLLEdBQUFOLGlCQUFBLENBQUxNLEtBQUs7SUFDTEMsaUJBQWlCLEdBQUFQLGlCQUFBLENBQWpCTyxpQkFBaUI7SUFDakJDLGtCQUFrQixHQUFBUixpQkFBQSxDQUFsQlEsa0JBQWtCO0lBQ2xCQyxtQkFBbUIsR0FBQVQsaUJBQUEsQ0FBbkJTLG1CQUFtQjtJQUNuQnhJLFlBQVksR0FBQStILGlCQUFBLENBQVovSCxZQUFZO0lBQ1p5SSxlQUFlLEdBQUFWLGlCQUFBLENBQWZVLGVBQWU7RUFFakIsSUFBTUMsS0FBSyxHQUFHdkwsUUFBUSxDQUFDLENBQUM7RUFDeEIsSUFBQXdMLFlBQUEsR0FBMEJsTCxXQUFXLENBQUMsQ0FBQztJQUEvQm1MLGFBQWEsR0FBQUQsWUFBQSxDQUFiQyxhQUFhO0VBQ3JCLElBQUFDLG1CQUFBLEdBQXdCMUQsa0JBQWtCLENBQUNDLFFBQVEsQ0FBQztJQUE1Q0MsV0FBVyxHQUFBd0QsbUJBQUEsQ0FBWHhELFdBQVc7RUFDbkIsSUFBQXlELGtCQUFBLEdBQThCcEwsaUJBQWlCLENBQUMsQ0FBQztJQUF6Q3FMLGlCQUFpQixHQUFBRCxrQkFBQSxDQUFqQkMsaUJBQWlCO0VBRXpCLElBQU1DLGdCQUFnQixHQUFHeE0sTUFBTSxDQUFDSSxNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQ3pDLElBQU1xTSxtQkFBbUIsR0FBR3pNLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDO0VBQ3ZELElBQU0wTSxhQUFhLEdBQUcxTSxNQUFNLENBQUNnTCxhQUFhLElBQUk1SyxNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQ3ZELElBQU11TSxlQUFlLEdBQUd0SyxhQUFhLENBQUMsVUFBQXVLLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNELGVBQWU7RUFBQSxFQUFDO0VBQ3JFLElBQU1FLGFBQWEsR0FBRzdNLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDbkMsSUFBTThNLFdBQVcsR0FBRzlNLE1BQU0sQ0FBZ0IsRUFBRSxDQUFDO0VBQzdDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLElBQU0rTSxxQkFBcUIsR0FBRy9NLE1BQU0sQ0FHMUIsSUFBSSxDQUFDO0VBQ2Y7RUFDQSxJQUFNZ04sdUJBQXVCLEdBQUdoTixNQUFNLENBQThCLElBQUksQ0FBQztFQUN6RSxJQUFNaU4sZUFBZSxHQUFHak4sTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNyQyxJQUFNa04sWUFBWSxHQUFHbE4sTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNsQztFQUNBLElBQU1tTix5QkFBeUIsR0FBR25OLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDO0VBQzdEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRSxJQUFNb04scUJBQXFCLEdBQUdwTixNQUFNLENBQWdCLElBQUksQ0FBQztFQUN6RCxJQUFNcU4sZ0JBQWdCLEdBQUdyTixNQUFNLENBQWE7SUFBQSxPQUFNMkYsU0FBUztFQUFBLEVBQUM7RUFDNUQsSUFBQTJILFNBQUEsR0FBNENwTixRQUFRLENBQXlCLENBQUMsQ0FBQyxDQUFDO0lBQUFxTixVQUFBLEdBQUEvQyxjQUFBLENBQUE4QyxTQUFBO0lBQXpFRSxjQUFjLEdBQUFELFVBQUE7SUFBRUUsaUJBQWlCLEdBQUFGLFVBQUE7RUFDeEM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNFLElBQUFHLFVBQUEsR0FBOEN4TixRQUFRLENBQVN3TSxhQUFhLENBQUN4RCxPQUFPLENBQUM7SUFBQXlFLFVBQUEsR0FBQW5ELGNBQUEsQ0FBQWtELFVBQUE7SUFBOUVFLGVBQWUsR0FBQUQsVUFBQTtJQUFFRSxrQkFBa0IsR0FBQUYsVUFBQTtFQUMxQztFQUNBLElBQU1HLFlBQVksR0FBRzlOLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDakM7RUFDQSxJQUFNK04sc0JBQXNCLEdBQUcvTixNQUFNLENBQWdCLElBQUksQ0FBQztFQUUxRCxJQUFNZ08sb0JBQW9CLEdBQUdoTyxNQUFNLENBQUM4TCxpQkFBaUIsQ0FBQztFQUN0RCxJQUFNbUMscUJBQXFCLEdBQUdqTyxNQUFNLENBQUMrTCxrQkFBa0IsQ0FBQztFQUN4RCxJQUFNbUMsc0JBQXNCLEdBQUdsTyxNQUFNLENBQUNnTSxtQkFBbUIsQ0FBQztFQUMxRDtFQUNBLElBQU1tQyxVQUFVLEdBQUduTyxNQUFNLENBQUM7SUFBRXdELFlBQVksRUFBWkEsWUFBWTtJQUFFZ0ksT0FBTyxFQUFQQSxPQUFPO0lBQUVqSCxNQUFNLEVBQU5BLE1BQU07SUFBRW9ILElBQUksRUFBSkE7RUFBSyxDQUFDLENBQUM7RUFDbEV3QyxVQUFVLENBQUNqRixPQUFPLEdBQUc7SUFBRTFGLFlBQVksRUFBWkEsWUFBWTtJQUFFZ0ksT0FBTyxFQUFQQSxPQUFPO0lBQUVqSCxNQUFNLEVBQU5BLE1BQU07SUFBRW9ILElBQUksRUFBSkE7RUFBSyxDQUFDO0VBRTVEMUwsU0FBUyxDQUFDLFlBQU07SUFDZCtOLG9CQUFvQixDQUFDOUUsT0FBTyxHQUFHNEMsaUJBQWlCO0lBQ2hEbUMscUJBQXFCLENBQUMvRSxPQUFPLEdBQUc2QyxrQkFBa0I7SUFDbERtQyxzQkFBc0IsQ0FBQ2hGLE9BQU8sR0FBRzhDLG1CQUFtQjtFQUN0RCxDQUFDLEVBQUUsQ0FBQ0YsaUJBQWlCLEVBQUVDLGtCQUFrQixFQUFFQyxtQkFBbUIsQ0FBQyxDQUFDO0VBRWhFLElBQUFvQyxnQkFBQSxHQUNFL04sZUFBZSxDQUFDO01BQ2Q0SyxNQUFNLEVBQUVELGFBQWEsSUFBSTBCLGFBQWEsQ0FBQ3hELE9BQU87TUFDOUNMLFdBQVcsRUFBWEEsV0FBVztNQUNYcUMsa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEJDLE9BQU8sRUFBUEEsT0FBTztNQUNQRSxNQUFNLEVBQU5BO0lBQ0YsQ0FBQyxDQUFDO0lBUElnRCxlQUFlLEdBQUFELGdCQUFBLENBQWZDLGVBQWU7SUFBRW5FLFFBQVEsR0FBQWtFLGdCQUFBLENBQVJsRSxRQUFRO0lBQUVvRSxxQkFBcUIsR0FBQUYsZ0JBQUEsQ0FBckJFLHFCQUFxQjtJQUFFQyxZQUFZLEdBQUFILGdCQUFBLENBQVpHLFlBQVk7SUFBRUMsVUFBVSxHQUFBSixnQkFBQSxDQUFWSSxVQUFVO0lBQUVDLGFBQWEsR0FBQUwsZ0JBQUEsQ0FBYkssYUFBYTtJQUFFQyxZQUFZLEdBQUFOLGdCQUFBLENBQVpNLFlBQVk7RUFTL0c1QixXQUFXLENBQUM1RCxPQUFPLEdBQUdnQixRQUFROztFQUU5QjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsSUFBTXlFLGVBQWUsR0FBRzVPLFdBQVcsQ0FDakMsVUFBQzhKLFNBQWlCLEVBQUVOLE9BQW9CLEVBQUs7SUFDM0M3SCxnQkFBZ0IsQ0FBQ3VJLFFBQVEsQ0FBQyxDQUFDLENBQUN1RSxVQUFVLENBQUMzRSxTQUFTLEVBQUVOLE9BQU8sQ0FBQztJQUMxRCxJQUFJdUUsWUFBWSxDQUFDNUUsT0FBTyxJQUFJcEgsVUFBVSxDQUFDOE0sRUFBRSxDQUFDL0UsU0FBUyxDQUFDLEVBQUU7TUFDcEQyRSxVQUFVLENBQUNqRixPQUFPLENBQUM7SUFDckI7RUFDRixDQUFDLEVBQ0QsQ0FBQ2lGLFVBQVUsQ0FDYixDQUFDO0VBRUQsSUFBTUssZUFBZSxHQUFHOU8sV0FBVyxDQUNqQyxVQUFDOEosU0FBaUIsRUFBRW5ILFNBQWlCLEVBQUs7SUFDeENoQixnQkFBZ0IsQ0FBQ3VJLFFBQVEsQ0FBQyxDQUFDLENBQUN3RSxhQUFhLENBQUM1RSxTQUFTLEVBQUVuSCxTQUFTLENBQUM7SUFDL0QsSUFBSW9MLFlBQVksQ0FBQzVFLE9BQU8sSUFBSXBILFVBQVUsQ0FBQzhNLEVBQUUsQ0FBQy9FLFNBQVMsQ0FBQyxFQUFFO01BQ3BENEUsYUFBYSxDQUFDL0wsU0FBUyxDQUFDO0lBQzFCO0VBQ0YsQ0FBQyxFQUNELENBQUMrTCxhQUFhLENBQ2hCLENBQUM7O0VBRUQ7RUFDQSxJQUFNSyxnQkFBZ0IsR0FBRy9PLFdBQVcsQ0FBQyxVQUFDOEosU0FBaUIsRUFBSztJQUMxRG5JLGdCQUFnQixDQUFDdUksUUFBUSxDQUFDLENBQUMsQ0FBQzhFLFdBQVcsQ0FBQ2xGLFNBQVMsRUFBRSxFQUFFLENBQUM7RUFDeEQsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7RUFFTjtFQUNBO0VBQ0E7RUFDQTVKLFNBQVMsQ0FBQyxZQUFNO0lBQ2Q2QixVQUFVLENBQUNrTixHQUFHLENBQUNwQixlQUFlLENBQUM7RUFDakMsQ0FBQyxFQUFFLENBQUNBLGVBQWUsQ0FBQyxDQUFDO0VBRXJCM04sU0FBUyxDQUFDLFlBQU07SUFDZDZOLFlBQVksQ0FBQzVFLE9BQU8sR0FBRyxJQUFJO0lBQzNCLE9BQU8sWUFBTTtNQUNYNEUsWUFBWSxDQUFDNUUsT0FBTyxHQUFHLEtBQUs7TUFDNUIsSUFBSXBILFVBQVUsQ0FBQzhNLEVBQUUsQ0FBQ2xDLGFBQWEsQ0FBQ3hELE9BQU8sQ0FBQyxFQUFFO1FBQ3hDcEgsVUFBVSxDQUFDa04sR0FBRyxDQUFDLElBQUksQ0FBQztNQUN0QjtJQUNGLENBQUM7RUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDOztFQUVOO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxJQUFNQyxpQkFBaUIsR0FBR3ROLGNBQWMsQ0FBQ2lNLGVBQWUsQ0FBQztFQUN6RDNOLFNBQVMsQ0FBQyxZQUFNO0lBQUEsSUFBQWlQLHFCQUFBO0lBQ2QsSUFBTUMsTUFBTSxHQUFHRixpQkFBaUIsYUFBakJBLGlCQUFpQix1QkFBakJBLGlCQUFpQixDQUFFRSxNQUFNO0lBQ3hDLElBQUksQ0FBQ0EsTUFBTSxFQUFFO0lBQ2IsSUFBTUMsVUFBVSxHQUFHRCxNQUFNLEtBQUssVUFBVSxJQUFJQSxNQUFNLEtBQUssT0FBTyxJQUFJQSxNQUFNLEtBQUssV0FBVztJQUN4RixJQUFJLENBQUNDLFVBQVUsRUFBRTtJQUNqQixJQUFNQyxHQUFHLE1BQUFySyxNQUFBLENBQU00SSxlQUFlLE9BQUE1SSxNQUFBLENBQUltSyxNQUFNLE9BQUFuSyxNQUFBLEVBQUFrSyxxQkFBQSxHQUFJRCxpQkFBaUIsYUFBakJBLGlCQUFpQix1QkFBakJBLGlCQUFpQixDQUFFSyxVQUFVLGNBQUFKLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksRUFBRSxDQUFFO0lBQ2pGLElBQUluQixzQkFBc0IsQ0FBQzdFLE9BQU8sS0FBS21HLEdBQUcsRUFBRTtJQUM1Q3RCLHNCQUFzQixDQUFDN0UsT0FBTyxHQUFHbUcsR0FBRztJQUVwQyxJQUFNRSxJQUFJLEdBQUc3TixnQkFBZ0IsQ0FBQ3VJLFFBQVEsQ0FBQyxDQUFDLENBQUN1RixXQUFXLENBQUM1QixlQUFlLENBQUM7SUFDckUsSUFBTTZCLG1CQUFtQixHQUFHRixJQUFJLENBQUM1RixJQUFJLENBQUMsVUFBQStGLEdBQUc7TUFBQSxPQUFJeE4sK0JBQStCLENBQUN3TixHQUFHLENBQUM3TSxFQUFFLENBQUM7SUFBQSxFQUFDO0lBQ3JGLElBQUk0TSxtQkFBbUIsRUFBRTtNQUN2QmxCLFlBQVksQ0FBQztRQUFFb0IsS0FBSyxFQUFFO01BQUssQ0FBQyxDQUFDO0lBQy9CO0VBQ0YsQ0FBQyxFQUFFLENBQUNWLGlCQUFpQixhQUFqQkEsaUJBQWlCLHVCQUFqQkEsaUJBQWlCLENBQUVFLE1BQU0sRUFBRUYsaUJBQWlCLGFBQWpCQSxpQkFBaUIsdUJBQWpCQSxpQkFBaUIsQ0FBRUssVUFBVSxFQUFFMUIsZUFBZSxFQUFFVyxZQUFZLENBQUMsQ0FBQztFQUU3RnRPLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTTJQLFdBQVcsR0FBRyxJQUFJQyxXQUFXLENBQUMsK0JBQStCLEVBQUU7TUFDbkVDLE1BQU0sRUFBRTtRQUFFekIsZUFBZSxFQUFmQTtNQUFnQjtJQUM1QixDQUFDLENBQUM7SUFDRjBCLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDSixXQUFXLENBQUM7RUFDckMsQ0FBQyxFQUFFLENBQUN2QixlQUFlLENBQUMsQ0FBQztFQUVyQixJQUFNNEIsd0JBQXdCLEdBQUdqUSxNQUFNLENBQTRCZ0wsYUFBYSxDQUFDO0VBRWpGL0ssU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNaVEscUJBQXFCLEdBQUdELHdCQUF3QixDQUFDL0csT0FBTztJQUM5RCtHLHdCQUF3QixDQUFDL0csT0FBTyxHQUFHOEIsYUFBYTs7SUFFaEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksQ0FBQ0EsYUFBYSxJQUFJa0YscUJBQXFCLEVBQUU7TUFDM0N4RCxhQUFhLENBQUN4RCxPQUFPLEdBQUc5SSxNQUFNLENBQUMsQ0FBQztNQUNoQ3lOLGtCQUFrQixDQUFDbkIsYUFBYSxDQUFDeEQsT0FBTyxDQUFDO01BQ3pDc0QsZ0JBQWdCLENBQUN0RCxPQUFPLEdBQUc5SSxNQUFNLENBQUMsQ0FBQztNQUNuQ3FNLG1CQUFtQixDQUFDdkQsT0FBTyxHQUFHLElBQUk7TUFDbEMyRCxhQUFhLENBQUMzRCxPQUFPLEdBQUcsS0FBSztNQUM3QitELGVBQWUsQ0FBQy9ELE9BQU8sR0FBRyxLQUFLO01BQy9CaUUseUJBQXlCLENBQUNqRSxPQUFPLEdBQUcsSUFBSTtNQUN4Q2tFLHFCQUFxQixDQUFDbEUsT0FBTyxHQUFHLElBQUk7TUFDcEM7SUFDRjtJQUVBLElBQUk4QixhQUFhLElBQUlBLGFBQWEsS0FBSzBCLGFBQWEsQ0FBQ3hELE9BQU8sRUFBRTtNQUM1RDtNQUNBO01BQ0E7TUFDQTs7TUFFQTtNQUNBdUMsVUFBVSxDQUFDLElBQUksQ0FBQztNQUNoQkMsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRyxJQUFJLENBQUM7TUFDakJPLGVBQWUsQ0FBQyxJQUFJLENBQUM7TUFDckJMLE9BQU8sQ0FBQyxJQUFJLENBQUM7TUFFYmMsYUFBYSxDQUFDeEQsT0FBTyxHQUFHOEIsYUFBYTtNQUNyQzZDLGtCQUFrQixDQUFDN0MsYUFBYSxDQUFDO01BQ2pDd0IsZ0JBQWdCLENBQUN0RCxPQUFPLEdBQUc5SSxNQUFNLENBQUMsQ0FBQztNQUNuQ3FNLG1CQUFtQixDQUFDdkQsT0FBTyxHQUFHLElBQUk7TUFDbEMyRCxhQUFhLENBQUMzRCxPQUFPLEdBQUcsS0FBSztNQUM3QjtNQUNBO01BQ0E7TUFDQStELGVBQWUsQ0FBQy9ELE9BQU8sR0FBR3RILG9CQUFvQixDQUFDdU8sUUFBUSxDQUFDbkYsYUFBYSxDQUFDO01BQ3RFbUMseUJBQXlCLENBQUNqRSxPQUFPLEdBQUcsSUFBSTtNQUN4Q2tFLHFCQUFxQixDQUFDbEUsT0FBTyxHQUFHLElBQUk7O01BRXBDO0lBQ0Y7RUFDRixDQUFDLEVBQUUsQ0FBQzhCLGFBQWEsRUFBRVEsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRU8sZUFBZSxFQUFFTCxPQUFPLENBQUMsQ0FBQztFQUU3RTNMLFNBQVMsQ0FBQyxZQUFNO0lBQ2QwTSxlQUFlLENBQUMzQixhQUFhLElBQUksSUFBSSxDQUFDO0VBQ3hDLENBQUMsRUFBRSxDQUFDQSxhQUFhLEVBQUUyQixlQUFlLENBQUMsQ0FBQztFQUVwQyxJQUFNeUQsaUJBQWlCLEdBQUdyUSxXQUFXLENBQ25DLFVBQUNzUSxHQUFrQixFQUFFQyxZQUFxQixFQUFFQyxlQUF3QixFQUFLO0lBQUEsSUFBQUMscUJBQUEsRUFBQUMsc0JBQUE7SUFDdkUsSUFBUTVHLFNBQVMsR0FBK0J3RyxHQUFHLENBQTNDeEcsU0FBUztNQUFFbkgsU0FBUyxHQUFvQjJOLEdBQUcsQ0FBaEMzTixTQUFTO01BQUVnTyxhQUFhLEdBQUtMLEdBQUcsQ0FBckJLLGFBQWE7SUFDM0MsSUFBTVAsUUFBUSxHQUFHck8sVUFBVSxDQUFDOE0sRUFBRSxDQUFDL0UsU0FBUyxDQUFDO0lBRXpDcEksb0JBQW9CLENBQUNrUCxLQUFLLENBQUM5RyxTQUFTLENBQUM7SUFDckNnRixlQUFlLENBQUNoRixTQUFTLEVBQUU2RyxhQUFhLENBQUM7SUFFekMsSUFBSVAsUUFBUSxFQUFFO01BQ1o5QyxnQkFBZ0IsQ0FBQ25FLE9BQU8sQ0FBQyxDQUFDO01BQzFCaUUseUJBQXlCLENBQUNqRSxPQUFPLEdBQUcsSUFBSTtNQUN4Q2tFLHFCQUFxQixDQUFDbEUsT0FBTyxHQUFHLElBQUk7TUFDcEMrRCxlQUFlLENBQUMvRCxPQUFPLEdBQUcsS0FBSztJQUNqQztJQUVBLElBQU0wSCxjQUFjLEdBQUdOLFlBQVksS0FBSywrREFBK0Q7SUFDdkcsSUFBTU8sZUFBZSxHQUNuQlAsWUFBWSxLQUFLLHVCQUF1QixLQUFJQyxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRWxMLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztJQUM3RixJQUFNa0UsT0FBTyxHQUFHcUgsY0FBYyxHQUMxQjFKLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxHQUMzQjJKLGVBQWUsR0FDYjNKLENBQUMsQ0FBQyx5QkFBeUIsRUFBRTtNQUFFNEosSUFBSSxHQUFBTixxQkFBQSxHQUFFRCxlQUFlLGFBQWZBLGVBQWUsZ0JBQUFFLHNCQUFBLEdBQWZGLGVBQWUsQ0FBRTlILEtBQUssQ0FBQyxjQUFjLENBQUMsY0FBQWdJLHNCQUFBLHVCQUF0Q0Esc0JBQUEsQ0FBeUMsQ0FBQyxDQUFDLGNBQUFELHFCQUFBLGNBQUFBLHFCQUFBLEdBQUk7SUFBRyxDQUFDLENBQUMsR0FDekZ0SixDQUFDLENBQUMsWUFBWSxDQUFDO0lBRXJCeUgsZUFBZSxDQUFDOUUsU0FBUyxFQUFBMUYsYUFBQSxDQUFBQSxhQUFBO01BQ3ZCdEIsRUFBRSxZQUFBbUMsTUFBQSxDQUFZdEMsU0FBUyxDQUFFO01BQ3pCNkcsT0FBTyxFQUFQQSxPQUFPO01BQ1B3SCxPQUFPLEVBQUU7SUFBSSxHQUVULENBQUNILGNBQWMsSUFBSSxDQUFDQyxlQUFlLEdBQUc7TUFBRUcsV0FBVyxFQUFFLENBQUM5SixDQUFDLENBQUMsWUFBWSxDQUFDO0lBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUNqRitKLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsQ0FBQztNQUNoQkMsSUFBSSxFQUFFO1FBQUV0TyxFQUFFLEVBQUUsV0FBVztRQUFFd0IsSUFBSSxFQUFFO01BQVksQ0FBQztNQUM1Q3lCLElBQUksRUFBRWhGLGVBQWUsQ0FBQ3NRO0lBQVMsRUFDaEMsQ0FBQztJQUNGdEMsZ0JBQWdCLENBQUNqRixTQUFTLENBQUM7SUFFM0IsSUFBSSxDQUFDc0csUUFBUSxFQUFFO01BQ2IvTixrQkFBa0IsQ0FBQyxDQUFDLENBQUNpUCxnQkFBZ0IsQ0FBQ3hILFNBQVMsQ0FBQztNQUNoRDlILGlDQUFpQyxDQUFDOEgsU0FBUyxFQUFFLE9BQU8sQ0FBQztJQUN2RDtFQUNGLENBQUMsRUFDRCxDQUFDOEUsZUFBZSxFQUFFRSxlQUFlLEVBQUVDLGdCQUFnQixFQUFFNUgsQ0FBQyxDQUN4RCxDQUFDO0VBRUQsSUFBTW9LLGtCQUFrQixHQUFHdlIsV0FBVyxDQUNwQyxVQUFDc1EsR0FBa0IsRUFBRWtCLE9BQWUsRUFBSztJQUN2QyxJQUFRMUgsU0FBUyxHQUFvQndHLEdBQUcsQ0FBaEN4RyxTQUFTO01BQUU2RyxhQUFhLEdBQUtMLEdBQUcsQ0FBckJLLGFBQWE7O0lBRWhDO0lBQ0E7SUFDQTtJQUNBLElBQU1jLGlCQUFpQixHQUFHOVAsZ0JBQWdCLENBQ3ZDdUksUUFBUSxDQUFDLENBQUMsQ0FDVnVGLFdBQVcsQ0FBQzNGLFNBQVMsQ0FBQyxDQUN0QkYsSUFBSSxDQUFDLFVBQUErRixHQUFHO01BQUEsT0FBSUEsR0FBRyxDQUFDN00sRUFBRSxLQUFLNk4sYUFBYTtJQUFBLEVBQUM7SUFFeEMsSUFBSSxDQUFDYyxpQkFBaUIsRUFBRTtNQUN0Qi9QLG9CQUFvQixDQUFDZ1EsS0FBSyxDQUFDNUgsU0FBUyxFQUFFNkcsYUFBYSxDQUFDO01BQ3BEL0IsZUFBZSxDQUFDOUUsU0FBUyxFQUFFO1FBQ3pCaEgsRUFBRSxFQUFFNk4sYUFBYTtRQUNqQm5ILE9BQU8sRUFBRSxFQUFFO1FBQ1gwSCxJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUM7UUFDaEJDLElBQUksRUFBRTtVQUFFdE8sRUFBRSxFQUFFLFdBQVc7VUFBRXdCLElBQUksRUFBRTtRQUFZLENBQUM7UUFDNUN5QixJQUFJLEVBQUVoRixlQUFlLENBQUNzUTtNQUN4QixDQUFDLENBQUM7SUFDSjtJQUVBLElBQUl0UCxVQUFVLENBQUM4TSxFQUFFLENBQUMvRSxTQUFTLENBQUMsRUFBRTtNQUM1QnNELHlCQUF5QixDQUFDakUsT0FBTyxHQUFHd0gsYUFBYTtNQUNqRHRELHFCQUFxQixDQUFDbEUsT0FBTyxHQUFHVyxTQUFTO0lBQzNDO0lBRUFwSSxvQkFBb0IsQ0FBQ2lRLE9BQU8sQ0FBQzdILFNBQVMsRUFBRTZHLGFBQWEsRUFBRWEsT0FBTyxDQUFDO0VBQ2pFLENBQUMsRUFDRCxDQUFDNUMsZUFBZSxDQUNsQixDQUFDO0VBRUQsSUFBTWdELGtCQUFrQixHQUFHNVIsV0FBVztJQUFBLElBQUE2UixLQUFBLEdBQUFDLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FDcEMsU0FBQUMsUUFDRTNCLEdBQWtCLEVBQ2xCa0IsT0FBZSxFQUNmVSxPQUFZLEVBQ1pDLGVBQXVCLEVBQ3ZCek4sY0FBNkIsRUFDN0J1TSxXQUE2QixFQUM3Qm1CLGdCQUFnQyxFQUVoQ0MsZ0JBQXNCLEVBQ3RCQyxTQUF3QztNQUFBLElBQUFDLGtCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLG9CQUFBLEVBQUFDLGtCQUFBO01BQUEsSUFBQTdJLFNBQUEsRUFBQTZHLGFBQUEsRUFBQVAsUUFBQSxFQUFBd0MsYUFBQSxFQUFBdFAsV0FBQSxFQUFBdVAsY0FBQSxFQUFBQyxVQUFBLEVBQUFDLFlBQUEsRUFBQUMsT0FBQSxFQUFBQyxZQUFBLEVBQUFDLGVBQUEsRUFBQUMsNEJBQUEsRUFBQUMsbUJBQUEsRUFBQUMsZUFBQSxFQUFBQyxpQkFBQSxFQUFBck4sY0FBQSxFQUFBc04sZUFBQSxFQUFBQyxXQUFBLEVBQUFDLGFBQUEsRUFBQUMsc0JBQUEsRUFBQUMsK0JBQUEsRUFBQUMsbUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsb0JBQUEsRUFBQUMsaUJBQUEsRUFBQUMsVUFBQSxFQUFBQyxRQUFBLEVBQUFDLGVBQUEsRUFBQUMsZUFBQSxFQUFBQyx5QkFBQSxFQUFBQyx1QkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxPQUFBLEVBQUFDLEdBQUEsRUFBQUMsVUFBQSxFQUFBQyxrQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxTQUFBLEVBQUFDLGNBQUEsRUFBQUMsZ0JBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsZUFBQSxFQUFBQyxjQUFBLEVBQUFDLGlCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLGVBQUEsRUFBQUMsNEJBQUEsRUFBQUMsS0FBQSxFQUFBQyxxQkFBQSxFQUFBQyxrQkFBQSxFQUFBQyxlQUFBLEVBQUFDLGtCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGNBQUEsRUFBQTFHLFdBQUE7TUFBQSxPQUFBa0MsbUJBQUEsQ0FBQXlFLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1VBQUE7WUFFaEM3TSxTQUFTLEdBQW9Cd0csR0FBRyxDQUFoQ3hHLFNBQVMsRUFBRTZHLGFBQWEsR0FBS0wsR0FBRyxDQUFyQkssYUFBYTtZQUMxQlAsUUFBUSxHQUFHck8sVUFBVSxDQUFDOE0sRUFBRSxDQUFDL0UsU0FBUyxDQUFDO1lBRW5DOEksYUFBYSxHQUFHakMsYUFBYTtZQUNuQ2pQLG9CQUFvQixDQUFDa1AsS0FBSyxDQUFDOUcsU0FBUyxDQUFDO1lBQ3JDZ0YsZUFBZSxDQUFDaEYsU0FBUyxFQUFFOEksYUFBYSxDQUFDO1lBQ25DdFAsV0FBVyxHQUFHbUIsNkJBQTZCLENBQUNDLGNBQWMsQ0FBQyxFQUVqRTtZQUNBO1lBQ01tTyxjQUFjLGFBQUE1TixNQUFBLENBQWFrTixlQUFlO1lBQzFDVyxVQUFVLElBQUFQLGtCQUFBLEdBQUc5UCxpQkFBaUIsQ0FBQzZQLFNBQVMsQ0FBQyxjQUFBQyxrQkFBQSxjQUFBQSxrQkFBQSxHQUFJN1AsaUJBQWlCLENBQUNrUSxhQUFhLENBQUM7WUFDbkZyUSxjQUFjLENBQUNxVSxNQUFNLENBQUNoRSxhQUFhLEVBQUVDLGNBQWMsQ0FBQzs7WUFFcEQ7WUFDQTtZQUNBO1lBQUEsSUFDS3pDLFFBQVE7Y0FBQXFHLFFBQUEsQ0FBQUUsSUFBQTtjQUFBO1lBQUE7WUFDWC9ILGVBQWUsQ0FBQzlFLFNBQVMsRUFBQTFGLGFBQUEsQ0FBQUEsYUFBQTtjQUN2QnRCLEVBQUUsRUFBRStQLGNBQWM7Y0FDbEJySixPQUFPLEVBQUVnSSxPQUFPO2NBQ2hCTixJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUM7Y0FDaEJDLElBQUksRUFBRTtnQkFBRXRPLEVBQUUsRUFBRSxXQUFXO2dCQUFFd0IsSUFBSSxFQUFFO2NBQVksQ0FBQztjQUM1Q3lCLElBQUksRUFBRWhGLGVBQWUsQ0FBQ3NRLFNBQVM7Y0FDL0JhLE9BQU8sRUFBUEE7WUFBTyxHQUNINU8sV0FBVyxDQUFDdVQsTUFBTSxHQUFHLENBQUMsR0FBRztjQUFFdlQsV0FBVyxFQUFYQTtZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Y0FDakQ2TyxlQUFlLEVBQWZBLGVBQWU7Y0FDZmxCLFdBQVcsRUFBRUEsV0FBVyxJQUFJLEVBQUU7Y0FDOUJxQixTQUFTLEVBQUVRO1lBQVUsRUFDdEIsQ0FBQztZQUNGL0QsZ0JBQWdCLENBQUNqRixTQUFTLENBQUM7WUFDM0J6SCxrQkFBa0IsQ0FBQyxDQUFDLENBQUNpUCxnQkFBZ0IsQ0FBQ3hILFNBQVMsQ0FBQztZQUNoRDlILGlDQUFpQyxDQUFDOEgsU0FBUyxFQUFFLFVBQVUsQ0FBQztZQUFBLE9BQUEyTSxRQUFBLENBQUFLLE1BQUE7VUFBQTtZQUkxRDFKLHlCQUF5QixDQUFDakUsT0FBTyxHQUFHLElBQUk7WUFDeENrRSxxQkFBcUIsQ0FBQ2xFLE9BQU8sR0FBRyxJQUFJO1lBQ3BDOEQsdUJBQXVCLENBQUM5RCxPQUFPLEdBQUcsSUFBSTs7WUFFdEM7WUFDTTRKLFlBQVksR0FBRyxJQUFJZ0UsTUFBTSxDQUFDM1Ysc0JBQXNCLEVBQUUsR0FBRyxDQUFDO1lBQ3RENFIsT0FBTyxHQUFBZ0Usa0JBQUEsQ0FBT3hGLE9BQU8sQ0FBQ3lGLFFBQVEsQ0FBQ2xFLFlBQVksQ0FBQztZQUU5Q0UsWUFBWSxHQUFHekIsT0FBTztZQUNwQjBCLGVBQWUsR0FBR25HLFdBQVcsQ0FBQzVELE9BQU8sQ0FBQ3hFLE1BQU0sQ0FBQyxVQUFBdVMsQ0FBQztjQUFBLE9BQUlBLENBQUMsQ0FBQ3BVLEVBQUUsS0FBSzhQLGFBQWE7WUFBQSxFQUFDLENBQUN1RSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEZoRSw0QkFBNEIsR0FBRyxDQUFBRCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRXhKLFFBQVEsS0FBSSxJQUFJO1lBQ2hFMEosbUJBQW1CLEdBQUcsQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxDQUFDO1lBQ3pFQyxlQUFlLEdBQUcsQ0FDdEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsbUJBQW1CLENBQ3BCO1lBQ0tDLGlCQUFpQixHQUFHLENBQUMsYUFBYSxFQUFFLG9CQUFvQixDQUFDO1lBQ3pEck4sY0FBYyxHQUFHLENBQUFpTixlQUFlLGFBQWZBLGVBQWUsZ0JBQUFWLHFCQUFBLEdBQWZVLGVBQWUsQ0FBRXhKLFFBQVEsY0FBQThJLHFCQUFBLHVCQUF6QkEscUJBQUEsQ0FBMkI3SSxlQUFlLEtBQUksRUFBRTtZQUNqRTRKLGVBQWUsR0FDbkJKLDRCQUE0QixJQUM1QmxOLGNBQWMsQ0FBQzJELElBQUksQ0FBQyxVQUFDakQsTUFBVztjQUFBLE9BQUt5TSxtQkFBbUIsQ0FBQzlOLFFBQVEsQ0FBQ3FCLE1BQU0sQ0FBQ1ksU0FBUyxDQUFDO1lBQUEsRUFBQztZQUNoRmlNLFdBQVcsR0FDZkwsNEJBQTRCLElBQUlsTixjQUFjLENBQUMyRCxJQUFJLENBQUMsVUFBQ2pELE1BQVc7Y0FBQSxPQUFLME0sZUFBZSxDQUFDL04sUUFBUSxDQUFDcUIsTUFBTSxDQUFDWSxTQUFTLENBQUM7WUFBQSxFQUFDO1lBQzVHa00sYUFBYSxHQUNqQk4sNEJBQTRCLElBQzVCbE4sY0FBYyxDQUFDMkQsSUFBSSxDQUFDLFVBQUNqRCxNQUFXO2NBQUEsT0FBSzJNLGlCQUFpQixDQUFDaE8sUUFBUSxDQUFDcUIsTUFBTSxDQUFDWSxTQUFTLENBQUM7WUFBQSxFQUFDO1lBQzlFbU0sc0JBQXNCLEdBQzFCUCw0QkFBNEIsSUFDNUIsQ0FBQUQsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVrRSxjQUFjLE1BQUssVUFBVSxJQUM5Q25SLGNBQWMsQ0FBQzJELElBQUksQ0FBQyxVQUFDakQsTUFBVztjQUFBLE9BQUtBLE1BQU0sQ0FBQ1ksU0FBUyxLQUFLLGNBQWM7WUFBQSxFQUFDO1lBQ3JFb00sK0JBQStCLEdBQ25DUiw0QkFBNEIsSUFDNUIsQ0FBQUQsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVrRSxjQUFjLE1BQUssVUFBVSxJQUM5Q25SLGNBQWMsQ0FBQzJELElBQUksQ0FBQyxVQUFDakQsTUFBVztjQUFBLE9BQUssQ0FBQ0EsTUFBTSxDQUFDWSxTQUFTLElBQUksRUFBRSxFQUFFUyxXQUFXLENBQUMsQ0FBQyxLQUFLLHdCQUF3QjtZQUFBLEVBQUM7WUFFM0csSUFBSTBMLHNCQUFzQixJQUFJMkQsTUFBTSxDQUFDQyx3Q0FBd0MsSUFBSWxGLGdCQUFnQixhQUFoQkEsZ0JBQWdCLGVBQWhCQSxnQkFBZ0IsQ0FBRXBOLElBQUksQ0FBQyxDQUFDLEVBQUU7Y0FDekc0TyxtQkFBbUIsR0FBRztnQkFBRTFMLE9BQU8sRUFBRWtLLGdCQUFnQixDQUFDcE4sSUFBSSxDQUFDO2NBQUUsQ0FBQztZQUM1RCxDQUFDLE1BQU0sSUFDTDJPLCtCQUErQixJQUMvQjBELE1BQU0sQ0FBQ0Msd0NBQXdDLEtBQzlDbEYsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsZUFBaEJBLGdCQUFnQixDQUFFcE4sSUFBSSxDQUFDLENBQUMsSUFDdkJtRCwwQ0FBMEMsQ0FBQ2xDLGNBQWMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLEVBQ3ZGO2NBQ000TixpQkFBaUIsR0FDckIsQ0FBQXpCLGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUVwTixJQUFJLENBQUMsQ0FBQyxLQUN4Qm1ELDBDQUEwQyxDQUFDbEMsY0FBYyxFQUFFLHdCQUF3QixDQUFDO2NBQ3RGMk4sbUJBQW1CLEdBQUc7Z0JBQ3BCMUwsT0FBTyxFQUFFMkw7Y0FDWCxDQUFDO1lBQ0g7WUFFQSxJQUFJSCxzQkFBc0IsRUFBRTtjQUMxQnZILEtBQUssQ0FBQ3hMLE1BQU0sQ0FBQzRXLGdCQUFnQixFQUFBblQsYUFBQTtnQkFDM0JvVCxVQUFVLEVBQUUvVix5QkFBeUIsQ0FBQ3FLLEtBQUssQ0FBQztnQkFDNUMyTCxXQUFXLEVBQUVqVyx1QkFBdUIsQ0FBQ3lFLGNBQWMsQ0FBQztnQkFDcER5UixRQUFRLEVBQUUsUUFBUTtnQkFDbEJDLE1BQU0sRUFBRTtjQUFjLEdBQ2xCdkYsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsZUFBaEJBLGdCQUFnQixDQUFFcE4sSUFBSSxDQUFDLENBQUMsR0FBRztnQkFBRTRTLGdCQUFnQixFQUFFeEYsZ0JBQWdCLENBQUNwTixJQUFJLENBQUM7Y0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2xGLENBQUM7WUFDSjtZQUVNOE8sb0JBQW9CLEdBQ3hCWCw0QkFBNEIsSUFDNUIsQ0FBQUQsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVrRSxjQUFjLE1BQUssVUFBVSxJQUM5Q25SLGNBQWMsQ0FBQzJELElBQUksQ0FBQyxVQUFDakQsTUFBVztjQUFBLE9BQUssQ0FBQ0EsTUFBTSxDQUFDWSxTQUFTLElBQUksRUFBRSxFQUFFUyxXQUFXLENBQUMsQ0FBQyxLQUFLLFlBQVk7WUFBQSxFQUFDO1lBRy9GLElBQUk4TCxvQkFBb0IsRUFBRTtjQUNsQkUsVUFBVSxHQUFHNUIsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRXBOLElBQUksQ0FBQyxDQUFDO2NBQ3JDaVAsUUFBUSxHQUFHdE0seUNBQXlDLENBQUMxQixjQUFjLENBQUM7Y0FDcEVpTyxlQUFlLEdBQUdGLFVBQVUsSUFBSUMsUUFBUTtjQUM5QyxJQUFJQyxlQUFlLEVBQUU7Z0JBQ25CSCxpQkFBaUIsR0FBRztrQkFBRTdMLE9BQU8sRUFBRWdNO2dCQUFnQixDQUFDO2NBQ2xEO1lBQ0Y7WUFFTUMsZUFBZSxHQUFHbkIsT0FBTyxDQUFDbE8sR0FBRyxDQUFDLFVBQUE0RCxLQUFLO2NBQUEsT0FBSXBDLFFBQVEsQ0FBQ29DLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBQSxFQUFDO1lBQzlEMEwseUJBQXlCLEdBQUc5TSxzQ0FBc0MsQ0FBQ3JCLGNBQWMsQ0FBQztZQUNsRm9PLHVCQUF1QixHQUMzQlosYUFBYSxJQUFJVSxlQUFlLENBQUMwQyxNQUFNLEtBQUssQ0FBQyxJQUFJekMseUJBQXlCLENBQUN5QyxNQUFNLEtBQUssQ0FBQyxHQUNuRnRPLHVDQUF1QyxDQUFDaUosT0FBTyxDQUFDLEdBQ2hELEVBQUU7WUFDRjhDLG1CQUFtQixHQUN2QkgsZUFBZSxDQUFDMEMsTUFBTSxHQUFHLENBQUMsR0FDdEIxQyxlQUFlLEdBQ2ZDLHlCQUF5QixDQUFDeUMsTUFBTSxHQUFHLENBQUMsR0FDbEN6Qyx5QkFBeUIsR0FDekJDLHVCQUF1QjtZQUV6QkUsbUJBQW1CLEdBQ3ZCcEIsNEJBQTRCLEtBQzNCSSxlQUFlLElBQUlDLFdBQVcsSUFBSUMsYUFBYSxDQUFDLElBQ2pEYSxtQkFBbUIsQ0FBQ3VDLE1BQU0sR0FBRyxDQUFDO1lBQUEsS0FFNUJ0QyxtQkFBbUI7Y0FBQWtDLFFBQUEsQ0FBQUUsSUFBQTtjQUFBO1lBQUE7WUFDZm5DLE9BQU8sR0FBR0YsbUJBQW1CO1lBQUEsTUFDL0J0QixPQUFPLENBQUM2RCxNQUFNLEdBQUcsQ0FBQztjQUFBSixRQUFBLENBQUFFLElBQUE7Y0FBQTtZQUFBO1lBQUFGLFFBQUEsQ0FBQUUsSUFBQTtZQUFBLE9BQ0ZuSyxpQkFBaUIsQ0FBQ2dJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFBO1lBQXpDQyxHQUFHLEdBQUFnQyxRQUFBLENBQUFvQixJQUFBO1lBQ0huRCxVQUFVLEdBQUdELEdBQUcsT0FBQXhQLE1BQUEsQ0FBT3dQLEdBQUcsSUFBSyxTQUFTO1lBQzlDeEIsWUFBWSxHQUFHekIsT0FBTyxDQUFDc0csT0FBTyxDQUFDL0UsWUFBWSxFQUFFLFVBQUFnRixHQUFHO2NBQUEsT0FDOUNBLEdBQUcsQ0FBQ0QsT0FBTyxDQUFDLHlEQUF5RCxFQUFFcEQsVUFBVSxDQUFDO1lBQUEsQ0FDcEYsQ0FBQztVQUFBO1lBR0dDLGtCQUFrQixHQUFHNUgsV0FBVyxDQUFDNUQsT0FBTyxDQUFDeEUsTUFBTSxDQUFDLFVBQUFnTCxHQUFHO2NBQUEsT0FBSUEsR0FBRyxDQUFDL0wsU0FBUztZQUFBLEVBQUMsQ0FBQ3VULEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RXZDLG1CQUFtQixHQUFHLENBQUFuSixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTNJLEVBQUUsTUFBSTZSLGtCQUFrQixhQUFsQkEsa0JBQWtCLHVCQUFsQkEsa0JBQWtCLENBQUUvUSxTQUFTO1lBQ2xFaVIsZ0JBQWdCLEdBQUdELG1CQUFtQixHQUFHdE8sUUFBUSxDQUFDQyxNQUFNLENBQUNxTyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUk7WUFDekZFLFNBQVMsR0FBR3VDLE1BQU0sQ0FBQ1csUUFBUSxDQUFDQyxRQUFRLENBQUN2UCxLQUFLLENBQUMsc0JBQXNCLENBQUM7WUFDbEVxTSxjQUFjLEdBQUdELFNBQVMsR0FBR3hPLFFBQVEsQ0FBQ3dPLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJO1lBQzlERSxnQkFBZ0IsR0FBR0gsZ0JBQWdCLElBQUlFLGNBQWMsSUFBSUYsZ0JBQWdCLEtBQUtFLGNBQWM7WUFFbEcsSUFBSUMsZ0JBQWdCLEVBQUU7Y0FDcEIsSUFBSXpCLGVBQWUsRUFBRTtnQkFDbkIsQ0FBQTBCLHFCQUFBLEdBQUFvQyxNQUFNLENBQUNhLG1CQUFtQixjQUFBakQscUJBQUEsZ0JBQUFDLHNCQUFBLEdBQTFCRCxxQkFBQSxDQUE0QmtELDBCQUEwQixjQUFBakQsc0JBQUEsZUFBdERBLHNCQUFBLENBQUFrRCxJQUFBLENBQUFuRCxxQkFBQSxFQUF5RFQsT0FBTyxDQUFDO2NBQ25FLENBQUMsTUFBTSxJQUFJaEIsV0FBVyxFQUFFO2dCQUN0QixDQUFBMkIsc0JBQUEsR0FBQWtDLE1BQU0sQ0FBQ2EsbUJBQW1CLGNBQUEvQyxzQkFBQSxnQkFBQUMsc0JBQUEsR0FBMUJELHNCQUFBLENBQTRCa0QsMkJBQTJCLGNBQUFqRCxzQkFBQSxlQUF2REEsc0JBQUEsQ0FBQWdELElBQUEsQ0FBQWpELHNCQUFBLEVBQTBEWCxPQUFPLENBQUM7Y0FDcEUsQ0FBQyxNQUFNLElBQUlmLGFBQWEsRUFBRTtnQkFDeEIsQ0FBQTRCLHNCQUFBLEdBQUFnQyxNQUFNLENBQUNhLG1CQUFtQixjQUFBN0Msc0JBQUEsZ0JBQUFDLHNCQUFBLEdBQTFCRCxzQkFBQSxDQUE0QmlELCtCQUErQixjQUFBaEQsc0JBQUEsZUFBM0RBLHNCQUFBLENBQUE4QyxJQUFBLENBQUEvQyxzQkFBQSxFQUE4RGIsT0FBTyxDQUFDO2NBQ3hFO1lBQ0Y7VUFBQztZQUdIO1lBQ0E7WUFDQTtZQUNBO1lBQ01lLGVBQWUsSUFBQTlDLGlCQUFBLEdBQUc0RSxNQUFNLENBQUNrQixTQUFTLGNBQUE5RixpQkFBQSx1QkFBaEJBLGlCQUFBLENBQWtCK0YsTUFBTTtZQUMxQ2hELGNBQWMsR0FBR3hJLHFCQUFxQixDQUFDN0QsT0FBTztZQUNwRDZELHFCQUFxQixDQUFDN0QsT0FBTyxHQUFHLElBQUksRUFBQztZQUMvQnNNLGlCQUFpQixHQUFHLENBQUMsQ0FBQ0QsY0FBYyxJQUFJbkMsZUFBZSxDQUFDL04sUUFBUSxDQUFDa1EsY0FBYyxDQUFDcE4sUUFBUSxDQUFDO1lBQ3pGc04sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDRixjQUFjLElBQUlsQyxpQkFBaUIsQ0FBQ2hPLFFBQVEsQ0FBQ2tRLGNBQWMsQ0FBQ3BOLFFBQVEsQ0FBQyxFQUVuRztZQUNNdU4sc0JBQXNCLEdBQUcxUCxjQUFjLENBQzFDbkIsR0FBRyxDQUFDLFVBQUM2QixNQUFxQjtjQUFBLE9BQUtBLE1BQU0sQ0FBQ1ksU0FBUztZQUFBLEVBQUMsQ0FDaEQ1QyxNQUFNLENBQUMsVUFBQ3lELFFBQVE7Y0FBQSxPQUF5QjlHLGlCQUFpQixDQUFDOEcsUUFBUSxDQUFDO1lBQUEsRUFBQztZQUNsRXdOLHNCQUFzQixHQUMxQnpDLDRCQUE0QixJQUM1QixDQUFBRCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRWtFLGNBQWMsTUFBSyxVQUFVLElBQzlDekIsc0JBQXNCLENBQUNrQixNQUFNLEdBQUcsQ0FBQztZQUM3QmhCLGVBQWUsR0FBR0wsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVwTixRQUFRO1lBQzFDME4sNEJBQTRCLEdBQUd4VSxpQkFBaUIsQ0FBQ3VVLGVBQWUsQ0FBQztZQUV2RSxJQUFJRCxzQkFBc0IsSUFBSUUsNEJBQTRCLEVBQUU7Y0FDcERDLEtBQUssR0FBR0gsc0JBQXNCLEdBQUdELHNCQUFzQixHQUFHRSxlQUFlLEdBQUcsQ0FBQ0EsZUFBZSxDQUFDLEdBQUcsRUFBRTtjQUN4R3hVLHdCQUF3QixDQUFDO2dCQUN2Qm9YLE1BQU0sRUFBRSxNQUFNO2dCQUNkMUMsS0FBSyxFQUFMQSxLQUFLO2dCQUNMak0sU0FBUyxFQUFFcUk7Y0FDYixDQUFDLENBQUM7WUFDSjtZQUVBLElBQUlvRCxlQUFlLEtBQUsvQixXQUFXLElBQUlDLGFBQWEsSUFBSWdDLGlCQUFpQixJQUFJQyxtQkFBbUIsQ0FBQyxFQUFFO2NBQzNGTyxrQkFBd0MsR0FBR1QsY0FBYyxHQUMxRDtnQkFBRWpPLFNBQVMsRUFBRWlPLGNBQWMsQ0FBQ3BOLFFBQVE7Z0JBQUV0QixTQUFTLEdBQUFrUCxxQkFBQSxHQUFFUixjQUFjLENBQUNrRCxRQUFRLGNBQUExQyxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLENBQUM7Y0FBRSxDQUFDLEdBQ2pGLElBQUk7Y0FDRkUsZUFBZSxHQUFHLEdBQUFqUixNQUFBLENBQUErUixrQkFBQSxDQUNuQmhSLG9DQUFvQyxDQUFDQyxjQUFjLENBQUMsR0FBQStRLGtCQUFBLENBQ3BEN0MsZUFBZSxHQUFBNkMsa0JBQUEsQ0FDZjVDLHlCQUF5QixHQUFBNEMsa0JBQUEsQ0FDeEJmLGtCQUFrQixHQUFHalEsb0NBQW9DLENBQUMsQ0FBQ2lRLGtCQUFrQixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQ3hGblIsR0FBRyxDQUFDeUIsTUFBTSxDQUFDO2NBQ2IsSUFBSTJQLGVBQWUsQ0FBQzVRLFFBQVEsQ0FBQ2lCLE1BQU0sQ0FBQ2dQLGVBQWUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JELENBQUFZLGtCQUFBLEdBQUFrQixNQUFNLENBQUNrQixTQUFTLGNBQUFwQyxrQkFBQSxnQkFBQUMscUJBQUEsR0FBaEJELGtCQUFBLENBQWtCd0MsV0FBVyxjQUFBdkMscUJBQUEsZUFBN0JBLHFCQUFBLENBQUFnQyxJQUFBLENBQUFqQyxrQkFBZ0MsQ0FBQztjQUNuQztZQUNGO1lBRUF2SCxlQUFlLENBQUM5RSxTQUFTLEVBQUExRixhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQTtjQUN2QnRCLEVBQUUsRUFBRStQLGNBQWM7Y0FDbEJySixPQUFPLEVBQUV5SixZQUFZO2NBQ3JCL0IsSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO2NBQ2hCQyxJQUFJLEVBQUU7Z0JBQUV0TyxFQUFFLEVBQUUsV0FBVztnQkFBRXdCLElBQUksRUFBRTtjQUFZLENBQUM7Y0FDNUN5QixJQUFJLEVBQUVoRixlQUFlLENBQUNzUSxTQUFTO2NBQy9CYSxPQUFPLEVBQVBBO1lBQU8sR0FDSDVPLFdBQVcsQ0FBQ3VULE1BQU0sR0FBRyxDQUFDLEdBQUc7Y0FBRXZULFdBQVcsRUFBWEE7WUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2NBQ2pENk8sZUFBZSxFQUFmQSxlQUFlO2NBQ2ZsQixXQUFXLEVBQUVBLFdBQVcsSUFBSTtZQUFFLEdBQzFCMkMsbUJBQW1CLEdBQUc7Y0FBRUEsbUJBQW1CLEVBQW5CQTtZQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2NBQ3REdEIsU0FBUyxFQUFFUTtZQUFVLEVBQ3RCLENBQUM7WUFDRi9ELGdCQUFnQixDQUFDakYsU0FBUyxDQUFDO1lBRTNCLEtBQUE0SSxvQkFBQSxHQUFJa0IsbUJBQW1CLGNBQUFsQixvQkFBQSxlQUFuQkEsb0JBQUEsQ0FBcUJ4SyxPQUFPLEVBQUU7Y0FDaEMzRyxnQkFBZ0IsQ0FBQ3FTLG1CQUFtQixDQUFDMUwsT0FBTyxDQUFDLENBQzFDMFEsSUFBSSxDQUFDLFVBQUFDLFNBQVMsRUFBSTtnQkFDakI3SSxRQUFRLENBQUNDLGFBQWEsQ0FDcEIsSUFBSUgsV0FBVyxDQUFDLG9DQUFvQyxFQUFFO2tCQUNwREMsTUFBTSxFQUFFO29CQUFFakUsS0FBSyxFQUFFK007a0JBQVU7Z0JBQzdCLENBQUMsQ0FDSCxDQUFDO2NBQ0gsQ0FBQyxDQUFDLFNBQ0ksQ0FBQyxVQUFBQyxHQUFHLEVBQUk7Z0JBQ1pDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLHVFQUF1RSxFQUFFRixHQUFHLENBQUM7Y0FDN0YsQ0FBQyxDQUFDO1lBQ047WUFFQSxLQUFBbkcsa0JBQUEsR0FBSW9CLGlCQUFpQixjQUFBcEIsa0JBQUEsZUFBakJBLGtCQUFBLENBQW1CekssT0FBTyxFQUFFO2NBQzlCM0csZ0JBQWdCLENBQUN3UyxpQkFBaUIsQ0FBQzdMLE9BQU8sQ0FBQyxDQUN4QzBRLElBQUksQ0FBQyxVQUFBQyxTQUFTLEVBQUk7Z0JBQ2pCN0ksUUFBUSxDQUFDQyxhQUFhLENBQ3BCLElBQUlILFdBQVcsQ0FBQyxrQ0FBa0MsRUFBRTtrQkFDbERDLE1BQU0sRUFBRTtvQkFBRWpFLEtBQUssRUFBRStNO2tCQUFVO2dCQUM3QixDQUFDLENBQ0gsQ0FBQztjQUNILENBQUMsQ0FBQyxTQUNJLENBQUMsVUFBQUMsR0FBRyxFQUFJO2dCQUNaQyxPQUFPLENBQUNDLEtBQUssQ0FBQyx5REFBeUQsRUFBRUYsR0FBRyxDQUFDO2NBQy9FLENBQUMsQ0FBQztZQUNOO1lBRUE1TCxlQUFlLENBQUMvRCxPQUFPLEdBQUcsS0FBSztZQUFBa04sbUJBQUEsR0FFZWhVLGtCQUFrQixDQUFDLENBQUMsRUFBMURpVSxpQkFBaUIsR0FBQUQsbUJBQUEsQ0FBakJDLGlCQUFpQixFQUFFQyxjQUFjLEdBQUFGLG1CQUFBLENBQWRFLGNBQWM7WUFBQSxNQUNyQ25HLFFBQVEsSUFBSWtHLGlCQUFpQjtjQUFBRyxRQUFBLENBQUFFLElBQUE7Y0FBQTtZQUFBO1lBQUFGLFFBQUEsQ0FBQUUsSUFBQTtZQUFBLE9BQ3pCSixjQUFjLENBQUN6TSxTQUFTLEVBQUU7Y0FBRThGLEtBQUssRUFBRTtZQUFLLENBQUMsQ0FBQztVQUFBO1lBR2xELElBQUl6QyxZQUFZLENBQUNoRSxPQUFPLEVBQUU7Y0FDbEIwRyxXQUFXLEdBQUcsSUFBSUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDO2NBQ3RERSxRQUFRLENBQUNDLGFBQWEsQ0FBQ0osV0FBVyxDQUFDO2NBQ25DMUMsWUFBWSxDQUFDaEUsT0FBTyxHQUFHLEtBQUs7WUFDOUI7VUFBQztVQUFBO1lBQUEsT0FBQXNOLFFBQUEsQ0FBQXdDLElBQUE7UUFBQTtNQUFBLEdBQUFoSCxPQUFBO0lBQUEsQ0FDRjtJQUFBLGlCQUFBaUgsRUFBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7TUFBQSxPQUFBN0gsS0FBQSxDQUFBOEgsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxLQUNELENBQUNoTCxlQUFlLEVBQUVFLGVBQWUsRUFBRUMsZ0JBQWdCLEVBQUV0RCxPQUFPLEVBQUVlLGlCQUFpQixFQUFFTCxLQUFLLEVBQUVMLEtBQUssQ0FDL0YsQ0FBQztFQUVELElBQU0rTixnQkFBZ0IsR0FBRzdaLFdBQVcsQ0FBQyxZQUFNO0lBQ3pDO0lBQ0EsSUFBTThKLFNBQVMsR0FBRzZDLGFBQWEsQ0FBQ3hELE9BQU87SUFDdkNtRSxnQkFBZ0IsQ0FBQ25FLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLElBQU15SixhQUFhLEdBQUd4USw2QkFBNkIsQ0FBQ3FLLGdCQUFnQixDQUFDdEQsT0FBTyxDQUFDO0lBQzdFekgsb0JBQW9CLENBQUNrUCxLQUFLLENBQUM5RyxTQUFTLENBQUM7SUFDckNzRCx5QkFBeUIsQ0FBQ2pFLE9BQU8sR0FBRyxJQUFJO0lBQ3hDa0UscUJBQXFCLENBQUNsRSxPQUFPLEdBQUcsSUFBSTtJQUNwQzJGLGVBQWUsQ0FBQ2hGLFNBQVMsRUFBRThJLGFBQWEsQ0FBQztJQUV6Q2hFLGVBQWUsQ0FBQzlFLFNBQVMsRUFBRTtNQUN6QmhILEVBQUUsWUFBQW1DLE1BQUEsQ0FBWXdILGdCQUFnQixDQUFDdEQsT0FBTyxlQUFZO01BQ2xESyxPQUFPLEVBQUVyQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7TUFDNUIrSixJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUM7TUFDaEJDLElBQUksRUFBRTtRQUFFdE8sRUFBRSxFQUFFLFdBQVc7UUFBRXdCLElBQUksRUFBRTtNQUFZLENBQUM7TUFDNUN5QixJQUFJLEVBQUVoRixlQUFlLENBQUNzUSxTQUFTO01BQy9CeUksbUJBQW1CLEVBQUU7SUFDdkIsQ0FBQyxDQUFDO0lBQ0YvSyxnQkFBZ0IsQ0FBQ2pGLFNBQVMsQ0FBQztJQUMzQm9ELGVBQWUsQ0FBQy9ELE9BQU8sR0FBRyxLQUFLO0lBQy9CNFEsVUFBVSxDQUFDLFlBQU07TUFDZixJQUFNbEssV0FBVyxHQUFHLElBQUlDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztNQUN0REUsUUFBUSxDQUFDQyxhQUFhLENBQUNKLFdBQVcsQ0FBQztJQUNyQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQ1QsQ0FBQyxFQUFFLENBQUNqQixlQUFlLEVBQUVFLGVBQWUsRUFBRUMsZ0JBQWdCLEVBQUU1SCxDQUFDLENBQUMsQ0FBQztFQUUzRCxJQUFNNlMsc0JBQXNCLEdBQUdoYSxXQUFXLENBQ3hDLFVBQUNzUSxHQUFrQixFQUFFNUcsUUFBeUIsRUFBRXVRLGtCQUEwQixFQUFLO0lBQUEsSUFBQUMscUJBQUEsRUFBQUMsbUJBQUE7SUFDN0UsSUFBUXJRLFNBQVMsR0FBb0J3RyxHQUFHLENBQWhDeEcsU0FBUztNQUFFNkcsYUFBYSxHQUFLTCxHQUFHLENBQXJCSyxhQUFhO0lBQ2hDLElBQU1QLFFBQVEsR0FBR3JPLFVBQVUsQ0FBQzhNLEVBQUUsQ0FBQy9FLFNBQVMsQ0FBQztJQUV6Q3BJLG9CQUFvQixDQUFDa1AsS0FBSyxDQUFDOUcsU0FBUyxDQUFDO0lBQ3JDZ0YsZUFBZSxDQUFDaEYsU0FBUyxFQUFFNkcsYUFBYSxDQUFDO0lBRXpDLElBQUlQLFFBQVEsRUFBRTtNQUNaaEQseUJBQXlCLENBQUNqRSxPQUFPLEdBQUcsSUFBSTtNQUN4Q2tFLHFCQUFxQixDQUFDbEUsT0FBTyxHQUFHLElBQUk7SUFDdEM7SUFFQSxJQUFNaVIsV0FBaUMsR0FBRztNQUN4Q3pYLFNBQVMsY0FBQXNDLE1BQUEsQ0FBY3lFLFFBQVEsQ0FBQzJRLGtCQUFrQixDQUFFO01BQ3BEQyxXQUFXLEVBQUVMLGtCQUFrQixJQUFJLEVBQUU7TUFDckN2USxRQUFRLEVBQVJBLFFBQVE7TUFDUnpELGNBQWMsRUFBRXlELFFBQVEsQ0FBQ0MsZUFBZTtNQUN4Q04sU0FBUyxHQUFBNlEscUJBQUEsR0FBRXhRLFFBQVEsQ0FBQ0MsZUFBZSxjQUFBdVEscUJBQUEsdUJBQXhCQSxxQkFBQSxDQUEwQnBWLEdBQUcsQ0FBQyxVQUFBNkIsTUFBTTtRQUFBLE9BQUlBLE1BQU0sQ0FBQ2tELFNBQVM7TUFBQTtJQUNyRSxDQUFDO0lBQ0QsSUFBSXVHLFFBQVEsRUFBRTtNQUNabkQsdUJBQXVCLENBQUM5RCxPQUFPLEdBQUdpUixXQUFXO0lBQy9DOztJQUVBO0lBQ0E7SUFDQSxJQUFJMVEsUUFBUSxDQUFDNlEsd0JBQXdCLElBQUk3USxRQUFRLENBQUM4USxhQUFhLElBQUk5USxRQUFRLENBQUMrUSxlQUFlLEtBQUssVUFBVSxFQUFFO01BQUEsSUFBQUMsc0JBQUEsRUFBQUMsS0FBQSxFQUFBQyxVQUFBLEVBQUFDLFVBQUE7TUFDMUcsSUFBTUMsV0FBVyxJQUFBSixzQkFBQSxHQUFHaFIsUUFBUSxDQUFDQyxlQUFlLGNBQUErUSxzQkFBQSx1QkFBeEJBLHNCQUFBLENBQTJCLENBQUMsQ0FBQztNQUNqRCxJQUFNdFMsUUFBUSxJQUFBdVMsS0FBQSxJQUFBQyxVQUFBLEdBQUlsUixRQUFRLENBQTRCbkMsU0FBUyxjQUFBcVQsVUFBQSxjQUFBQSxVQUFBLEdBQUlFLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFdlQsU0FBUyxjQUFBb1QsS0FBQSxjQUFBQSxLQUFBLEdBQUksRUFBRTtNQUMvRixJQUFNakMsUUFBUSxHQUNaLEVBQUFtQyxVQUFBLEdBQUVuUixRQUFRLENBQTZDNUMsU0FBUyxjQUFBK1QsVUFBQSxjQUFBQSxVQUFBLEdBQzdEQyxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRWhVLFNBQVMsS0FDekIsSUFBSTtNQUNOLElBQUlzQixRQUFRLElBQUlnSSxRQUFRLEVBQUU7UUFDeEJwRCxxQkFBcUIsQ0FBQzdELE9BQU8sR0FBRztVQUFFZixRQUFRLEVBQVJBLFFBQVE7VUFBRXNRLFFBQVEsRUFBUkE7UUFBUyxDQUFDO01BQ3hEO01BQ0EsSUFBSXRJLFFBQVEsRUFBRTtRQUNabEQsZUFBZSxDQUFDL0QsT0FBTyxHQUFHLEtBQUs7TUFDakM7TUFDQTtJQUNGOztJQUVBO0lBQ0EsSUFBTTRSLGlCQUFpQixlQUFBOVYsTUFBQSxDQUFleUUsUUFBUSxDQUFDMlEsa0JBQWtCLENBQUU7SUFDbkU5WCxjQUFjLENBQUNxVSxNQUFNLENBQUNqRyxhQUFhLEVBQUVvSyxpQkFBaUIsQ0FBQztJQUN2RCxJQUFNQyxhQUFhLElBQUFiLG1CQUFBLEdBQUcxWCxpQkFBaUIsQ0FBQ2lILFFBQVEsQ0FBQzRJLFNBQVMsQ0FBQyxjQUFBNkgsbUJBQUEsY0FBQUEsbUJBQUEsR0FBSXpYLGlCQUFpQixDQUFDcVksaUJBQWlCLENBQUM7SUFDbkduTSxlQUFlLENBQUM5RSxTQUFTLEVBQUU7TUFDekJoSCxFQUFFLEVBQUVpWSxpQkFBaUI7TUFDckJ2UixPQUFPLEVBQUV5USxrQkFBa0IsSUFBSSxFQUFFO01BQ2pDL0ksSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO01BQ2hCQyxJQUFJLEVBQUU7UUFBRXRPLEVBQUUsRUFBRSxXQUFXO1FBQUV3QixJQUFJLEVBQUU7TUFBWSxDQUFDO01BQzVDeUIsSUFBSSxFQUFFaEYsZUFBZSxDQUFDc1EsU0FBUztNQUMvQjNILFFBQVEsRUFBUkEsUUFBUTtNQUNSME4sY0FBYyxFQUFFLFNBQVM7TUFDekI5RSxTQUFTLEVBQUUwSTtJQUNiLENBQUMsQ0FBQztJQUNGLElBQUk1SyxRQUFRLEVBQUU7TUFDWmxELGVBQWUsQ0FBQy9ELE9BQU8sR0FBRyxLQUFLO0lBQ2pDLENBQUMsTUFBTTtNQUNMOUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDaVAsZ0JBQWdCLENBQUN4SCxTQUFTLENBQUM7TUFDaEQ5SCxpQ0FBaUMsQ0FBQzhILFNBQVMsRUFBRSxtQkFBbUIsQ0FBQztJQUNuRTtFQUNGLENBQUMsRUFDRCxDQUFDOEUsZUFBZSxFQUFFRSxlQUFlLENBQ25DLENBQUM7RUFFRCxJQUFBbU0scUJBQUEsR0FRSTFhLHFCQUFxQixDQUFDO01BQ3hCc04sZUFBZSxFQUFmQSxlQUFlO01BQ2Z6QyxPQUFPLEVBQUVpRixpQkFBaUI7TUFDMUI2SyxjQUFjLEVBQUUzSixrQkFBa0I7TUFDbEM0SixjQUFjLEVBQUV2SixrQkFBa0I7TUFDbEN3SixNQUFNLEVBQUV2QixnQkFBZ0I7TUFDeEJ3QixrQkFBa0IsRUFBRXJCLHNCQUFzQjtNQUMxQy9NLHVCQUF1QixFQUF2QkE7SUFDRixDQUFDLENBQUM7SUFmQXFPLE9BQU8sR0FBQUwscUJBQUEsQ0FBUEssT0FBTztJQUNJQyxlQUFlLEdBQUFOLHFCQUFBLENBQTFCTyxTQUFTO0lBQ1RDLFNBQVMsR0FBQVIscUJBQUEsQ0FBVFEsU0FBUztJQUNUQyxjQUFjLEdBQUFULHFCQUFBLENBQWRTLGNBQWM7SUFDZEMsY0FBYyxHQUFBVixxQkFBQSxDQUFkVSxjQUFjO0lBQ2RDLG9CQUFvQixHQUFBWCxxQkFBQSxDQUFwQlcsb0JBQW9CO0lBQ3BCQyxhQUFhLEdBQUFaLHFCQUFBLENBQWJZLGFBQWE7RUFXZnZPLGdCQUFnQixDQUFDbkUsT0FBTyxHQUFHLFlBQU07SUFDL0J5UyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7SUFDMUJsTyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQlQsdUJBQXVCLENBQUM5RCxPQUFPLEdBQUcsSUFBSTtFQUN4QyxDQUFDO0VBRUQsSUFBTTJTLGNBQWMsR0FBR3JRLE9BQU87RUFFOUIsSUFBTXNRLFdBQVcsR0FBRy9iLFdBQVc7SUFBQSxJQUFBZ2MsS0FBQSxHQUFBbEssaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUM3QixTQUFBaUssU0FDRXpTLE9BQWUsRUFDZnRHLG9CQUE0RCxFQUM1RGdaLEtBQWMsRUFDZEMsaUJBQTBCLEVBQzFCQyxRQUEyQixFQUMzQkMsS0FBYyxFQUNkQyxJQUFhO01BQUEsSUFBQUMsb0JBQUE7TUFBQSxJQUFBQyxrQkFBQSxFQUFBQyxxQkFBQSxFQUFBblosV0FBQSxFQUFBQyxPQUFBLEVBQUFtWixpQkFBQSxFQUFBQyxjQUFBLEVBQUFDLFlBQUEsRUFBQUMsV0FBQSxFQUFBQyxrQkFBQSxFQUFBQyxjQUFBLEVBQUFDLFlBQUEsRUFBQUMsc0JBQUEsRUFBQUMsd0JBQUEsRUFBQXBULFNBQUEsRUFBQXFULG1CQUFBLEVBQUFDLGVBQUEsRUFBQWxaLFVBQUEsRUFBQUQsU0FBQSxFQUFBb1osT0FBQSxFQUFBQyxzQkFBQSxFQUFBQyxZQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLE9BQUEsRUFBQWhhLG9CQUFBLEVBQUFpYSxnQkFBQSxFQUFBQyxRQUFBLEVBQUFDLFlBQUEsRUFBQUMsd0JBQUEsRUFBQUMsV0FBQTtNQUFBLE9BQUFoTSxtQkFBQSxDQUFBeUUsSUFBQSxXQUFBd0gsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUF0SCxJQUFBLEdBQUFzSCxTQUFBLENBQUFySCxJQUFBO1VBQUE7WUFBQSxNQUVUekosZUFBZSxDQUFDL0QsT0FBTyxJQUFJb1MsZUFBZSxJQUFJak4sZUFBZTtjQUFBMFAsU0FBQSxDQUFBckgsSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBcUgsU0FBQSxDQUFBbEgsTUFBQTtVQUFBO1lBSWpFO1lBQ0E7WUFDTTBGLGtCQUFrQixHQUFHLENBQUMzYSxvQkFBb0IsQ0FBQ3VPLFFBQVEsQ0FBQ3pELGFBQWEsQ0FBQ3hELE9BQU8sQ0FBQztZQUFBLE1BQzVFcVQsa0JBQWtCLElBQUkzYSxvQkFBb0IsQ0FBQ29jLGNBQWMsQ0FBQyxDQUFDLElBQUluYyxzQkFBc0I7Y0FBQWtjLFNBQUEsQ0FBQXJILElBQUE7Y0FBQTtZQUFBO1lBQ3ZGM0csUUFBUSxDQUFDQyxhQUFhLENBQ3BCLElBQUlILFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRTtjQUNoQ0MsTUFBTSxFQUFFO2dCQUFFbU8sSUFBSSxFQUFFLElBQUk7Z0JBQUVDLFFBQVEsRUFBRSxNQUFNO2dCQUFFM1UsT0FBTyxFQUFFckMsQ0FBQyxDQUFDLDRCQUE0QjtjQUFFO1lBQ25GLENBQUMsQ0FDSCxDQUFDO1lBQUEsT0FBQTZXLFNBQUEsQ0FBQWxILE1BQUE7VUFBQTtZQUFBMkYscUJBQUEsR0FJOEJ4Wix3QkFBd0IsQ0FBQ0Msb0JBQW9CLENBQUMsRUFBdkVJLFdBQVcsR0FBQW1aLHFCQUFBLENBQVhuWixXQUFXLEVBQUVDLE9BQU8sR0FBQWtaLHFCQUFBLENBQVBsWixPQUFPLEVBQzVCO1lBQ0E7WUFDTW1aLGlCQUFpQixHQUFHTixRQUFRLGFBQVJBLFFBQVEsY0FBUkEsUUFBUSxHQUFJN1ksT0FBTyxDQUFDNlksUUFBUTtZQUNoRE8sY0FBMEMsR0FBRzNiLG1CQUFtQixDQUFDMGIsaUJBQWlCLENBQUM7WUFDbkZFLFlBQVksR0FBR1AsS0FBSyxhQUFMQSxLQUFLLGNBQUxBLEtBQUssR0FBSTlZLE9BQU8sQ0FBQzhZLEtBQUs7WUFDckNRLFdBQVcsR0FBR1AsSUFBSSxhQUFKQSxJQUFJLGNBQUpBLElBQUksR0FBSS9ZLE9BQU8sQ0FBQytZLElBQUk7WUFDbENRLGtCQUFrQixHQUFHdlosT0FBTyxDQUFDNmEsV0FBVztZQUN4Q3JCLGNBQWMsR0FBRzliLGtDQUFrQyxDQUFDdUksT0FBTyxFQUFFO2NBQ2pFNlMsS0FBSyxFQUFFTyxZQUFZO2NBQ25CTixJQUFJLEVBQUVPO1lBQ1IsQ0FBQyxDQUFDO1lBRUYzUCxlQUFlLENBQUMvRCxPQUFPLEdBQUcsSUFBSTtZQUM5QnlELGVBQWUsQ0FBQ0QsYUFBYSxDQUFDeEQsT0FBTyxDQUFDO1lBQ2hDNlQsWUFBWSxHQUFHM2MsTUFBTSxDQUFDLENBQUM7WUFDN0JvTSxnQkFBZ0IsQ0FBQ3RELE9BQU8sR0FBRzZULFlBQVk7WUFDdkN0USxtQkFBbUIsQ0FBQ3ZELE9BQU8sR0FBR0ssT0FBTztZQUVyQyxJQUFJLENBQUNzRCxhQUFhLENBQUMzRCxPQUFPLEVBQUU7Y0FDMUJnRCxLQUFLLENBQUN4TCxNQUFNLENBQUMwZCxhQUFhLENBQUM7Y0FDM0J2UixhQUFhLENBQUMzRCxPQUFPLEdBQUcsSUFBSTtZQUM5Qjs7WUFFQTtZQUNNOFQsc0JBQXNCLEdBQUdsUSxXQUFXLENBQUM1RCxPQUFPLENBQUN4RSxNQUFNLENBQUMsVUFBQWdMLEdBQUc7Y0FBQSxPQUFJQSxHQUFHLENBQUMvTCxTQUFTO1lBQUEsRUFBQyxDQUFDdVQsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWhGK0Ysd0JBQXdCLElBQUFYLG9CQUFBLEdBQUd4UCxXQUFXLENBQUM1RCxPQUFPLGNBQUFvVCxvQkFBQSxnQkFBQUEsb0JBQUEsR0FBbkJBLG9CQUFBLENBQXNCeFAsV0FBVyxDQUFDNUQsT0FBTyxDQUFDME4sTUFBTSxHQUFHLENBQUMsQ0FBQyxjQUFBMEYsb0JBQUEsdUJBQXJEQSxvQkFBQSxDQUF1RHJVLE9BQU87WUFFekY0QixTQUFTLEdBQUc2QyxhQUFhLENBQUN4RCxPQUFPO1lBQUFnVSxtQkFBQSxHQU1uQy9PLFVBQVUsQ0FBQ2pGLE9BQU8sRUFKTmlVLGVBQWUsR0FBQUQsbUJBQUEsQ0FBN0IxWixZQUFZLEVBQ0hTLFVBQVUsR0FBQWlaLG1CQUFBLENBQW5CMVIsT0FBTyxFQUNDeEgsU0FBUyxHQUFBa1osbUJBQUEsQ0FBakIzWSxNQUFNLEVBQ0E2WSxPQUFPLEdBQUFGLG1CQUFBLENBQWJ2UixJQUFJO1lBR04xSixzQkFBc0IsQ0FBQztjQUNyQjRILFNBQVMsRUFBVEEsU0FBUztjQUNUd1UsS0FBSyxFQUFFcmMsd0JBQXdCLENBQUM4YSxjQUFjLENBQUM7Y0FDL0NqUixLQUFLLEVBQUxBLEtBQUs7Y0FDTDVELE9BQU8sRUFBRWdWLHdCQUF3QixLQUFJcFIsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVoSixFQUFFO2NBQzlDMkksT0FBTyxFQUFFdkgsVUFBVTtjQUNuQk0sTUFBTSxFQUFFUCxTQUFTO2NBQ2pCWCxXQUFXLEVBQVhBO1lBQ0YsQ0FBQyxDQUFDOztZQUVGO1lBQ0FzTCxlQUFlLENBQUM5RSxTQUFTLEVBQUExRixhQUFBO2NBQ3ZCdEIsRUFBRSxjQUFBbUMsTUFBQSxDQUFjd0gsZ0JBQWdCLENBQUN0RCxPQUFPLENBQUU7Y0FDMUNLLE9BQU8sRUFBRXVULGNBQWM7Y0FDdkI3TCxJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUM7Y0FDaEJDLElBQUksRUFBRXRJLFdBQVc7Y0FDakIvQyxJQUFJLEVBQUVoRixlQUFlLENBQUN3ZCxJQUFJO2NBQzFCck0sT0FBTyxFQUFFNU87WUFBVyxHQUNoQnFaLGNBQWMsR0FBRztjQUFFQSxjQUFjLEVBQWRBO1lBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM3QyxDQUFDO1lBRUZsUSxnQkFBZ0IsQ0FBQ3RELE9BQU8sR0FBRzlJLE1BQU0sQ0FBQyxDQUFDO1lBRTdCaWQsc0JBQXNCLEdBQUdsYiw2QkFBNkIsQ0FBQ3FLLGdCQUFnQixDQUFDdEQsT0FBTyxDQUFDO1lBQ3RGaUUseUJBQXlCLENBQUNqRSxPQUFPLEdBQUdtVSxzQkFBc0I7WUFDMURqUSxxQkFBcUIsQ0FBQ2xFLE9BQU8sR0FBR1csU0FBUztZQUN6Q3BJLG9CQUFvQixDQUFDZ1EsS0FBSyxDQUFDNUgsU0FBUyxFQUFFd1Qsc0JBQXNCLENBQUM7WUFDN0QxTyxlQUFlLENBQUM5RSxTQUFTLEVBQUU7Y0FDekJoSCxFQUFFLEVBQUV3YSxzQkFBc0I7Y0FDMUI5VCxPQUFPLEVBQUUsRUFBRTtjQUNYMEgsSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO2NBQ2hCQyxJQUFJLEVBQUU7Z0JBQUV0TyxFQUFFLEVBQUUsV0FBVztnQkFBRXdCLElBQUksRUFBRSxDQUFBd0gsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUV4SCxJQUFJLEtBQUk7Y0FBWSxDQUFDO2NBQzNEeUIsSUFBSSxFQUFFaEYsZUFBZSxDQUFDc1E7WUFDeEIsQ0FBQyxDQUFDO1lBRUVrTSxZQUFZLEdBQUcvVCxPQUFPO1lBRTFCLElBQUlBLE9BQU8sS0FBS3JDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFO2NBQ25Eb1csWUFBWSxXQUFBdFksTUFBQSxDQUFXa0MsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLCtCQUFBbEMsTUFBQSxDQUN4RCxFQUFBdVkscUJBQUEsR0FBQWphLE9BQU8sQ0FBQ2liLGNBQWMsY0FBQWhCLHFCQUFBLHVCQUF0QkEscUJBQUEsQ0FBd0JpQixVQUFVLE9BQUFoQixxQkFBQSxHQUFJclAsVUFBVSxDQUFDakYsT0FBTyxDQUFDc0MsT0FBTyxjQUFBZ1MscUJBQUEsdUJBQTFCQSxxQkFBQSxDQUE0QmdCLFVBQVUsRUFDNUU7WUFDSjtZQUVNZixPQUFPLEdBQUczUSxXQUFXLENBQUM1RCxPQUFPLENBQUNyRSxHQUFHLENBQUMsVUFBQTRaLGNBQWM7Y0FBQSxPQUFLO2dCQUN6RGxOLE9BQU8sRUFBRWtOLGNBQWMsQ0FBQ2xWLE9BQU87Z0JBQy9CekQsSUFBSSxFQUFFMlksY0FBYyxDQUFDdE4sSUFBSSxDQUFDdE8sRUFBRSxLQUFLK0YsUUFBUSxDQUFDL0YsRUFBRSxDQUFDaUcsUUFBUSxDQUFDLENBQUMsR0FBR2hJLGVBQWUsQ0FBQ3dkLElBQUksR0FBR3hkLGVBQWUsQ0FBQ3NRO2NBQ25HLENBQUM7WUFBQSxDQUFDLENBQUM7WUFFRzNOLG9CQUFvQixHQUFHdVosc0JBQXNCLGFBQXRCQSxzQkFBc0IsdUJBQXRCQSxzQkFBc0IsQ0FBRXJaLFNBQVM7WUFDeEQrWixnQkFBZ0IsR0FBR25hLHVCQUF1QixDQUFDNFosZUFBZSxFQUFFMVosb0JBQW9CLENBQUM7WUFBQXNhLFNBQUEsQ0FBQXJILElBQUE7WUFBQSxPQUVoRXRLLGFBQWEsQ0FBQyxDQUFDc1IsZ0JBQWdCLENBQUMsQ0FBQztVQUFBO1lBQWxEQyxRQUFRLEdBQUFJLFNBQUEsQ0FBQW5HLElBQUE7WUFFUmdHLFlBQVksR0FBRzNCLEtBQUssYUFBTEEsS0FBSyxjQUFMQSxLQUFLLEdBQUkzWSxPQUFPLENBQUMyWSxLQUFLO1lBQ3JDNEIsd0JBQXdCLEdBQUczQixpQkFBaUIsYUFBakJBLGlCQUFpQixjQUFqQkEsaUJBQWlCLEdBQUk1WSxPQUFPLENBQUM0WSxpQkFBaUI7WUFFekU0QixXQUFXLEdBQUEzWixhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUE7Y0FDZm9GLE9BQU8sRUFBRStULFlBQVk7Y0FDckJHLE9BQU8sRUFBUEEsT0FBTztjQUNQOVosU0FBUyxFQUFFK1osZ0JBQWdCO2NBQzNCZ0IsSUFBSSxFQUFFOVYsUUFBUSxDQUFDOFYsSUFBSTtjQUNuQkMsTUFBTSxFQUFFL1YsUUFBUSxDQUFDL0YsRUFBRSxDQUFDaUcsUUFBUSxDQUFDLENBQUM7Y0FDOUJDLFNBQVMsRUFBRUgsUUFBUSxDQUFDRyxTQUFTO2NBQzdCNlYsUUFBUSxFQUFFaFcsUUFBUSxDQUFDZ1csUUFBUTtjQUMzQkMsU0FBUyxFQUFFalcsUUFBUSxDQUFDa1csVUFBVSxDQUFDaFcsUUFBUSxDQUFDLENBQUM7Y0FDekNtQyxNQUFNLEVBQUV5QixhQUFhLENBQUN4RCxPQUFPO2NBQzdCeEcsU0FBUyxFQUFFOEosZ0JBQWdCLENBQUN0RCxPQUFPO2NBQ25DNlYsU0FBUyxFQUFFLENBQUFsVCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXhILElBQUksS0FBSSxFQUFFO2NBQzVCNEQsT0FBTyxFQUFFZ1Ysd0JBQXdCLEtBQUlwUixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWhKLEVBQUUsQ0FBQztjQUMvQ2lKLGlCQUFpQixFQUFFa0Msb0JBQW9CLENBQUM5RSxPQUFPO2NBQy9DNkMsa0JBQWtCLEVBQUVrQyxxQkFBcUIsQ0FBQy9FLE9BQU87Y0FDakQ4QyxtQkFBbUIsRUFBRWtDLHNCQUFzQixDQUFDaEY7WUFBTyxHQUMvQyxDQUFBakYsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUUrYSxLQUFLLEtBQUksSUFBSSxHQUFHO2NBQUVBLEtBQUssRUFBRXBiLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDK2EsS0FBSztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDckVqYixvQkFBb0IsQ0FBQ0MsU0FBUyxFQUFFQyxVQUFVLENBQUMsR0FDMUMwWixRQUFRLGFBQVJBLFFBQVEsZUFBUkEsUUFBUSxDQUFFL0csTUFBTSxHQUFHO2NBQUVxSSxXQUFXLEVBQUV0QixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUN0WjtZQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDekQsQ0FBQStZLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFdmEsRUFBRSxLQUFJLElBQUksR0FBQXNCLGFBQUE7Y0FDakJvVSxNQUFNLEVBQUUzVSxNQUFNLENBQUN3WixPQUFPLENBQUN2YSxFQUFFO1lBQUMsR0FBTXVhLE9BQU8sQ0FBQy9ZLElBQUksR0FBRztjQUFFNmEsUUFBUSxFQUFFOUIsT0FBTyxDQUFDL1k7WUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQ2hGLENBQUMsQ0FBQyxHQUNGaEIsV0FBVyxDQUFDdVQsTUFBTSxHQUFHLENBQUMsR0FBRztjQUFFdlQsV0FBVyxFQUFYQTtZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDN0N1YSxZQUFZLEdBQUc7Y0FBRTNCLEtBQUssRUFBRTJCO1lBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMzQ0Msd0JBQXdCLEdBQUc7Y0FBRTNCLGlCQUFpQixFQUFFMkI7WUFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMvRWxCLFlBQVksR0FBRztjQUFFUCxLQUFLLEVBQUVPO1lBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMzQ0MsV0FBVyxHQUFHO2NBQUVQLElBQUksRUFBRU87WUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3hDLENBQUEvUSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNULE1BQU0sS0FBSSxJQUFJLEdBQUc7Y0FBRUMsV0FBVyxFQUFFdlQsS0FBSyxDQUFDc1Q7WUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQzFELENBQUF0VCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTVHLElBQUksS0FBSSxJQUFJLEdBQUc7Y0FBRW9hLFNBQVMsRUFBRXhULEtBQUssQ0FBQzVHO1lBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNwRCxDQUFBNEcsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUV5VCxLQUFLLEtBQUksSUFBSSxHQUFHO2NBQUVDLFVBQVUsRUFBRTFULEtBQUssQ0FBQ3lUO1lBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN2RDVDLGNBQWMsR0FBRztjQUFFQSxjQUFjLEVBQWRBO1lBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN4Q0csa0JBQWtCLEdBQUc7Y0FBRXNCLFdBQVcsRUFBRXRCO1lBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7WUFHbkV4QixPQUFPLENBQUN5QyxXQUFXLENBQUM7VUFBQTtVQUFBO1lBQUEsT0FBQUMsU0FBQSxDQUFBL0UsSUFBQTtRQUFBO01BQUEsR0FBQWdELFFBQUE7SUFBQSxDQUNyQjtJQUFBLGlCQUFBd0QsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLElBQUEsRUFBQUMsSUFBQSxFQUFBQyxJQUFBLEVBQUFDLElBQUEsRUFBQUMsSUFBQTtNQUFBLE9BQUEvRCxLQUFBLENBQUFyQyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtFQUFBLEtBQ0QsQ0FDRW5MLFVBQVUsRUFDVkcsZUFBZSxFQUNmekMsS0FBSyxFQUNMbVAsT0FBTyxFQUNQN1AsT0FBTyxFQUNQakgsTUFBTSxFQUNOb0gsSUFBSSxFQUNKbkksWUFBWSxFQUNab0YsUUFBUSxFQUNSaUQsS0FBSyxFQUNMM0UsQ0FBQyxFQUNEb1UsZUFBZSxFQUNmak4sZUFBZSxFQUNmdkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsQ0FFdEIsQ0FBQztFQUVELElBQU1nVSxhQUFhLEdBQUdoZ0IsV0FBVyxDQUMvQixVQUFDMlgsTUFBZSxFQUFLO0lBQ25CLElBQUksQ0FBQ2pMLG1CQUFtQixDQUFDdkQsT0FBTyxFQUFFO0lBRWxDLElBQUl3TyxNQUFNLENBQUM3VSxFQUFFLE1BQUsySSxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTNJLEVBQUUsR0FBRTtNQUM3QjRJLFVBQVUsQ0FBQ2lNLE1BQU0sQ0FBQztJQUNwQjtJQUVBLElBQUlsTSxPQUFPLElBQUlpQixtQkFBbUIsQ0FBQ3ZELE9BQU8sRUFBRTtNQUMxQyxJQUFNdVUsT0FBTyxHQUFHM1EsV0FBVyxDQUFDNUQsT0FBTyxDQUFDckUsR0FBRyxDQUFDLFVBQUE0WixjQUFjO1FBQUEsT0FBSztVQUN6RGxOLE9BQU8sRUFBRWtOLGNBQWMsQ0FBQ2xWLE9BQU87VUFDL0J6RCxJQUFJLEVBQUUyWSxjQUFjLENBQUN0TixJQUFJLENBQUN0TyxFQUFFLEtBQUsrRixRQUFRLENBQUMvRixFQUFFLENBQUNpRyxRQUFRLENBQUMsQ0FBQyxHQUFHaEksZUFBZSxDQUFDd2QsSUFBSSxHQUFHeGQsZUFBZSxDQUFDc1E7UUFDbkcsQ0FBQztNQUFBLENBQUMsQ0FBQztNQUVIaUssT0FBTyxDQUFBbFgsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQTtRQUNMb0YsT0FBTyxFQUFFa0QsbUJBQW1CLENBQUN2RCxPQUFPO1FBQ3BDdVUsT0FBTyxFQUFQQSxPQUFPO1FBQ1A5WixTQUFTLEVBQUUrVCxNQUFNLENBQUM3VSxFQUFFO1FBQ3BCNmIsSUFBSSxFQUFFOVYsUUFBUSxDQUFDOFYsSUFBSTtRQUNuQkMsTUFBTSxFQUFFL1YsUUFBUSxDQUFDL0YsRUFBRSxDQUFDaUcsUUFBUSxDQUFDLENBQUM7UUFDOUJDLFNBQVMsRUFBRUgsUUFBUSxDQUFDRyxTQUFTO1FBQzdCNlYsUUFBUSxFQUFFaFcsUUFBUSxDQUFDZ1csUUFBUTtRQUMzQkMsU0FBUyxFQUFFalcsUUFBUSxDQUFDa1csVUFBVSxDQUFDaFcsUUFBUSxDQUFDLENBQUM7UUFDekNtQyxNQUFNLEVBQUV5QixhQUFhLENBQUN4RCxPQUFPO1FBQzdCeEcsU0FBUyxFQUFFOEosZ0JBQWdCLENBQUN0RCxPQUFPO1FBQ25DNlYsU0FBUyxFQUFFLENBQUFsVCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXhILElBQUksS0FBSSxFQUFFO1FBQzVCNEQsT0FBTyxFQUFFLENBQUE0RCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWhKLEVBQUUsS0FBSSxFQUFFO1FBQ3hCaUosaUJBQWlCLEVBQUVrQyxvQkFBb0IsQ0FBQzlFLE9BQU87UUFDL0M2QyxrQkFBa0IsRUFBRWtDLHFCQUFxQixDQUFDL0UsT0FBTztRQUNqRDhDLG1CQUFtQixFQUFFa0Msc0JBQXNCLENBQUNoRjtNQUFPLEdBQy9DLENBQUF3TyxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXNILEtBQUssS0FBSSxJQUFJLEdBQUc7UUFBRUEsS0FBSyxFQUFFcGIsTUFBTSxDQUFDOFQsTUFBTSxDQUFDc0gsS0FBSztNQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDNUQsQ0FBQXRILE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFdFQsUUFBUSxLQUFJLElBQUksR0FBRztRQUFFQSxRQUFRLEVBQUVSLE1BQU0sQ0FBQzhULE1BQU0sQ0FBQ3RULFFBQVE7TUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3JFLENBQUF5SCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNULE1BQU0sS0FBSSxJQUFJLEdBQUc7UUFBRUMsV0FBVyxFQUFFdlQsS0FBSyxDQUFDc1Q7TUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQzFELENBQUF0VCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTVHLElBQUksS0FBSSxJQUFJLEdBQUc7UUFBRW9hLFNBQVMsRUFBRXhULEtBQUssQ0FBQzVHO01BQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0o7RUFDRixDQUFDLEVBQ0QsQ0FBQ3VHLE9BQU8sRUFBRUMsVUFBVSxFQUFFNFAsT0FBTyxFQUFFelMsUUFBUSxFQUFFa0QsaUJBQWlCLEVBQUVELEtBQUssQ0FDbkUsQ0FBQztFQUVELElBQU1tVSxjQUFjLEdBQUdqZ0IsV0FBVztJQUFBLElBQUFrZ0IsS0FBQSxHQUFBcE8saUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFDLFNBQUFtTyxTQUFPQyxZQUFzQixFQUFFQyxhQUFxQjtNQUFBLElBQUFDLFFBQUE7TUFBQSxPQUFBdk8sbUJBQUEsQ0FBQXlFLElBQUEsV0FBQStKLFNBQUE7UUFBQSxrQkFBQUEsU0FBQSxDQUFBN0osSUFBQSxHQUFBNkosU0FBQSxDQUFBNUosSUFBQTtVQUFBO1lBQUE0SixTQUFBLENBQUE1SixJQUFBO1lBQUEsT0FDOUQ5VixJQUFJLENBQUMyZixLQUFLLENBQUNDLGNBQWMsQ0FBQ0osYUFBYSxFQUFFRCxZQUFZLEtBQUt0ZixRQUFRLENBQUM0ZixTQUFTLENBQUM7VUFBQTtZQUE5RkosUUFBUSxHQUFBQyxTQUFBLENBQUExSSxJQUFBO1lBQ2QsSUFBSXlJLFFBQVEsRUFBRTtjQUNadlQsV0FBVyxDQUFDNUQsT0FBTyxHQUFHNEQsV0FBVyxDQUFDNUQsT0FBTyxDQUFDckUsR0FBRyxDQUFDLFVBQUEwRSxPQUFPLEVBQUk7Z0JBQ3ZELElBQUlBLE9BQU8sQ0FBQzFHLEVBQUUsS0FBS3VkLGFBQWEsSUFBSTdXLE9BQU8sQ0FBQ3pELElBQUksS0FBSyxXQUFXLEVBQUU7a0JBQ2hFLE9BQUEzQixhQUFBLENBQUFBLGFBQUEsS0FBWW9GLE9BQU87b0JBQUVtWCxVQUFVLEVBQUVQLFlBQVksS0FBS3RmLFFBQVEsQ0FBQzRmO2tCQUFTO2dCQUN0RTtnQkFDQSxPQUFPbFgsT0FBTztjQUNoQixDQUFDLENBQUM7WUFDSjtVQUFDO1VBQUE7WUFBQSxPQUFBK1csU0FBQSxDQUFBdEgsSUFBQTtRQUFBO01BQUEsR0FBQWtILFFBQUE7SUFBQSxDQUNGO0lBQUEsaUJBQUFTLElBQUEsRUFBQUMsSUFBQTtNQUFBLE9BQUFYLEtBQUEsQ0FBQXZHLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsS0FBRSxFQUFFLENBQUM7RUFFTixJQUFNa0gsc0JBQXNCLEdBQUc5Z0IsV0FBVztJQUFBLElBQUErZ0IsS0FBQSxHQUFBalAsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUN4QyxTQUFBZ1AsU0FDRTNYLFNBQW1CLEVBQ25CcU8sUUFBOEIsRUFDOUJ1SixhQUEyRTtNQUFBLElBQUFwVyxLQUFBLEVBQUFxVyxtQkFBQSxFQUFBQyxjQUFBLEVBQUF6WCxRQUFBLEVBQUFJLFNBQUEsRUFBQW5ILFNBQUEsRUFBQXllLFNBQUEsRUFBQWhILFdBQUEsRUFBQWlILGVBQUEsRUFBQUMsZUFBQSxFQUFBQyxPQUFBLEVBQUFDLHVCQUFBLEVBQUFDLE1BQUE7TUFBQSxPQUFBMVAsbUJBQUEsQ0FBQXlFLElBQUEsV0FBQWtMLFNBQUE7UUFBQSxrQkFBQUEsU0FBQSxDQUFBaEwsSUFBQSxHQUFBZ0wsU0FBQSxDQUFBL0ssSUFBQTtVQUFBO1lBQUEsSUFFdEV0TixTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFFd04sTUFBTTtjQUFBNkssU0FBQSxDQUFBL0ssSUFBQTtjQUFBO1lBQUE7WUFDcEJvQyxPQUFPLENBQUNDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQztZQUFBLE9BQUEwSSxTQUFBLENBQUE1SyxNQUFBO1VBQUE7WUFJekRqTSxLQUFLLEdBQUd6QixrQ0FBa0MsQ0FBQ0MsU0FBUyxFQUFFMEQsV0FBVyxDQUFDNUQsT0FBTyxDQUFDO1lBQUEsSUFDM0UwQixLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFckIsT0FBTyxDQUFDRSxRQUFRO2NBQUFnWSxTQUFBLENBQUEvSyxJQUFBO2NBQUE7WUFBQTtZQUMxQm9DLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLHNEQUFzRCxFQUFFM1AsU0FBUyxDQUFDO1lBQUEsT0FBQXFZLFNBQUEsQ0FBQTVLLE1BQUE7VUFBQTtZQUlqRW9LLG1CQUFtQixHQUFnQ3JXLEtBQUssQ0FBakVyQixPQUFPLEVBQWtDMlgsY0FBYyxHQUFLdFcsS0FBSyxDQUFuQ2YsU0FBUztZQUN2Q0osUUFBUSxHQUFLd1gsbUJBQW1CLENBQWhDeFgsUUFBUTtZQUFBLElBQ1hBLFFBQVE7Y0FBQWdZLFNBQUEsQ0FBQS9LLElBQUE7Y0FBQTtZQUFBO1lBQUEsT0FBQStLLFNBQUEsQ0FBQTVLLE1BQUE7VUFBQTtZQUlQaE4sU0FBUyxHQUFHSixRQUFRLENBQUNLLFVBQVUsSUFBSW9YLGNBQWM7WUFBQSxJQUNsRHJYLFNBQVM7Y0FBQTRYLFNBQUEsQ0FBQS9LLElBQUE7Y0FBQTtZQUFBO1lBQ1pvQyxPQUFPLENBQUNDLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRTNQLFNBQVMsQ0FBQztZQUFBLE9BQUFxWSxTQUFBLENBQUE1SyxNQUFBO1VBQUE7WUFBQSxLQUlqRWpWLG9CQUFvQixDQUFDdU8sUUFBUSxDQUFDdEcsU0FBUyxDQUFDO2NBQUE0WCxTQUFBLENBQUEvSyxJQUFBO2NBQUE7WUFBQTtZQUFBLE9BQUErSyxTQUFBLENBQUE1SyxNQUFBO1VBQUE7WUFBQSxNQUl4Q2pWLG9CQUFvQixDQUFDb2MsY0FBYyxDQUFDLENBQUMsSUFBSW5jLHNCQUFzQjtjQUFBNGYsU0FBQSxDQUFBL0ssSUFBQTtjQUFBO1lBQUE7WUFDakUzRyxRQUFRLENBQUNDLGFBQWEsQ0FDcEIsSUFBSUgsV0FBVyxDQUFDLGdCQUFnQixFQUFFO2NBQ2hDQyxNQUFNLEVBQUU7Z0JBQUVtTyxJQUFJLEVBQUUsSUFBSTtnQkFBRUMsUUFBUSxFQUFFLE1BQU07Z0JBQUUzVSxPQUFPLEVBQUVyQyxDQUFDLENBQUMsNEJBQTRCO2NBQUU7WUFDbkYsQ0FBQyxDQUNILENBQUM7WUFBQSxPQUFBdWEsU0FBQSxDQUFBNUssTUFBQTtVQUFBO1lBSUduVSxTQUFTLEdBQUd1ZSxtQkFBbUIsQ0FBQ3BlLEVBQUU7WUFDbENzZSxTQUFTLEdBQUcxSixRQUFRLEtBQUssU0FBUyxHQUFHLFVBQVUsR0FBRyxVQUFVO1lBQzVEMEMsV0FBaUMsR0FBRztjQUN4Q3pYLFNBQVMsRUFBVEEsU0FBUztjQUNUMlgsV0FBVyxFQUFFNEcsbUJBQW1CLENBQUMxWCxPQUFPO2NBQ3hDRSxRQUFRLEVBQVJBLFFBQVE7Y0FDUnpELGNBQWMsRUFBRXlELFFBQVEsQ0FBQ0MsZUFBZTtjQUN4Q04sU0FBUyxFQUFUQTtZQUNGLENBQUM7WUFFS2dZLGVBQWUsR0FBR3RmLFVBQVUsQ0FBQzhNLEVBQUUsQ0FBQy9FLFNBQVMsQ0FBQztZQUNoRCxJQUFJdVgsZUFBZSxFQUFFO2NBQ25CcFUsdUJBQXVCLENBQUM5RCxPQUFPLEdBQUdpUixXQUFXO2NBQzdDbE4sZUFBZSxDQUFDL0QsT0FBTyxHQUFHLElBQUk7WUFDaEM7WUFFQXlGLGVBQWUsQ0FBQzlFLFNBQVMsRUFBQTFGLGFBQUEsQ0FBQUEsYUFBQSxLQUFPOGMsbUJBQW1CO2NBQUU5SixjQUFjLEVBQUVnSztZQUFTLEVBQUUsQ0FBQztZQUUzRUUsZUFBZSxHQUFHamhCLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLElBQUlnaEIsZUFBZSxFQUFFO2NBQ25CNVUsZ0JBQWdCLENBQUN0RCxPQUFPLEdBQUdtWSxlQUFlO1lBQzVDO1lBRU1DLE9BQXNCLEdBQUc7Y0FDN0J6WCxTQUFTLEVBQVRBLFNBQVM7Y0FDVG5ILFNBQVMsRUFBRTJlLGVBQWU7Y0FDMUIzUSxhQUFhLEVBQUV2Tyw2QkFBNkIsQ0FBQ2tmLGVBQWU7WUFDOUQsQ0FBQztZQUVLRSx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFBLEVBQVM7Y0FDcEMsSUFBSSxDQUFDSCxlQUFlLEVBQUU7Y0FDdEJuVSxlQUFlLENBQUMvRCxPQUFPLEdBQUcsS0FBSztjQUMvQjhELHVCQUF1QixDQUFDOUQsT0FBTyxHQUFHLElBQUk7WUFDeEMsQ0FBQztZQUFBdVksU0FBQSxDQUFBL0ssSUFBQTtZQUFBLE9BRW9COVUsb0JBQW9CLENBQUM4ZixtQkFBbUIsQ0FBQztjQUM1RDdYLFNBQVMsRUFBVEEsU0FBUztjQUNUNkcsYUFBYSxFQUFFNFEsT0FBTyxDQUFDNVEsYUFBYTtjQUNwQ2lSLGVBQWUsRUFBRTtnQkFDZnZZLFNBQVMsRUFBVEEsU0FBUztnQkFDVFMsU0FBUyxFQUFFSixRQUFRLENBQUNLLFVBQVU7Z0JBQzlCMk4sUUFBUSxFQUFFdUosYUFBYSxHQUFHLE1BQU0sR0FBR3ZKLFFBQVE7Z0JBQzNDdUosYUFBYSxFQUFiQSxhQUFhO2dCQUNiL1ksT0FBTyxFQUFFLENBQUE0RCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWhKLEVBQUUsS0FBSSxFQUFFO2dCQUN4QjZiLElBQUksRUFBRTlWLFFBQVEsQ0FBQzhWLElBQUk7Z0JBQ25CMVMsbUJBQW1CLEVBQUVrQyxzQkFBc0IsQ0FBQ2hGO2NBQzlDLENBQUM7Y0FDRGhDLENBQUMsRUFBREEsQ0FBQztjQUNEMGEsb0JBQW9CLEVBQUV6SCxXQUFXO2NBQ2pDbFMsT0FBTyxFQUFFNEQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVoSixFQUFFO2NBQ2xCa2MsU0FBUyxFQUFFbFQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUV4SCxJQUFJO2NBQ3RCd2QsU0FBUyxFQUFFO2dCQUNUNUcsY0FBYyxFQUFFLFNBQWhCQSxjQUFjQSxDQUFFMUosT0FBTztrQkFBQSxPQUFJRCxrQkFBa0IsQ0FBQ2dRLE9BQU8sRUFBRS9QLE9BQU8sQ0FBQztnQkFBQTtnQkFDL0QySixjQUFjLEVBQUUsU0FBaEJBLGNBQWNBLENBQUU0RyxhQUFhLEVBQUk7a0JBQy9CUCx1QkFBdUIsQ0FBQyxDQUFDO2tCQUN6QjVQLGtCQUFrQixDQUNoQjJQLE9BQU8sRUFDUFEsYUFBYSxDQUFDdlEsT0FBTyxFQUNyQnVRLGFBQWEsQ0FBQzdQLE9BQU8sRUFDckI2UCxhQUFhLENBQUM1UCxlQUFlLEVBQzdCNFAsYUFBYSxDQUFDemUsV0FBVyxFQUN6QnllLGFBQWEsQ0FBQzlRLFdBQVcsRUFDekI4USxhQUFhLENBQUMzUCxnQkFBZ0IsRUFDOUIyUCxhQUFhLENBQUNDLGVBQWUsRUFDN0JELGFBQWEsQ0FBQ3pQLFNBQ2hCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRGxILE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7a0JBQ2JvVyx1QkFBdUIsQ0FBQyxDQUFDO2tCQUN6Qm5SLGlCQUFpQixDQUFDa1IsT0FBTyxDQUFDO2dCQUM1QixDQUFDO2dCQUNEbEcsa0JBQWtCLEVBQUUsU0FBcEJBLGtCQUFrQkEsQ0FBRzRHLGVBQWUsRUFBRWhJLGtCQUFrQixFQUFLO2tCQUMzRHVILHVCQUF1QixDQUFDLENBQUM7a0JBQ3pCeEgsc0JBQXNCLENBQUN1SCxPQUFPLEVBQUVVLGVBQWUsRUFBRWhJLGtCQUFrQixDQUFDO2dCQUN0RTtjQUNGO1lBQ0YsQ0FBQyxDQUFDO1VBQUE7WUF6Q0l3SCxNQUFNLEdBQUFDLFNBQUEsQ0FBQTdKLElBQUE7WUEyQ1osSUFBSSxDQUFDNEosTUFBTSxDQUFDUyxPQUFPLEVBQUU7Y0FDbkJWLHVCQUF1QixDQUFDLENBQUM7Y0FDekIsSUFBSUMsTUFBTSxDQUFDVSxNQUFNLEtBQUssT0FBTyxFQUFFO2dCQUM3Qm5TLFFBQVEsQ0FBQ0MsYUFBYSxDQUNwQixJQUFJSCxXQUFXLENBQUMsZ0JBQWdCLEVBQUU7a0JBQ2hDQyxNQUFNLEVBQUU7b0JBQUVtTyxJQUFJLEVBQUUsSUFBSTtvQkFBRUMsUUFBUSxFQUFFLE1BQU07b0JBQUUzVSxPQUFPLEVBQUVyQyxDQUFDLENBQUMsNEJBQTRCO2tCQUFFO2dCQUNuRixDQUFDLENBQ0gsQ0FBQztjQUNIO1lBQ0Y7VUFBQztVQUFBO1lBQUEsT0FBQXVhLFNBQUEsQ0FBQXpJLElBQUE7UUFBQTtNQUFBLEdBQUErSCxRQUFBO0lBQUEsQ0FDRjtJQUFBLGlCQUFBb0IsSUFBQSxFQUFBQyxJQUFBLEVBQUFDLElBQUE7TUFBQSxPQUFBdkIsS0FBQSxDQUFBcEgsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxLQUNELENBQ0UvUSxRQUFRLEVBQ1JpRCxLQUFLLEVBQ0w4QyxlQUFlLEVBQ2Z5QixpQkFBaUIsRUFDakJrQixrQkFBa0IsRUFDbEJLLGtCQUFrQixFQUNsQm9JLHNCQUFzQixFQUN0QjdTLENBQUMsQ0FFTCxDQUFDO0VBRUQsSUFBTW9iLGNBQWMsR0FBR3ZpQixXQUFXLGNBQUE4UixpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUMsU0FBQXdRLFNBQUE7SUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxLQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGNBQUEsRUFBQUMsYUFBQSxFQUFBQyxXQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGFBQUEsRUFBQUMsYUFBQSxFQUFBQyxZQUFBLEVBQUEzRixPQUFBLEVBQUE0RixvQkFBQSxFQUFBbEcsZUFBQSxFQUFBbFosVUFBQSxFQUFBRCxTQUFBLEVBQUFvWixPQUFBLEVBQUFNLGdCQUFBLEVBQUE0RixxQkFBQTtJQUFBLE9BQUF4UixtQkFBQSxDQUFBeUUsSUFBQSxXQUFBZ04sU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUE5TSxJQUFBLEdBQUE4TSxTQUFBLENBQUE3TSxJQUFBO1FBQUE7VUFDakMsSUFBSSxDQUFDeEosWUFBWSxDQUFDaEUsT0FBTyxFQUFFO1lBQ3pCZ0UsWUFBWSxDQUFDaEUsT0FBTyxHQUFHLElBQUk7VUFDN0I7VUFBQyxLQUNHOEIsYUFBYTtZQUFBdVksU0FBQSxDQUFBN00sSUFBQTtZQUFBO1VBQUE7VUFBQTZNLFNBQUEsQ0FBQTdNLElBQUE7VUFBQSxPQUNUbkksWUFBWSxDQUFDLENBQUM7UUFBQTtVQUFBZ1YsU0FBQSxDQUFBN00sSUFBQTtVQUFBO1FBQUE7VUFBQSxLQUNYeEwsa0JBQWtCO1lBQUFxWSxTQUFBLENBQUE3TSxJQUFBO1lBQUE7VUFBQTtVQUNyQnNNLGlCQUFpQixHQUFHUSxPQUFPLEVBQUFoQixxQkFBQSxHQUFDdFgsa0JBQWtCLENBQUMzQixPQUFPLGNBQUFpWixxQkFBQSx1QkFBMUJBLHFCQUFBLENBQTRCemQsSUFBSSxDQUFDLENBQUMsQ0FBQztVQUMvRGtlLHFCQUFxQixHQUFHTyxPQUFPLEVBQUFmLHFCQUFBLEdBQUN2WCxrQkFBa0IsQ0FBQzdILFdBQVcsY0FBQW9mLHFCQUFBLHVCQUE5QkEscUJBQUEsQ0FBZ0M3TCxNQUFNLENBQUM7VUFDdkVzTSxhQUFhLEdBQUdNLE9BQU8sQ0FBQ3RZLGtCQUFrQixDQUFDK1EsS0FBSyxDQUFDO1VBQ2pEa0gsYUFBYSxHQUFHSyxPQUFPLENBQUN0WSxrQkFBa0IsQ0FBQ2tSLEtBQUssQ0FBQztVQUNqRGdILFlBQVksR0FBR0ksT0FBTyxDQUFDdFksa0JBQWtCLENBQUNtUixJQUFJLENBQUM7VUFBQSxNQUVqRCxDQUFDMkcsaUJBQWlCLElBQUksQ0FBQ0MscUJBQXFCLElBQUksQ0FBQ0MsYUFBYSxJQUFJLENBQUNDLGFBQWEsSUFBSSxDQUFDQyxZQUFZO1lBQUFHLFNBQUEsQ0FBQTdNLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQTZNLFNBQUEsQ0FBQTFNLE1BQUE7UUFBQTtVQUkvRjRHLE9BQU8sR0FBRzNRLFdBQVcsQ0FBQzVELE9BQU8sQ0FBQ3JFLEdBQUcsQ0FBQyxVQUFBNFosY0FBYztZQUFBLE9BQUs7Y0FDekRsTixPQUFPLEVBQUVrTixjQUFjLENBQUNsVixPQUFPO2NBQy9CekQsSUFBSSxFQUFFMlksY0FBYyxDQUFDdE4sSUFBSSxDQUFDdE8sRUFBRSxLQUFLK0YsUUFBUSxDQUFDL0YsRUFBRSxDQUFDaUcsUUFBUSxDQUFDLENBQUMsR0FBR2hJLGVBQWUsQ0FBQ3dkLElBQUksR0FBR3hkLGVBQWUsQ0FBQ3NRO1lBQ25HLENBQUM7VUFBQSxDQUFDLENBQUM7VUFBQWlTLG9CQUFBLEdBT0NsVixVQUFVLENBQUNqRixPQUFPLEVBSk5pVSxlQUFlLEdBQUFrRyxvQkFBQSxDQUE3QjdmLFlBQVksRUFDSFMsVUFBVSxHQUFBb2Ysb0JBQUEsQ0FBbkI3WCxPQUFPLEVBQ0N4SCxTQUFTLEdBQUFxZixvQkFBQSxDQUFqQjllLE1BQU0sRUFDQTZZLE9BQU8sR0FBQWlHLG9CQUFBLENBQWIxWCxJQUFJO1VBRUErUixnQkFBZ0IsSUFBQWdGLEtBQUEsSUFBQUMscUJBQUEsR0FBR3BmLHVCQUF1QixDQUFDNFosZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFBd0YscUJBQUEsY0FBQUEscUJBQUEsR0FBSTFlLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFcEIsRUFBRSxjQUFBNmYsS0FBQSxjQUFBQSxLQUFBLEdBQUksSUFBSTtVQUVqRzVKLE9BQU8sQ0FBQzJLLElBQUksQ0FBQyxrRkFBa0YsRUFBRTtZQUMvRkMsYUFBYSxHQUFBZCxjQUFBLEdBQUUzZSxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRXBCLEVBQUUsY0FBQStmLGNBQUEsY0FBQUEsY0FBQSxHQUFJLElBQUk7WUFDckN4ZSxRQUFRLEdBQUF5ZSxhQUFBLEdBQUU3ZSxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRW5CLEVBQUUsY0FBQWdnQixhQUFBLGNBQUFBLGFBQUEsR0FBSSxJQUFJO1lBQy9CdEssTUFBTSxHQUFBdUssV0FBQSxHQUFFMUYsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV2YSxFQUFFLGNBQUFpZ0IsV0FBQSxjQUFBQSxXQUFBLEdBQUksSUFBSTtZQUMzQnBmLGNBQWMsR0FBQXFmLHFCQUFBLEdBQUU1RixlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRXhaLFNBQVMsY0FBQW9mLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBSTtZQUNsRHJGLGdCQUFnQixFQUFoQkEsZ0JBQWdCO1lBQ2hCMkIsU0FBUyxFQUFFeFQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU1RztVQUNwQixDQUFDLENBQUM7VUFFSXFlLHFCQUFxQixHQUFHdGlCLGtDQUFrQyxDQUFDa0ssa0JBQWtCLENBQUMzQixPQUFPLEVBQUU7WUFDM0Y2UyxLQUFLLEVBQUVsUixrQkFBa0IsQ0FBQ2tSLEtBQUs7WUFDL0JDLElBQUksRUFBRW5SLGtCQUFrQixDQUFDbVI7VUFDM0IsQ0FBQyxDQUFDO1VBRUZwYSxzQkFBc0IsQ0FBQztZQUNyQjRILFNBQVMsRUFBRTZDLGFBQWEsQ0FBQ3hELE9BQU87WUFDaENtVixLQUFLLEVBQUVyYyx3QkFBd0IsQ0FBQ3NoQixxQkFBcUIsQ0FBQztZQUN0RHpYLEtBQUssRUFBTEEsS0FBSztZQUNMNUQsT0FBTyxFQUFFNEQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVoSixFQUFFO1lBQ2xCMkksT0FBTyxFQUFFdkgsVUFBVTtZQUNuQk0sTUFBTSxFQUFFUCxTQUFTO1lBQ2pCWCxXQUFXLEVBQUU2SCxrQkFBa0IsQ0FBQzdIO1VBQ2xDLENBQUMsQ0FBQztVQUVGZ1ksT0FBTyxDQUFBbFgsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBO1lBQ0xvRixPQUFPLEVBQUUyQixrQkFBa0IsQ0FBQzNCLE9BQU87WUFDbkNrVSxPQUFPLEVBQVBBLE9BQU87WUFDUDlaLFNBQVMsRUFBRStaLGdCQUFnQjtZQUMzQmdCLElBQUksRUFBRTlWLFFBQVEsQ0FBQzhWLElBQUk7WUFDbkJDLE1BQU0sRUFBRS9WLFFBQVEsQ0FBQy9GLEVBQUUsQ0FBQ2lHLFFBQVEsQ0FBQyxDQUFDO1lBQzlCQyxTQUFTLEVBQUVILFFBQVEsQ0FBQ0csU0FBUztZQUM3QjZWLFFBQVEsRUFBRWhXLFFBQVEsQ0FBQ2dXLFFBQVE7WUFDM0JDLFNBQVMsRUFBRWpXLFFBQVEsQ0FBQ2tXLFVBQVUsQ0FBQ2hXLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDbUMsTUFBTSxFQUFFeUIsYUFBYSxDQUFDeEQsT0FBTztZQUM3QnhHLFNBQVMsRUFBRThKLGdCQUFnQixDQUFDdEQsT0FBTztZQUNuQzZWLFNBQVMsRUFBRWxULEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFeEgsSUFBSztZQUN2QjRELE9BQU8sRUFBRTRELEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFaEosRUFBRztZQUNuQmlKLGlCQUFpQixFQUFFa0Msb0JBQW9CLENBQUM5RSxPQUFPO1lBQy9DNkMsa0JBQWtCLEVBQUVrQyxxQkFBcUIsQ0FBQy9FLE9BQU87WUFDakQ4QyxtQkFBbUIsRUFBRWtDLHNCQUFzQixDQUFDaEY7VUFBTyxHQUMvQyxDQUFBakYsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUUrYSxLQUFLLEtBQUksSUFBSSxHQUFHO1lBQUVBLEtBQUssRUFBRXBiLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDK2EsS0FBSztVQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDckVqYixvQkFBb0IsQ0FBQ0MsU0FBUyxFQUFFQyxVQUFVLENBQUMsR0FDMUNBLFVBQVUsYUFBVkEsVUFBVSxlQUFWQSxVQUFVLENBQUVJLElBQUksR0FBRztZQUFFNGEsV0FBVyxFQUFFaGIsVUFBVSxDQUFDSTtVQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDeEQsQ0FBQStZLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFdmEsRUFBRSxLQUFJLElBQUksR0FBQXNCLGFBQUE7WUFDakJvVSxNQUFNLEVBQUUzVSxNQUFNLENBQUN3WixPQUFPLENBQUN2YSxFQUFFO1VBQUMsR0FBTXVhLE9BQU8sQ0FBQy9ZLElBQUksR0FBRztZQUFFNmEsUUFBUSxFQUFFOUIsT0FBTyxDQUFDL1k7VUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQ2hGLENBQUMsQ0FBQyxHQUNGNkcsa0JBQWtCLENBQUM3SCxXQUFXLEdBQUc7WUFBRUEsV0FBVyxFQUFFNkgsa0JBQWtCLENBQUM3SDtVQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDckY2SCxrQkFBa0IsQ0FBQytRLEtBQUssR0FBRztZQUFFQSxLQUFLLEVBQUUvUSxrQkFBa0IsQ0FBQytRO1VBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNuRS9RLGtCQUFrQixDQUFDZ1IsaUJBQWlCLEdBQUc7WUFBRUEsaUJBQWlCLEVBQUVoUixrQkFBa0IsQ0FBQ2dSO1VBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDdkdoUixrQkFBa0IsQ0FBQ2tSLEtBQUssR0FBRztZQUFFQSxLQUFLLEVBQUVsUixrQkFBa0IsQ0FBQ2tSO1VBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNuRWxSLGtCQUFrQixDQUFDbVIsSUFBSSxHQUFHO1lBQUVBLElBQUksRUFBRW5SLGtCQUFrQixDQUFDbVI7VUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ2hFLENBQUF4USxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNULE1BQU0sS0FBSSxJQUFJLEdBQUc7WUFBRUMsV0FBVyxFQUFFdlQsS0FBSyxDQUFDc1Q7VUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQzFELENBQUF0VCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTVHLElBQUksS0FBSSxJQUFJLEdBQUc7WUFBRW9hLFNBQVMsRUFBRXhULEtBQUssQ0FBQzVHO1VBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNwRCxDQUFBNEcsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUV5VCxLQUFLLEtBQUksSUFBSSxHQUFHO1lBQUVDLFVBQVUsRUFBRTFULEtBQUssQ0FBQ3lUO1VBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN2RHZlLG1CQUFtQixDQUFDbUssa0JBQWtCLENBQUNpUixRQUFRLENBQUMsR0FDaEQ7WUFBRU8sY0FBYyxFQUFFM2IsbUJBQW1CLENBQUNtSyxrQkFBa0IsQ0FBQ2lSLFFBQVE7VUFBRSxDQUFDLEdBQ3BFLENBQUMsQ0FBQyxHQUNGalIsa0JBQWtCLENBQUNpVCxXQUFXLEdBQUc7WUFBRUEsV0FBVyxFQUFFalQsa0JBQWtCLENBQUNpVDtVQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDMUYsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBb0YsU0FBQSxDQUFBdkssSUFBQTtNQUFBO0lBQUEsR0FBQXVKLFFBQUE7RUFBQSxDQUVMLElBQUUsQ0FDRHZYLGFBQWEsRUFDYkUsa0JBQWtCLEVBQ2xCTSxPQUFPLEVBQ1BqSCxNQUFNLEVBQ05vSCxJQUFJLEVBQ0ovQyxRQUFRLEVBQ1JpRCxLQUFLLEVBQ0x3UCxPQUFPLEVBQ1B2UCxpQkFBaUIsRUFDakJDLGtCQUFrQixDQUNuQixDQUFDO0VBRUYsSUFBTTRYLFNBQVMsR0FBRzVqQixXQUFXLENBQUMsWUFBTTtJQUNsQyxJQUFNNmpCLGlCQUFpQixHQUFHbFgsYUFBYSxDQUFDeEQsT0FBTztJQUMvQ3pILG9CQUFvQixDQUFDa1AsS0FBSyxDQUFDaVQsaUJBQWlCLENBQUM7SUFDN0N0aEIsY0FBYyxDQUFDcU8sS0FBSyxDQUFDLENBQUM7SUFDdEJuRSxnQkFBZ0IsQ0FBQ3RELE9BQU8sR0FBRzlJLE1BQU0sQ0FBQyxDQUFDO0lBQ25DcU0sbUJBQW1CLENBQUN2RCxPQUFPLEdBQUcsSUFBSTtJQUNsQ3dELGFBQWEsQ0FBQ3hELE9BQU8sR0FBRzlJLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDeU4sa0JBQWtCLENBQUNuQixhQUFhLENBQUN4RCxPQUFPLENBQUM7SUFDekMyRCxhQUFhLENBQUMzRCxPQUFPLEdBQUcsS0FBSztJQUM3QmlFLHlCQUF5QixDQUFDakUsT0FBTyxHQUFHLElBQUk7SUFDeENrRSxxQkFBcUIsQ0FBQ2xFLE9BQU8sR0FBRyxJQUFJO0lBQ3BDeUQsZUFBZSxDQUFDLElBQUksQ0FBQztFQUN2QixDQUFDLEVBQUUsQ0FBQ0EsZUFBZSxDQUFDLENBQUM7RUFFckIsSUFBTWtYLGNBQWMsR0FBRzlqQixXQUFXLENBQUMsWUFBTTtJQUN2QzZiLGFBQWEsQ0FBQyxDQUFDO0lBQ2YzTyxlQUFlLENBQUMvRCxPQUFPLEdBQUcsS0FBSztFQUNqQyxDQUFDLEVBQUUsQ0FBQzBTLGFBQWEsQ0FBQyxDQUFDO0VBRW5CLE9BQU87SUFDTDFSLFFBQVEsRUFBUkEsUUFBUTtJQUNSbUUsZUFBZSxFQUFmQSxlQUFlO0lBQ2ZDLHFCQUFxQixFQUFyQkEscUJBQXFCO0lBQ3JCZ04sZUFBZSxFQUFmQSxlQUFlO0lBQ2ZFLFNBQVMsRUFBVEEsU0FBUztJQUNUQyxjQUFjLEVBQWRBLGNBQWM7SUFDZEMsY0FBYyxFQUFkQSxjQUFjO0lBQ2RsTyxjQUFjLEVBQWRBLGNBQWM7SUFDZHFPLGNBQWMsRUFBZEEsY0FBYztJQUNkblAsYUFBYSxFQUFFQSxhQUFhLENBQUN4RCxPQUFPO0lBQ3BDc0QsZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDdEQsT0FBTztJQUUxQzRTLFdBQVcsRUFBWEEsV0FBVztJQUNYaUUsYUFBYSxFQUFiQSxhQUFhO0lBQ2JDLGNBQWMsRUFBZEEsY0FBYztJQUNkYSxzQkFBc0IsRUFBdEJBLHNCQUFzQjtJQUN0Qm5TLFlBQVksRUFBWkEsWUFBWTtJQUNaNFQsY0FBYyxFQUFkQSxjQUFjO0lBQ2RxQixTQUFTLEVBQVRBLFNBQVM7SUFDVEUsY0FBYyxFQUFkQSxjQUFjO0lBRWRDLFVBQVUsRUFBRXhJLGVBQWUsSUFBSWpOO0VBQ2pDLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119