@projectcor/maia-components 2.11.100-9 → 2.11.101-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/lib/components/atoms/Chip/Chip.js +16 -6
  3. package/lib/components/atoms/MAIAInput/MAIAInput.js +13 -3
  4. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +20 -0
  5. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +13 -0
  6. package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
  7. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +3 -1
  8. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +9 -6
  9. package/lib/components/atoms/icons/MaiaSparkleIcon.js +75 -0
  10. package/lib/components/atoms/icons/index.js +2 -1
  11. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +46 -7
  12. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +195 -62
  13. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +28 -18
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +9 -2
  15. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +15 -3
  16. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -1
  17. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +63 -0
  18. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +51 -0
  19. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +2 -0
  20. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -2
  21. package/lib/components/molecules/Sidebar/Sidebar.js +104 -61
  22. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +16 -1
  23. package/lib/components/molecules/Sidebar/Sidebar.styles.js +30 -29
  24. package/lib/components/organisms/ChatAI/ChatAI.js +6 -2
  25. package/lib/hooks/useChatManager/useChatManager.js +530 -438
  26. package/lib/hooks/useChatMessages/useChatMessages.js +414 -236
  27. package/lib/hooks/useChats/useChats.js +21 -4
  28. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  29. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +139 -521
  30. package/lib/hooks/useStreamingMessage/index.js +2 -3
  31. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +13 -17
  32. package/lib/lang/br/index.js +11 -1
  33. package/lib/lang/en/index.js +11 -1
  34. package/lib/lang/es/index.js +11 -1
  35. package/lib/lang/fr/index.js +13 -2
  36. package/lib/services/maia/Chats/getChatsByUserId.js +6 -4
  37. package/lib/services/maia/Chats/index.js +3 -1
  38. package/lib/services/maia/Chats/markSessionAsRead.js +32 -0
  39. package/lib/store/chatsSidebarOptimistic.js +92 -0
  40. package/lib/store/chatsStore.types.js +1 -1
  41. package/lib/store/maiaMinimizedPersistence.js +49 -0
  42. package/lib/store/sessions/activeView.js +22 -0
  43. package/lib/store/sessions/index.js +9 -0
  44. package/lib/store/sessions/sessionHitlContext.js +15 -0
  45. package/lib/store/sessions/sessionNotificationSound.js +57 -0
  46. package/lib/store/sessions/sessionNotifications.js +110 -0
  47. package/lib/store/sessions/sessionNotifications.types.js +2 -0
  48. package/lib/store/sessions/sessionStreamManager.js +576 -0
  49. package/lib/store/sessions/sessionStreamingText.js +80 -0
  50. package/lib/store/sessions/sessions.types.js +35 -0
  51. package/lib/store/sessions/useSessionMeta.js +39 -0
  52. package/lib/store/sessions/useSessionStreamingText.js +18 -0
  53. package/lib/store/sessions/useSessionsStore.js +197 -0
  54. package/lib/store/useChatsStore.js +149 -12
  55. package/lib/types/Chat.js +1 -1
  56. package/lib/utils/formatUnreadCount.js +6 -0
  57. package/package.json +1 -1
  58. package/lib/hooks/useStreamingMessage/streamingStore.js +0 -69
@@ -50,6 +50,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
50
50
  var TOOL_CHIP_EXIT_MS = 220;
51
51
  var SLASH_DROPDOWN_WIDTH_PX = 340;
52
52
  var SLASH_DROPDOWN_LEFT_OFFSET_PX = 24;
53
+ var SLASH_DROPDOWN_MAX_HEIGHT_PX = 416;
54
+ var SLASH_DROPDOWN_GAP_ABOVE_INPUT_PX = 4;
55
+ var SLASH_DROPDOWN_VIEWPORT_EDGE_PX = 8;
53
56
  export var MAIAInput = function MAIAInput(_ref) {
54
57
  var _agent$entity, _contextChip$items, _contextChip$items2, _agent$connectors, _agent$model_display_, _contextChip$items3;
55
58
  var onSendMessage = _ref.onSendMessage,
@@ -60,6 +63,7 @@ export var MAIAInput = function MAIAInput(_ref) {
60
63
  onStopGeneration = _ref.onStopGeneration,
61
64
  placeholder = _ref.placeholder,
62
65
  onChange = _ref.onChange,
66
+ onFocus = _ref.onFocus,
63
67
  _ref$alignButtons = _ref.alignButtons,
64
68
  alignButtons = _ref$alignButtons === void 0 ? 'vertical' : _ref$alignButtons,
65
69
  onFileAttach = _ref.onFileAttach,
@@ -171,7 +175,8 @@ export var MAIAInput = function MAIAInput(_ref) {
171
175
  var slashDropdownZIndex = useMaiaTaskPanelZIndex(1200, 'overlay');
172
176
  var _useState19 = useState({
173
177
  bottom: 0,
174
- left: 0
178
+ left: 0,
179
+ maxHeight: SLASH_DROPDOWN_MAX_HEIGHT_PX
175
180
  }),
176
181
  _useState20 = _slicedToArray(_useState19, 2),
177
182
  slashDropdownPos = _useState20[0],
@@ -183,9 +188,12 @@ export var MAIAInput = function MAIAInput(_ref) {
183
188
  var viewportH = window.innerHeight;
184
189
  var viewportW = window.innerWidth;
185
190
  var left = Math.max(8, Math.min(viewportW - SLASH_DROPDOWN_WIDTH_PX - 8, rect.left + SLASH_DROPDOWN_LEFT_OFFSET_PX));
191
+ var availableHeightPx = rect.top - SLASH_DROPDOWN_GAP_ABOVE_INPUT_PX - SLASH_DROPDOWN_VIEWPORT_EDGE_PX;
192
+ var maxHeight = Math.min(SLASH_DROPDOWN_MAX_HEIGHT_PX, Math.max(0, availableHeightPx));
186
193
  setSlashDropdownPos({
187
194
  left: left,
188
- bottom: viewportH - rect.top + 4
195
+ bottom: viewportH - rect.top + SLASH_DROPDOWN_GAP_ABOVE_INPUT_PX,
196
+ maxHeight: maxHeight
189
197
  });
190
198
  }, [wrapperRef]);
191
199
  useLayoutEffect(function () {
@@ -800,6 +808,7 @@ export var MAIAInput = function MAIAInput(_ref) {
800
808
  maxHeight: editorMaxHeight,
801
809
  onInput: handleEditorInput,
802
810
  onKeyDown: handleKeyDown,
811
+ onFocus: onFocus,
803
812
  onPasteFiles: handlePasteFiles
804
813
  })
805
814
  }), /*#__PURE__*/_jsxs(SCInputToolbarRow, {
@@ -1030,9 +1039,10 @@ export var MAIAInput = function MAIAInput(_ref) {
1030
1039
  onClose: handleCloseSlashDropdown,
1031
1040
  bottom: slashDropdownPos.bottom,
1032
1041
  left: slashDropdownPos.left,
1042
+ maxHeight: slashDropdownPos.maxHeight,
1033
1043
  zIndex: slashDropdownZIndex,
1034
1044
  anchorRef: wrapperRef
1035
1045
  }), document.body)]
1036
1046
  });
1037
1047
  };
1038
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiVG9vbHRpcCIsIkFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbiIsIkFjdGl2ZVRvb2xDaGlwTGFiZWwiLCJBY3RpdmVUb29sQ2hpcFJvb3QiLCJQbHVzTWVudURpdmlkZXIiLCJQbHVzTWVudUlubmVyQ29sdW1uIiwiUGx1c01lbnVJdGVtQnV0dG9uIiwiUGx1c01lbnVJdGVtTGFiZWwiLCJQbHVzTWVudVBhcGVyIiwiUGx1c01lbnVUb29sc1JvdyIsIlBsdXNUb2dnbGVCdXR0b24iLCJTQ0lucHV0Q2hpcHNSb3ciLCJTQ0lucHV0TWV0YUljb25CdXR0b24iLCJTQ0lucHV0TWV0YUluZGljYXRvcnMiLCJTQ01JQXR0YWNobWVudCIsIlNDTUlBdHRhY2htZW50RGVsZXRlSWNvbiIsIlNDTUlBdHRhY2htZW50RmlsZUljb24iLCJTQ01JQXR0YWNobWVudEljb24iLCJTQ01JQXR0YWNobWVudE5hbWUiLCJTdHlsZWRNQUlBSW5wdXRXcmFwcGVyIiwiU3R5bGVkTUFJQVNlbmRCdXR0b24iLCJTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkIiwiU0NJbnB1dEVkaXRvckNlbGwiLCJTQ0lucHV0VG9vbGJhclJvdyIsIlN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwiLCJTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVN0b3BCdXR0b24iLCJTdHlsZWRNQUlBU3RvcEljb24iLCJTdHlsZWRNQUlBRHJvcE92ZXJsYXkiLCJnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQiLCJNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWCIsInVzZUdsb2JhbENvbnRleHQiLCJNb2RhbEZpbGVFeGNlZWRzIiwiU2xhc2hDb21tYW5kRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwicmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSIsInVzZVQiLCJNYWlhSW5wdXRBZGRJY29uIiwiTWFpYUlucHV0QXR0YWNoSWNvbiIsIk1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24iLCJNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiIsIkNvckFjY2Vzc0ljb24iLCJNYWlhSW5wdXRNZW50aW9uSWNvbiIsIk1haWFJbnB1dFJvYm90SWNvbiIsIk1haWFJbnB1dFNlbmRJY29uIiwiTWFpYUlucHV0U2xhc2hJY29uIiwiTWFpYUlucHV0V2ViU2VhcmNoSWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSIsIk1BSUFfQ0hBVF9JTlBVVF9VSSIsImFsbG93ZWRGaWxlVHlwZXMiLCJmaWxlVHlwZXMiLCJNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OIiwiTUFYX0ZJTEVfU0laRV9NQl9PTEQiLCJNQVhfRklMRV9TSVpFX01CX0FVRElPIiwiTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMiLCJBUFBDVUVTX0VWRU5UUyIsInRyYWNrQXBwY3Vlc0V2ZW50IiwiQ2hpcCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZU1lbnRpb25Qb3BvdmVyIiwiZGF0YVRyYW5zZmVySGFzRmlsZXMiLCJmaWxlc0Zyb21EYXRhVHJhbnNmZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJUT09MX0NISVBfRVhJVF9NUyIsIlNMQVNIX0RST1BET1dOX1dJRFRIX1BYIiwiU0xBU0hfRFJPUERPV05fTEVGVF9PRkZTRVRfUFgiLCJNQUlBSW5wdXQiLCJfcmVmIiwiX2FnZW50JGVudGl0eSIsIl9jb250ZXh0Q2hpcCRpdGVtcyIsIl9jb250ZXh0Q2hpcCRpdGVtczIiLCJfYWdlbnQkY29ubmVjdG9ycyIsIl9hZ2VudCRtb2RlbF9kaXNwbGF5XyIsIl9jb250ZXh0Q2hpcCRpdGVtczMiLCJvblNlbmRNZXNzYWdlIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwiX3JlZiRhbGlnbkJ1dHRvbnMiLCJhbGlnbkJ1dHRvbnMiLCJvbkZpbGVBdHRhY2giLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJfcmVmJGF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwidG9vbHRpcFpJbmRleCIsImV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJsYXlvdXRNb2RlIiwiY29udGV4dENoaXAiLCJfdXNlVCIsInQiLCJlZGl0b3JSZWYiLCJmaWxlSW5wdXRSZWYiLCJjaGlwc1Jvd1JlZiIsInRvb2xiYXJSb3dSZWYiLCJpbnRlcm5hbFdyYXBwZXJSZWYiLCJ3cmFwcGVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaGFzVHlwaW5nUHJlc2VuY2UiLCJzZXRIYXNUeXBpbmdQcmVzZW5jZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2hpcHNSb3dIZWlnaHQiLCJzZXRDaGlwc1Jvd0hlaWdodCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidG9vbGJhclJvd0hlaWdodCIsInNldFRvb2xiYXJSb3dIZWlnaHQiLCJfdXNlU3RhdGU3IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImV4Y2VlZGVkRmlsZXMiLCJmaWxlU2l6ZXMiLCJfdXNlU3RhdGU4IiwibW9kYWxQcm9wcyIsInNldE1vZGFsUHJvcHMiLCJldmVudEFtcGxpdHVkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJ0b2dnbGVEZWVwU2VhcmNoIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiYWdlbnQiLCJpbml0aWFsRHJhZnQiLCJkZWVwTGlua1NlbmRQZW5kaW5nUmVmIiwicGx1c01lbnVaSW5kZXgiLCJpbml0aWFsRHJhZnRBcHBsaWVkUmVmIiwiX3VzZU1lbnRpb25Qb3BvdmVyIiwicG9wb3Zlck9wZW4iLCJyZXNldE1lbnRpb25PcGVuVHJhY2tpbmciLCJoYW5kbGVUcmlnZ2VyIiwiaGFuZGxlUG9wb3ZlcktleURvd24iLCJoYW5kbGVLZXlEb3duIiwicG9wb3Zlck5vZGUiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInBsdXNNZW51QW5jaG9yIiwic2V0UGx1c01lbnVBbmNob3IiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJhY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwidG9vbENoaXBFeGl0aW5nIiwic2V0VG9vbENoaXBFeGl0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzRmlsZURyYWdBY3RpdmUiLCJzZXRJc0ZpbGVEcmFnQWN0aXZlIiwidG9vbENoaXBFeGl0VGltZXJSZWYiLCJmaWxlRHJhZ0NvdW50ZXJSZWYiLCJzZWFyY2hNb2RlQWN0aXZlUmVmIiwid2ViIiwiZGVlcCIsInBsdXNNZW51T3BlbiIsIkJvb2xlYW4iLCJwcmV2aW91c0FnZW50SWRSZWYiLCJ1bmRlZmluZWQiLCJwcmV2aW91c0NoYXRJZFJlZiIsInByZXZpb3VzTmV3Q2hhdEtleVJlZiIsInByZXZpb3VzTGF5b3V0TW9kZVJlZiIsImFuYWx5dGljc0FnZW50VHlwZSIsImFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCIsInR5cGUiLCJlbnRpdHkiLCJfdXNlU2xhc2hDb21tYW5kcyIsImlkIiwic2xhc2hDb21tYW5kcyIsImNvbW1hbmRzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInNob3dTbGFzaERyb3Bkb3duIiwic2V0U2hvd1NsYXNoRHJvcGRvd24iLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2xhc2hRdWVyeSIsInNldFNsYXNoUXVlcnkiLCJzbGFzaE1lbnVXYXNPcGVuUmVmIiwic2xhc2hEcm9wZG93blpJbmRleCIsIl91c2VTdGF0ZTE5IiwiYm90dG9tIiwibGVmdCIsIl91c2VTdGF0ZTIwIiwic2xhc2hEcm9wZG93blBvcyIsInNldFNsYXNoRHJvcGRvd25Qb3MiLCJwb3NpdGlvblNsYXNoRHJvcGRvd24iLCJfd3JhcHBlclJlZiRjdXJyZW50IiwicmVjdCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsInZpZXdwb3J0SCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwidmlld3BvcnRXIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJ0b3AiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUaW1lb3V0IiwiX2VkaXRvclJlZiRjdXJyZW50IiwiZm9jdXMiLCJjbG9zZVBsdXNNZW51IiwiY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCIsImNsZWFyVGltZW91dCIsImhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24iLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVQbHVzQnV0dG9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiYWlDaGF0UGx1c09wZW4iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImhhbmRsZU1lbnRpb25CdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsImhhbmRsZVBsdXNNZW51QXR0YWNoIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiYWlDaGF0VG9vbHMiLCJvcHRpb24iLCJsZW5ndGgiLCJjbGljayIsImJlZ2luVG9vbENoaXBFeGl0Iiwid2FzV2ViIiwid2FzRGVlcCIsIl9zZWFyY2hNb2RlQWN0aXZlUmVmJCIsImhhbmRsZVBsdXNNZW51V2ViU2VhcmNoIiwiaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoIiwiaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwiaW5zZXJ0U2xhc2hUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50NCIsIl9lZGl0b3JSZWYkY3VycmVudDUiLCJkcmFmdCIsInRyaW0iLCJzZXRQbGFpblRleHQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ2Iiwic2VuZERpc2FibGVkIiwiYWdlbnRDaGFuZ2VkIiwicHJldmlvdXNDaGF0SWQiLCJjdXJyZW50Q2hhdElkIiwiY2hhdENoYW5nZWQiLCJjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQiLCJuZXdDaGF0U3RhcnRlZCIsImlzSW5pdGlhbE1vdW50IiwiZGVsYXkiLCJfZWRpdG9yUmVmJGN1cnJlbnQ3IiwicHJldmlvdXNMYXlvdXRNb2RlIiwidGltZW91dElkIiwiX2VkaXRvclJlZiRjdXJyZW50OCIsImlzU3BlY2lhbGlzdEFnZW50Iiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsIl9yZWYyIiwiX3JlZjMiLCJlbnRyeSIsImlzSW50ZXJzZWN0aW5nIiwibWFpYUNvbnRleHRNZW50aW9uSW5pdCIsImRpc2Nvbm5lY3QiLCJ0aHJlc2hvbGQiLCJvYnNlcnZlIiwiaGFuZGxlU2Vzc2lvbkNoYW5nZSIsIl9lZGl0b3JSZWYkY3VycmVudDkiLCJjbGVhciIsImRvY3VtZW50IiwiaGFuZGxlUmVmb2N1cyIsIl9lZGl0b3JSZWYkY3VycmVudDAiLCJoYW5kbGVTZW5kTWVzc2FnZSIsIl9lZGl0b3JSZWYkY3VycmVudDEiLCJfc3RhdGUkdGV4dCIsIl9zdGF0ZSRtZW50aW9ucyIsIl9lZGl0b3JSZWYkY3VycmVudDEwIiwic3RhdGUiLCJzZXJpYWxpemUiLCJ0ZXh0IiwibWVudGlvbnMiLCJoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmQiLCJjb21tYW5kIiwiX2VkaXRvclJlZiRjdXJyZW50MTEiLCJfc3RhdGUkdGV4dDIiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMyIsImFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0IiwidHlwZV9xdWlja19hY3Rpb24iLCJvcmlnaW5fcXVpY2tfYWN0aW9uIiwidHJpZ2dlclBhcnQiLCJjb25jYXQiLCJiZWZvcmVUcmlnZ2VyIiwiZW5kc1dpdGgiLCJzbGljZSIsImlzRW1wdHlCZWZvcmVUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50MTIiLCJ0aXRsZSIsImluc2VydFNsYXNoQ29tbWFuZCIsImxhYmVsIiwiaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duIiwiaGFuZGxlRWRpdG9ySW5wdXQiLCJfcmVmNCIsInRyaWdnZXIiLCJzbGFzaFRyaWdnZXIiLCJhY3RpdmUiLCJhaUNoYXRRdWlja0FjdGlvbk9wZW4iLCJxdWVyeSIsImtleSIsInNoaWZ0S2V5IiwiYWRkRmlsZXMiLCJpbmNvbWluZyIsImZpbGVzSW5zZXJ0ZWQiLCJpc05ld0Zvcm1hdCIsImV4dGVuc2lvbiIsImluY2x1ZGVzIiwiaXNPbGRGb3JtYXQiLCJpc0F1ZGlvRm9ybWF0IiwiZm9yRWFjaCIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJleGNsdWRlZEZpbGUiLCJmaWxlTmFtZVBhcnRzIiwibmFtZSIsInNwbGl0IiwiZmlsZUV4dGVuc2lvbiIsInBvcCIsInRvTG93ZXJDYXNlIiwic2l6ZSIsInB1c2giLCJ0eXBlRmlsZSIsInBhcnNlZEZpbGUiLCJGaWxlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwidGFyZ2V0IiwiQXJyYXkiLCJmcm9tIiwidmFsdWUiLCJyZXNldEZpbGVEcmFnIiwiaGFuZGxlRHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJhZ092ZXIiLCJkcm9wRWZmZWN0IiwiaGFuZGxlRHJvcCIsImhhbmRsZVBhc3RlRmlsZXMiLCJoYW5kbGVXcmFwcGVyUGFzdGUiLCJfd3JhcHBlclJlZiRjdXJyZW50MiIsImVkaXRvckVsIiwicXVlcnlTZWxlY3RvciIsImNvbnRhaW5zIiwiY2xpcGJvYXJkRGF0YSIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImFpQ2hhdFN0b3BSZXNwb25zZSIsInNob3dDaGlwc1JvdyIsIml0ZW1zIiwiY2hpcHNFbCIsInRvb2xiYXJFbCIsInVwZGF0ZUhlaWdodHMiLCJuZXh0Q2hpcHMiLCJjZWlsIiwiaGVpZ2h0IiwibmV4dFRvb2xiYXIiLCJwcmV2IiwiUmVzaXplT2JzZXJ2ZXIiLCJlZGl0b3JNYXhIZWlnaHQiLCJjaGlwc1Jvd0hlaWdodFB4IiwidG9vbGJhclJvd0hlaWdodFB4IiwidG9vbGJhckljb25Db2xvciIsInBsdXNNZW51SWNvbkNvbG9yIiwibWVudUljb24iLCJpc0N1c3RvbUFnZW50IiwiaGFzQ29yQWNjZXNzIiwiY29ubmVjdG9ycyIsInNvbWUiLCJjb25uZWN0b3IiLCJncm91cCIsInNsdWdzIiwic2x1ZyIsImFnZW50TW9kZWxOYW1lIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzIiwic2hvd01lbnRpb25CdXR0b24iLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uIiwiY29sb3IiLCJjaGlwQ2xvc2VJY29uIiwiY2hpbGRyZW4iLCJyZWYiLCJoYXNBdHRhY2htZW50cyIsIiRmaWxlRHJhZ0FjdGl2ZSIsIm9uUGFzdGUiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsImxlYWRpbmdJY29uIiwibWFwIiwiYXR0YWNobWVudCIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsImlzSW1hZ2UiLCJzdGFydHNXaXRoIiwidGVzdCIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm1heEhlaWdodCIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsIm9uQ2xvc2UiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiZGlzYWJsZUVuZm9yY2VGb2N1cyIsImRpc2FibGVSZXN0b3JlRm9jdXMiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzeCIsInNsb3RQcm9wcyIsInBhcGVyIiwiZWxldmF0aW9uIiwib3ZlcmZsb3ciLCJib3JkZXJSYWRpdXMiLCJib3hTaGFkb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5Ub3AiLCIkaG92ZXJlZCIsIiRleGl0aW5nIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiJGNsb3NlU2hvd24iLCJtb2RlbCIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJoYXNWYWx1ZXMiLCJtdWx0aXBsZSIsImFjY2VwdCIsImJvZHkiLCJvblNlbGVjdCIsImFuY2hvclJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL01BSUFJbnB1dC9NQUlBSW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdm9pZCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1sb25lbHktaWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7XG4gIENoYW5nZUV2ZW50LFxuICBDbGlwYm9hcmRFdmVudCxcbiAgRHJhZ0V2ZW50LFxuICBLZXlib2FyZEV2ZW50LFxuICBNb3VzZUV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IENoZWNrIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hlY2snXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuXG5pbXBvcnQge1xuICBBY3RpdmVUb29sQ2hpcEljb25CdXR0b24sXG4gIEFjdGl2ZVRvb2xDaGlwTGFiZWwsXG4gIEFjdGl2ZVRvb2xDaGlwUm9vdCxcbiAgUGx1c01lbnVEaXZpZGVyLFxuICBQbHVzTWVudUlubmVyQ29sdW1uLFxuICBQbHVzTWVudUl0ZW1CdXR0b24sXG4gIFBsdXNNZW51SXRlbUxhYmVsLFxuICBQbHVzTWVudVBhcGVyLFxuICBQbHVzTWVudVRvb2xzUm93LFxuICBQbHVzVG9nZ2xlQnV0dG9uLFxuICBTQ0lucHV0Q2hpcHNSb3csXG4gIFNDSW5wdXRNZXRhSWNvbkJ1dHRvbixcbiAgU0NJbnB1dE1ldGFJbmRpY2F0b3JzLFxuICBTQ01JQXR0YWNobWVudCxcbiAgU0NNSUF0dGFjaG1lbnREZWxldGVJY29uLFxuICBTQ01JQXR0YWNobWVudEZpbGVJY29uLFxuICBTQ01JQXR0YWNobWVudEljb24sXG4gIFNDTUlBdHRhY2htZW50TmFtZSxcbiAgU3R5bGVkTUFJQUlucHV0V3JhcHBlcixcbiAgU3R5bGVkTUFJQVNlbmRCdXR0b24sXG4gIFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQsXG4gIFNDSW5wdXRFZGl0b3JDZWxsLFxuICBTQ0lucHV0VG9vbGJhclJvdyxcbiAgU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVN0b3BCdXR0b24sXG4gIFN0eWxlZE1BSUFTdG9wSWNvbixcbiAgU3R5bGVkTUFJQURyb3BPdmVybGF5LFxufSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCwgTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFggfSBmcm9tICcuL21haWFJbnB1dExheW91dCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgTW9kYWxGaWxlRXhjZWVkcyB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9Nb2RhbEZpbGVFeGNlZWRzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kRHJvcGRvd24gfSBmcm9tICcuLi9TbGFzaENvbW1hbmREcm9wZG93bidcbmltcG9ydCB7IHVzZVNsYXNoQ29tbWFuZHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbGFzaENvbW1hbmRzJ1xuaW1wb3J0IHsgcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZSdcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQWN0aW9uJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBNYWlhSW5wdXRBZGRJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QWRkSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dEF0dGFjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBdHRhY2hJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dERlZXBTZWFyY2hJY29uJ1xuaW1wb3J0IHsgQ29yQWNjZXNzSWNvbiB9IGZyb20gJy4uL2ljb25zL0NvckFjY2Vzc0ljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRNZW50aW9uSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dE1lbnRpb25JY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0Um9ib3RJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0Um9ib3RJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2VuZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRTZW5kSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFNsYXNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNsYXNoSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFdlYlNlYXJjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRXZWJTZWFyY2hJY29uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgeyBNQUlBX0NIQVRfSU5QVVRfVUkgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvY29uZmlnJ1xuaW1wb3J0IHtcbiAgYWxsb3dlZEZpbGVUeXBlcyxcbiAgZmlsZVR5cGVzLFxuICBNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OLFxuICBNQVhfRklMRV9TSVpFX01CX09MRCxcbiAgTUFYX0ZJTEVfU0laRV9NQl9BVURJTyxcbiAgTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMsXG59IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9mb3JtYXRFeHRlbnNpb25zJ1xuaW1wb3J0IHsgQVBQQ1VFU19FVkVOVFMsIHRyYWNrQXBwY3Vlc0V2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwY3VlcydcbmltcG9ydCB7IENoaXAgfSBmcm9tICcuLi9DaGlwJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25FZGl0b3IsIENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IHVzZU1lbnRpb25Qb3BvdmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWVudGlvblBvcG92ZXInXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGRhdGFUcmFuc2Zlckhhc0ZpbGVzLCBmaWxlc0Zyb21EYXRhVHJhbnNmZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jaGF0SW5wdXRGaWxlcydcblxuY29uc3QgVE9PTF9DSElQX0VYSVRfTVMgPSAyMjBcbmNvbnN0IFNMQVNIX0RST1BET1dOX1dJRFRIX1BYID0gMzQwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9MRUZUX09GRlNFVF9QWCA9IDI0XG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxudHlwZSBNQUlBSW5wdXRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzV3JpdGluZz86IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgb25DaGFuZ2U/OiAoKSA9PiB2b2lkXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgb25GaWxlQXR0YWNoPzogKGZpbGU6IEZpbGUpID0+IHZvaWRcbiAgb25EZWxldGVBdHRhY2htZW50PzogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBjaGF0SWQ/OiBzdHJpbmdcbiAgbmV3Q2hhdEtleT86IG51bWJlclxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIC8qKiBFeHBvbmUgZWwgd3JhcHBlciBkZWwgaW5wdXQgcGFyYSBhbmNsYXIgcG9wb3ZlcnMgKG1lbmNpb25lcywgcGluIGRlIGNvbnRleHRvKS4gKi9cbiAgcG9wb3ZlckFuY2hvclJlZj86IE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICBsYXlvdXRNb2RlPzogJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuICAvKiogQ2hpcCBkZSBjb250ZXh0byAodGFyZWEvcHJveWVjdG8vY2xpZW50ZS9nbG9iYWwpIG1vc3RyYWRvIGVuIGxhIHRvb2xiYXIgZGVsIGlucHV0LiAqL1xuICBjb250ZXh0Q2hpcD86IHtcbiAgICBpdGVtczogc3RyaW5nW11cbiAgICB0eXBlPzogQ29udGV4dEVudGl0eVR5cGVcbiAgICBsZWFkaW5nSWNvbj86IFJlYWN0Tm9kZVxuICB9IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgTUFJQUlucHV0ID0gKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCxcbiAgaXNTdHJlYW1pbmcsXG4gIGlzV3JpdGluZyxcbiAgb25TdG9wR2VuZXJhdGlvbixcbiAgcGxhY2Vob2xkZXIsXG4gIG9uQ2hhbmdlLFxuICBhbGlnbkJ1dHRvbnMgPSAndmVydGljYWwnLFxuICBvbkZpbGVBdHRhY2gsXG4gIG9uRGVsZXRlQXR0YWNobWVudCxcbiAgYXR0YWNobWVudHMgPSBbXSxcbiAgY2hhdElkLFxuICBuZXdDaGF0S2V5LFxuICB0b29sdGlwWkluZGV4LFxuICBwb3BvdmVyQW5jaG9yUmVmOiBleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYsXG4gIGxheW91dE1vZGUsXG4gIGNvbnRleHRDaGlwLFxufTogTUFJQUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmPENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPihudWxsKVxuICBjb25zdCBmaWxlSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgY2hpcHNSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHRvb2xiYXJSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGludGVybmFsV3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qgd3JhcHBlclJlZiA9IGV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiA/PyBpbnRlcm5hbFdyYXBwZXJSZWZcbiAgY29uc3QgW2hhc1R5cGluZ1ByZXNlbmNlLCBzZXRIYXNUeXBpbmdQcmVzZW5jZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2NoaXBzUm93SGVpZ2h0LCBzZXRDaGlwc1Jvd0hlaWdodF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbdG9vbGJhclJvd0hlaWdodCwgc2V0VG9vbGJhclJvd0hlaWdodF0gPSB1c2VTdGF0ZShNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWClcbiAgY29uc3QgW21vZGFsUHJvcHMsIHNldE1vZGFsUHJvcHNdID0gdXNlU3RhdGUoe1xuICAgIGlzT3BlbjogZmFsc2UsXG4gICAgZXhjbHVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZXhjZWVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZmlsZVNpemVzOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LFxuICB9KVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3Qge1xuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVEZWVwU2VhcmNoLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhZ2VudCxcbiAgICBpbml0aWFsRHJhZnQsXG4gICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZixcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBwbHVzTWVudVpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTMwMCwgJ292ZXJsYXknKVxuICBjb25zdCBpbml0aWFsRHJhZnRBcHBsaWVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IHtcbiAgICBwb3BvdmVyT3BlbixcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsXG4gICAgaGFuZGxlVHJpZ2dlcixcbiAgICBoYW5kbGVLZXlEb3duOiBoYW5kbGVQb3BvdmVyS2V5RG93bixcbiAgICBwb3BvdmVyTm9kZSxcbiAgfSA9IHVzZU1lbnRpb25Qb3BvdmVyKHtcbiAgICBlZGl0b3JSZWYsXG4gICAgcG9wb3ZlckFuY2hvclJlZjogd3JhcHBlclJlZixcbiAgfSlcblxuICBjb25zdCBbcGx1c01lbnVBbmNob3IsIHNldFBsdXNNZW51QW5jaG9yXSA9IHVzZVN0YXRlPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2FjdGl2ZVRvb2xDaGlwSG92ZXJlZCwgc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdG9vbENoaXBFeGl0aW5nLCBzZXRUb29sQ2hpcEV4aXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0ZpbGVEcmFnQWN0aXZlLCBzZXRJc0ZpbGVEcmFnQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0b29sQ2hpcEV4aXRUaW1lclJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGZpbGVEcmFnQ291bnRlclJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzZWFyY2hNb2RlQWN0aXZlUmVmID0gdXNlUmVmKHsgd2ViOiBmYWxzZSwgZGVlcDogZmFsc2UgfSlcbiAgY29uc3QgcGx1c01lbnVPcGVuID0gQm9vbGVhbihwbHVzTWVudUFuY2hvcilcblxuICAvLyBJbmljaWFsaXphciBsYXMgcmVmZXJlbmNpYXMgY29tbyB1bmRlZmluZWQgcGFyYSBkZXRlY3RhciBlbCBwcmltZXIgY2FtYmlvIGNvcnJlY3RhbWVudGVcbiAgY29uc3QgcHJldmlvdXNBZ2VudElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0NoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNOZXdDaGF0S2V5UmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0xheW91dE1vZGVSZWYgPSB1c2VSZWY8TUFJQUlucHV0UHJvcHNbJ2xheW91dE1vZGUnXT4odW5kZWZpbmVkKVxuXG4gIGNvbnN0IGFuYWx5dGljc0FnZW50VHlwZSA9IGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUoYWdlbnQpXG4gIGNvbnN0IGFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCA9IGFnZW50Py50eXBlID09PSAnY2xvbmUnID8geyBlbnRpdHk6IGFnZW50LmVudGl0eSA/PyBudWxsIH0gOiB7fVxuXG4gIC8vIFNsYXNoIGNvbW1hbmRzIGFwbGljYW4gYSBjbG9uZXMgZXNwZWNpYWxpc3RhcyB5IGFsIG9yY2hlc3RyYXRvciBnbG9iYWwgKGVzdGUgYWdyZWdhIGxvcyBkZSBzdXMgc3ViYWdlbnRlcykuXG4gIC8vIExvcyBjdXN0b20geSBsb3MgY2xvbmUgZ2xvYmFsL21haWFrZXIgbm8gbG9zIHRpZW5lbiBoYWJpbGl0YWRvcy5cbiAgY29uc3QgeyBjb21tYW5kczogc2xhc2hDb21tYW5kcyB9ID0gdXNlU2xhc2hDb21tYW5kcyhcbiAgICAoYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnKSB8fFxuICAgICAgKGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmIGFnZW50Py5lbnRpdHkgIT09ICdnbG9iYWwnKVxuICAgICAgPyBhZ2VudD8uaWRcbiAgICAgIDogdW5kZWZpbmVkXG4gIClcbiAgY29uc3QgW3Nob3dTbGFzaERyb3Bkb3duLCBzZXRTaG93U2xhc2hEcm9wZG93bl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NsYXNoUXVlcnksIHNldFNsYXNoUXVlcnldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IHNsYXNoTWVudVdhc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNsYXNoRHJvcGRvd25aSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgW3NsYXNoRHJvcGRvd25Qb3MsIHNldFNsYXNoRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoeyBib3R0b206IDAsIGxlZnQ6IDAgfSlcblxuICBjb25zdCBwb3NpdGlvblNsYXNoRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBpZiAoIXJlY3QgfHwgcmVjdC53aWR0aCA8PSAwKSByZXR1cm5cblxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KFxuICAgICAgOCxcbiAgICAgIE1hdGgubWluKHZpZXdwb3J0VyAtIFNMQVNIX0RST1BET1dOX1dJRFRIX1BYIC0gOCwgcmVjdC5sZWZ0ICsgU0xBU0hfRFJPUERPV05fTEVGVF9PRkZTRVRfUFgpXG4gICAgKVxuXG4gICAgc2V0U2xhc2hEcm9wZG93blBvcyh7XG4gICAgICBsZWZ0LFxuICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSByZWN0LnRvcCArIDQsXG4gICAgfSlcbiAgfSwgW3dyYXBwZXJSZWZdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93U2xhc2hEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25TbGFzaERyb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG4gICAgfVxuICB9LCBbc2hvd1NsYXNoRHJvcGRvd24sIHBvc2l0aW9uU2xhc2hEcm9wZG93bl0pXG5cbiAgLyoqIFRyYXMgZWxlZ2lyIG8gcXVpdGFyIGLDunNxdWVkYSB3ZWIvcHJvZnVuZGE6IHZvbHZlciBhbCB0ZXh0YXJlYSAoUG9wb3Zlci9tZW51IHB1ZWRlIHJvYmFyIGZvY28pLiAqL1xuICBjb25zdCBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24gPSAoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0sIDApXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNsb3NlUGx1c01lbnUgPSAoKSA9PiB7XG4gICAgc2V0UGx1c01lbnVBbmNob3IobnVsbClcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCA9ICgpID0+IHtcbiAgICBpZiAodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gbnVsbFxuICAgIH1cbiAgICBzZXRUb29sQ2hpcEV4aXRpbmcoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgLy8gRXZpdGEgcXVlIGVsIGJvdMOzbiByb2JlIGVsIGZvY28gZGVsIGlucHV0IGFsIGFicmlyIGVsIG1lbsO6LlxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c0J1dHRvbkNsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChwbHVzTWVudUFuY2hvcikge1xuICAgICAgY2xvc2VQbHVzTWVudSgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UGx1c01lbnVBbmNob3IoZS5jdXJyZW50VGFyZ2V0KVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRQbHVzT3BlbiwgeyBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlTWVudGlvbkJ1dHRvbkNsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydE1lbnRpb25UcmlnZ2VyKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51QXR0YWNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnZmlsZXMnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgaWYgKGF0dGFjaG1lbnRzLmxlbmd0aCA+PSBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykgcmV0dXJuXG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGJlZ2luVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgd2FzV2ViID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBjb25zdCB3YXNEZWVwID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgaWYgKCF3YXNXZWIgJiYgIXdhc0RlZXApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRUb29sQ2hpcEV4aXRpbmcodHJ1ZSlcbiAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgY29uc3QgeyB3ZWIsIGRlZXAgfSA9IHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudFxuICAgICAgaWYgKHdhc1dlYiAmJiB3ZWIpIHtcbiAgICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICAgIH0gZWxzZSBpZiAod2FzRGVlcCAmJiBkZWVwKSB7XG4gICAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgICAgfVxuICAgICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICAgICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgICB9LCBUT09MX0NISVBfRVhJVF9NUylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51V2ViU2VhcmNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQoKVxuICAgIGlmIChpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudURlZXBTZWFyY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgaWYgKGlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQoKVxuICAgIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdkZWVwX3NlYXJjaCcsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMgPSAoKSA9PiB7XG4gICAgc2V0UGx1c01lbnVBbmNob3IobnVsbClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTbGFzaFRyaWdnZXIoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgIH1cbiAgfSwgW2Rpc2FibGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRyYWZ0ID0gaW5pdGlhbERyYWZ0Py50cmltKClcbiAgICBpZiAoIWRyYWZ0IHx8IGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uc2V0UGxhaW5UZXh0KGRyYWZ0KVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRydWUpXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsRHJhZnQsIGRpc2FibGVkLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICBjb25zdCBzZW5kRGlzYWJsZWQgPSB1c2VNZW1vKFxuICAgICgpID0+ICFoYXNUeXBpbmdQcmVzZW5jZSAmJiBhdHRhY2htZW50cy5sZW5ndGggPT09IDAsXG4gICAgW2hhc1R5cGluZ1ByZXNlbmNlLCBhdHRhY2htZW50cy5sZW5ndGhdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudCA9IHsgd2ViOiBpc1dlYlNlYXJjaEFjdGl2ZSwgZGVlcDogaXNEZWVwU2VhcmNoQWN0aXZlIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzV2ViU2VhcmNoQWN0aXZlICYmICFpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZChmYWxzZSlcbiAgICB9XG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgZWwgYWdlbnRlIG8gbGEgY29udmVyc2FjacOzbiwgbyBhbCBtb250YXIgZWwgY29tcG9uZW50ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFnZW50Q2hhbmdlZCA9IHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ICE9PSBhZ2VudD8uaWRcbiAgICBjb25zdCBwcmV2aW91c0NoYXRJZCA9IHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnRcbiAgICBjb25zdCBjdXJyZW50Q2hhdElkID0gY2hhdElkXG4gICAgY29uc3QgY2hhdENoYW5nZWQgPSBwcmV2aW91c0NoYXRJZCAhPT0gY3VycmVudENoYXRJZFxuICAgIGNvbnN0IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCA9XG4gICAgICAocHJldmlvdXNDaGF0SWQgPT09IHVuZGVmaW5lZCB8fCBwcmV2aW91c0NoYXRJZCA9PT0gbnVsbCkgJiYgY3VycmVudENoYXRJZCAhPT0gdW5kZWZpbmVkICYmIGN1cnJlbnRDaGF0SWQgIT09IG51bGxcbiAgICBjb25zdCBuZXdDaGF0U3RhcnRlZCA9IHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ICE9PSBuZXdDaGF0S2V5XG4gICAgY29uc3QgaXNJbml0aWFsTW91bnQgPSBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZFxuXG4gICAgaWYgKChhZ2VudENoYW5nZWQgfHwgY2hhdENoYW5nZWQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0IHx8IG5ld0NoYXRTdGFydGVkIHx8IGlzSW5pdGlhbE1vdW50KSAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGRlbGF5ID0gaXNJbml0aWFsTW91bnQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID8gMjAwIDogMTAwXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0sIGRlbGF5KVxuICAgIH1cblxuICAgIHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID0gYWdlbnQ/LmlkXG4gICAgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9IGNoYXRJZFxuICAgIHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ID0gbmV3Q2hhdEtleVxuICB9LCBbYWdlbnQ/LmlkLCBjaGF0SWQsIG5ld0NoYXRLZXksIGRpc2FibGVkXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgbGEgZGlzcG9zaWNpw7NuIGRlbCBtb2RhbCAoc2lkZWJhciAvIGZ1bGxzY3JlZW4gLyBmbG9hdGluZylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWxheW91dE1vZGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xheW91dE1vZGUgPSBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudFxuICAgIHByZXZpb3VzTGF5b3V0TW9kZVJlZi5jdXJyZW50ID0gbGF5b3V0TW9kZVxuXG4gICAgaWYgKHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gbGF5b3V0TW9kZSB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH1cbiAgICB9LCAyMDApXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkaXNhYmxlZF0pXG5cbiAgLy8gQXBwY3Vlczogbm90aWZ5IHRoYXQgdGhlIGlucHV0IGlzIHZpc2libGUgZm9yIHNwZWNpYWxpc3QgYWdlbnRzIChjbG9uZSArIHByb2plY3QvY2xpZW50KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlzU3BlY2lhbGlzdEFnZW50ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcbiAgICBpZiAoIXdyYXBwZXJSZWYuY3VycmVudCB8fCAhaXNTcGVjaWFsaXN0QWdlbnQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKFtlbnRyeV0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgdHJhY2tBcHBjdWVzRXZlbnQoQVBQQ1VFU19FVkVOVFMubWFpYUNvbnRleHRNZW50aW9uSW5pdClcbiAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgdGhyZXNob2xkOiAwLjEgfVxuICAgIClcblxuICAgIG9ic2VydmVyLm9ic2VydmUod3JhcHBlclJlZi5jdXJyZW50KVxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgfSwgW2FnZW50Py5pZCwgYWdlbnQ/LnR5cGUsIGFnZW50Py5lbnRpdHldKVxuXG4gIC8vIENsZWFyIGlucHV0IHdoZW4gc2Vzc2lvbiBjaGFuZ2VzICh1c2VyIHN3aXRjaGVzIHRvIGEgZGlmZmVyZW50IGNoYXQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Vzc2lvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICB9LCBbcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICAvLyBNYW50ZW5lciBmb2NvIGFsIHNlbGVjY2lvbmFyIHVuIGNvbnRleHRvIHJlY2llbnRlIChlbCBjbGljayBlbiBlbCBwaWxsIGxvIHJvYmEgYWwgaW5wdXQpLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlZm9jdXMgPSAoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnB1dC1yZWZvY3VzJywgaGFuZGxlUmVmb2N1cylcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnB1dC1yZWZvY3VzJywgaGFuZGxlUmVmb2N1cylcbiAgfSwgW2Rpc2FibGVkXSlcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgIGlmICghdGV4dC50cmltKCkgJiYgIWF0dGFjaG1lbnRzLmxlbmd0aCkgcmV0dXJuXG4gICAgY29uc3QgbWVudGlvbnMgPSBzdGF0ZT8ubWVudGlvbnMgPz8gW11cbiAgICBvblNlbmRNZXNzYWdlKHRleHQsIGF0dGFjaG1lbnRzLCBtZW50aW9ucylcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKGZhbHNlKVxuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nKClcbiAgfSwgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmddKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNsYXNoQ29tbWFuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChjb21tYW5kOiBBY3Rpb24pID0+IHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvblNlbGVjdCwge1xuICAgICAgICB0eXBlX3F1aWNrX2FjdGlvbjogcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZShjb21tYW5kKSxcbiAgICAgICAgb3JpZ2luX3F1aWNrX2FjdGlvbjogJ3NsYXNoX21lbnUnLFxuICAgICAgfSlcblxuICAgICAgY29uc3Qgc3RhdGUgPSBlZGl0b3JSZWYuY3VycmVudD8uc2VyaWFsaXplKClcbiAgICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgICAgY29uc3QgdHJpZ2dlclBhcnQgPSBgLyR7c2xhc2hRdWVyeX1gXG4gICAgICBjb25zdCBiZWZvcmVUcmlnZ2VyID0gdGV4dC5lbmRzV2l0aCh0cmlnZ2VyUGFydCkgPyB0ZXh0LnNsaWNlKDAsIC10cmlnZ2VyUGFydC5sZW5ndGgpIDogdGV4dFxuICAgICAgY29uc3QgaXNFbXB0eUJlZm9yZVRyaWdnZXIgPSBiZWZvcmVUcmlnZ2VyLnRyaW0oKSA9PT0gJydcblxuICAgICAgaWYgKGlzRW1wdHlCZWZvcmVUcmlnZ2VyKSB7XG4gICAgICAgIG9uU2VuZE1lc3NhZ2UoY29tbWFuZC50aXRsZSwgYXR0YWNobWVudHMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29tbWFuZC5pZClcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNsYXNoQ29tbWFuZCh7IGlkOiBjb21tYW5kLmlkLCBsYWJlbDogY29tbWFuZC50aXRsZSB9KVxuICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthdHRhY2htZW50cywgb25TZW5kTWVzc2FnZSwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBzbGFzaFF1ZXJ5LCBldmVudEFtcGxpdHVkZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biA9ICgpID0+IHtcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdG9ySW5wdXQgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgdGV4dCxcbiAgICAgIHRyaWdnZXIsXG4gICAgICBzbGFzaFRyaWdnZXIsXG4gICAgfToge1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgc2xhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIH0pID0+IHtcbiAgICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRleHQudHJpbSgpLmxlbmd0aCA+IDApXG4gICAgICBvbkNoYW5nZT8uKClcbiAgICAgIGhhbmRsZVRyaWdnZXIodHJpZ2dlcilcblxuICAgICAgaWYgKHNsYXNoVHJpZ2dlcj8uYWN0aXZlICYmIHNsYXNoQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoIXNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvbk9wZW4pXG4gICAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoc2xhc2hUcmlnZ2VyLnF1ZXJ5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIGhhbmRsZVRyaWdnZXIsIHNsYXNoQ29tbWFuZHMsIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGhhbmRsZVBvcG92ZXJLZXlEb3duKGUpKSByZXR1cm5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiAhZS5zaGlmdEtleSAmJiAhcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGlmICghc2VuZERpc2FibGVkICYmICFkaXNhYmxlZCkgaGFuZGxlU2VuZE1lc3NhZ2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZVBvcG92ZXJLZXlEb3duLCBwb3BvdmVyT3Blbiwgc2VuZERpc2FibGVkLCBkaXNhYmxlZCwgaGFuZGxlU2VuZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBhZGRGaWxlcyA9IChpbmNvbWluZzogRmlsZVtdKSA9PiB7XG4gICAgaWYgKCFpbmNvbWluZy5sZW5ndGggfHwgZGlzYWJsZWQpIHJldHVyblxuXG4gICAgY29uc3QgZXhjZWVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGV4Y2x1ZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBmaWxlU2l6ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fVxuICAgIGxldCBmaWxlc0luc2VydGVkID0gYXR0YWNobWVudHMubGVuZ3RoXG5cbiAgICBjb25zdCBpc05ld0Zvcm1hdCA9IChleHRlbnNpb246IHN0cmluZykgPT4gWycucG5nJywgJy5qcGcnLCAnLmpwZWcnLCAnLnBkZiddLmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICBjb25zdCBpc09sZEZvcm1hdCA9IChleHRlbnNpb246IHN0cmluZykgPT5cbiAgICAgIFsnLnR4dCcsICcubWQnLCAnLmNzdicsICcuZG9jJywgJy5kb2N4JywgJy5wcHQnLCAnLnBwdHgnLCAnLnhsc3gnLCAnLnhscyddLmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICBjb25zdCBpc0F1ZGlvRm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PlxuICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLmluY2x1ZGVzKGV4dGVuc2lvbilcblxuICAgIGluY29taW5nLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICBsZXQgZXhjbHVkZWRGaWxlID0gZmFsc2VcbiAgICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVxuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVOYW1lUGFydHMubGVuZ3RoID4gMSA/IGAuJHtmaWxlTmFtZVBhcnRzLnBvcCgpPy50b0xvd2VyQ2FzZSgpfWAgOiAnJ1xuXG4gICAgICBpZiAoIWFsbG93ZWRGaWxlVHlwZXM/LmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBmaWxlU2l6ZXNbZmlsZS5uYW1lXSA9IGZpbGUuc2l6ZVxuXG4gICAgICBpZiAoaXNOZXdGb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgaWYgKGZpbGUuc2l6ZSA+IE1BWF9GSUxFX1NJWkVfTUJfTUFJQV9WSVNJT04gKiAxMDI0ICogMTAyNCkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc09sZEZvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpZiAoZmlsZS5zaXplID4gTUFYX0ZJTEVfU0laRV9NQl9PTEQgKiAxMDI0ICogMTAyNCkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0F1ZGlvRm9ybWF0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIGlmIChmaWxlLnNpemUgPiBNQVhfRklMRV9TSVpFX01CX0FVRElPICogMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSB7XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFleGNsdWRlZEZpbGUpIHtcbiAgICAgICAgZmlsZXNJbnNlcnRlZCArPSAxXG4gICAgICAgIGNvbnN0IHR5cGVGaWxlID0gZmlsZS50eXBlIHx8IGZpbGVUeXBlc1tmaWxlRXh0ZW5zaW9uXVxuICAgICAgICBjb25zdCBwYXJzZWRGaWxlID0gbmV3IEZpbGUoW2ZpbGVdLCBmaWxlLm5hbWUsIHsgdHlwZTogdHlwZUZpbGUgfSlcbiAgICAgICAgb25GaWxlQXR0YWNoPy4ocGFyc2VkRmlsZSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGV4Y2x1ZGVkRmlsZXMubGVuZ3RoIHx8IGV4Y2VlZGVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICBzZXRNb2RhbFByb3BzKHsgaXNPcGVuOiB0cnVlLCBleGNsdWRlZEZpbGVzLCBleGNlZWRlZEZpbGVzLCBmaWxlU2l6ZXMgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlU2VsZWN0ID0gKGU6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgZmlsZXMgPSBlLnRhcmdldC5maWxlc1xuICAgIGlmIChmaWxlcykge1xuICAgICAgYWRkRmlsZXMoQXJyYXkuZnJvbShmaWxlcykpXG4gICAgfVxuICAgIGlmIChmaWxlSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQudmFsdWUgPSAnJ1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc2V0RmlsZURyYWcgPSAoKSA9PiB7XG4gICAgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgPSAwXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZShmYWxzZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbnRlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ICs9IDFcbiAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKHRydWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnTGVhdmUgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNGaWxlRHJhZ0FjdGl2ZSAmJiAhZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgPSBNYXRoLm1heCgwLCBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCAtIDEpXG4gICAgaWYgKGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID09PSAwKSB7XG4gICAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdPdmVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5J1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHtcbiAgICAgIHJlc2V0RmlsZURyYWcoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICByZXNldEZpbGVEcmFnKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGFkZEZpbGVzKGZpbGVzRnJvbURhdGFUcmFuc2ZlcihlLmRhdGFUcmFuc2ZlcikpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQYXN0ZUZpbGVzID0gKGZpbGVzOiBGaWxlW10pID0+IHtcbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVdyYXBwZXJQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBlZGl0b3JFbCA9IHdyYXBwZXJSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcignW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nKVxuICAgIGlmIChlZGl0b3JFbCAmJiBlZGl0b3JFbC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSkgcmV0dXJuXG4gICAgY29uc3QgZmlsZXMgPSBmaWxlc0Zyb21EYXRhVHJhbnNmZXIoZS5jbGlwYm9hcmREYXRhKVxuICAgIGlmICghZmlsZXMubGVuZ3RoKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoZmlsZUlkOiBzdHJpbmcpID0+IHtcbiAgICBvbkRlbGV0ZUF0dGFjaG1lbnQ/LihmaWxlSWQpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTdG9wR2VuZXJhdGlvbiA9ICgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U3RvcFJlc3BvbnNlKVxuICAgIG9uU3RvcEdlbmVyYXRpb24/LigpXG4gIH1cblxuICBjb25zdCBzaG93Q2hpcHNSb3cgPSBCb29sZWFuKGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoIHx8IGF0dGFjaG1lbnRzLmxlbmd0aClcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNoaXBzRWwgPSBjaGlwc1Jvd1JlZi5jdXJyZW50XG4gICAgY29uc3QgdG9vbGJhckVsID0gdG9vbGJhclJvd1JlZi5jdXJyZW50XG5cbiAgICBjb25zdCB1cGRhdGVIZWlnaHRzID0gKCkgPT4ge1xuICAgICAgY29uc3QgbmV4dENoaXBzID0gc2hvd0NoaXBzUm93ICYmIGNoaXBzRWwgPyBNYXRoLmNlaWwoY2hpcHNFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpIDogMFxuICAgICAgY29uc3QgbmV4dFRvb2xiYXIgPSB0b29sYmFyRWxcbiAgICAgICAgPyBNYXRoLmNlaWwodG9vbGJhckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodClcbiAgICAgICAgOiBNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWFxuXG4gICAgICBzZXRDaGlwc1Jvd0hlaWdodChwcmV2ID0+IChwcmV2ID09PSBuZXh0Q2hpcHMgPyBwcmV2IDogbmV4dENoaXBzKSlcbiAgICAgIHNldFRvb2xiYXJSb3dIZWlnaHQocHJldiA9PiAocHJldiA9PT0gbmV4dFRvb2xiYXIgPyBwcmV2IDogbmV4dFRvb2xiYXIpKVxuICAgIH1cblxuICAgIHVwZGF0ZUhlaWdodHMoKVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIodXBkYXRlSGVpZ2h0cylcbiAgICBpZiAoc2hvd0NoaXBzUm93ICYmIGNoaXBzRWwpIG9ic2VydmVyLm9ic2VydmUoY2hpcHNFbClcbiAgICBpZiAodG9vbGJhckVsKSBvYnNlcnZlci5vYnNlcnZlKHRvb2xiYXJFbClcblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgfSwgW3Nob3dDaGlwc1JvdywgY29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGgsIGF0dGFjaG1lbnRzLmxlbmd0aF0pXG5cbiAgY29uc3QgZWRpdG9yTWF4SGVpZ2h0ID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0KHtcbiAgICAgICAgY2hpcHNSb3dIZWlnaHRQeDogY2hpcHNSb3dIZWlnaHQsXG4gICAgICAgIHRvb2xiYXJSb3dIZWlnaHRQeDogdG9vbGJhclJvd0hlaWdodCxcbiAgICAgIH0pLFxuICAgIFtjaGlwc1Jvd0hlaWdodCwgdG9vbGJhclJvd0hlaWdodF1cbiAgKVxuXG4gIGNvbnN0IHRvb2xiYXJJY29uQ29sb3IgPSAnIzgwODA4MCdcbiAgY29uc3QgcGx1c01lbnVJY29uQ29sb3IgPSBNQUlBX0NIQVRfSU5QVVRfVUkubWVudUljb25cbiAgY29uc3QgaXNDdXN0b21BZ2VudCA9IGFnZW50Py50eXBlID09PSAnY3VzdG9tJ1xuICBjb25zdCBoYXNDb3JBY2Nlc3MgPSBCb29sZWFuKFxuICAgIGlzQ3VzdG9tQWdlbnQgJiZcbiAgICBhZ2VudD8uY29ubmVjdG9ycz8uc29tZShcbiAgICAgIGNvbm5lY3RvciA9PlxuICAgICAgICBjb25uZWN0b3IuZ3JvdXAgPT09ICdDT1InICYmIGNvbm5lY3Rvci5zbHVncy5zb21lKHNsdWcgPT4gdHlwZW9mIHNsdWcgPT09ICdzdHJpbmcnICYmIHNsdWcudHJpbSgpLmxlbmd0aCA+IDApXG4gICAgKVxuICApXG4gIGNvbnN0IGFnZW50TW9kZWxOYW1lID0gaXNDdXN0b21BZ2VudCA/IGFnZW50Py5tb2RlbF9kaXNwbGF5X25hbWU/LnRyaW0oKSB8fCBudWxsIDogbnVsbFxuICBjb25zdCBzaG93Q3VzdG9tTWV0YUluZGljYXRvcnMgPSBoYXNDb3JBY2Nlc3MgfHwgQm9vbGVhbihhZ2VudE1vZGVsTmFtZSlcbiAgY29uc3Qgc2hvd01lbnRpb25CdXR0b24gPSBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgaGFzQ29yQWNjZXNzXG5cbiAgbGV0IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb246IFJlYWN0Tm9kZVxuICBpZiAoYWN0aXZlVG9vbENoaXBIb3ZlcmVkKSB7XG4gICAgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IDxDcm9zcyBjb2xvcj17TUFJQV9DSEFUX0lOUFVUX1VJLmNoaXBDbG9zZUljb259IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfSBlbHNlIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24gPSA8TWFpYUlucHV0V2ViU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfSBlbHNlIHtcbiAgICBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uID0gPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFN0eWxlZE1BSUFJbnB1dFdyYXBwZXJcbiAgICAgICAgcmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgIGFsaWduQnV0dG9ucz17YWxpZ25CdXR0b25zfVxuICAgICAgICBoYXNBdHRhY2htZW50cz17ISFhdHRhY2htZW50cy5sZW5ndGh9XG4gICAgICAgICRmaWxlRHJhZ0FjdGl2ZT17aXNGaWxlRHJhZ0FjdGl2ZX1cbiAgICAgICAgZGF0YS1hcHBjdWVzPVwibWFpYV9jaGF0X2lucHV0XCJcbiAgICAgICAgZGF0YS1tYWlhLXN0cmVhbWluZz17aXNTdHJlYW1pbmcgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICBvblBhc3RlPXtoYW5kbGVXcmFwcGVyUGFzdGV9XG4gICAgICAgIG9uRHJhZ0VudGVyPXtoYW5kbGVEcmFnRW50ZXJ9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXtoYW5kbGVEcmFnTGVhdmV9XG4gICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICBvbkRyb3A9e2hhbmRsZURyb3B9XG4gICAgICA+XG4gICAgICAgIHtzaG93Q2hpcHNSb3cgJiYgKFxuICAgICAgICAgIDxTQ0lucHV0Q2hpcHNSb3cgcmVmPXtjaGlwc1Jvd1JlZn0+XG4gICAgICAgICAgICB7Y29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxDaGlwXG4gICAgICAgICAgICAgICAgaXRlbXM9e2NvbnRleHRDaGlwLml0ZW1zfVxuICAgICAgICAgICAgICAgIHR5cGU9e2NvbnRleHRDaGlwLnR5cGV9XG4gICAgICAgICAgICAgICAgbGVhZGluZ0ljb249e2NvbnRleHRDaGlwLmxlYWRpbmdJY29ufVxuICAgICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHthdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2UgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQudHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChhdHRhY2htZW50Lm5hbWUgfHwgJycpXG4gICAgICAgICAgICAgIGNvbnN0IGNoaXBJY29uID0gaXNJbWFnZSA/IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezEzfSBoZWlnaHQ9ezEzfSAvPlxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YXR0YWNobWVudC5uYW1lfSBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7aW5kZXh9YH0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnRGaWxlSWNvbj57Y2hpcEljb259PC9TQ01JQXR0YWNobWVudEZpbGVJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudERlbGV0ZUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBdHRhY2htZW50QXJpYScsIHsgZGVmYXVsdFZhbHVlOiAnUXVpdGFyIGFyY2hpdm8nIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRGVsZXRlQXR0YWNobWVudChhdHRhY2htZW50LmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjNjY2NjY2XCIgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnREZWxldGVJY29uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50TmFtZT57YXR0YWNobWVudC5uYW1lfTwvU0NNSUF0dGFjaG1lbnROYW1lPlxuICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NJbnB1dENoaXBzUm93PlxuICAgICAgICApfVxuICAgICAgICA8U3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZD5cbiAgICAgICAgICA8U0NJbnB1dEVkaXRvckNlbGw+XG4gICAgICAgICAgICA8Q29udGV4dE1lbnRpb25FZGl0b3JcbiAgICAgICAgICAgICAgcmVmPXtlZGl0b3JSZWZ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBtYXhIZWlnaHQ9e2VkaXRvck1heEhlaWdodH1cbiAgICAgICAgICAgICAgb25JbnB1dD17aGFuZGxlRWRpdG9ySW5wdXR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgb25QYXN0ZUZpbGVzPXtoYW5kbGVQYXN0ZUZpbGVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDSW5wdXRFZGl0b3JDZWxsPlxuICAgICAgICAgIDxTQ0lucHV0VG9vbGJhclJvdyByZWY9e3Rvb2xiYXJSb3dSZWZ9PlxuICAgICAgICAgICAgPFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICAgIDxQbHVzTWVudVRvb2xzUm93PlxuICAgICAgICAgICAgICAgIDxQbHVzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17cGx1c01lbnVPcGVufVxuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZVBsdXNCdXR0b25Nb3VzZURvd259XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVQbHVzQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5QbHVzTWVudUFyaWEnKX1cbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QWRkSWNvbiBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICB7c2hvd01lbnRpb25CdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgPFBsdXNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU1lbnRpb25CdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5NZW50aW9uQXJpYScpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0TWVudGlvbkljb24gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgICAgICAgICBvcGVuPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgICBhbmNob3JFbD17cGx1c01lbnVBbmNob3J9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtjbG9zZVBsdXNNZW51fVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgZGlzYWJsZUVuZm9yY2VGb2N1c1xuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJlc3RvcmVGb2N1c1xuICAgICAgICAgICAgICAgICAgYW5jaG9yT3JpZ2luPXt7IHZlcnRpY2FsOiAndG9wJywgaG9yaXpvbnRhbDogJ2xlZnQnIH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW49e3sgdmVydGljYWw6ICdib3R0b20nLCBob3Jpem9udGFsOiAnbGVmdCcgfX1cbiAgICAgICAgICAgICAgICAgIHN4PXt7IHpJbmRleDogcGx1c01lbnVaSW5kZXggfX1cbiAgICAgICAgICAgICAgICAgIHNsb3RQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBwYXBlcjoge1xuICAgICAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbjogMCxcbiAgICAgICAgICAgICAgICAgICAgICBzeDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJy00cHgnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxQbHVzTWVudVBhcGVyPlxuICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF0dGFjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMX0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudUF0dGFjaCcpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51V2ViU2VhcmNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRXZWJTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnNlYXJjaFdlYicpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNXZWJTZWFyY2hBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudURlZXBTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzRGVlcFNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9uc30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2xhc2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51UXVpY2tBY3Rpb25zJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudVBhcGVyPlxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgICB7KGlzV2ViU2VhcmNoQWN0aXZlIHx8IGlzRGVlcFNlYXJjaEFjdGl2ZSkgJiYgKFxuICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwUm9vdFxuICAgICAgICAgICAgICAgICAgICAkaG92ZXJlZD17YWN0aXZlVG9vbENoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17dG9vbENoaXBFeGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgJGNsb3NlU2hvd249e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHthY3RpdmVUb29sQ2hpcExlYWRpbmdJY29ufVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAge2lzV2ViU2VhcmNoQWN0aXZlID8gdCgnY2hhdC5zZWFyY2hXZWInKSA6IHQoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpfVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAge3Nob3dDdXN0b21NZXRhSW5kaWNhdG9ycyAmJiAoXG4gICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgICAgIHtoYXNDb3JBY2Nlc3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NUb29sdGlwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NMYWJlbCcpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb3JBY2Nlc3NJY29uIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7YWdlbnRNb2RlbE5hbWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGlwTGxtLnRvb2x0aXAnLCB7IG1vZGVsOiBhZ2VudE1vZGVsTmFtZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e2FnZW50TW9kZWxOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRSb2JvdEljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzV3JpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zdG9wJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BCdXR0b24gZGlzYWJsZWQ9e2ZhbHNlfSBvbkNsaWNrPXtoYW5kbGVTdG9wR2VuZXJhdGlvbn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTdG9wQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zZW5kJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbmREaXNhYmxlZCB8fCBkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZXM9e2hhc1R5cGluZ1ByZXNlbmNlIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2VuZEljb24gY29sb3I9XCIjQkZCRkJGXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTZW5kQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICA8L1NDSW5wdXRUb29sYmFyUm93PlxuICAgICAgICA8L1N0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIGFjY2VwdD1cIi50eHQsLm1kLC5jc3YsLmRvYywuZG9jeCwucHB0LC5wcHR4LC5wbmcsLmpwZywuanBlZywucGRmLC54bHN4LC54bHMsLmZsYWMsLm00YSwubXAzLC5tcDQsLm9nYSwub2dnLC53YXYsLndlYm1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0fVxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgICAvPlxuICAgICAgICB7aXNGaWxlRHJhZ0FjdGl2ZSAmJiA8U3R5bGVkTUFJQURyb3BPdmVybGF5Pnt0KCdjaGF0LmRyb3BGaWxlc0hlcmUnKX08L1N0eWxlZE1BSUFEcm9wT3ZlcmxheT59XG4gICAgICA8L1N0eWxlZE1BSUFJbnB1dFdyYXBwZXI+XG4gICAgICB7bW9kYWxQcm9wcy5pc09wZW4gJiYgKFxuICAgICAgICA8TW9kYWxGaWxlRXhjZWVkc1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1vZGFsUHJvcHMoeyBpc09wZW46IGZhbHNlLCBleGNsdWRlZEZpbGVzOiBbXSwgZXhjZWVkZWRGaWxlczogW10sIGZpbGVTaXplczoge30gfSl9XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNsdWRlZEZpbGVzfVxuICAgICAgICAgIGV4Y2VlZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjZWVkZWRGaWxlc31cbiAgICAgICAgICBmaWxlU2l6ZXM9e21vZGFsUHJvcHMuZmlsZVNpemVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyTm9kZSAmJiBjcmVhdGVQb3J0YWwocG9wb3Zlck5vZGUsIGRvY3VtZW50LmJvZHkpfVxuICAgICAge3Nob3dTbGFzaERyb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2xhc2hDb21tYW5kRHJvcGRvd25cbiAgICAgICAgICAgIGNvbW1hbmRzPXtzbGFzaENvbW1hbmRzfVxuICAgICAgICAgICAgcXVlcnk9e3NsYXNoUXVlcnl9XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtzbGFzaERyb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NsYXNoRHJvcGRvd25Qb3MubGVmdH1cbiAgICAgICAgICAgIHpJbmRleD17c2xhc2hEcm9wZG93blpJbmRleH1cbiAgICAgICAgICAgIGFuY2hvclJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5XG4gICAgICAgICl9XG4gICAgPC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBUUVBLFdBQVcsRUFDWEMsU0FBUyxFQUNUQyxlQUFlLEVBQ2ZDLE9BQU8sRUFDUEMsTUFBTSxFQUNOQyxRQUFRLFFBQ0gsT0FBTztBQUNkLFNBQVNDLFlBQVksUUFBUSxXQUFXO0FBQ3hDLFNBQVNDLE9BQU8sUUFBUSxlQUFlO0FBQ3ZDLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQ0VDLHdCQUF3QixFQUN4QkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGVBQWUsRUFDZkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsYUFB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
1048
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiVG9vbHRpcCIsIkFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbiIsIkFjdGl2ZVRvb2xDaGlwTGFiZWwiLCJBY3RpdmVUb29sQ2hpcFJvb3QiLCJQbHVzTWVudURpdmlkZXIiLCJQbHVzTWVudUlubmVyQ29sdW1uIiwiUGx1c01lbnVJdGVtQnV0dG9uIiwiUGx1c01lbnVJdGVtTGFiZWwiLCJQbHVzTWVudVBhcGVyIiwiUGx1c01lbnVUb29sc1JvdyIsIlBsdXNUb2dnbGVCdXR0b24iLCJTQ0lucHV0Q2hpcHNSb3ciLCJTQ0lucHV0TWV0YUljb25CdXR0b24iLCJTQ0lucHV0TWV0YUluZGljYXRvcnMiLCJTQ01JQXR0YWNobWVudCIsIlNDTUlBdHRhY2htZW50RGVsZXRlSWNvbiIsIlNDTUlBdHRhY2htZW50RmlsZUljb24iLCJTQ01JQXR0YWNobWVudEljb24iLCJTQ01JQXR0YWNobWVudE5hbWUiLCJTdHlsZWRNQUlBSW5wdXRXcmFwcGVyIiwiU3R5bGVkTUFJQVNlbmRCdXR0b24iLCJTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkIiwiU0NJbnB1dEVkaXRvckNlbGwiLCJTQ0lucHV0VG9vbGJhclJvdyIsIlN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwiLCJTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVN0b3BCdXR0b24iLCJTdHlsZWRNQUlBU3RvcEljb24iLCJTdHlsZWRNQUlBRHJvcE92ZXJsYXkiLCJnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQiLCJNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWCIsInVzZUdsb2JhbENvbnRleHQiLCJNb2RhbEZpbGVFeGNlZWRzIiwiU2xhc2hDb21tYW5kRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwicmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSIsInVzZVQiLCJNYWlhSW5wdXRBZGRJY29uIiwiTWFpYUlucHV0QXR0YWNoSWNvbiIsIk1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24iLCJNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiIsIkNvckFjY2Vzc0ljb24iLCJNYWlhSW5wdXRNZW50aW9uSWNvbiIsIk1haWFJbnB1dFJvYm90SWNvbiIsIk1haWFJbnB1dFNlbmRJY29uIiwiTWFpYUlucHV0U2xhc2hJY29uIiwiTWFpYUlucHV0V2ViU2VhcmNoSWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSIsIk1BSUFfQ0hBVF9JTlBVVF9VSSIsImFsbG93ZWRGaWxlVHlwZXMiLCJmaWxlVHlwZXMiLCJNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OIiwiTUFYX0ZJTEVfU0laRV9NQl9PTEQiLCJNQVhfRklMRV9TSVpFX01CX0FVRElPIiwiTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMiLCJBUFBDVUVTX0VWRU5UUyIsInRyYWNrQXBwY3Vlc0V2ZW50IiwiQ2hpcCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZU1lbnRpb25Qb3BvdmVyIiwiZGF0YVRyYW5zZmVySGFzRmlsZXMiLCJmaWxlc0Zyb21EYXRhVHJhbnNmZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJUT09MX0NISVBfRVhJVF9NUyIsIlNMQVNIX0RST1BET1dOX1dJRFRIX1BYIiwiU0xBU0hfRFJPUERPV05fTEVGVF9PRkZTRVRfUFgiLCJTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYIiwiU0xBU0hfRFJPUERPV05fR0FQX0FCT1ZFX0lOUFVUX1BYIiwiU0xBU0hfRFJPUERPV05fVklFV1BPUlRfRURHRV9QWCIsIk1BSUFJbnB1dCIsIl9yZWYiLCJfYWdlbnQkZW50aXR5IiwiX2NvbnRleHRDaGlwJGl0ZW1zIiwiX2NvbnRleHRDaGlwJGl0ZW1zMiIsIl9hZ2VudCRjb25uZWN0b3JzIiwiX2FnZW50JG1vZGVsX2Rpc3BsYXlfIiwiX2NvbnRleHRDaGlwJGl0ZW1zMyIsIm9uU2VuZE1lc3NhZ2UiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsImlzU3RyZWFtaW5nIiwiaXNXcml0aW5nIiwib25TdG9wR2VuZXJhdGlvbiIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwiX3JlZiRhbGlnbkJ1dHRvbnMiLCJhbGlnbkJ1dHRvbnMiLCJvbkZpbGVBdHRhY2giLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJfcmVmJGF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwidG9vbHRpcFpJbmRleCIsImV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJsYXlvdXRNb2RlIiwiY29udGV4dENoaXAiLCJfdXNlVCIsInQiLCJlZGl0b3JSZWYiLCJmaWxlSW5wdXRSZWYiLCJjaGlwc1Jvd1JlZiIsInRvb2xiYXJSb3dSZWYiLCJpbnRlcm5hbFdyYXBwZXJSZWYiLCJ3cmFwcGVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaGFzVHlwaW5nUHJlc2VuY2UiLCJzZXRIYXNUeXBpbmdQcmVzZW5jZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2hpcHNSb3dIZWlnaHQiLCJzZXRDaGlwc1Jvd0hlaWdodCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidG9vbGJhclJvd0hlaWdodCIsInNldFRvb2xiYXJSb3dIZWlnaHQiLCJfdXNlU3RhdGU3IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImV4Y2VlZGVkRmlsZXMiLCJmaWxlU2l6ZXMiLCJfdXNlU3RhdGU4IiwibW9kYWxQcm9wcyIsInNldE1vZGFsUHJvcHMiLCJldmVudEFtcGxpdHVkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJ0b2dnbGVEZWVwU2VhcmNoIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiYWdlbnQiLCJpbml0aWFsRHJhZnQiLCJkZWVwTGlua1NlbmRQZW5kaW5nUmVmIiwicGx1c01lbnVaSW5kZXgiLCJpbml0aWFsRHJhZnRBcHBsaWVkUmVmIiwiX3VzZU1lbnRpb25Qb3BvdmVyIiwicG9wb3Zlck9wZW4iLCJyZXNldE1lbnRpb25PcGVuVHJhY2tpbmciLCJoYW5kbGVUcmlnZ2VyIiwiaGFuZGxlUG9wb3ZlcktleURvd24iLCJoYW5kbGVLZXlEb3duIiwicG9wb3Zlck5vZGUiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInBsdXNNZW51QW5jaG9yIiwic2V0UGx1c01lbnVBbmNob3IiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJhY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwidG9vbENoaXBFeGl0aW5nIiwic2V0VG9vbENoaXBFeGl0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzRmlsZURyYWdBY3RpdmUiLCJzZXRJc0ZpbGVEcmFnQWN0aXZlIiwidG9vbENoaXBFeGl0VGltZXJSZWYiLCJmaWxlRHJhZ0NvdW50ZXJSZWYiLCJzZWFyY2hNb2RlQWN0aXZlUmVmIiwid2ViIiwiZGVlcCIsInBsdXNNZW51T3BlbiIsIkJvb2xlYW4iLCJwcmV2aW91c0FnZW50SWRSZWYiLCJ1bmRlZmluZWQiLCJwcmV2aW91c0NoYXRJZFJlZiIsInByZXZpb3VzTmV3Q2hhdEtleVJlZiIsInByZXZpb3VzTGF5b3V0TW9kZVJlZiIsImFuYWx5dGljc0FnZW50VHlwZSIsImFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCIsInR5cGUiLCJlbnRpdHkiLCJfdXNlU2xhc2hDb21tYW5kcyIsImlkIiwic2xhc2hDb21tYW5kcyIsImNvbW1hbmRzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInNob3dTbGFzaERyb3Bkb3duIiwic2V0U2hvd1NsYXNoRHJvcGRvd24iLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2xhc2hRdWVyeSIsInNldFNsYXNoUXVlcnkiLCJzbGFzaE1lbnVXYXNPcGVuUmVmIiwic2xhc2hEcm9wZG93blpJbmRleCIsIl91c2VTdGF0ZTE5IiwiYm90dG9tIiwibGVmdCIsIm1heEhlaWdodCIsIl91c2VTdGF0ZTIwIiwic2xhc2hEcm9wZG93blBvcyIsInNldFNsYXNoRHJvcGRvd25Qb3MiLCJwb3NpdGlvblNsYXNoRHJvcGRvd24iLCJfd3JhcHBlclJlZiRjdXJyZW50IiwicmVjdCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsInZpZXdwb3J0SCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwidmlld3BvcnRXIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJhdmFpbGFibGVIZWlnaHRQeCIsInRvcCIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInNldFRpbWVvdXQiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJmb2N1cyIsImNsb3NlUGx1c01lbnUiLCJjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0IiwiY2xlYXJUaW1lb3V0IiwiaGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93biIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVBsdXNCdXR0b25DbGljayIsInN0b3BQcm9wYWdhdGlvbiIsImN1cnJlbnRUYXJnZXQiLCJhaUNoYXRQbHVzT3BlbiIsIl9vYmplY3RTcHJlYWQiLCJhZ2VudF90eXBlIiwiaGFuZGxlTWVudGlvbkJ1dHRvbkNsaWNrIiwiX2VkaXRvclJlZiRjdXJyZW50MiIsImluc2VydE1lbnRpb25UcmlnZ2VyIiwiaGFuZGxlUGx1c01lbnVBdHRhY2giLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQiLCJhaUNoYXRUb29scyIsIm9wdGlvbiIsImxlbmd0aCIsImNsaWNrIiwiYmVnaW5Ub29sQ2hpcEV4aXQiLCJ3YXNXZWIiLCJ3YXNEZWVwIiwiX3NlYXJjaE1vZGVBY3RpdmVSZWYkIiwiaGFuZGxlUGx1c01lbnVXZWJTZWFyY2giLCJoYW5kbGVQbHVzTWVudURlZXBTZWFyY2giLCJoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9ucyIsIl9lZGl0b3JSZWYkY3VycmVudDMiLCJpbnNlcnRTbGFzaFRyaWdnZXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQ0IiwiX2VkaXRvclJlZiRjdXJyZW50NSIsImRyYWZ0IiwidHJpbSIsInNldFBsYWluVGV4dCIsIl9lZGl0b3JSZWYkY3VycmVudDYiLCJzZW5kRGlzYWJsZWQiLCJhZ2VudENoYW5nZWQiLCJwcmV2aW91c0NoYXRJZCIsImN1cnJlbnRDaGF0SWQiLCJjaGF0Q2hhbmdlZCIsImNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCIsIm5ld0NoYXRTdGFydGVkIiwiaXNJbml0aWFsTW91bnQiLCJkZWxheSIsIl9lZGl0b3JSZWYkY3VycmVudDciLCJwcmV2aW91c0xheW91dE1vZGUiLCJ0aW1lb3V0SWQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ4IiwiaXNTcGVjaWFsaXN0QWdlbnQiLCJvYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiX3JlZjIiLCJfcmVmMyIsImVudHJ5IiwiaXNJbnRlcnNlY3RpbmciLCJtYWlhQ29udGV4dE1lbnRpb25Jbml0IiwiZGlzY29ubmVjdCIsInRocmVzaG9sZCIsIm9ic2VydmUiLCJoYW5kbGVTZXNzaW9uQ2hhbmdlIiwiX2VkaXRvclJlZiRjdXJyZW50OSIsImNsZWFyIiwiZG9jdW1lbnQiLCJoYW5kbGVSZWZvY3VzIiwiX2VkaXRvclJlZiRjdXJyZW50MCIsImhhbmRsZVNlbmRNZXNzYWdlIiwiX2VkaXRvclJlZiRjdXJyZW50MSIsIl9zdGF0ZSR0ZXh0IiwiX3N0YXRlJG1lbnRpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50MTAiLCJzdGF0ZSIsInNlcmlhbGl6ZSIsInRleHQiLCJtZW50aW9ucyIsImhhbmRsZVNlbGVjdFNsYXNoQ29tbWFuZCIsImNvbW1hbmQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMSIsIl9zdGF0ZSR0ZXh0MiIsIl9lZGl0b3JSZWYkY3VycmVudDEzIiwiYWlDaGF0UXVpY2tBY3Rpb25TZWxlY3QiLCJ0eXBlX3F1aWNrX2FjdGlvbiIsIm9yaWdpbl9xdWlja19hY3Rpb24iLCJ0cmlnZ2VyUGFydCIsImNvbmNhdCIsImJlZm9yZVRyaWdnZXIiLCJlbmRzV2l0aCIsInNsaWNlIiwiaXNFbXB0eUJlZm9yZVRyaWdnZXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMiIsInRpdGxlIiwiaW5zZXJ0U2xhc2hDb21tYW5kIiwibGFiZWwiLCJoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd24iLCJoYW5kbGVFZGl0b3JJbnB1dCIsIl9yZWY0IiwidHJpZ2dlciIsInNsYXNoVHJpZ2dlciIsImFjdGl2ZSIsImFpQ2hhdFF1aWNrQWN0aW9uT3BlbiIsInF1ZXJ5Iiwia2V5Iiwic2hpZnRLZXkiLCJhZGRGaWxlcyIsImluY29taW5nIiwiZmlsZXNJbnNlcnRlZCIsImlzTmV3Rm9ybWF0IiwiZXh0ZW5zaW9uIiwiaW5jbHVkZXMiLCJpc09sZEZvcm1hdCIsImlzQXVkaW9Gb3JtYXQiLCJmb3JFYWNoIiwiZmlsZSIsIl9maWxlTmFtZVBhcnRzJHBvcCIsImV4Y2x1ZGVkRmlsZSIsImZpbGVOYW1lUGFydHMiLCJuYW1lIiwic3BsaXQiLCJmaWxlRXh0ZW5zaW9uIiwicG9wIiwidG9Mb3dlckNhc2UiLCJzaXplIiwicHVzaCIsInR5cGVGaWxlIiwicGFyc2VkRmlsZSIsIkZpbGUiLCJoYW5kbGVGaWxlU2VsZWN0IiwiZmlsZXMiLCJ0YXJnZXQiLCJBcnJheSIsImZyb20iLCJ2YWx1ZSIsInJlc2V0RmlsZURyYWciLCJoYW5kbGVEcmFnRW50ZXIiLCJkYXRhVHJhbnNmZXIiLCJoYW5kbGVEcmFnTGVhdmUiLCJoYW5kbGVEcmFnT3ZlciIsImRyb3BFZmZlY3QiLCJoYW5kbGVEcm9wIiwiaGFuZGxlUGFzdGVGaWxlcyIsImhhbmRsZVdyYXBwZXJQYXN0ZSIsIl93cmFwcGVyUmVmJGN1cnJlbnQyIiwiZWRpdG9yRWwiLCJxdWVyeVNlbGVjdG9yIiwiY29udGFpbnMiLCJjbGlwYm9hcmREYXRhIiwiaGFuZGxlRGVsZXRlQXR0YWNobWVudCIsImZpbGVJZCIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiYWlDaGF0U3RvcFJlc3BvbnNlIiwic2hvd0NoaXBzUm93IiwiaXRlbXMiLCJjaGlwc0VsIiwidG9vbGJhckVsIiwidXBkYXRlSGVpZ2h0cyIsIm5leHRDaGlwcyIsImNlaWwiLCJoZWlnaHQiLCJuZXh0VG9vbGJhciIsInByZXYiLCJSZXNpemVPYnNlcnZlciIsImVkaXRvck1heEhlaWdodCIsImNoaXBzUm93SGVpZ2h0UHgiLCJ0b29sYmFyUm93SGVpZ2h0UHgiLCJ0b29sYmFySWNvbkNvbG9yIiwicGx1c01lbnVJY29uQ29sb3IiLCJtZW51SWNvbiIsImlzQ3VzdG9tQWdlbnQiLCJoYXNDb3JBY2Nlc3MiLCJjb25uZWN0b3JzIiwic29tZSIsImNvbm5lY3RvciIsImdyb3VwIiwic2x1Z3MiLCJzbHVnIiwiYWdlbnRNb2RlbE5hbWUiLCJtb2RlbF9kaXNwbGF5X25hbWUiLCJzaG93Q3VzdG9tTWV0YUluZGljYXRvcnMiLCJzaG93TWVudGlvbkJ1dHRvbiIsImFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24iLCJjb2xvciIsImNoaXBDbG9zZUljb24iLCJjaGlsZHJlbiIsInJlZiIsImhhc0F0dGFjaG1lbnRzIiwiJGZpbGVEcmFnQWN0aXZlIiwib25QYXN0ZSIsIm9uRHJhZ0VudGVyIiwib25EcmFnTGVhdmUiLCJvbkRyYWdPdmVyIiwib25Ecm9wIiwibGVhZGluZ0ljb24iLCJtYXAiLCJhdHRhY2htZW50IiwiaW5kZXgiLCJfYXR0YWNobWVudCR0eXBlIiwiaXNJbWFnZSIsInN0YXJ0c1dpdGgiLCJ0ZXN0IiwiY2hpcEljb24iLCJ6SW5kZXgiLCJkZWZhdWx0VmFsdWUiLCJvbkNsaWNrIiwib25JbnB1dCIsIm9uS2V5RG93biIsIm9uUGFzdGVGaWxlcyIsIiRtZW51T3BlbiIsIm9uTW91c2VEb3duIiwib3BlbiIsImFuY2hvckVsIiwib25DbG9zZSIsImRpc2FibGVBdXRvRm9jdXMiLCJkaXNhYmxlRW5mb3JjZUZvY3VzIiwiZGlzYWJsZVJlc3RvcmVGb2N1cyIsImFuY2hvck9yaWdpbiIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsInRyYW5zZm9ybU9yaWdpbiIsInN4Iiwic2xvdFByb3BzIiwicGFwZXIiLCJlbGV2YXRpb24iLCJvdmVyZmxvdyIsImJvcmRlclJhZGl1cyIsImJveFNoYWRvdyIsImJhY2tncm91bmRDb2xvciIsIm1hcmdpblRvcCIsIiRob3ZlcmVkIiwiJGV4aXRpbmciLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCIkY2xvc2VTaG93biIsIm1vZGVsIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImhhc1ZhbHVlcyIsIm11bHRpcGxlIiwiYWNjZXB0IiwiYm9keSIsIm9uU2VsZWN0IiwiYW5jaG9yUmVmIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRXZlbnQsXG4gIENsaXBib2FyZEV2ZW50LFxuICBEcmFnRXZlbnQsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IFBvcG92ZXIgfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGVjaydcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7XG4gIEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbixcbiAgQWN0aXZlVG9vbENoaXBMYWJlbCxcbiAgQWN0aXZlVG9vbENoaXBSb290LFxuICBQbHVzTWVudURpdmlkZXIsXG4gIFBsdXNNZW51SW5uZXJDb2x1bW4sXG4gIFBsdXNNZW51SXRlbUJ1dHRvbixcbiAgUGx1c01lbnVJdGVtTGFiZWwsXG4gIFBsdXNNZW51UGFwZXIsXG4gIFBsdXNNZW51VG9vbHNSb3csXG4gIFBsdXNUb2dnbGVCdXR0b24sXG4gIFNDSW5wdXRDaGlwc1JvdyxcbiAgU0NJbnB1dE1ldGFJY29uQnV0dG9uLFxuICBTQ0lucHV0TWV0YUluZGljYXRvcnMsXG4gIFNDTUlBdHRhY2htZW50LFxuICBTQ01JQXR0YWNobWVudERlbGV0ZUljb24sXG4gIFNDTUlBdHRhY2htZW50RmlsZUljb24sXG4gIFNDTUlBdHRhY2htZW50SWNvbixcbiAgU0NNSUF0dGFjaG1lbnROYW1lLFxuICBTdHlsZWRNQUlBSW5wdXRXcmFwcGVyLFxuICBTdHlsZWRNQUlBU2VuZEJ1dHRvbixcbiAgU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCxcbiAgU0NJbnB1dEVkaXRvckNlbGwsXG4gIFNDSW5wdXRUb29sYmFyUm93LFxuICBTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsLFxuICBTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsLFxuICBTdHlsZWRNQUlBU3RvcEJ1dHRvbixcbiAgU3R5bGVkTUFJQVN0b3BJY29uLFxuICBTdHlsZWRNQUlBRHJvcE92ZXJsYXksXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0LCBNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWCB9IGZyb20gJy4vbWFpYUlucHV0TGF5b3V0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBNb2RhbEZpbGVFeGNlZWRzIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL01vZGFsRmlsZUV4Y2VlZHMnXG5pbXBvcnQgeyBTbGFzaENvbW1hbmREcm9wZG93biB9IGZyb20gJy4uL1NsYXNoQ29tbWFuZERyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2xhc2hDb21tYW5kcyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNsYXNoQ29tbWFuZHMnXG5pbXBvcnQgeyByZXNvbHZlUXVpY2tBY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlJ1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9BY3Rpb24nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE1haWFJbnB1dEFkZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBZGRJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dERlZXBTZWFyY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0RGVlcFNlYXJjaEljb24nXG5pbXBvcnQgeyBDb3JBY2Nlc3NJY29uIH0gZnJvbSAnLi4vaWNvbnMvQ29yQWNjZXNzSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0TWVudGlvbkljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRSb2JvdEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRSb2JvdEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRTZW5kSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNlbmRJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2xhc2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0U2xhc2hJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0V2ViU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFdlYlNlYXJjaEljb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBnZXRDaGF0VG9vbHNNZW51QWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB7IE1BSUFfQ0hBVF9JTlBVVF9VSSB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9jb25maWcnXG5pbXBvcnQge1xuICBhbGxvd2VkRmlsZVR5cGVzLFxuICBmaWxlVHlwZXMsXG4gIE1BWF9GSUxFX1NJWkVfTUJfTUFJQV9WSVNJT04sXG4gIE1BWF9GSUxFX1NJWkVfTUJfT0xELFxuICBNQVhfRklMRV9TSVpFX01CX0FVRElPLFxuICBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUyxcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Zvcm1hdEV4dGVuc2lvbnMnXG5pbXBvcnQgeyBBUFBDVUVTX0VWRU5UUywgdHJhY2tBcHBjdWVzRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHBjdWVzJ1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uL0NoaXAnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvciwgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgfSBmcm9tICcuLi9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgdXNlTWVudGlvblBvcG92ZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZGF0YVRyYW5zZmVySGFzRmlsZXMsIGZpbGVzRnJvbURhdGFUcmFuc2ZlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NoYXRJbnB1dEZpbGVzJ1xuXG5jb25zdCBUT09MX0NISVBfRVhJVF9NUyA9IDIyMFxuY29uc3QgU0xBU0hfRFJPUERPV05fV0lEVEhfUFggPSAzNDBcbmNvbnN0IFNMQVNIX0RST1BET1dOX0xFRlRfT0ZGU0VUX1BYID0gMjRcbmNvbnN0IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFggPSA0MTZcbmNvbnN0IFNMQVNIX0RST1BET1dOX0dBUF9BQk9WRV9JTlBVVF9QWCA9IDRcbmNvbnN0IFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX0VER0VfUFggPSA4XG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxudHlwZSBNQUlBSW5wdXRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzV3JpdGluZz86IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgb25DaGFuZ2U/OiAoKSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgb25GaWxlQXR0YWNoPzogKGZpbGU6IEZpbGUpID0+IHZvaWRcbiAgb25EZWxldGVBdHRhY2htZW50PzogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBjaGF0SWQ/OiBzdHJpbmdcbiAgbmV3Q2hhdEtleT86IG51bWJlclxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIC8qKiBFeHBvbmUgZWwgd3JhcHBlciBkZWwgaW5wdXQgcGFyYSBhbmNsYXIgcG9wb3ZlcnMgKG1lbmNpb25lcywgcGluIGRlIGNvbnRleHRvKS4gKi9cbiAgcG9wb3ZlckFuY2hvclJlZj86IE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICBsYXlvdXRNb2RlPzogJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuICAvKiogQ2hpcCBkZSBjb250ZXh0byAodGFyZWEvcHJveWVjdG8vY2xpZW50ZS9nbG9iYWwpIG1vc3RyYWRvIGVuIGxhIHRvb2xiYXIgZGVsIGlucHV0LiAqL1xuICBjb250ZXh0Q2hpcD86IHtcbiAgICBpdGVtczogc3RyaW5nW11cbiAgICB0eXBlPzogQ29udGV4dEVudGl0eVR5cGVcbiAgICBsZWFkaW5nSWNvbj86IFJlYWN0Tm9kZVxuICB9IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgTUFJQUlucHV0ID0gKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCxcbiAgaXNTdHJlYW1pbmcsXG4gIGlzV3JpdGluZyxcbiAgb25TdG9wR2VuZXJhdGlvbixcbiAgcGxhY2Vob2xkZXIsXG4gIG9uQ2hhbmdlLFxuICBvbkZvY3VzLFxuICBhbGlnbkJ1dHRvbnMgPSAndmVydGljYWwnLFxuICBvbkZpbGVBdHRhY2gsXG4gIG9uRGVsZXRlQXR0YWNobWVudCxcbiAgYXR0YWNobWVudHMgPSBbXSxcbiAgY2hhdElkLFxuICBuZXdDaGF0S2V5LFxuICB0b29sdGlwWkluZGV4LFxuICBwb3BvdmVyQW5jaG9yUmVmOiBleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYsXG4gIGxheW91dE1vZGUsXG4gIGNvbnRleHRDaGlwLFxufTogTUFJQUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmPENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPihudWxsKVxuICBjb25zdCBmaWxlSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgY2hpcHNSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHRvb2xiYXJSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGludGVybmFsV3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qgd3JhcHBlclJlZiA9IGV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiA/PyBpbnRlcm5hbFdyYXBwZXJSZWZcbiAgY29uc3QgW2hhc1R5cGluZ1ByZXNlbmNlLCBzZXRIYXNUeXBpbmdQcmVzZW5jZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2NoaXBzUm93SGVpZ2h0LCBzZXRDaGlwc1Jvd0hlaWdodF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbdG9vbGJhclJvd0hlaWdodCwgc2V0VG9vbGJhclJvd0hlaWdodF0gPSB1c2VTdGF0ZShNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWClcbiAgY29uc3QgW21vZGFsUHJvcHMsIHNldE1vZGFsUHJvcHNdID0gdXNlU3RhdGUoe1xuICAgIGlzT3BlbjogZmFsc2UsXG4gICAgZXhjbHVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZXhjZWVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZmlsZVNpemVzOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LFxuICB9KVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3Qge1xuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVEZWVwU2VhcmNoLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhZ2VudCxcbiAgICBpbml0aWFsRHJhZnQsXG4gICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZixcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBwbHVzTWVudVpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTMwMCwgJ292ZXJsYXknKVxuICBjb25zdCBpbml0aWFsRHJhZnRBcHBsaWVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IHtcbiAgICBwb3BvdmVyT3BlbixcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsXG4gICAgaGFuZGxlVHJpZ2dlcixcbiAgICBoYW5kbGVLZXlEb3duOiBoYW5kbGVQb3BvdmVyS2V5RG93bixcbiAgICBwb3BvdmVyTm9kZSxcbiAgfSA9IHVzZU1lbnRpb25Qb3BvdmVyKHtcbiAgICBlZGl0b3JSZWYsXG4gICAgcG9wb3ZlckFuY2hvclJlZjogd3JhcHBlclJlZixcbiAgfSlcblxuICBjb25zdCBbcGx1c01lbnVBbmNob3IsIHNldFBsdXNNZW51QW5jaG9yXSA9IHVzZVN0YXRlPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2FjdGl2ZVRvb2xDaGlwSG92ZXJlZCwgc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdG9vbENoaXBFeGl0aW5nLCBzZXRUb29sQ2hpcEV4aXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0ZpbGVEcmFnQWN0aXZlLCBzZXRJc0ZpbGVEcmFnQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0b29sQ2hpcEV4aXRUaW1lclJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGZpbGVEcmFnQ291bnRlclJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzZWFyY2hNb2RlQWN0aXZlUmVmID0gdXNlUmVmKHsgd2ViOiBmYWxzZSwgZGVlcDogZmFsc2UgfSlcbiAgY29uc3QgcGx1c01lbnVPcGVuID0gQm9vbGVhbihwbHVzTWVudUFuY2hvcilcblxuICAvLyBJbmljaWFsaXphciBsYXMgcmVmZXJlbmNpYXMgY29tbyB1bmRlZmluZWQgcGFyYSBkZXRlY3RhciBlbCBwcmltZXIgY2FtYmlvIGNvcnJlY3RhbWVudGVcbiAgY29uc3QgcHJldmlvdXNBZ2VudElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0NoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNOZXdDaGF0S2V5UmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0xheW91dE1vZGVSZWYgPSB1c2VSZWY8TUFJQUlucHV0UHJvcHNbJ2xheW91dE1vZGUnXT4odW5kZWZpbmVkKVxuXG4gIGNvbnN0IGFuYWx5dGljc0FnZW50VHlwZSA9IGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUoYWdlbnQpXG4gIGNvbnN0IGFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCA9IGFnZW50Py50eXBlID09PSAnY2xvbmUnID8geyBlbnRpdHk6IGFnZW50LmVudGl0eSA/PyBudWxsIH0gOiB7fVxuXG4gIC8vIFNsYXNoIGNvbW1hbmRzIGFwbGljYW4gYSBjbG9uZXMgZXNwZWNpYWxpc3RhcyB5IGFsIG9yY2hlc3RyYXRvciBnbG9iYWwgKGVzdGUgYWdyZWdhIGxvcyBkZSBzdXMgc3ViYWdlbnRlcykuXG4gIC8vIExvcyBjdXN0b20geSBsb3MgY2xvbmUgZ2xvYmFsL21haWFrZXIgbm8gbG9zIHRpZW5lbiBoYWJpbGl0YWRvcy5cbiAgY29uc3QgeyBjb21tYW5kczogc2xhc2hDb21tYW5kcyB9ID0gdXNlU2xhc2hDb21tYW5kcyhcbiAgICAoYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnKSB8fFxuICAgICAgKGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmIGFnZW50Py5lbnRpdHkgIT09ICdnbG9iYWwnKVxuICAgICAgPyBhZ2VudD8uaWRcbiAgICAgIDogdW5kZWZpbmVkXG4gIClcbiAgY29uc3QgW3Nob3dTbGFzaERyb3Bkb3duLCBzZXRTaG93U2xhc2hEcm9wZG93bl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NsYXNoUXVlcnksIHNldFNsYXNoUXVlcnldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IHNsYXNoTWVudVdhc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNsYXNoRHJvcGRvd25aSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgW3NsYXNoRHJvcGRvd25Qb3MsIHNldFNsYXNoRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIG1heEhlaWdodDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgfSlcblxuICBjb25zdCBwb3NpdGlvblNsYXNoRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBpZiAoIXJlY3QgfHwgcmVjdC53aWR0aCA8PSAwKSByZXR1cm5cblxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KFxuICAgICAgOCxcbiAgICAgIE1hdGgubWluKHZpZXdwb3J0VyAtIFNMQVNIX0RST1BET1dOX1dJRFRIX1BYIC0gOCwgcmVjdC5sZWZ0ICsgU0xBU0hfRFJPUERPV05fTEVGVF9PRkZTRVRfUFgpXG4gICAgKVxuICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodFB4ID0gcmVjdC50b3AgLSBTTEFTSF9EUk9QRE9XTl9HQVBfQUJPVkVfSU5QVVRfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9FREdFX1BYXG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5taW4oU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCwgTWF0aC5tYXgoMCwgYXZhaWxhYmxlSGVpZ2h0UHgpKVxuXG4gICAgc2V0U2xhc2hEcm9wZG93blBvcyh7XG4gICAgICBsZWZ0LFxuICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSByZWN0LnRvcCArIFNMQVNIX0RST1BET1dOX0dBUF9BQk9WRV9JTlBVVF9QWCxcbiAgICAgIG1heEhlaWdodCxcbiAgICB9KVxuICB9LCBbd3JhcHBlclJlZl0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTbGFzaERyb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHBvc2l0aW9uU2xhc2hEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2xhc2hEcm9wZG93biwgcG9zaXRpb25TbGFzaERyb3Bkb3duXSlcblxuICAvKiogVHJhcyBlbGVnaXIgbyBxdWl0YXIgYsO6c3F1ZWRhIHdlYi9wcm9mdW5kYTogdm9sdmVyIGFsIHRleHRhcmVhIChQb3BvdmVyL21lbnUgcHVlZGUgcm9iYXIgZm9jbykuICovXG4gIGNvbnN0IHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgMClcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY2xvc2VQbHVzTWVudSA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudClcbiAgICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24gPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAvLyBFdml0YSBxdWUgZWwgYm90w7NuIHJvYmUgZWwgZm9jbyBkZWwgaW5wdXQgYWwgYWJyaXIgZWwgbWVuw7ouXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHBsdXNNZW51QW5jaG9yKSB7XG4gICAgICBjbG9zZVBsdXNNZW51KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQbHVzTWVudUFuY2hvcihlLmN1cnJlbnRUYXJnZXQpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFBsdXNPcGVuLCB7IGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSwgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvblRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVBdHRhY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdmaWxlcycsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBpZiAoYXR0YWNobWVudHMubGVuZ3RoID49IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSByZXR1cm5cbiAgICBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKVxuICB9XG5cbiAgY29uc3QgYmVnaW5Ub29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB3YXNXZWIgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGNvbnN0IHdhc0RlZXAgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICBpZiAoIXdhc1dlYiAmJiAhd2FzRGVlcCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFRvb2xDaGlwRXhpdGluZyh0cnVlKVxuICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBjb25zdCB7IHdlYiwgZGVlcCB9ID0gc2VhcmNoTW9kZUFjdGl2ZVJlZi5jdXJyZW50XG4gICAgICBpZiAod2FzV2ViICYmIHdlYikge1xuICAgICAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgfSBlbHNlIGlmICh3YXNEZWVwICYmIGRlZXApIHtcbiAgICAgICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgICB9XG4gICAgICBzZXRUb29sQ2hpcEV4aXRpbmcoZmFsc2UpXG4gICAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICAgIH0sIFRPT0xfQ0hJUF9FWElUX01TKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVXZWJTZWFyY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSB7XG4gICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCgpXG4gICAgaWYgKGlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdzZWFyY2gnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51RGVlcFNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCgpXG4gICAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSB7XG4gICAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2RlZXBfc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9ucyA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNsYXNoVHJpZ2dlcigpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgfVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZHJhZnQgPSBpbml0aWFsRHJhZnQ/LnRyaW0oKVxuICAgIGlmICghZHJhZnQgfHwgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50IHx8IGRpc2FibGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5zZXRQbGFpblRleHQoZHJhZnQpXG4gICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UodHJ1ZSlcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxEcmFmdCwgZGlzYWJsZWQsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIGNvbnN0IHNlbmREaXNhYmxlZCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gIWhhc1R5cGluZ1ByZXNlbmNlICYmIGF0dGFjaG1lbnRzLmxlbmd0aCA9PT0gMCxcbiAgICBbaGFzVHlwaW5nUHJlc2VuY2UsIGF0dGFjaG1lbnRzLmxlbmd0aF1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2VhcmNoTW9kZUFjdGl2ZVJlZi5jdXJyZW50ID0geyB3ZWI6IGlzV2ViU2VhcmNoQWN0aXZlLCBkZWVwOiBpc0RlZXBTZWFyY2hBY3RpdmUgfVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNXZWJTZWFyY2hBY3RpdmUgJiYgIWlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBlbCBhZ2VudGUgbyBsYSBjb252ZXJzYWNpw7NuLCBvIGFsIG1vbnRhciBlbCBjb21wb25lbnRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYWdlbnRDaGFuZ2VkID0gcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgIT09IGFnZW50Py5pZFxuICAgIGNvbnN0IHByZXZpb3VzQ2hhdElkID0gcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudFxuICAgIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSBjaGF0SWRcbiAgICBjb25zdCBjaGF0Q2hhbmdlZCA9IHByZXZpb3VzQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkXG4gICAgY29uc3QgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID1cbiAgICAgIChwcmV2aW91c0NoYXRJZCA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzQ2hhdElkID09PSBudWxsKSAmJiBjdXJyZW50Q2hhdElkICE9PSB1bmRlZmluZWQgJiYgY3VycmVudENoYXRJZCAhPT0gbnVsbFxuICAgIGNvbnN0IG5ld0NoYXRTdGFydGVkID0gcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgIT09IG5ld0NoYXRLZXlcbiAgICBjb25zdCBpc0luaXRpYWxNb3VudCA9IHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkXG5cbiAgICBpZiAoKGFnZW50Q2hhbmdlZCB8fCBjaGF0Q2hhbmdlZCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgfHwgbmV3Q2hhdFN0YXJ0ZWQgfHwgaXNJbml0aWFsTW91bnQpICYmICFkaXNhYmxlZCkge1xuICAgICAgY29uc3QgZGVsYXkgPSBpc0luaXRpYWxNb3VudCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgPyAyMDAgOiAxMDBcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVkKSBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgZGVsYXkpXG4gICAgfVxuXG4gICAgcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgPSBhZ2VudD8uaWRcbiAgICBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50ID0gY2hhdElkXG4gICAgcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgPSBuZXdDaGF0S2V5XG4gIH0sIFthZ2VudD8uaWQsIGNoYXRJZCwgbmV3Q2hhdEtleSwgZGlzYWJsZWRdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBsYSBkaXNwb3NpY2nDs24gZGVsIG1vZGFsIChzaWRlYmFyIC8gZnVsbHNjcmVlbiAvIGZsb2F0aW5nKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbGF5b3V0TW9kZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzTGF5b3V0TW9kZSA9IHByZXZpb3VzTGF5b3V0TW9kZVJlZi5jdXJyZW50XG4gICAgcHJldmlvdXNMYXlvdXRNb2RlUmVmLmN1cnJlbnQgPSBsYXlvdXRNb2RlXG5cbiAgICBpZiAocHJldmlvdXNMYXlvdXRNb2RlID09PSB1bmRlZmluZWQgfHwgcHJldmlvdXNMYXlvdXRNb2RlID09PSBsYXlvdXRNb2RlIHx8IGRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfVxuICAgIH0sIDIwMClcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2xheW91dE1vZGUsIGRpc2FibGVkXSlcblxuICAvLyBBcHBjdWVzOiBub3RpZnkgdGhhdCB0aGUgaW5wdXQgaXMgdmlzaWJsZSBmb3Igc3BlY2lhbGlzdCBhZ2VudHMgKGNsb25lICsgcHJvamVjdC9jbGllbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXNTcGVjaWFsaXN0QWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnKVxuICAgIGlmICghd3JhcHBlclJlZi5jdXJyZW50IHx8ICFpc1NwZWNpYWxpc3RBZ2VudCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhQ29udGV4dE1lbnRpb25Jbml0KVxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQ6IDAuMSB9XG4gICAgKVxuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh3cmFwcGVyUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8udHlwZSwgYWdlbnQ/LmVudGl0eV0pXG5cbiAgLy8gQ2xlYXIgaW5wdXQgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gIH0sIFtyZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIC8vIE1hbnRlbmVyIGZvY28gYWwgc2VsZWNjaW9uYXIgdW4gY29udGV4dG8gcmVjaWVudGUgKGVsIGNsaWNrIGVuIGVsIHBpbGwgbG8gcm9iYSBhbCBpbnB1dCkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmb2N1cyA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZWRpdG9yUmVmLmN1cnJlbnQ/LnNlcmlhbGl6ZSgpXG4gICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgaWYgKCF0ZXh0LnRyaW0oKSAmJiAhYXR0YWNobWVudHMubGVuZ3RoKSByZXR1cm5cbiAgICBjb25zdCBtZW50aW9ucyA9IHN0YXRlPy5tZW50aW9ucyA/PyBbXVxuICAgIG9uU2VuZE1lc3NhZ2UodGV4dCwgYXR0YWNobWVudHMsIG1lbnRpb25zKVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICB9LCBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZ10pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQ6IEFjdGlvbikgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0LCB7XG4gICAgICAgIHR5cGVfcXVpY2tfYWN0aW9uOiByZXNvbHZlUXVpY2tBY3Rpb25UeXBlKGNvbW1hbmQpLFxuICAgICAgICBvcmlnaW5fcXVpY2tfYWN0aW9uOiAnc2xhc2hfbWVudScsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgICBjb25zdCB0cmlnZ2VyUGFydCA9IGAvJHtzbGFzaFF1ZXJ5fWBcbiAgICAgIGNvbnN0IGJlZm9yZVRyaWdnZXIgPSB0ZXh0LmVuZHNXaXRoKHRyaWdnZXJQYXJ0KSA/IHRleHQuc2xpY2UoMCwgLXRyaWdnZXJQYXJ0Lmxlbmd0aCkgOiB0ZXh0XG4gICAgICBjb25zdCBpc0VtcHR5QmVmb3JlVHJpZ2dlciA9IGJlZm9yZVRyaWdnZXIudHJpbSgpID09PSAnJ1xuXG4gICAgICBpZiAoaXNFbXB0eUJlZm9yZVRyaWdnZXIpIHtcbiAgICAgICAgb25TZW5kTWVzc2FnZShjb21tYW5kLnRpdGxlLCBhdHRhY2htZW50cywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb21tYW5kLmlkKVxuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hDb21tYW5kKHsgaWQ6IGNvbW1hbmQuaWQsIGxhYmVsOiBjb21tYW5kLnRpdGxlIH0pXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIHNsYXNoUXVlcnksIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duID0gKCkgPT4ge1xuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0b3JJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICB0ZXh0LFxuICAgICAgdHJpZ2dlcixcbiAgICAgIHNsYXNoVHJpZ2dlcixcbiAgICB9OiB7XG4gICAgICB0ZXh0OiBzdHJpbmdcbiAgICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gICAgICBzbGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgfSkgPT4ge1xuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UodGV4dC50cmltKCkubGVuZ3RoID4gMClcbiAgICAgIG9uQ2hhbmdlPy4oKVxuICAgICAgaGFuZGxlVHJpZ2dlcih0cmlnZ2VyKVxuXG4gICAgICBpZiAoc2xhc2hUcmlnZ2VyPy5hY3RpdmUgJiYgc2xhc2hDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICghc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uT3BlbilcbiAgICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24odHJ1ZSlcbiAgICAgICAgc2V0U2xhc2hRdWVyeShzbGFzaFRyaWdnZXIucXVlcnkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgaGFuZGxlVHJpZ2dlciwgc2xhc2hDb21tYW5kcywgZXZlbnRBbXBsaXR1ZGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoaGFuZGxlUG9wb3ZlcktleURvd24oZSkpIHJldHVyblxuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmICFlLnNoaWZ0S2V5ICYmICFwb3BvdmVyT3Blbikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaWYgKCFzZW5kRGlzYWJsZWQgJiYgIWRpc2FibGVkKSBoYW5kbGVTZW5kTWVzc2FnZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlUG9wb3ZlcktleURvd24sIHBvcG92ZXJPcGVuLCBzZW5kRGlzYWJsZWQsIGRpc2FibGVkLCBoYW5kbGVTZW5kTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGFkZEZpbGVzID0gKGluY29taW5nOiBGaWxlW10pID0+IHtcbiAgICBpZiAoIWluY29taW5nLmxlbmd0aCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICBjb25zdCBleGNlZWRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgZXhjbHVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGZpbGVTaXplczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9XG4gICAgbGV0IGZpbGVzSW5zZXJ0ZWQgPSBhdHRhY2htZW50cy5sZW5ndGhcblxuICAgIGNvbnN0IGlzTmV3Rm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PiBbJy5wbmcnLCAnLmpwZycsICcuanBlZycsICcucGRmJ10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuICAgIGNvbnN0IGlzT2xkRm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PlxuICAgICAgWycudHh0JywgJy5tZCcsICcuY3N2JywgJy5kb2MnLCAnLmRvY3gnLCAnLnBwdCcsICcucHB0eCcsICcueGxzeCcsICcueGxzJ10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuICAgIGNvbnN0IGlzQXVkaW9Gb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+XG4gICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuXG4gICAgaW5jb21pbmcuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgIGxldCBleGNsdWRlZEZpbGUgPSBmYWxzZVxuICAgICAgY29uc3QgZmlsZU5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpXG4gICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVQYXJ0cy5sZW5ndGggPiAxID8gYC4ke2ZpbGVOYW1lUGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCl9YCA6ICcnXG5cbiAgICAgIGlmICghYWxsb3dlZEZpbGVUeXBlcz8uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGZpbGVTaXplc1tmaWxlLm5hbWVdID0gZmlsZS5zaXplXG5cbiAgICAgIGlmIChpc05ld0Zvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpZiAoZmlsZS5zaXplID4gTUFYX0ZJTEVfU0laRV9NQl9NQUlBX1ZJU0lPTiAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXNJbnNlcnRlZCArIDEgPiBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykge1xuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzT2xkRm9ybWF0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIGlmIChmaWxlLnNpemUgPiBNQVhfRklMRV9TSVpFX01CX09MRCAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXNJbnNlcnRlZCArIDEgPiBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykge1xuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzQXVkaW9Gb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgaWYgKGZpbGUuc2l6ZSA+IE1BWF9GSUxFX1NJWkVfTUJfQVVESU8gKiAxMDI0ICogMTAyNCkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWV4Y2x1ZGVkRmlsZSkge1xuICAgICAgICBmaWxlc0luc2VydGVkICs9IDFcbiAgICAgICAgY29uc3QgdHlwZUZpbGUgPSBmaWxlLnR5cGUgfHwgZmlsZVR5cGVzW2ZpbGVFeHRlbnNpb25dXG4gICAgICAgIGNvbnN0IHBhcnNlZEZpbGUgPSBuZXcgRmlsZShbZmlsZV0sIGZpbGUubmFtZSwgeyB0eXBlOiB0eXBlRmlsZSB9KVxuICAgICAgICBvbkZpbGVBdHRhY2g/LihwYXJzZWRGaWxlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAoZXhjbHVkZWRGaWxlcy5sZW5ndGggfHwgZXhjZWVkZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgIHNldE1vZGFsUHJvcHMoeyBpc09wZW46IHRydWUsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGZpbGVTaXplcyB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVTZWxlY3QgPSAoZTogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBmaWxlcyA9IGUudGFyZ2V0LmZpbGVzXG4gICAgaWYgKGZpbGVzKSB7XG4gICAgICBhZGRGaWxlcyhBcnJheS5mcm9tKGZpbGVzKSlcbiAgICB9XG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzZXRGaWxlRHJhZyA9ICgpID0+IHtcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IDBcbiAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VudGVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgKz0gMVxuICAgIHNldElzRmlsZURyYWdBY3RpdmUodHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdMZWF2ZSA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFpc0ZpbGVEcmFnQWN0aXZlICYmICFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IE1hdGgubWF4KDAsIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50IC0gMSlcbiAgICBpZiAoZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgPT09IDApIHtcbiAgICAgIHNldElzRmlsZURyYWdBY3RpdmUoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ092ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcm9wID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkge1xuICAgICAgcmVzZXRGaWxlRHJhZygpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHJlc2V0RmlsZURyYWcoKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgYWRkRmlsZXMoZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuZGF0YVRyYW5zZmVyKSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBhc3RlRmlsZXMgPSAoZmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgIGFkZEZpbGVzKGZpbGVzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlV3JhcHBlclBhc3RlID0gKGU6IENsaXBib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGVkaXRvckVsID0gd3JhcHBlclJlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yKCdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScpXG4gICAgaWYgKGVkaXRvckVsICYmIGVkaXRvckVsLmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSByZXR1cm5cbiAgICBjb25zdCBmaWxlcyA9IGZpbGVzRnJvbURhdGFUcmFuc2ZlcihlLmNsaXBib2FyZERhdGEpXG4gICAgaWYgKCFmaWxlcy5sZW5ndGgpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGFkZEZpbGVzKGZpbGVzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQXR0YWNobWVudCA9IChmaWxlSWQ6IHN0cmluZykgPT4ge1xuICAgIG9uRGVsZXRlQXR0YWNobWVudD8uKGZpbGVJZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN0b3BHZW5lcmF0aW9uID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTdG9wUmVzcG9uc2UpXG4gICAgb25TdG9wR2VuZXJhdGlvbj8uKClcbiAgfVxuXG4gIGNvbnN0IHNob3dDaGlwc1JvdyA9IEJvb2xlYW4oY29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGggfHwgYXR0YWNobWVudHMubGVuZ3RoKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY2hpcHNFbCA9IGNoaXBzUm93UmVmLmN1cnJlbnRcbiAgICBjb25zdCB0b29sYmFyRWwgPSB0b29sYmFyUm93UmVmLmN1cnJlbnRcblxuICAgIGNvbnN0IHVwZGF0ZUhlaWdodHMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBuZXh0Q2hpcHMgPSBzaG93Q2hpcHNSb3cgJiYgY2hpcHNFbCA/IE1hdGguY2VpbChjaGlwc0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkgOiAwXG4gICAgICBjb25zdCBuZXh0VG9vbGJhciA9IHRvb2xiYXJFbFxuICAgICAgICA/IE1hdGguY2VpbCh0b29sYmFyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KVxuICAgICAgICA6IE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYXG5cbiAgICAgIHNldENoaXBzUm93SGVpZ2h0KHByZXYgPT4gKHByZXYgPT09IG5leHRDaGlwcyA/IHByZXYgOiBuZXh0Q2hpcHMpKVxuICAgICAgc2V0VG9vbGJhclJvd0hlaWdodChwcmV2ID0+IChwcmV2ID09PSBuZXh0VG9vbGJhciA/IHByZXYgOiBuZXh0VG9vbGJhcikpXG4gICAgfVxuXG4gICAgdXBkYXRlSGVpZ2h0cygpXG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih1cGRhdGVIZWlnaHRzKVxuICAgIGlmIChzaG93Q2hpcHNSb3cgJiYgY2hpcHNFbCkgb2JzZXJ2ZXIub2JzZXJ2ZShjaGlwc0VsKVxuICAgIGlmICh0b29sYmFyRWwpIG9ic2VydmVyLm9ic2VydmUodG9vbGJhckVsKVxuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbc2hvd0NoaXBzUm93LCBjb250ZXh0Q2hpcD8uaXRlbXM/Lmxlbmd0aCwgYXR0YWNobWVudHMubGVuZ3RoXSlcblxuICBjb25zdCBlZGl0b3JNYXhIZWlnaHQgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQoe1xuICAgICAgICBjaGlwc1Jvd0hlaWdodFB4OiBjaGlwc1Jvd0hlaWdodCxcbiAgICAgICAgdG9vbGJhclJvd0hlaWdodFB4OiB0b29sYmFyUm93SGVpZ2h0LFxuICAgICAgfSksXG4gICAgW2NoaXBzUm93SGVpZ2h0LCB0b29sYmFyUm93SGVpZ2h0XVxuICApXG5cbiAgY29uc3QgdG9vbGJhckljb25Db2xvciA9ICcjODA4MDgwJ1xuICBjb25zdCBwbHVzTWVudUljb25Db2xvciA9IE1BSUFfQ0hBVF9JTlBVVF9VSS5tZW51SWNvblxuICBjb25zdCBpc0N1c3RvbUFnZW50ID0gYWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nXG4gIGNvbnN0IGhhc0NvckFjY2VzcyA9IEJvb2xlYW4oXG4gICAgaXNDdXN0b21BZ2VudCAmJlxuICAgIGFnZW50Py5jb25uZWN0b3JzPy5zb21lKFxuICAgICAgY29ubmVjdG9yID0+XG4gICAgICAgIGNvbm5lY3Rvci5ncm91cCA9PT0gJ0NPUicgJiYgY29ubmVjdG9yLnNsdWdzLnNvbWUoc2x1ZyA9PiB0eXBlb2Ygc2x1ZyA9PT0gJ3N0cmluZycgJiYgc2x1Zy50cmltKCkubGVuZ3RoID4gMClcbiAgICApXG4gIClcbiAgY29uc3QgYWdlbnRNb2RlbE5hbWUgPSBpc0N1c3RvbUFnZW50ID8gYWdlbnQ/Lm1vZGVsX2Rpc3BsYXlfbmFtZT8udHJpbSgpIHx8IG51bGwgOiBudWxsXG4gIGNvbnN0IHNob3dDdXN0b21NZXRhSW5kaWNhdG9ycyA9IGhhc0NvckFjY2VzcyB8fCBCb29sZWFuKGFnZW50TW9kZWxOYW1lKVxuICBjb25zdCBzaG93TWVudGlvbkJ1dHRvbiA9IGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyB8fCBoYXNDb3JBY2Nlc3NcblxuICBsZXQgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbjogUmVhY3ROb2RlXG4gIGlmIChhY3RpdmVUb29sQ2hpcEhvdmVyZWQpIHtcbiAgICBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uID0gPENyb3NzIGNvbG9yPXtNQUlBX0NIQVRfSU5QVVRfVUkuY2hpcENsb3NlSWNvbn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICB9IGVsc2UgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSB7XG4gICAgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IDxNYWlhSW5wdXRXZWJTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICB9IGVsc2Uge1xuICAgIGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24gPSA8TWFpYUlucHV0RGVlcFNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R5bGVkTUFJQUlucHV0V3JhcHBlclxuICAgICAgICByZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgYWxpZ25CdXR0b25zPXthbGlnbkJ1dHRvbnN9XG4gICAgICAgIGhhc0F0dGFjaG1lbnRzPXshIWF0dGFjaG1lbnRzLmxlbmd0aH1cbiAgICAgICAgJGZpbGVEcmFnQWN0aXZlPXtpc0ZpbGVEcmFnQWN0aXZlfVxuICAgICAgICBkYXRhLWFwcGN1ZXM9XCJtYWlhX2NoYXRfaW5wdXRcIlxuICAgICAgICBkYXRhLW1haWEtc3RyZWFtaW5nPXtpc1N0cmVhbWluZyA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICAgIG9uUGFzdGU9e2hhbmRsZVdyYXBwZXJQYXN0ZX1cbiAgICAgICAgb25EcmFnRW50ZXI9e2hhbmRsZURyYWdFbnRlcn1cbiAgICAgICAgb25EcmFnTGVhdmU9e2hhbmRsZURyYWdMZWF2ZX1cbiAgICAgICAgb25EcmFnT3Zlcj17aGFuZGxlRHJhZ092ZXJ9XG4gICAgICAgIG9uRHJvcD17aGFuZGxlRHJvcH1cbiAgICAgID5cbiAgICAgICAge3Nob3dDaGlwc1JvdyAmJiAoXG4gICAgICAgICAgPFNDSW5wdXRDaGlwc1JvdyByZWY9e2NoaXBzUm93UmVmfT5cbiAgICAgICAgICAgIHtjb250ZXh0Q2hpcD8uaXRlbXM/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgPENoaXBcbiAgICAgICAgICAgICAgICBpdGVtcz17Y29udGV4dENoaXAuaXRlbXN9XG4gICAgICAgICAgICAgICAgdHlwZT17Y29udGV4dENoaXAudHlwZX1cbiAgICAgICAgICAgICAgICBsZWFkaW5nSWNvbj17Y29udGV4dENoaXAubGVhZGluZ0ljb259XG4gICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2F0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNJbWFnZSA9XG4gICAgICAgICAgICAgICAgYXR0YWNobWVudC50eXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSB8fCAvXFwuKHBuZ3xqcGU/Z3xnaWZ8d2VicHxibXB8c3ZnKSQvaS50ZXN0KGF0dGFjaG1lbnQubmFtZSB8fCAnJylcbiAgICAgICAgICAgICAgY29uc3QgY2hpcEljb24gPSBpc0ltYWdlID8gKFxuICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsxMn0gaGVpZ2h0PXsxMn0gLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNoSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTN9IGhlaWdodD17MTN9IC8+XG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXthdHRhY2htZW50Lm5hbWV9IGtleT17YCR7YXR0YWNobWVudC5pZH0tJHtpbmRleH1gfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50PlxuICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudEZpbGVJY29uPntjaGlwSWNvbn08L1NDTUlBdHRhY2htZW50RmlsZUljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50RGVsZXRlSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUF0dGFjaG1lbnRBcmlhJywgeyBkZWZhdWx0VmFsdWU6ICdRdWl0YXIgYXJjaGl2bycgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZWxldGVBdHRhY2htZW50KGF0dGFjaG1lbnQuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDcm9zcyBjb2xvcj1cIiM2NjY2NjZcIiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudERlbGV0ZUljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnRJY29uPlxuICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnROYW1lPnthdHRhY2htZW50Lm5hbWV9PC9TQ01JQXR0YWNobWVudE5hbWU+XG4gICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50PlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0lucHV0Q2hpcHNSb3c+XG4gICAgICAgICl9XG4gICAgICAgIDxTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkPlxuICAgICAgICAgIDxTQ0lucHV0RWRpdG9yQ2VsbD5cbiAgICAgICAgICAgIDxDb250ZXh0TWVudGlvbkVkaXRvclxuICAgICAgICAgICAgICByZWY9e2VkaXRvclJlZn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIG1heEhlaWdodD17ZWRpdG9yTWF4SGVpZ2h0fVxuICAgICAgICAgICAgICBvbklucHV0PXtoYW5kbGVFZGl0b3JJbnB1dH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICAgICAgICBvblBhc3RlRmlsZXM9e2hhbmRsZVBhc3RlRmlsZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NJbnB1dEVkaXRvckNlbGw+XG4gICAgICAgICAgPFNDSW5wdXRUb29sYmFyUm93IHJlZj17dG9vbGJhclJvd1JlZn0+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAgPFBsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICAgICAgPFBsdXNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgJG1lbnVPcGVuPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17aGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93bn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVBsdXNCdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQub3BlblBsdXNNZW51QXJpYScpfVxuICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17cGx1c01lbnVPcGVufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBZGRJY29uIGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgPC9QbHVzVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgIHtzaG93TWVudGlvbkJ1dHRvbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8UGx1c1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgJG1lbnVPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlTWVudGlvbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQub3Blbk1lbnRpb25BcmlhJyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRNZW50aW9uSWNvbiBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgPC9QbHVzVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIGFuY2hvckVsPXtwbHVzTWVudUFuY2hvcn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlUGx1c01lbnV9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRW5mb3JjZUZvY3VzXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmVzdG9yZUZvY3VzXG4gICAgICAgICAgICAgICAgICBhbmNob3JPcmlnaW49e3sgdmVydGljYWw6ICd0b3AnLCBob3Jpem9udGFsOiAnbGVmdCcgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbj17eyB2ZXJ0aWNhbDogJ2JvdHRvbScsIGhvcml6b250YWw6ICdsZWZ0JyB9fVxuICAgICAgICAgICAgICAgICAgc3g9e3sgekluZGV4OiBwbHVzTWVudVpJbmRleCB9fVxuICAgICAgICAgICAgICAgICAgc2xvdFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhcGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZWxldmF0aW9uOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIHN4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnLTRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFBsdXNNZW51UGFwZXI+XG4gICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51QXR0YWNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBdHRhY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIxfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXR0YWNoJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVXZWJTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQuc2VhcmNoV2ViJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc1dlYlNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51RGVlcFNlYXJjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0RGVlcFNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNEZWVwU2VhcmNoQWN0aXZlID8gPENoZWNrIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRTbGFzaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVRdWlja0FjdGlvbnMnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SW5uZXJDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8L1BsdXNNZW51UGFwZXI+XG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgICAgICAgICAgIHsoaXNXZWJTZWFyY2hBY3RpdmUgfHwgaXNEZWVwU2VhcmNoQWN0aXZlKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBSb290XG4gICAgICAgICAgICAgICAgICAgICRob3ZlcmVkPXthY3RpdmVUb29sQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICRleGl0aW5nPXt0b29sQ2hpcEV4aXRpbmd9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9eygpID0+IHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZChmYWxzZSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VTaG93bj17YWN0aXZlVG9vbENoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQucmVtb3ZlQWN0aXZlVG9vbEFyaWEnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2FjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb259XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNXZWJTZWFyY2hBY3RpdmUgPyB0KCdjaGF0LnNlYXJjaFdlYicpIDogdCgnY2hhdC5wbHVzTWVudURlZXBJbnZlc3RpZ2F0aW9uJyl9XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBMYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBSb290PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvUGx1c01lbnVUb29sc1Jvdz5cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgIDxTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsPlxuICAgICAgICAgICAgICB7c2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzICYmIChcbiAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJbmRpY2F0b3JzPlxuICAgICAgICAgICAgICAgICAge2hhc0NvckFjY2VzcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoYXQuZm9vdGVyLmNvckFjY2Vzc1Rvb2x0aXAnKX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e3QoJ2NoYXQuZm9vdGVyLmNvckFjY2Vzc0xhYmVsJyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvckFjY2Vzc0ljb24gd2lkdGg9ezE1fSBoZWlnaHQ9ezE0fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHthZ2VudE1vZGVsTmFtZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoaXBMbG0udG9vbHRpcCcsIHsgbW9kZWw6IGFnZW50TW9kZWxOYW1lIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi4odG9vbHRpcFpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHRvb2x0aXBaSW5kZXggfSA6IHt9KX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0lucHV0TWV0YUljb25CdXR0b24gYXJpYS1sYWJlbD17YWdlbnRNb2RlbE5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFJvYm90SWNvbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NJbnB1dE1ldGFJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvU0NJbnB1dE1ldGFJbmRpY2F0b3JzPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNXcml0aW5nID8gKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjaGF0LnN0b3AnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU3RvcEJ1dHRvbiBkaXNhYmxlZD17ZmFsc2V9IG9uQ2xpY2s9e2hhbmRsZVN0b3BHZW5lcmF0aW9ufSBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU3RvcEljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTUFJQVN0b3BCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjaGF0LnNlbmQnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VuZERpc2FibGVkIHx8IGRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlcz17aGFzVHlwaW5nUHJlc2VuY2UgfHwgYXR0YWNobWVudHMubGVuZ3RoID4gMH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRTZW5kSWNvbiBjb2xvcj1cIiNCRkJGQkZcIiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsPlxuICAgICAgICAgIDwvU0NJbnB1dFRvb2xiYXJSb3c+XG4gICAgICAgIDwvU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgYWNjZXB0PVwiLnR4dCwubWQsLmNzdiwuZG9jLC5kb2N4LC5wcHQsLnBwdHgsLnBuZywuanBnLC5qcGVnLC5wZGYsLnhsc3gsLnhscywuZmxhYywubTRhLC5tcDMsLm1wNCwub2dhLC5vZ2csLndhdiwud2VibVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVTZWxlY3R9XG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAgIC8+XG4gICAgICAgIHtpc0ZpbGVEcmFnQWN0aXZlICYmIDxTdHlsZWRNQUlBRHJvcE92ZXJsYXk+e3QoJ2NoYXQuZHJvcEZpbGVzSGVyZScpfTwvU3R5bGVkTUFJQURyb3BPdmVybGF5Pn1cbiAgICAgIDwvU3R5bGVkTUFJQUlucHV0V3JhcHBlcj5cbiAgICAgIHttb2RhbFByb3BzLmlzT3BlbiAmJiAoXG4gICAgICAgIDxNb2RhbEZpbGVFeGNlZWRzXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogZmFsc2UsIGV4Y2x1ZGVkRmlsZXM6IFtdLCBleGNlZWRlZEZpbGVzOiBbXSwgZmlsZVNpemVzOiB7fSB9KX1cbiAgICAgICAgICBleGNsdWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2x1ZGVkRmlsZXN9XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNlZWRlZEZpbGVzfVxuICAgICAgICAgIGZpbGVTaXplcz17bW9kYWxQcm9wcy5maWxlU2l6ZXN9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge3BvcG92ZXJOb2RlICYmIGNyZWF0ZVBvcnRhbChwb3BvdmVyTm9kZSwgZG9jdW1lbnQuYm9keSl9XG4gICAgICB7c2hvd1NsYXNoRHJvcGRvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxTbGFzaENvbW1hbmREcm9wZG93blxuICAgICAgICAgICAgY29tbWFuZHM9e3NsYXNoQ29tbWFuZHN9XG4gICAgICAgICAgICBxdWVyeT17c2xhc2hRdWVyeX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmR9XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd259XG4gICAgICAgICAgICBib3R0b209e3NsYXNoRHJvcGRvd25Qb3MuYm90dG9tfVxuICAgICAgICAgICAgbGVmdD17c2xhc2hEcm9wZG93blBvcy5sZWZ0fVxuICAgICAgICAgICAgbWF4SGVpZ2h0PXtzbGFzaERyb3Bkb3duUG9zLm1heEhlaWdodH1cbiAgICAgICAgICAgIHpJbmRleD17c2xhc2hEcm9wZG93blpJbmRleH1cbiAgICAgICAgICAgIGFuY2hvclJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5XG4gICAgICAgICl9XG4gICAgPC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBUUVBLFdBQVcsRUFDWEMsU0FBUyxFQUNUQyxlQUFlLEVBQ2ZDLE9BQU8sRUFDUEMsTUFBTSxFQUNOQyxRQUFRLFFBQ0gsT0FBTztBQUNkLFNBQVNDLFlBQVksUUFBUSxXQUFXO0FBQ3hDLFNBQVNDLE9BQU8sUUFBUSxlQUFlO0FBQ3ZDLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQ0VDLHdCQUF3QixFQUN4QkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGVBQWUsRUFDZkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsYUFBYSxFQUNiQyxnQkFBZ0IsRUFDaEJDLGdCQUFnQixFQUNoQkMsZUFBZSxFQUNmQyxxQkFBcUIsRUFDckJDLHFCQUFxQixFQUNyQkMsY0FBYyxFQUNkQyx3QkFBd0IsRUFDeEJDLHNCQUFzQixFQUN0QkMsa0JBQWtCLEVBQ2xCQyxrQkFBa0IsRUFDbEJDLHNCQUFzQixFQUN0QkMsb0JBQW9CLEVBQ3BCQyx5QkFBeUIsRUFDekJDLGlCQUFpQixFQUNqQkMsaUJBQWlC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
@@ -0,0 +1,20 @@
1
+ import { SCSessionGeneratingDot } from './SessionGeneratingDot.styles';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /** Indicador compacto de sesión generando respuesta (sidebar). */
4
+ export var SessionGeneratingDot = function SessionGeneratingDot(_ref) {
5
+ var ariaLabel = _ref.ariaLabel,
6
+ _ref$isWriting = _ref.isWriting,
7
+ isWriting = _ref$isWriting === void 0 ? false : _ref$isWriting,
8
+ _ref$animated = _ref.animated,
9
+ animated = _ref$animated === void 0 ? true : _ref$animated,
10
+ className = _ref.className;
11
+ return /*#__PURE__*/_jsx(SCSessionGeneratingDot, {
12
+ $writing: isWriting,
13
+ $animated: animated,
14
+ className: className,
15
+ role: "status",
16
+ "aria-live": "polite",
17
+ "aria-label": ariaLabel
18
+ });
19
+ };
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTQ1Nlc3Npb25HZW5lcmF0aW5nRG90IiwianN4IiwiX2pzeCIsIlNlc3Npb25HZW5lcmF0aW5nRG90IiwiX3JlZiIsImFyaWFMYWJlbCIsIl9yZWYkaXNXcml0aW5nIiwiaXNXcml0aW5nIiwiX3JlZiRhbmltYXRlZCIsImFuaW1hdGVkIiwiY2xhc3NOYW1lIiwiJHdyaXRpbmciLCIkYW5pbWF0ZWQiLCJyb2xlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvU2Vzc2lvbkdlbmVyYXRpbmdEb3QvU2Vzc2lvbkdlbmVyYXRpbmdEb3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNDU2Vzc2lvbkdlbmVyYXRpbmdEb3QgfSBmcm9tICcuL1Nlc3Npb25HZW5lcmF0aW5nRG90LnN0eWxlcydcblxuZXhwb3J0IHR5cGUgU2Vzc2lvbkdlbmVyYXRpbmdEb3RQcm9wcyA9IHtcbiAgLyoqIEV0aXF1ZXRhIGFjY2VzaWJsZSAoaTE4bikuICovXG4gIGFyaWFMYWJlbDogc3RyaW5nXG4gIC8qKiBSaXRtbyBtw6FzIHLDoXBpZG8gY3VhbmRvIHlhIGhheSB0b2tlbnMgZW4gdnVlbG8uICovXG4gIGlzV3JpdGluZz86IGJvb2xlYW5cbiAgLyoqIFB1bHNhIG1pZW50cmFzIGdlbmVyYTsgZXN0w6F0aWNvIGN1YW5kbyBsYSBzZXNpw7NuIHF1ZWTDsyBzaW4gbGVlci4gKi9cbiAgYW5pbWF0ZWQ/OiBib29sZWFuXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xufVxuXG4vKiogSW5kaWNhZG9yIGNvbXBhY3RvIGRlIHNlc2nDs24gZ2VuZXJhbmRvIHJlc3B1ZXN0YSAoc2lkZWJhcikuICovXG5leHBvcnQgY29uc3QgU2Vzc2lvbkdlbmVyYXRpbmdEb3QgPSAoe1xuICBhcmlhTGFiZWwsXG4gIGlzV3JpdGluZyA9IGZhbHNlLFxuICBhbmltYXRlZCA9IHRydWUsXG4gIGNsYXNzTmFtZSxcbn06IFNlc3Npb25HZW5lcmF0aW5nRG90UHJvcHMpID0+IChcbiAgPFNDU2Vzc2lvbkdlbmVyYXRpbmdEb3RcbiAgICAkd3JpdGluZz17aXNXcml0aW5nfVxuICAgICRhbmltYXRlZD17YW5pbWF0ZWR9XG4gICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgcm9sZT1cInN0YXR1c1wiXG4gICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gIC8+XG4pXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLHNCQUFzQixRQUFRLCtCQUErQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQVl0RTtBQUNBLE9BQU8sSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBQUMsSUFBQTtFQUFBLElBQy9CQyxTQUFTLEdBQUFELElBQUEsQ0FBVEMsU0FBUztJQUFBQyxjQUFBLEdBQUFGLElBQUEsQ0FDVEcsU0FBUztJQUFUQSxTQUFTLEdBQUFELGNBQUEsY0FBRyxLQUFLLEdBQUFBLGNBQUE7SUFBQUUsYUFBQSxHQUFBSixJQUFBLENBQ2pCSyxRQUFRO0lBQVJBLFFBQVEsR0FBQUQsYUFBQSxjQUFHLElBQUksR0FBQUEsYUFBQTtJQUNmRSxTQUFTLEdBQUFOLElBQUEsQ0FBVE0sU0FBUztFQUFBLG9CQUVUUixJQUFBLENBQUNGLHNCQUFzQjtJQUNyQlcsUUFBUSxFQUFFSixTQUFVO0lBQ3BCSyxTQUFTLEVBQUVILFFBQVM7SUFDcEJDLFNBQVMsRUFBRUEsU0FBVTtJQUNyQkcsSUFBSSxFQUFDLFFBQVE7SUFDYixhQUFVLFFBQVE7SUFDbEIsY0FBWVI7RUFBVSxDQUN2QixDQUFDO0FBQUEsQ0FDSCIsImlnbm9yZUxpc3QiOltdfQ==