@projectcor/maia-components 2.11.44-0 → 2.11.44

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 (50) hide show
  1. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +38 -10
  2. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +2 -2
  3. package/lib/components/atoms/IconButton.js +5 -12
  4. package/lib/components/atoms/MAIAInput/MAIAInput.js +5 -51
  5. package/lib/components/index.js +1 -2
  6. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -1
  7. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +3 -20
  8. package/lib/components/molecules/ChatAIHome/styles.js +2 -2
  9. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +1 -1
  10. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +16 -34
  11. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +16 -19
  12. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -18
  13. package/lib/components/molecules/ChatFooter/ChatFooter.js +3 -3
  14. package/lib/components/organisms/ChatAI/ChatAI.js +1 -3
  15. package/lib/context/global-context.js +1 -1
  16. package/lib/dev/DevChatAI.js +17 -134
  17. package/lib/dev/DevContextMentionInput.js +1 -3
  18. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  19. package/lib/hooks/useChatManager/useChatManager.js +21 -115
  20. package/lib/hooks/useMentionPopover.js +22 -5
  21. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +4 -12
  22. package/lib/hooks/useProjectSummaryConfig.js +6 -24
  23. package/lib/lang/br/index.js +1 -5
  24. package/lib/lang/en/index.js +1 -5
  25. package/lib/lang/es/index.js +1 -5
  26. package/lib/lang/fr/index.js +1 -5
  27. package/lib/services/maia/Agents/getAgents.js +2 -4
  28. package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
  29. package/lib/services/maia/Orchestrator/orchestrator.js +4 -14
  30. package/lib/services/maia/index.js +1 -3
  31. package/lib/store/chatsStore.types.js +1 -1
  32. package/lib/types/contextMention.js +2 -2
  33. package/lib/types/global.d.js +1 -1
  34. package/package.json +1 -1
  35. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +0 -82
  36. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +0 -31
  37. package/lib/components/atoms/FrequentlyUsedActions/index.js +0 -2
  38. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +0 -81
  39. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +0 -25
  40. package/lib/components/atoms/SlashCommandDropdown/index.js +0 -2
  41. package/lib/components/molecules/TaskAgentSelector/TaskAgentSelector.js +0 -94
  42. package/lib/components/molecules/TaskAgentSelector/TaskAgentSelector.styles.js +0 -38
  43. package/lib/components/molecules/TaskAgentSelector/index.js +0 -2
  44. package/lib/hooks/useFrequentlyUsedActions.js +0 -80
  45. package/lib/hooks/useSlashCommands.js +0 -80
  46. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +0 -38
  47. package/lib/services/maia/Actions/getSlashCommands.js +0 -38
  48. package/lib/services/maia/Actions/index.js +0 -7
  49. package/lib/types/Action.js +0 -2
  50. package/lib/types/Task.js +0 -2
@@ -103,6 +103,10 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
103
103
  _useState8 = _slicedToArray(_useState7, 2),
104
104
  activeIndex = _useState8[0],
105
105
  setActiveIndex = _useState8[1];
106
+ var _useState9 = useState(false),
107
+ _useState0 = _slicedToArray(_useState9, 2),
108
+ isKeyboardNavActive = _useState0[0],
109
+ setIsKeyboardNavActive = _useState0[1];
106
110
  var hasEmittedOpen = useRef(false);
107
111
  var popoverRef = useRef(null);
108
112
  var getCaretRect = useCaretPosition();
@@ -246,15 +250,17 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
246
250
  if (items.length === 0) return false;
247
251
  if (e.key === 'ArrowDown') {
248
252
  e.preventDefault();
253
+ setIsKeyboardNavActive(true);
249
254
  setActiveIndex(function (prev) {
250
- return (prev + 1) % items.length;
255
+ return items.length > 0 ? Math.min(prev + 1, items.length - 1) : 0;
251
256
  });
252
257
  return true;
253
258
  }
254
259
  if (e.key === 'ArrowUp') {
255
260
  e.preventDefault();
261
+ setIsKeyboardNavActive(true);
256
262
  setActiveIndex(function (prev) {
257
- return (prev - 1 + items.length) % items.length;
263
+ return Math.max(prev - 1, 0);
258
264
  });
259
265
  return true;
260
266
  }
@@ -291,7 +297,14 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
291
297
  return document.removeEventListener('mousedown', handlePointerDownOutside);
292
298
  };
293
299
  }, [popoverOpen, close]);
300
+ var prevIsLoadingMoreRef = useRef(false);
294
301
  useEffect(function () {
302
+ return function () {
303
+ prevIsLoadingMoreRef.current = isLoadingMore;
304
+ };
305
+ }, [isLoadingMore]);
306
+ useEffect(function () {
307
+ if (prevIsLoadingMoreRef.current) return;
295
308
  setActiveIndex(0);
296
309
  }, [items.length, activeType]);
297
310
  var popoverNode = useMemo(function () {
@@ -318,10 +331,14 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
318
331
  }),
319
332
  onItemSelected: insertSelectedItem,
320
333
  activeIndex: activeIndex,
321
- onActiveIndexChange: setActiveIndex
334
+ onActiveIndexChange: setActiveIndex,
335
+ isKeyboardNavActive: isKeyboardNavActive,
336
+ onMouseMoveInList: function onMouseMoveInList() {
337
+ return setIsKeyboardNavActive(false);
338
+ }
322
339
  })
323
340
  });
324
- }, [popoverOpen, popoverPos, allowedTypes, activeType, handleTypeChange, items, loading, error, hideRecentsLabel, hasMore, isLoadingMore, loadMore, searchValue, insertSelectedItem, activeIndex]);
341
+ }, [popoverOpen, popoverPos, allowedTypes, activeType, handleTypeChange, items, loading, error, hideRecentsLabel, hasMore, isLoadingMore, loadMore, searchValue, insertSelectedItem, activeIndex, isKeyboardNavActive]);
325
342
  return {
326
343
  popoverOpen: popoverOpen,
327
344
  resetMentionOpenTracking: resetMentionOpenTracking,
@@ -331,4 +348,4 @@ export var useMentionPopover = function useMentionPopover(_ref6) {
331
348
  close: close
332
349
  };
333
350
  };
334
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIlNDTVBBbmNob3IiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVCIsInVzZUVudGl0eVNlYXJjaCIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJ1c2VDYXJldFBvc2l0aW9uIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJqc3giLCJfanN4IiwiVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFIiwidXNlciIsInRhc2siLCJwcm9qZWN0IiwiZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UiLCJhdFJ1bkxlbmd0aCIsImFsbG93ZWRUeXBlcyIsImRlZmF1bHRUeXBlIiwiX09iamVjdCRlbnRyaWVzJGZpbmQkIiwiX09iamVjdCRlbnRyaWVzJGZpbmQiLCJfYWxsb3dlZFR5cGVzJHRhYklkeCIsIm5vcm1hbGl6ZWQiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJtYXBwZWRUeXBlIiwiT2JqZWN0IiwiZW50cmllcyIsImZpbmQiLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheSIsImxlbiIsImluY2x1ZGVzIiwidGFiSWR4IiwibWluIiwibGVuZ3RoIiwiZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUiLCJ0eXBlIiwibWFwcGVkIiwiaWR4IiwiaW5kZXhPZiIsInVzZURlcml2ZWRTY29wZSIsIl9yZWYzIiwiX2N0eCRjbGllbnQkaWQiLCJfY3R4JGNsaWVudCIsIl9jdHgkZW50aXR5VmFsdWVzIiwiX3JlZjQiLCJfcmVmNSIsIl9jdHgkcHJvamVjdCRpZCIsIl9jdHgkcHJvamVjdCIsIl9jdHgkZW50aXR5VmFsdWVzMiIsIl9jdHgkY2hpcHNQcm9qZWN0IiwiX2N0eCRhZ2VudCRlbnRpdHkiLCJfY3R4JGFnZW50IiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzIiwiX2N0eCRhZ2VudDIiLCJjdHgiLCJjbGllbnRJZCIsImNsaWVudCIsImlkIiwiZW50aXR5VmFsdWVzIiwicHJvamVjdElkIiwiY2hpcHNQcm9qZWN0IiwiYWdlbnRFbnRpdHkiLCJhZ2VudCIsImVudGl0eSIsIm1jcFNsdWdzS2V5IiwiY29ubmVjdG9ycyIsImMiLCJncm91cCIsInNsdWdzIiwiam9pbiIsIm1jcFNsdWdzIiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzMiIsIl9jdHgkYWdlbnQzIiwicmF3IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwiZmlsdGVyIiwicyIsInRyaW0iLCJzb3J0IiwidXNlTWVudGlvblBvcG92ZXIiLCJfcmVmNiIsImVkaXRvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJlbmFibGVkVHlwZXMiLCJvbk1lbnRpb25BZGRlZCIsIl91c2VUIiwidCIsImV2ZW50IiwiX3VzZU1lbnRpb25BbGxvd2VkVHlwIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZVR5cGUiLCJzZXRBY3RpdmVUeXBlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwb3BvdmVyT3BlbiIsInNldFBvcG92ZXJPcGVuIiwiX3VzZVN0YXRlNSIsImJvdHRvbSIsImxlZnQiLCJ3aWR0aCIsIl91c2VTdGF0ZTYiLCJwb3BvdmVyUG9zIiwic2V0UG9wb3ZlclBvcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsImhhc0VtaXR0ZWRPcGVuIiwicG9wb3ZlclJlZiIsImdldENhcmV0UmVjdCIsInNjb3BlIiwiX3VzZUVudGl0eVNlYXJjaCIsIml0ZW1zIiwibG9hZGluZyIsImVycm9yIiwiaGlkZVJlY2VudHNMYWJlbCIsImhhc01vcmUiLCJpc0xvYWRpbmdNb3JlIiwibG9hZE1vcmUiLCJzZWFyY2hWYWx1ZSIsInVwZGF0ZVNlYXJjaFZhbHVlIiwicG9zaXRpb25Qb3BvdmVyIiwiX3BvcG92ZXJBbmNob3JSZWYkY3VyIiwiX2VkaXRvclJlZiRjdXJyZW50JGdlIiwiX2VkaXRvclJlZiRjdXJyZW50IiwiX2VkaXRvclJlZiRjdXJyZW50JGdlMiIsImZyb21BbmNob3IiLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZnJvbUVkaXRvciIsImdldEVkaXRvckNsaWVudFJlY3QiLCJjYWxsIiwicmVjdCIsImNhcmV0Iiwidmlld3BvcnRIIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ2aWV3cG9ydFciLCJpbm5lcldpZHRoIiwiZmFsbGJhY2tXIiwidG9wIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiY2xvc2UiLCJoYW5kbGVUcmlnZ2VyIiwidHJpZ2dlciIsImFjdGl2ZSIsIm92ZXJmbG93QXRDb3VudCIsImVmZmVjdGl2ZUF0UnVuTGVuZ3RoIiwiZWZmZWN0aXZlUXVlcnkiLCJjb25jYXQiLCJyZXBlYXQiLCJxdWVyeSIsInR5cGVGcm9tQXQiLCJhaUNoYXRNZW50aW9uT3BlbiIsImluc2VydFNlbGVjdGVkSXRlbSIsIml0ZW0iLCJfaXRlbSRyYXckY2xpZW50SWQiLCJfaXRlbSRyYXckY2xpZW50TmFtZSIsIl9pdGVtJHJhdyRwcm9qZWN0TmFtZSIsIl9pdGVtJHJhdyRmZWVJZCIsIl9pdGVtJHJhdyRmYXRoZXJJZCIsIl9pdGVtJHJhdyRmYXRoZXJUaXRsZSIsIl9pdGVtJHJhdyR0b3RhbFByb3llYyIsIl9pdGVtJHJhdyRuYW1lIiwiX2l0ZW0kcmF3JHBpY3R1cmUiLCJfaXRlbSRyYXckcG9zaXRpb25OYW0iLCJfaXRlbSRyYXckZW1haWwiLCJfZWRpdG9yUmVmJGN1cnJlbnQyIiwibWVudGlvbiIsImxhYmVsIiwicHJpbWFyeSIsIm1ldGFkYXRhIiwiY2xpZW50TmFtZSIsInByb2plY3ROYW1lIiwiZmVlSWQiLCJmYXRoZXJJZCIsImZhdGhlclRpdGxlIiwidG90YWxQcm95ZWN0b3MiLCJuYW1lIiwicGljdHVyZSIsInBvc2l0aW9uTmFtZSIsImVtYWlsIiwiaW5zZXJ0TWVudGlvbiIsImFpQ2hhdE1lbnRpb25TZWxlY3QiLCJTdHJpbmciLCJoYW5kbGVUeXBlQ2hhbmdlIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsIm5leHRSdW5MZW5ndGgiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwiYWlDaGF0TWVudGlvblR5cGVTd2l0Y2giLCJoYW5kbGVLZXlEb3duIiwiZSIsImtleSIsInByZXZlbnREZWZhdWx0IiwibWV0YUtleSIsImFsdEtleSIsImRlbHRhIiwibmV4dElkeCIsInByZXYiLCJ1bmRlZmluZWQiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCJtb3VzZUV2ZW50IiwiX3BvcG92ZXJSZWYkY3VycmVudCIsInRhcmdldCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJwb3BvdmVyTm9kZSIsIiRib3R0b20iLCIkbGVmdCIsIiR3aWR0aCIsImNoaWxkcmVuIiwicmVmIiwib25UeXBlQ2hhbmdlIiwib25SZWFjaExpc3RFbmQiLCJrZXlib2FyZEhpbnQiLCJkZWZhdWx0VmFsdWUiLCJvbkl0ZW1TZWxlY3RlZCIsIm9uQWN0aXZlSW5kZXhDaGFuZ2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvblBvcG92ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleWJvYXJkRXZlbnQsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvblBvcG92ZXIsIFNDTVBBbmNob3IgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IEVudGl0eVNlYXJjaFNjb3BlLCB1c2VFbnRpdHlTZWFyY2ggfSBmcm9tICcuL3VzZUVudGl0eVNlYXJjaCdcbmltcG9ydCB7IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMgfSBmcm9tICcuL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMnXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4vdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3Zlck9wdGlvbnMgPSB7XG4gIGVkaXRvclJlZjogUmVmT2JqZWN0PENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPlxuICAvKipcbiAgICogTm9kbyBjdXlvIGFuY2hvIHkgYm9yZGUgc3VwZXJpb3IgZGVmaW5lbiBlbCBwb3BvdmVyIChwLiBlai4gd3JhcHBlciBkZWwgaW5wdXQgZW4gTUFJQSkuXG4gICAqIFNpIG5vIHNlIHBhc2EsIHNlIHVzYSBlbCByZWN0IGRlbCBjb250ZW50ZWRpdGFibGUgKGBnZXRFZGl0b3JDbGllbnRSZWN0YCkuXG4gICAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cbiAgLyoqIE92ZXJyaWRlIGRlbCBzZXQgZGUgdGFicyBwZXJtaXRpZGFzOyBzaSBubyBzZSBwYXNhIHNlIGRlcml2YSBkZWwgYWdlbnQuICovXG4gIGVuYWJsZWRUeXBlcz86IENvbnRleHRFbnRpdHlUeXBlW11cbiAgLyoqIENhbGxiYWNrIGN1YW5kbyBlbCB1c3VhcmlvIGluc2VydGEgdW5hIG1lbnRpb24gdsOtYSBjbGljay90ZWNsYWRvLiAqL1xuICBvbk1lbnRpb25BZGRlZD86IChtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uUG9wb3ZlclJldHVybiA9IHtcbiAgcG9wb3Zlck9wZW46IGJvb2xlYW5cbiAgLyoqXG4gICAqIFJlaW5pY2lhIGVsIHRyYWNraW5nIGRlIGBBSV9DSEFUX01FTlRJT05fT1BFTmAgKHByaW1lcmEgYXBlcnR1cmEgcG9yIG1lbnNhamUpLlxuICAgKiBMbGFtYXIgdHJhcyBlbnZpYXIgZWwgbWVuc2FqZSBvIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbi5cbiAgICovXG4gIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZzogKCkgPT4gdm9pZFxuICAvKiogUHJvY2VzYSBlbCB0cmlnZ2VyIHByb3ZlbmllbnRlIGRlbCBgQ29udGV4dE1lbnRpb25FZGl0b3Iub25JbnB1dGAuICovXG4gIGhhbmRsZVRyaWdnZXI6ICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBNYW5lam8gZGUgdGVjbGFzIHJlbGF0aXZhcyBhbCBwb3BvdmVyIChuYXZlZ2FjacOzbiwgc2VsZWNjacOzbiwgY2FtYmlvIGRlXG4gICAqIHRhYiB5IGVzY2FwZSkuIERldnVlbHZlIGB0cnVlYCBzaSBjb25zdW1pw7MgbGEga2V5LCBwYXJhIHF1ZSBlbCBjb25zdW1lclxuICAgKiBwdWVkYSBkZWNpZGlyIHNpIHNlZ3VpciBwcm9jZXNhbmRvIG90cmFzIHRlY2xhcyAocC5lai4gRW50ZXIgcGFyYSBlbnZpYXIpLlxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiBib29sZWFuXG4gIC8qKiBOb2RvIGRlbCBwb3BvdmVyOyBlbCBjb25zdW1lciBkZWJlIHBvcnRhcmxvIGNvbiBgY3JlYXRlUG9ydGFsYC4gKi9cbiAgcG9wb3Zlck5vZGU6IFJlYWN0Tm9kZSB8IG51bGxcbiAgLyoqIENpZXJyYSBlbCBwb3BvdmVyIHkgbGltcGlhIGVsIHF1ZXJ5LiAqL1xuICBjbG9zZTogKCkgPT4gdm9pZFxufVxuXG5jb25zdCBUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0U6IFBhcnRpYWw8UmVjb3JkPENvbnRleHRFbnRpdHlUeXBlLCBudW1iZXI+PiA9IHtcbiAgdXNlcjogMSxcbiAgdGFzazogMixcbiAgcHJvamVjdDogMyxcbn1cblxuY29uc3QgZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UgPSAoXG4gIGF0UnVuTGVuZ3RoOiBudW1iZXIsXG4gIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSxcbiAgZGVmYXVsdFR5cGU6IENvbnRleHRFbnRpdHlUeXBlXG4pOiBDb250ZXh0RW50aXR5VHlwZSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKGF0UnVuTGVuZ3RoKSlcbiAgY29uc3QgbWFwcGVkVHlwZSA9IChPYmplY3QuZW50cmllcyhUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0UpLmZpbmQoKFssIGxlbl0pID0+IGxlbiA9PT0gbm9ybWFsaXplZCk/LlswXSA/P1xuICAgIG51bGwpIGFzIENvbnRleHRFbnRpdHlUeXBlIHwgbnVsbFxuICBpZiAobWFwcGVkVHlwZSAmJiBhbGxvd2VkVHlwZXMuaW5jbHVkZXMobWFwcGVkVHlwZSkpIHJldHVybiBtYXBwZWRUeXBlXG4gIGNvbnN0IHRhYklkeCA9IE1hdGgubWluKE1hdGgubWF4KDAsIG5vcm1hbGl6ZWQgLSAxKSwgYWxsb3dlZFR5cGVzLmxlbmd0aCAtIDEpXG4gIHJldHVybiBhbGxvd2VkVHlwZXNbdGFiSWR4XSA/PyBkZWZhdWx0VHlwZVxufVxuXG5jb25zdCBnZXRUcmlnZ2VyU2VxdWVuY2VGcm9tVHlwZSA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdKTogbnVtYmVyID0+IHtcbiAgY29uc3QgbWFwcGVkID0gVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFW3R5cGVdXG4gIGlmIChtYXBwZWQpIHJldHVybiBtYXBwZWRcbiAgY29uc3QgaWR4ID0gYWxsb3dlZFR5cGVzLmluZGV4T2YodHlwZSlcbiAgcmV0dXJuIGlkeCA+PSAwID8gaWR4ICsgMSA6IDFcbn1cblxuLyoqXG4gKiBEZXJpdmEgY2xpZW50SWQsIHByb2plY3RJZCwgYWdlbnRFbnRpdHkgeSBNQ1AgZGVzZGUgZWwgY29udGV4dG8gZ2xvYmFsIChpbmNsLlxuICogYGVudGl0eVZhbHVlc2AgeSBgY2hpcHNQcm9qZWN0YCkgcGFyYSBmaWx0cmFyIHJlY2VudHMgeSBiw7pzcXVlZGEgR3JhcGhRTC5cbiAqL1xuY29uc3QgdXNlRGVyaXZlZFNjb3BlID0gKCk6IEVudGl0eVNlYXJjaFNjb3BlID0+IHtcbiAgY29uc3QgY3R4ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGNsaWVudElkID0gY3R4LmNsaWVudD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8uY2xpZW50SWQgPz8gbnVsbFxuICBjb25zdCBwcm9qZWN0SWQgPSBjdHgucHJvamVjdD8uaWQgPz8gY3R4LmVudGl0eVZhbHVlcz8ucHJvamVjdElkID8/IGN0eC5jaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gY3R4LmFnZW50Py5lbnRpdHkgPz8gbnVsbFxuICBjb25zdCBtY3BTbHVnc0tleSA9IChjdHguYWdlbnQ/LmNvbm5lY3RvcnM/LmZpbmQoYyA9PiBjLmdyb3VwID09PSAnTUNQJyk/LnNsdWdzID8/IFtdKS5qb2luKCd8JylcblxuICBjb25zdCBtY3BTbHVncyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJhdyA9IGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW11cbiAgICByZXR1cm4gWy4uLm5ldyBTZXQocmF3LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSAnc3RyaW5nJyAmJiBzLnRyaW0oKS5sZW5ndGggPiAwKSldLnNvcnQoKVxuICB9LCBbbWNwU2x1Z3NLZXldKVxuXG4gIHJldHVybiB1c2VNZW1vPEVudGl0eVNlYXJjaFNjb3BlPihcbiAgICAoKSA9PiAoeyBjbGllbnRJZCwgcHJvamVjdElkLCBtY3BTbHVncywgYWdlbnRFbnRpdHkgfSksXG4gICAgW2NsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eV1cbiAgKVxufVxuXG4vKipcbiAqIEVuY2Fwc3VsYSBsYSBsw7NnaWNhIGRlbCBwb3BvdmVyIGRlIEAtbWVudGlvbnMgKGVzdGFkbywgZmV0Y2ggcG9yIHRhYiwgYW5hbHl0aWNzLFxuICogcG9zaWNpb25hbWllbnRvKS4gRWwgY29uc3VtZXIgbWFudGllbmUgZWwgZWRpdG9yIHkgZWwgZW52w61vIGRlbCBtZW5zYWplLlxuICogTG9zIGZpbHRyb3MgZGUgYsO6c3F1ZWRhIHVzYW4gYHVzZURlcml2ZWRTY29wZWA6IGVzcGVjaWFsaXN0YSBwcm95ZWN0byBhY290YSB0YXJlYXNcbiAqIGFsIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0bzsgZXNwZWNpYWxpc3RhIGNsaWVudGUsIHByb3llY3RvcyBhbCBgY2xpZW50SWRgIChlbiBgZXh0cmFgIGRlIHNlYXJjaCkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZW50aW9uUG9wb3ZlciA9ICh7XG4gIGVkaXRvclJlZixcbiAgcG9wb3ZlckFuY2hvclJlZixcbiAgZW5hYmxlZFR5cGVzLFxuICBvbk1lbnRpb25BZGRlZCxcbn06IFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyk6IFVzZU1lbnRpb25Qb3BvdmVyUmV0dXJuID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWxsb3dlZFR5cGVzLCBkZWZhdWx0VHlwZSB9ID0gdXNlTWVudGlvbkFsbG93ZWRUeXBlcyhlbmFibGVkVHlwZXMpXG4gIGNvbnN0IFthY3RpdmVUeXBlLCBzZXRBY3RpdmVUeXBlXSA9IHVzZVN0YXRlPENvbnRleHRFbnRpdHlUeXBlPihkZWZhdWx0VHlwZSlcbiAgY29uc3QgW3BvcG92ZXJPcGVuLCBzZXRQb3BvdmVyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3BvcG92ZXJQb3MsIHNldFBvcG92ZXJQb3NdID0gdXNlU3RhdGU8eyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH0+KHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICB3aWR0aDogMCxcbiAgfSlcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBoYXNFbWl0dGVkT3BlbiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcG9wb3ZlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGdldENhcmV0UmVjdCA9IHVzZUNhcmV0UG9zaXRpb24oKVxuXG4gIGNvbnN0IHNjb3BlID0gdXNlRGVyaXZlZFNjb3BlKClcbiAgY29uc3QgeyBpdGVtcywgbG9hZGluZywgZXJyb3IsIGhpZGVSZWNlbnRzTGFiZWwsIGhhc01vcmUsIGlzTG9hZGluZ01vcmUsIGxvYWRNb3JlLCBzZWFyY2hWYWx1ZSwgdXBkYXRlU2VhcmNoVmFsdWUgfSA9XG4gICAgdXNlRW50aXR5U2VhcmNoKGFjdGl2ZVR5cGUsIHNjb3BlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoYWN0aXZlVHlwZSkpIHtcbiAgICAgIHNldEFjdGl2ZVR5cGUoZGVmYXVsdFR5cGUpXG4gICAgfVxuICB9LCBbYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBkZWZhdWx0VHlwZV0pXG5cbiAgY29uc3QgcG9zaXRpb25Qb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21BbmNob3IgPSBwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGZyb21FZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudD8uZ2V0RWRpdG9yQ2xpZW50UmVjdD8uKCkgPz8gbnVsbFxuICAgIGNvbnN0IHJlY3QgPSBmcm9tQW5jaG9yID8/IGZyb21FZGl0b3JcbiAgICBpZiAoIXJlY3QgfHwgcmVjdC53aWR0aCA8PSAwKSB7XG4gICAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgpXG4gICAgICBpZiAoIWNhcmV0KSByZXR1cm5cbiAgICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICAgIGNvbnN0IGZhbGxiYWNrVyA9IDMyMFxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHZpZXdwb3J0VyAtIGZhbGxiYWNrVyAtIDgsIGNhcmV0LmxlZnQpKVxuICAgICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICAgIHdpZHRoOiBmYWxsYmFja1csXG4gICAgICAgIGxlZnQsXG4gICAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gY2FyZXQudG9wICsgNCxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHsgd2lkdGggfSA9IHJlY3RcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4odmlld3BvcnRXIC0gd2lkdGggLSA4LCByZWN0LmxlZnQpKVxuICAgIC8qKiBQb3BvdmVyIHNpZW1wcmUgYXJyaWJhIGRlbCBpbnB1dDogYm9yZGUgaW5mZXJpb3IgZGVsIHBvcG92ZXIgfjRweCBzb2JyZSBlbCBib3JkZSBzdXBlcmlvciBkZWwgYW5jbGEuICovXG4gICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICB3aWR0aCxcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHJlY3QudG9wICsgNCxcbiAgICB9KVxuICB9LCBbcG9wb3ZlckFuY2hvclJlZiwgZWRpdG9yUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIGNvbnN0IHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW10pXG5cbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UG9wb3Zlck9wZW4oZmFsc2UpXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUoJycpXG4gIH0sIFt1cGRhdGVTZWFyY2hWYWx1ZV0pXG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKFxuICAgICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB7XG4gICAgICBpZiAoYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAocG9wb3Zlck9wZW4pIGNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0cmlnZ2VyLmFjdGl2ZSkge1xuICAgICAgICAvLyBTaSBoYXkgbcOhcyBgQGAgcXVlIHRhYnMgKHAuIGVqLiBhZ2VudGUgcHJveWVjdG86IGBAYCB1c3VhcmlvLCBgQEBgIHRhcmVhIOKGkiBgQEBAYCksXG4gICAgICAgIC8vIHNlIHVzYSBsYSDDumx0aW1hIHRhYiB5IGxvcyBgQGAgZGUgbcOhcyBwYXNhbiBhbCB0ZXh0byBkZSBiw7pzcXVlZGEgKGBAQEBgIOKHkiB0YWIgdGFyZWEgKyBxdWVyeSBgQGApLlxuICAgICAgICAvLyBDb24g4omlMyB0YWJzIChjbGllbnRlKSwgYEBAQGAgY29pbmNpZGUgY29uIGxhIDMuZXIgdGFiIChgcHJvamVjdGApLlxuICAgICAgICBjb25zdCBvdmVyZmxvd0F0Q291bnQgPSBNYXRoLm1heCgwLCB0cmlnZ2VyLmF0UnVuTGVuZ3RoIC0gYWxsb3dlZFR5cGVzLmxlbmd0aClcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlQXRSdW5MZW5ndGggPSBNYXRoLm1pbih0cmlnZ2VyLmF0UnVuTGVuZ3RoLCBhbGxvd2VkVHlwZXMubGVuZ3RoKVxuICAgICAgICBjb25zdCBlZmZlY3RpdmVRdWVyeSA9IGAkeydAJy5yZXBlYXQob3ZlcmZsb3dBdENvdW50KX0ke3RyaWdnZXIucXVlcnl9YFxuICAgICAgICBjb25zdCB0eXBlRnJvbUF0ID0gZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UoZWZmZWN0aXZlQXRSdW5MZW5ndGgsIGFsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUpXG5cbiAgICAgICAgaWYgKCFwb3BvdmVyT3Blbikge1xuICAgICAgICAgIHNldFBvcG92ZXJPcGVuKHRydWUpXG4gICAgICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlRnJvbUF0KVxuICAgICAgICAgIHBvc2l0aW9uUG9wb3ZlcigpXG4gICAgICAgICAgaWYgKCFoYXNFbWl0dGVkT3Blbi5jdXJyZW50KSB7XG4gICAgICAgICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvbk9wZW4sIHsgdHlwZTogdHlwZUZyb21BdCB9KVxuICAgICAgICAgICAgaGFzRW1pdHRlZE9wZW4uY3VycmVudCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlRnJvbUF0KVxuICAgICAgICAgIHBvc2l0aW9uUG9wb3ZlcigpXG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlU2VhcmNoVmFsdWUoZWZmZWN0aXZlUXVlcnkpXG4gICAgICB9IGVsc2UgaWYgKHBvcG92ZXJPcGVuKSB7XG4gICAgICAgIGNsb3NlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlLCBwb3BvdmVyT3BlbiwgcG9zaXRpb25Qb3BvdmVyLCB1cGRhdGVTZWFyY2hWYWx1ZSwgZXZlbnQsIGNsb3NlXVxuICApXG5cbiAgY29uc3QgaW5zZXJ0U2VsZWN0ZWRJdGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbSkgPT4ge1xuICAgICAgY29uc3QgbWVudGlvbjogQ29udGV4dE1lbnRpb24gPSB7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXG4gICAgICAgIGxhYmVsOiBpdGVtLnByaW1hcnksXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgY2xpZW50SWQ6IGl0ZW0ucmF3LmNsaWVudElkID8/IG51bGwsXG4gICAgICAgICAgY2xpZW50TmFtZTogaXRlbS5yYXcuY2xpZW50TmFtZSA/PyBudWxsLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnJhdy5wcm9qZWN0TmFtZSA/PyBudWxsLFxuICAgICAgICAgIGZlZUlkOiBpdGVtLnJhdy5mZWVJZCA/PyBudWxsLFxuICAgICAgICAgIGZhdGhlcklkOiBpdGVtLnJhdy5mYXRoZXJJZCA/PyBudWxsLFxuICAgICAgICAgIGZhdGhlclRpdGxlOiBpdGVtLnJhdy5mYXRoZXJUaXRsZSA/PyBudWxsLFxuICAgICAgICAgIHRvdGFsUHJveWVjdG9zOiBpdGVtLnJhdy50b3RhbFByb3llY3RvcyA/PyBudWxsLFxuICAgICAgICAgIG5hbWU6IGl0ZW0ucmF3Lm5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBwaWN0dXJlOiBpdGVtLnJhdy5waWN0dXJlID8/IG51bGwsXG4gICAgICAgICAgcG9zaXRpb25OYW1lOiBpdGVtLnJhdy5wb3NpdGlvbk5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBlbWFpbDogaXRlbS5yYXcuZW1haWwgPz8gbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uKG1lbnRpb24pXG4gICAgICBvbk1lbnRpb25BZGRlZD8uKG1lbnRpb24pXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblNlbGVjdCwgeyB0eXBlOiBtZW50aW9uLnR5cGUsIGlkOiBTdHJpbmcobWVudGlvbi5pZCkgfSlcbiAgICAgIGNsb3NlKClcbiAgICB9LFxuICAgIFtlZGl0b3JSZWYsIG9uTWVudGlvbkFkZGVkLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVUeXBlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiB7XG4gICAgICBzZXRBY3RpdmVUeXBlKHR5cGUpXG4gICAgICBjb25zdCBuZXh0UnVuTGVuZ3RoID0gZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUodHlwZSwgYWxsb3dlZFR5cGVzKVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgobmV4dFJ1bkxlbmd0aClcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uVHlwZVN3aXRjaCwgeyB0eXBlIH0pXG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBlZGl0b3JSZWYsIGV2ZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50Pik6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKCFwb3BvdmVyT3BlbiB8fCBhbGxvd2VkVHlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY2xvc2UoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoKGUua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZS5rZXkgPT09ICdBcnJvd0xlZnQnKSAmJiAoZS5tZXRhS2V5IHx8IGUuYWx0S2V5KSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY29uc3QgaWR4ID0gYWxsb3dlZFR5cGVzLmluZGV4T2YoYWN0aXZlVHlwZSlcbiAgICAgICAgY29uc3QgZGVsdGEgPSBlLmtleSA9PT0gJ0Fycm93UmlnaHQnID8gMSA6IC0xXG4gICAgICAgIGNvbnN0IG5leHRJZHggPSAoaWR4ICsgZGVsdGEgKyBhbGxvd2VkVHlwZXMubGVuZ3RoKSAlIGFsbG93ZWRUeXBlcy5sZW5ndGhcbiAgICAgICAgaGFuZGxlVHlwZUNoYW5nZShhbGxvd2VkVHlwZXNbbmV4dElkeF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZVxuXG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2ID0+IChwcmV2ICsgMSkgJSBpdGVtcy5sZW5ndGgpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldiA9PiAocHJldiAtIDEgKyBpdGVtcy5sZW5ndGgpICUgaXRlbXMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnVGFiJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaW5zZXJ0U2VsZWN0ZWRJdGVtKGl0ZW1zW2FjdGl2ZUluZGV4XSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gICAgW3BvcG92ZXJPcGVuLCBpdGVtcywgYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBhY3RpdmVJbmRleCwgaW5zZXJ0U2VsZWN0ZWRJdGVtLCBjbG9zZSwgaGFuZGxlVHlwZUNoYW5nZV1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblBvcG92ZXIoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3BvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXJdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG1vdXNlRXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsXG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGNsb3NlKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgfSwgW3BvcG92ZXJPcGVuLCBjbG9zZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRBY3RpdmVJbmRleCgwKVxuICB9LCBbaXRlbXMubGVuZ3RoLCBhY3RpdmVUeXBlXSlcblxuICBjb25zdCBwb3BvdmVyTm9kZSA9IHVzZU1lbW88UmVhY3ROb2RlIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghcG9wb3Zlck9wZW4pIHJldHVybiBudWxsXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01QQW5jaG9yICRib3R0b209e3BvcG92ZXJQb3MuYm90dG9tfSAkbGVmdD17cG9wb3ZlclBvcy5sZWZ0fSAkd2lkdGg9e3BvcG92ZXJQb3Mud2lkdGh9PlxuICAgICAgICA8Q29udGV4dE1lbnRpb25Qb3BvdmVyXG4gICAgICAgICAgcmVmPXtwb3BvdmVyUmVmfVxuICAgICAgICAgIGFsbG93ZWRUeXBlcz17YWxsb3dlZFR5cGVzfVxuICAgICAgICAgIGFjdGl2ZVR5cGU9e2FjdGl2ZVR5cGV9XG4gICAgICAgICAgb25UeXBlQ2hhbmdlPXtoYW5kbGVUeXBlQ2hhbmdlfVxuICAgICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBoaWRlUmVjZW50c0xhYmVsPXtoaWRlUmVjZW50c0xhYmVsfVxuICAgICAgICAgIGhhc01vcmU9e2hhc01vcmV9XG4gICAgICAgICAgaXNMb2FkaW5nTW9yZT17aXNMb2FkaW5nTW9yZX1cbiAgICAgICAgICBvblJlYWNoTGlzdEVuZD17bG9hZE1vcmV9XG4gICAgICAgICAgc2VhcmNoVmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIGtleWJvYXJkSGludD17dCgnY29udGV4dE1lbnRpb24ua2V5Ym9hcmRIaW50Jywge1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAnTmF2ZWdhY2nDs24gZW50cmUgcGVzdGHDsWFzOiBALCBAQCwgQEBA4oCmIGVuIG9yZGVuLiBUYW1iacOpbiBBbHQvQ21kICsg4oaQL+KGkicsXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25JdGVtU2VsZWN0ZWQ9e2luc2VydFNlbGVjdGVkSXRlbX1cbiAgICAgICAgICBhY3RpdmVJbmRleD17YWN0aXZlSW5kZXh9XG4gICAgICAgICAgb25BY3RpdmVJbmRleENoYW5nZT17c2V0QWN0aXZlSW5kZXh9XG4gICAgICAgIC8+XG4gICAgICA8L1NDTVBBbmNob3I+XG4gICAgKVxuICB9LCBbXG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcG9wb3ZlclBvcyxcbiAgICBhbGxvd2VkVHlwZXMsXG4gICAgYWN0aXZlVHlwZSxcbiAgICBoYW5kbGVUeXBlQ2hhbmdlLFxuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGlkZVJlY2VudHNMYWJlbCxcbiAgICBoYXNNb3JlLFxuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgbG9hZE1vcmUsXG4gICAgc2VhcmNoVmFsdWUsXG4gICAgaW5zZXJ0U2VsZWN0ZWRJdGVtLFxuICAgIGFjdGl2ZUluZGV4LFxuICBdKVxuXG4gIHJldHVybiB7IHBvcG92ZXJPcGVuLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGhhbmRsZVRyaWdnZXIsIGhhbmRsZUtleURvd24sIHBvcG92ZXJOb2RlLCBjbG9zZSB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBOENBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFOUcsU0FBU0MscUJBQXFCLEVBQUVDLFVBQVUsUUFBUSwyQ0FBMkM7QUFDN0YsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FB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
351
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIlNDTVBBbmNob3IiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVCIsInVzZUVudGl0eVNlYXJjaCIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJ1c2VDYXJldFBvc2l0aW9uIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJqc3giLCJfanN4IiwiVFlQRV9UT19UUklHR0VSX1NFUVVFTkNFIiwidXNlciIsInRhc2siLCJwcm9qZWN0IiwiZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UiLCJhdFJ1bkxlbmd0aCIsImFsbG93ZWRUeXBlcyIsImRlZmF1bHRUeXBlIiwiX09iamVjdCRlbnRyaWVzJGZpbmQkIiwiX09iamVjdCRlbnRyaWVzJGZpbmQiLCJfYWxsb3dlZFR5cGVzJHRhYklkeCIsIm5vcm1hbGl6ZWQiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJtYXBwZWRUeXBlIiwiT2JqZWN0IiwiZW50cmllcyIsImZpbmQiLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheSIsImxlbiIsImluY2x1ZGVzIiwidGFiSWR4IiwibWluIiwibGVuZ3RoIiwiZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUiLCJ0eXBlIiwibWFwcGVkIiwiaWR4IiwiaW5kZXhPZiIsInVzZURlcml2ZWRTY29wZSIsIl9yZWYzIiwiX2N0eCRjbGllbnQkaWQiLCJfY3R4JGNsaWVudCIsIl9jdHgkZW50aXR5VmFsdWVzIiwiX3JlZjQiLCJfcmVmNSIsIl9jdHgkcHJvamVjdCRpZCIsIl9jdHgkcHJvamVjdCIsIl9jdHgkZW50aXR5VmFsdWVzMiIsIl9jdHgkY2hpcHNQcm9qZWN0IiwiX2N0eCRhZ2VudCRlbnRpdHkiLCJfY3R4JGFnZW50IiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzIiwiX2N0eCRhZ2VudDIiLCJjdHgiLCJjbGllbnRJZCIsImNsaWVudCIsImlkIiwiZW50aXR5VmFsdWVzIiwicHJvamVjdElkIiwiY2hpcHNQcm9qZWN0IiwiYWdlbnRFbnRpdHkiLCJhZ2VudCIsImVudGl0eSIsIm1jcFNsdWdzS2V5IiwiY29ubmVjdG9ycyIsImMiLCJncm91cCIsInNsdWdzIiwiam9pbiIsIm1jcFNsdWdzIiwiX2N0eCRhZ2VudCRjb25uZWN0b3JzMiIsIl9jdHgkYWdlbnQzIiwicmF3IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwiZmlsdGVyIiwicyIsInRyaW0iLCJzb3J0IiwidXNlTWVudGlvblBvcG92ZXIiLCJfcmVmNiIsImVkaXRvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJlbmFibGVkVHlwZXMiLCJvbk1lbnRpb25BZGRlZCIsIl91c2VUIiwidCIsImV2ZW50IiwiX3VzZU1lbnRpb25BbGxvd2VkVHlwIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZVR5cGUiLCJzZXRBY3RpdmVUeXBlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwb3BvdmVyT3BlbiIsInNldFBvcG92ZXJPcGVuIiwiX3VzZVN0YXRlNSIsImJvdHRvbSIsImxlZnQiLCJ3aWR0aCIsIl91c2VTdGF0ZTYiLCJwb3BvdmVyUG9zIiwic2V0UG9wb3ZlclBvcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaXNLZXlib2FyZE5hdkFjdGl2ZSIsInNldElzS2V5Ym9hcmROYXZBY3RpdmUiLCJoYXNFbWl0dGVkT3BlbiIsInBvcG92ZXJSZWYiLCJnZXRDYXJldFJlY3QiLCJzY29wZSIsIl91c2VFbnRpdHlTZWFyY2giLCJpdGVtcyIsImxvYWRpbmciLCJlcnJvciIsImhpZGVSZWNlbnRzTGFiZWwiLCJoYXNNb3JlIiwiaXNMb2FkaW5nTW9yZSIsImxvYWRNb3JlIiwic2VhcmNoVmFsdWUiLCJ1cGRhdGVTZWFyY2hWYWx1ZSIsInBvc2l0aW9uUG9wb3ZlciIsIl9wb3BvdmVyQW5jaG9yUmVmJGN1ciIsIl9lZGl0b3JSZWYkY3VycmVudCRnZSIsIl9lZGl0b3JSZWYkY3VycmVudCIsIl9lZGl0b3JSZWYkY3VycmVudCRnZTIiLCJmcm9tQW5jaG9yIiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImZyb21FZGl0b3IiLCJnZXRFZGl0b3JDbGllbnRSZWN0IiwiY2FsbCIsInJlY3QiLCJjYXJldCIsInZpZXdwb3J0SCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwidmlld3BvcnRXIiwiaW5uZXJXaWR0aCIsImZhbGxiYWNrVyIsInRvcCIsInJlc2V0TWVudGlvbk9wZW5UcmFja2luZyIsImNsb3NlIiwiaGFuZGxlVHJpZ2dlciIsInRyaWdnZXIiLCJhY3RpdmUiLCJvdmVyZmxvd0F0Q291bnQiLCJlZmZlY3RpdmVBdFJ1bkxlbmd0aCIsImVmZmVjdGl2ZVF1ZXJ5IiwiY29uY2F0IiwicmVwZWF0IiwicXVlcnkiLCJ0eXBlRnJvbUF0IiwiYWlDaGF0TWVudGlvbk9wZW4iLCJpbnNlcnRTZWxlY3RlZEl0ZW0iLCJpdGVtIiwiX2l0ZW0kcmF3JGNsaWVudElkIiwiX2l0ZW0kcmF3JGNsaWVudE5hbWUiLCJfaXRlbSRyYXckcHJvamVjdE5hbWUiLCJfaXRlbSRyYXckZmVlSWQiLCJfaXRlbSRyYXckZmF0aGVySWQiLCJfaXRlbSRyYXckZmF0aGVyVGl0bGUiLCJfaXRlbSRyYXckdG90YWxQcm95ZWMiLCJfaXRlbSRyYXckbmFtZSIsIl9pdGVtJHJhdyRwaWN0dXJlIiwiX2l0ZW0kcmF3JHBvc2l0aW9uTmFtIiwiX2l0ZW0kcmF3JGVtYWlsIiwiX2VkaXRvclJlZiRjdXJyZW50MiIsIm1lbnRpb24iLCJsYWJlbCIsInByaW1hcnkiLCJtZXRhZGF0YSIsImNsaWVudE5hbWUiLCJwcm9qZWN0TmFtZSIsImZlZUlkIiwiZmF0aGVySWQiLCJmYXRoZXJUaXRsZSIsInRvdGFsUHJveWVjdG9zIiwibmFtZSIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJlbWFpbCIsImluc2VydE1lbnRpb24iLCJhaUNoYXRNZW50aW9uU2VsZWN0IiwiU3RyaW5nIiwiaGFuZGxlVHlwZUNoYW5nZSIsIl9lZGl0b3JSZWYkY3VycmVudDMiLCJuZXh0UnVuTGVuZ3RoIiwic3luY1RyaWdnZXJBdFJ1bkxlbmd0aCIsImFpQ2hhdE1lbnRpb25UeXBlU3dpdGNoIiwiaGFuZGxlS2V5RG93biIsImUiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsIm1ldGFLZXkiLCJhbHRLZXkiLCJkZWx0YSIsIm5leHRJZHgiLCJwcmV2IiwidW5kZWZpbmVkIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlIiwibW91c2VFdmVudCIsIl9wb3BvdmVyUmVmJGN1cnJlbnQiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwicHJldklzTG9hZGluZ01vcmVSZWYiLCJwb3BvdmVyTm9kZSIsIiRib3R0b20iLCIkbGVmdCIsIiR3aWR0aCIsImNoaWxkcmVuIiwicmVmIiwib25UeXBlQ2hhbmdlIiwib25SZWFjaExpc3RFbmQiLCJrZXlib2FyZEhpbnQiLCJkZWZhdWx0VmFsdWUiLCJvbkl0ZW1TZWxlY3RlZCIsIm9uQWN0aXZlSW5kZXhDaGFuZ2UiLCJvbk1vdXNlTW92ZUluTGlzdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW50aW9uUG9wb3Zlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5Ym9hcmRFdmVudCwgUmVhY3ROb2RlLCBSZWZPYmplY3QsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uUG9wb3ZlciwgU0NNUEFuY2hvciB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25Qb3BvdmVyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi91c2VUJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgRW50aXR5U2VhcmNoU2NvcGUsIHVzZUVudGl0eVNlYXJjaCB9IGZyb20gJy4vdXNlRW50aXR5U2VhcmNoJ1xuaW1wb3J0IHsgdXNlTWVudGlvbkFsbG93ZWRUeXBlcyB9IGZyb20gJy4vdXNlTWVudGlvbkFsbG93ZWRUeXBlcydcbmltcG9ydCB7IHVzZUNhcmV0UG9zaXRpb24gfSBmcm9tICcuL3VzZUNhcmV0UG9zaXRpb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi91c2VFdmVudCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lbnRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25Qb3BvdmVyT3B0aW9ucyA9IHtcbiAgZWRpdG9yUmVmOiBSZWZPYmplY3Q8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+XG4gIC8qKlxuICAgKiBOb2RvIGN1eW8gYW5jaG8geSBib3JkZSBzdXBlcmlvciBkZWZpbmVuIGVsIHBvcG92ZXIgKHAuIGVqLiB3cmFwcGVyIGRlbCBpbnB1dCBlbiBNQUlBKS5cbiAgICogU2kgbm8gc2UgcGFzYSwgc2UgdXNhIGVsIHJlY3QgZGVsIGNvbnRlbnRlZGl0YWJsZSAoYGdldEVkaXRvckNsaWVudFJlY3RgKS5cbiAgICovXG4gIHBvcG92ZXJBbmNob3JSZWY/OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPlxuICAvKiogT3ZlcnJpZGUgZGVsIHNldCBkZSB0YWJzIHBlcm1pdGlkYXM7IHNpIG5vIHNlIHBhc2Egc2UgZGVyaXZhIGRlbCBhZ2VudC4gKi9cbiAgZW5hYmxlZFR5cGVzPzogQ29udGV4dEVudGl0eVR5cGVbXVxuICAvKiogQ2FsbGJhY2sgY3VhbmRvIGVsIHVzdWFyaW8gaW5zZXJ0YSB1bmEgbWVudGlvbiB2w61hIGNsaWNrL3RlY2xhZG8uICovXG4gIG9uTWVudGlvbkFkZGVkPzogKG1lbnRpb246IENvbnRleHRNZW50aW9uKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25Qb3BvdmVyUmV0dXJuID0ge1xuICBwb3BvdmVyT3BlbjogYm9vbGVhblxuICAvKipcbiAgICogUmVpbmljaWEgZWwgdHJhY2tpbmcgZGUgYEFJX0NIQVRfTUVOVElPTl9PUEVOYCAocHJpbWVyYSBhcGVydHVyYSBwb3IgbWVuc2FqZSkuXG4gICAqIExsYW1hciB0cmFzIGVudmlhciBlbCBtZW5zYWplIG8gYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuLlxuICAgKi9cbiAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nOiAoKSA9PiB2b2lkXG4gIC8qKiBQcm9jZXNhIGVsIHRyaWdnZXIgcHJvdmVuaWVudGUgZGVsIGBDb250ZXh0TWVudGlvbkVkaXRvci5vbklucHV0YC4gKi9cbiAgaGFuZGxlVHJpZ2dlcjogKHRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nOyBhdFJ1bkxlbmd0aDogbnVtYmVyIH0pID0+IHZvaWRcbiAgLyoqXG4gICAqIE1hbmVqbyBkZSB0ZWNsYXMgcmVsYXRpdmFzIGFsIHBvcG92ZXIgKG5hdmVnYWNpw7NuLCBzZWxlY2Npw7NuLCBjYW1iaW8gZGVcbiAgICogdGFiIHkgZXNjYXBlKS4gRGV2dWVsdmUgYHRydWVgIHNpIGNvbnN1bWnDsyBsYSBrZXksIHBhcmEgcXVlIGVsIGNvbnN1bWVyXG4gICAqIHB1ZWRhIGRlY2lkaXIgc2kgc2VndWlyIHByb2Nlc2FuZG8gb3RyYXMgdGVjbGFzIChwLmVqLiBFbnRlciBwYXJhIGVudmlhcikuXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IGJvb2xlYW5cbiAgLyoqIE5vZG8gZGVsIHBvcG92ZXI7IGVsIGNvbnN1bWVyIGRlYmUgcG9ydGFybG8gY29uIGBjcmVhdGVQb3J0YWxgLiAqL1xuICBwb3BvdmVyTm9kZTogUmVhY3ROb2RlIHwgbnVsbFxuICAvKiogQ2llcnJhIGVsIHBvcG92ZXIgeSBsaW1waWEgZWwgcXVlcnkuICovXG4gIGNsb3NlOiAoKSA9PiB2b2lkXG59XG5cbmNvbnN0IFRZUEVfVE9fVFJJR0dFUl9TRVFVRU5DRTogUGFydGlhbDxSZWNvcmQ8Q29udGV4dEVudGl0eVR5cGUsIG51bWJlcj4+ID0ge1xuICB1c2VyOiAxLFxuICB0YXNrOiAyLFxuICBwcm9qZWN0OiAzLFxufVxuXG5jb25zdCBnZXRUeXBlRnJvbVRyaWdnZXJTZXF1ZW5jZSA9IChcbiAgYXRSdW5MZW5ndGg6IG51bWJlcixcbiAgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdLFxuICBkZWZhdWx0VHlwZTogQ29udGV4dEVudGl0eVR5cGVcbik6IENvbnRleHRFbnRpdHlUeXBlID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IoYXRSdW5MZW5ndGgpKVxuICBjb25zdCBtYXBwZWRUeXBlID0gKE9iamVjdC5lbnRyaWVzKFRZUEVfVE9fVFJJR0dFUl9TRVFVRU5DRSkuZmluZCgoWywgbGVuXSkgPT4gbGVuID09PSBub3JtYWxpemVkKT8uWzBdID8/XG4gICAgbnVsbCkgYXMgQ29udGV4dEVudGl0eVR5cGUgfCBudWxsXG4gIGlmIChtYXBwZWRUeXBlICYmIGFsbG93ZWRUeXBlcy5pbmNsdWRlcyhtYXBwZWRUeXBlKSkgcmV0dXJuIG1hcHBlZFR5cGVcbiAgY29uc3QgdGFiSWR4ID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgbm9ybWFsaXplZCAtIDEpLCBhbGxvd2VkVHlwZXMubGVuZ3RoIC0gMSlcbiAgcmV0dXJuIGFsbG93ZWRUeXBlc1t0YWJJZHhdID8/IGRlZmF1bHRUeXBlXG59XG5cbmNvbnN0IGdldFRyaWdnZXJTZXF1ZW5jZUZyb21UeXBlID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBhbGxvd2VkVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW10pOiBudW1iZXIgPT4ge1xuICBjb25zdCBtYXBwZWQgPSBUWVBFX1RPX1RSSUdHRVJfU0VRVUVOQ0VbdHlwZV1cbiAgaWYgKG1hcHBlZCkgcmV0dXJuIG1hcHBlZFxuICBjb25zdCBpZHggPSBhbGxvd2VkVHlwZXMuaW5kZXhPZih0eXBlKVxuICByZXR1cm4gaWR4ID49IDAgPyBpZHggKyAxIDogMVxufVxuXG4vKipcbiAqIERlcml2YSBjbGllbnRJZCwgcHJvamVjdElkLCBhZ2VudEVudGl0eSB5IE1DUCBkZXNkZSBlbCBjb250ZXh0byBnbG9iYWwgKGluY2wuXG4gKiBgZW50aXR5VmFsdWVzYCB5IGBjaGlwc1Byb2plY3RgKSBwYXJhIGZpbHRyYXIgcmVjZW50cyB5IGLDunNxdWVkYSBHcmFwaFFMLlxuICovXG5jb25zdCB1c2VEZXJpdmVkU2NvcGUgPSAoKTogRW50aXR5U2VhcmNoU2NvcGUgPT4ge1xuICBjb25zdCBjdHggPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgY2xpZW50SWQgPSBjdHguY2xpZW50Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5jbGllbnRJZCA/PyBudWxsXG4gIGNvbnN0IHByb2plY3RJZCA9IGN0eC5wcm9qZWN0Py5pZCA/PyBjdHguZW50aXR5VmFsdWVzPy5wcm9qZWN0SWQgPz8gY3R4LmNoaXBzUHJvamVjdD8ucHJvamVjdElkID8/IG51bGxcbiAgY29uc3QgYWdlbnRFbnRpdHkgPSBjdHguYWdlbnQ/LmVudGl0eSA/PyBudWxsXG4gIGNvbnN0IG1jcFNsdWdzS2V5ID0gKGN0eC5hZ2VudD8uY29ubmVjdG9ycz8uZmluZChjID0+IGMuZ3JvdXAgPT09ICdNQ1AnKT8uc2x1Z3MgPz8gW10pLmpvaW4oJ3wnKVxuXG4gIGNvbnN0IG1jcFNsdWdzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmF3ID0gY3R4LmFnZW50Py5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpPy5zbHVncyA/PyBbXVxuICAgIHJldHVybiBbLi4ubmV3IFNldChyYXcuZmlsdGVyKChzKTogcyBpcyBzdHJpbmcgPT4gdHlwZW9mIHMgPT09ICdzdHJpbmcnICYmIHMudHJpbSgpLmxlbmd0aCA+IDApKV0uc29ydCgpXG4gIH0sIFttY3BTbHVnc0tleV0pXG5cbiAgcmV0dXJuIHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+ICh7IGNsaWVudElkLCBwcm9qZWN0SWQsIG1jcFNsdWdzLCBhZ2VudEVudGl0eSB9KSxcbiAgICBbY2xpZW50SWQsIHByb2plY3RJZCwgbWNwU2x1Z3MsIGFnZW50RW50aXR5XVxuICApXG59XG5cbi8qKlxuICogRW5jYXBzdWxhIGxhIGzDs2dpY2EgZGVsIHBvcG92ZXIgZGUgQC1tZW50aW9ucyAoZXN0YWRvLCBmZXRjaCBwb3IgdGFiLCBhbmFseXRpY3MsXG4gKiBwb3NpY2lvbmFtaWVudG8pLiBFbCBjb25zdW1lciBtYW50aWVuZSBlbCBlZGl0b3IgeSBlbCBlbnbDrW8gZGVsIG1lbnNhamUuXG4gKiBMb3MgZmlsdHJvcyBkZSBiw7pzcXVlZGEgdXNhbiBgdXNlRGVyaXZlZFNjb3BlYDogZXNwZWNpYWxpc3RhIHByb3llY3RvIGFjb3RhIHRhcmVhc1xuICogYWwgYHByb2plY3RJZGAgZGVsIGNvbnRleHRvOyBlc3BlY2lhbGlzdGEgY2xpZW50ZSwgcHJveWVjdG9zIGFsIGBjbGllbnRJZGAgKGVuIGBleHRyYWAgZGUgc2VhcmNoKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU1lbnRpb25Qb3BvdmVyID0gKHtcbiAgZWRpdG9yUmVmLFxuICBwb3BvdmVyQW5jaG9yUmVmLFxuICBlbmFibGVkVHlwZXMsXG4gIG9uTWVudGlvbkFkZGVkLFxufTogVXNlTWVudGlvblBvcG92ZXJPcHRpb25zKTogVXNlTWVudGlvblBvcG92ZXJSZXR1cm4gPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlIH0gPSB1c2VNZW50aW9uQWxsb3dlZFR5cGVzKGVuYWJsZWRUeXBlcylcbiAgY29uc3QgW2FjdGl2ZVR5cGUsIHNldEFjdGl2ZVR5cGVdID0gdXNlU3RhdGU8Q29udGV4dEVudGl0eVR5cGU+KGRlZmF1bHRUeXBlKVxuICBjb25zdCBbcG9wb3Zlck9wZW4sIHNldFBvcG92ZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcG9wb3ZlclBvcywgc2V0UG9wb3ZlclBvc10gPSB1c2VTdGF0ZTx7IGJvdHRvbTogbnVtYmVyOyBsZWZ0OiBudW1iZXI7IHdpZHRoOiBudW1iZXIgfT4oe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIHdpZHRoOiAwLFxuICB9KVxuICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc0tleWJvYXJkTmF2QWN0aXZlLCBzZXRJc0tleWJvYXJkTmF2QWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBoYXNFbWl0dGVkT3BlbiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcG9wb3ZlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGdldENhcmV0UmVjdCA9IHVzZUNhcmV0UG9zaXRpb24oKVxuXG4gIGNvbnN0IHNjb3BlID0gdXNlRGVyaXZlZFNjb3BlKClcbiAgY29uc3QgeyBpdGVtcywgbG9hZGluZywgZXJyb3IsIGhpZGVSZWNlbnRzTGFiZWwsIGhhc01vcmUsIGlzTG9hZGluZ01vcmUsIGxvYWRNb3JlLCBzZWFyY2hWYWx1ZSwgdXBkYXRlU2VhcmNoVmFsdWUgfSA9XG4gICAgdXNlRW50aXR5U2VhcmNoKGFjdGl2ZVR5cGUsIHNjb3BlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoYWN0aXZlVHlwZSkpIHtcbiAgICAgIHNldEFjdGl2ZVR5cGUoZGVmYXVsdFR5cGUpXG4gICAgfVxuICB9LCBbYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBkZWZhdWx0VHlwZV0pXG5cbiAgY29uc3QgcG9zaXRpb25Qb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21BbmNob3IgPSBwb3BvdmVyQW5jaG9yUmVmPy5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGZyb21FZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudD8uZ2V0RWRpdG9yQ2xpZW50UmVjdD8uKCkgPz8gbnVsbFxuICAgIGNvbnN0IHJlY3QgPSBmcm9tQW5jaG9yID8/IGZyb21FZGl0b3JcbiAgICBpZiAoIXJlY3QgfHwgcmVjdC53aWR0aCA8PSAwKSB7XG4gICAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgpXG4gICAgICBpZiAoIWNhcmV0KSByZXR1cm5cbiAgICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICAgIGNvbnN0IGZhbGxiYWNrVyA9IDMyMFxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHZpZXdwb3J0VyAtIGZhbGxiYWNrVyAtIDgsIGNhcmV0LmxlZnQpKVxuICAgICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICAgIHdpZHRoOiBmYWxsYmFja1csXG4gICAgICAgIGxlZnQsXG4gICAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gY2FyZXQudG9wICsgNCxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHsgd2lkdGggfSA9IHJlY3RcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4odmlld3BvcnRXIC0gd2lkdGggLSA4LCByZWN0LmxlZnQpKVxuICAgIC8qKiBQb3BvdmVyIHNpZW1wcmUgYXJyaWJhIGRlbCBpbnB1dDogYm9yZGUgaW5mZXJpb3IgZGVsIHBvcG92ZXIgfjRweCBzb2JyZSBlbCBib3JkZSBzdXBlcmlvciBkZWwgYW5jbGEuICovXG4gICAgc2V0UG9wb3ZlclBvcyh7XG4gICAgICB3aWR0aCxcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHJlY3QudG9wICsgNCxcbiAgICB9KVxuICB9LCBbcG9wb3ZlckFuY2hvclJlZiwgZWRpdG9yUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIGNvbnN0IHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBoYXNFbWl0dGVkT3Blbi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW10pXG5cbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UG9wb3Zlck9wZW4oZmFsc2UpXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUoJycpXG4gIH0sIFt1cGRhdGVTZWFyY2hWYWx1ZV0pXG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKFxuICAgICh0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9KSA9PiB7XG4gICAgICBpZiAoYWxsb3dlZFR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAocG9wb3Zlck9wZW4pIGNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICh0cmlnZ2VyLmFjdGl2ZSkge1xuICAgICAgICAvLyBTaSBoYXkgbcOhcyBgQGAgcXVlIHRhYnMgKHAuIGVqLiBhZ2VudGUgcHJveWVjdG86IGBAYCB1c3VhcmlvLCBgQEBgIHRhcmVhIOKGkiBgQEBAYCksXG4gICAgICAgIC8vIHNlIHVzYSBsYSDDumx0aW1hIHRhYiB5IGxvcyBgQGAgZGUgbcOhcyBwYXNhbiBhbCB0ZXh0byBkZSBiw7pzcXVlZGEgKGBAQEBgIOKHkiB0YWIgdGFyZWEgKyBxdWVyeSBgQGApLlxuICAgICAgICAvLyBDb24g4omlMyB0YWJzIChjbGllbnRlKSwgYEBAQGAgY29pbmNpZGUgY29uIGxhIDMuZXIgdGFiIChgcHJvamVjdGApLlxuICAgICAgICBjb25zdCBvdmVyZmxvd0F0Q291bnQgPSBNYXRoLm1heCgwLCB0cmlnZ2VyLmF0UnVuTGVuZ3RoIC0gYWxsb3dlZFR5cGVzLmxlbmd0aClcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlQXRSdW5MZW5ndGggPSBNYXRoLm1pbih0cmlnZ2VyLmF0UnVuTGVuZ3RoLCBhbGxvd2VkVHlwZXMubGVuZ3RoKVxuICAgICAgICBjb25zdCBlZmZlY3RpdmVRdWVyeSA9IGAkeydAJy5yZXBlYXQob3ZlcmZsb3dBdENvdW50KX0ke3RyaWdnZXIucXVlcnl9YFxuICAgICAgICBjb25zdCB0eXBlRnJvbUF0ID0gZ2V0VHlwZUZyb21UcmlnZ2VyU2VxdWVuY2UoZWZmZWN0aXZlQXRSdW5MZW5ndGgsIGFsbG93ZWRUeXBlcywgZGVmYXVsdFR5cGUpXG5cbiAgICAgICAgaWYgKCFwb3BvdmVyT3Blbikge1xuICAgICAgICAgIHNldFBvcG92ZXJPcGVuKHRydWUpXG4gICAgICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlRnJvbUF0KVxuICAgICAgICAgIHBvc2l0aW9uUG9wb3ZlcigpXG4gICAgICAgICAgaWYgKCFoYXNFbWl0dGVkT3Blbi5jdXJyZW50KSB7XG4gICAgICAgICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvbk9wZW4sIHsgdHlwZTogdHlwZUZyb21BdCB9KVxuICAgICAgICAgICAgaGFzRW1pdHRlZE9wZW4uY3VycmVudCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0QWN0aXZlVHlwZSh0eXBlRnJvbUF0KVxuICAgICAgICAgIHBvc2l0aW9uUG9wb3ZlcigpXG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlU2VhcmNoVmFsdWUoZWZmZWN0aXZlUXVlcnkpXG4gICAgICB9IGVsc2UgaWYgKHBvcG92ZXJPcGVuKSB7XG4gICAgICAgIGNsb3NlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthbGxvd2VkVHlwZXMsIGRlZmF1bHRUeXBlLCBwb3BvdmVyT3BlbiwgcG9zaXRpb25Qb3BvdmVyLCB1cGRhdGVTZWFyY2hWYWx1ZSwgZXZlbnQsIGNsb3NlXVxuICApXG5cbiAgY29uc3QgaW5zZXJ0U2VsZWN0ZWRJdGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbSkgPT4ge1xuICAgICAgY29uc3QgbWVudGlvbjogQ29udGV4dE1lbnRpb24gPSB7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXG4gICAgICAgIGxhYmVsOiBpdGVtLnByaW1hcnksXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgY2xpZW50SWQ6IGl0ZW0ucmF3LmNsaWVudElkID8/IG51bGwsXG4gICAgICAgICAgY2xpZW50TmFtZTogaXRlbS5yYXcuY2xpZW50TmFtZSA/PyBudWxsLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnJhdy5wcm9qZWN0TmFtZSA/PyBudWxsLFxuICAgICAgICAgIGZlZUlkOiBpdGVtLnJhdy5mZWVJZCA/PyBudWxsLFxuICAgICAgICAgIGZhdGhlcklkOiBpdGVtLnJhdy5mYXRoZXJJZCA/PyBudWxsLFxuICAgICAgICAgIGZhdGhlclRpdGxlOiBpdGVtLnJhdy5mYXRoZXJUaXRsZSA/PyBudWxsLFxuICAgICAgICAgIHRvdGFsUHJveWVjdG9zOiBpdGVtLnJhdy50b3RhbFByb3llY3RvcyA/PyBudWxsLFxuICAgICAgICAgIG5hbWU6IGl0ZW0ucmF3Lm5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBwaWN0dXJlOiBpdGVtLnJhdy5waWN0dXJlID8/IG51bGwsXG4gICAgICAgICAgcG9zaXRpb25OYW1lOiBpdGVtLnJhdy5wb3NpdGlvbk5hbWUgPz8gbnVsbCxcbiAgICAgICAgICBlbWFpbDogaXRlbS5yYXcuZW1haWwgPz8gbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uKG1lbnRpb24pXG4gICAgICBvbk1lbnRpb25BZGRlZD8uKG1lbnRpb24pXG4gICAgICBldmVudChFVkVOVFMuYWlDaGF0TWVudGlvblNlbGVjdCwgeyB0eXBlOiBtZW50aW9uLnR5cGUsIGlkOiBTdHJpbmcobWVudGlvbi5pZCkgfSlcbiAgICAgIGNsb3NlKClcbiAgICB9LFxuICAgIFtlZGl0b3JSZWYsIG9uTWVudGlvbkFkZGVkLCBldmVudCwgY2xvc2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVUeXBlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiB7XG4gICAgICBzZXRBY3RpdmVUeXBlKHR5cGUpXG4gICAgICBjb25zdCBuZXh0UnVuTGVuZ3RoID0gZ2V0VHJpZ2dlclNlcXVlbmNlRnJvbVR5cGUodHlwZSwgYWxsb3dlZFR5cGVzKVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgobmV4dFJ1bkxlbmd0aClcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRNZW50aW9uVHlwZVN3aXRjaCwgeyB0eXBlIH0pXG4gICAgfSxcbiAgICBbYWxsb3dlZFR5cGVzLCBlZGl0b3JSZWYsIGV2ZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50Pik6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKCFwb3BvdmVyT3BlbiB8fCBhbGxvd2VkVHlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY2xvc2UoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoKGUua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZS5rZXkgPT09ICdBcnJvd0xlZnQnKSAmJiAoZS5tZXRhS2V5IHx8IGUuYWx0S2V5KSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY29uc3QgaWR4ID0gYWxsb3dlZFR5cGVzLmluZGV4T2YoYWN0aXZlVHlwZSlcbiAgICAgICAgY29uc3QgZGVsdGEgPSBlLmtleSA9PT0gJ0Fycm93UmlnaHQnID8gMSA6IC0xXG4gICAgICAgIGNvbnN0IG5leHRJZHggPSAoaWR4ICsgZGVsdGEgKyBhbGxvd2VkVHlwZXMubGVuZ3RoKSAlIGFsbG93ZWRUeXBlcy5sZW5ndGhcbiAgICAgICAgaGFuZGxlVHlwZUNoYW5nZShhbGxvd2VkVHlwZXNbbmV4dElkeF0pXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZVxuXG4gICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKHRydWUpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gKGl0ZW1zLmxlbmd0aCA+IDAgPyBNYXRoLm1pbihwcmV2ICsgMSwgaXRlbXMubGVuZ3RoIC0gMSkgOiAwKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBzZXRJc0tleWJvYXJkTmF2QWN0aXZlKHRydWUpXG4gICAgICAgIHNldEFjdGl2ZUluZGV4KHByZXYgPT4gTWF0aC5tYXgocHJldiAtIDEsIDApKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnVGFiJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaW5zZXJ0U2VsZWN0ZWRJdGVtKGl0ZW1zW2FjdGl2ZUluZGV4XSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gICAgW3BvcG92ZXJPcGVuLCBpdGVtcywgYWxsb3dlZFR5cGVzLCBhY3RpdmVUeXBlLCBhY3RpdmVJbmRleCwgaW5zZXJ0U2VsZWN0ZWRJdGVtLCBjbG9zZSwgaGFuZGxlVHlwZUNoYW5nZV1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblBvcG92ZXIoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3BvcG92ZXJPcGVuLCBwb3NpdGlvblBvcG92ZXJdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BvdmVyT3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG1vdXNlRXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsXG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuXG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGNsb3NlKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSlcbiAgfSwgW3BvcG92ZXJPcGVuLCBjbG9zZV0pXG5cbiAgY29uc3QgcHJldklzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHByZXZJc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlXG4gICAgfVxuICB9LCBbaXNMb2FkaW5nTW9yZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJldklzTG9hZGluZ01vcmVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgc2V0QWN0aXZlSW5kZXgoMClcbiAgfSwgW2l0ZW1zLmxlbmd0aCwgYWN0aXZlVHlwZV0pXG5cbiAgY29uc3QgcG9wb3Zlck5vZGUgPSB1c2VNZW1vPFJlYWN0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXBvcG92ZXJPcGVuKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8U0NNUEFuY2hvciAkYm90dG9tPXtwb3BvdmVyUG9zLmJvdHRvbX0gJGxlZnQ9e3BvcG92ZXJQb3MubGVmdH0gJHdpZHRoPXtwb3BvdmVyUG9zLndpZHRofT5cbiAgICAgICAgPENvbnRleHRNZW50aW9uUG9wb3ZlclxuICAgICAgICAgIHJlZj17cG9wb3ZlclJlZn1cbiAgICAgICAgICBhbGxvd2VkVHlwZXM9e2FsbG93ZWRUeXBlc31cbiAgICAgICAgICBhY3RpdmVUeXBlPXthY3RpdmVUeXBlfVxuICAgICAgICAgIG9uVHlwZUNoYW5nZT17aGFuZGxlVHlwZUNoYW5nZX1cbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgaGlkZVJlY2VudHNMYWJlbD17aGlkZVJlY2VudHNMYWJlbH1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIGlzTG9hZGluZ01vcmU9e2lzTG9hZGluZ01vcmV9XG4gICAgICAgICAgb25SZWFjaExpc3RFbmQ9e2xvYWRNb3JlfVxuICAgICAgICAgIHNlYXJjaFZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBrZXlib2FyZEhpbnQ9e3QoJ2NvbnRleHRNZW50aW9uLmtleWJvYXJkSGludCcsIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ05hdmVnYWNpw7NuIGVudHJlIHBlc3Rhw7FhczogQCwgQEAsIEBAQOKApiBlbiBvcmRlbi4gVGFtYmnDqW4gQWx0L0NtZCArIOKGkC/ihpInLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uSXRlbVNlbGVjdGVkPXtpbnNlcnRTZWxlY3RlZEl0ZW19XG4gICAgICAgICAgYWN0aXZlSW5kZXg9e2FjdGl2ZUluZGV4fVxuICAgICAgICAgIG9uQWN0aXZlSW5kZXhDaGFuZ2U9e3NldEFjdGl2ZUluZGV4fVxuICAgICAgICAgIGlzS2V5Ym9hcmROYXZBY3RpdmU9e2lzS2V5Ym9hcmROYXZBY3RpdmV9XG4gICAgICAgICAgb25Nb3VzZU1vdmVJbkxpc3Q9eygpID0+IHNldElzS2V5Ym9hcmROYXZBY3RpdmUoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgPC9TQ01QQW5jaG9yPlxuICAgIClcbiAgfSwgW1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHBvcG92ZXJQb3MsXG4gICAgYWxsb3dlZFR5cGVzLFxuICAgIGFjdGl2ZVR5cGUsXG4gICAgaGFuZGxlVHlwZUNoYW5nZSxcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIGluc2VydFNlbGVjdGVkSXRlbSxcbiAgICBhY3RpdmVJbmRleCxcbiAgICBpc0tleWJvYXJkTmF2QWN0aXZlLFxuICBdKVxuXG4gIHJldHVybiB7IHBvcG92ZXJPcGVuLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGhhbmRsZVRyaWdnZXIsIGhhbmRsZUtleURvd24sIHBvcG92ZXJOb2RlLCBjbG9zZSB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBOENBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFOUcsU0FBU0MscUJBQXFCLEVBQUVDLFVBQVUsUUFBUSwyQ0FBMkM7QUFDN0YsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBQzVELFNBQVNDLElBQUksUUFBUSxRQUFRO0FBQzdCO0FBQ0EsU0FBNEJDLGVBQWUsUUFBUSxtQkFBbUI7QUFDdEUsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxZQUFZO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBcUM3QyxJQUFNQyx3QkFBb0UsR0FBRztFQUMzRUMsSUFBSSxFQUFFLENBQUM7RUFDUEMsSUFBSSxFQUFFLENBQUM7RUFDUEMsT0FBTyxFQUFFO0FBQ1gsQ0FBQztBQUVELElBQU1DLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQzlCQyxXQUFtQixFQUNuQkMsWUFBaUMsRUFDakNDLFdBQThCLEVBQ1I7RUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxvQkFBQSxFQUFBQyxvQkFBQTtFQUN0QixJQUFNQyxVQUFVLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDRSxLQUFLLENBQUNULFdBQVcsQ0FBQyxDQUFDO0VBQ3ZELElBQU1VLFVBQVUsSUFBQVAscUJBQUEsSUFBQUMsb0JBQUEsR0FBSU8sTUFBTSxDQUFDQyxPQUFPLENBQUNqQix3QkFBd0IsQ0FBQyxDQUFDa0IsSUFBSSxDQUFDLFVBQUFDLElBQUE7SUFBQSxJQUFBQyxLQUFBLEdBQUFDLGNBQUEsQ0FBQUYsSUFBQTtNQUFJRyxHQUFHLEdBQUFGLEtBQUE7SUFBQSxPQUFNRSxHQUFHLEtBQUtYLFVBQVU7RUFBQSxFQUFDLGNBQUFGLG9CQUFBLHVCQUE5RUEsb0JBQUEsQ0FBaUYsQ0FBQyxDQUFDLGNBQUFELHFCQUFBLGNBQUFBLHFCQUFBLEdBQ3JHLElBQWlDO0VBQ25DLElBQUlPLFVBQVUsSUFBSVQsWUFBWSxDQUFDaUIsUUFBUSxDQUFDUixVQUFVLENBQUMsRUFBRSxPQUFPQSxVQUFVO0VBQ3RFLElBQU1TLE1BQU0sR0FBR1osSUFBSSxDQUFDYSxHQUFHLENBQUNiLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUYsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFTCxZQUFZLENBQUNvQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQzdFLFFBQUFoQixvQkFBQSxHQUFPSixZQUFZLENBQUNrQixNQUFNLENBQUMsY0FBQWQsb0JBQUEsY0FBQUEsb0JBQUEsR0FBSUgsV0FBVztBQUM1QyxDQUFDO0FBRUQsSUFBTW9CLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQUlDLElBQXVCLEVBQUV0QixZQUFpQyxFQUFhO0VBQ3pHLElBQU11QixNQUFNLEdBQUc3Qix3QkFBd0IsQ0FBQzRCLElBQUksQ0FBQztFQUM3QyxJQUFJQyxNQUFNLEVBQUUsT0FBT0EsTUFBTTtFQUN6QixJQUFNQyxHQUFHLEdBQUd4QixZQUFZLENBQUN5QixPQUFPLENBQUNILElBQUksQ0FBQztFQUN0QyxPQUFPRSxHQUFHLElBQUksQ0FBQyxHQUFHQSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDL0IsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1FLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQSxFQUE0QjtFQUFBLElBQUFDLEtBQUEsRUFBQUMsY0FBQSxFQUFBQyxXQUFBLEVBQUFDLGlCQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxlQUFBLEVBQUFDLFlBQUEsRUFBQUMsa0JBQUEsRUFBQUMsaUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsVUFBQSxFQUFBQyxxQkFBQSxFQUFBQyxXQUFBO0VBQy9DLElBQU1DLEdBQUcsR0FBR3hELGdCQUFnQixDQUFDLENBQUM7RUFDOUIsSUFBTXlELFFBQVEsSUFBQWYsS0FBQSxJQUFBQyxjQUFBLElBQUFDLFdBQUEsR0FBR1ksR0FBRyxDQUFDRSxNQUFNLGNBQUFkLFdBQUEsdUJBQVZBLFdBQUEsQ0FBWWUsRUFBRSxjQUFBaEIsY0FBQSxjQUFBQSxjQUFBLElBQUFFLGlCQUFBLEdBQUlXLEdBQUcsQ0FBQ0ksWUFBWSxjQUFBZixpQkFBQSx1QkFBaEJBLGlCQUFBLENBQWtCWSxRQUFRLGNBQUFmLEtBQUEsY0FBQUEsS0FBQSxHQUFJLElBQUk7RUFDckUsSUFBTW1CLFNBQVMsSUFBQWYsS0FBQSxJQUFBQyxLQUFBLElBQUFDLGVBQUEsSUFBQUMsWUFBQSxHQUFHTyxHQUFHLENBQUM1QyxPQUFPLGNBQUFxQyxZQUFBLHVCQUFYQSxZQUFBLENBQWFVLEVBQUUsY0FBQVgsZUFBQSxjQUFBQSxlQUFBLElBQUFFLGtCQUFBLEdBQUlNLEdBQUcsQ0FBQ0ksWUFBWSxjQUFBVixrQkFBQSx1QkFBaEJBLGtCQUFBLENBQWtCVyxTQUFTLGNBQUFkLEtBQUEsY0FBQUEsS0FBQSxJQUFBSSxpQkFBQSxHQUFJSyxHQUFHLENBQUNNLFlBQVksY0FBQVgsaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQlUsU0FBUyxjQUFBZixLQUFBLGNBQUFBLEtBQUEsR0FBSSxJQUFJO0VBQ3ZHLElBQU1pQixXQUFXLElBQUFYLGlCQUFBLElBQUFDLFVBQUEsR0FBR0csR0FBRyxDQUFDUSxLQUFLLGNBQUFYLFVBQUEsdUJBQVRBLFVBQUEsQ0FBV1ksTUFBTSxjQUFBYixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLElBQUk7RUFDN0MsSUFBTWMsV0FBVyxHQUFHLEVBQUFaLHFCQUFBLElBQUFDLFdBQUEsR0FBQ0MsR0FBRyxDQUFDUSxLQUFLLGNBQUFULFdBQUEsZ0JBQUFBLFdBQUEsR0FBVEEsV0FBQSxDQUFXWSxVQUFVLGNBQUFaLFdBQUEsZ0JBQUFBLFdBQUEsR0FBckJBLFdBQUEsQ0FBdUI1QixJQUFJLENBQUMsVUFBQXlDLENBQUM7SUFBQSxPQUFJQSxDQUFDLENBQUNDLEtBQUssS0FBSyxLQUFLO0VBQUEsRUFBQyxjQUFBZCxXQUFBLHVCQUFuREEsV0FBQSxDQUFxRGUsS0FBSyxjQUFBaEIscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxFQUFFLEVBQUVpQixJQUFJLENBQUMsR0FBRyxDQUFDO0VBRWhHLElBQU1DLFFBQVEsR0FBRzdFLE9BQU8sQ0FBQyxZQUFNO0lBQUEsSUFBQThFLHNCQUFBLEVBQUFDLFdBQUE7SUFDN0IsSUFBTUMsR0FBRyxJQUFBRixzQkFBQSxJQUFBQyxXQUFBLEdBQUdsQixHQUFHLENBQUNRLEtBQUssY0FBQVUsV0FBQSxnQkFBQUEsV0FBQSxHQUFUQSxXQUFBLENBQVdQLFVBQVUsY0FBQU8sV0FBQSxnQkFBQUEsV0FBQSxHQUFyQkEsV0FBQSxDQUF1Qi9DLElBQUksQ0FBQyxVQUFBeUMsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ0MsS0FBSyxLQUFLLEtBQUs7SUFBQSxFQUFDLGNBQUFLLFdBQUEsdUJBQW5EQSxXQUFBLENBQXFESixLQUFLLGNBQUFHLHNCQUFBLGNBQUFBLHNCQUFBLEdBQUksRUFBRTtJQUM1RSxPQUFPRyxrQkFBQSxDQUFJLElBQUlDLEdBQUcsQ0FBQ0YsR0FBRyxDQUFDRyxNQUFNLENBQUMsVUFBQ0MsQ0FBQztNQUFBLE9BQWtCLE9BQU9BLENBQUMsS0FBSyxRQUFRLElBQUlBLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQzdDLE1BQU0sR0FBRyxDQUFDO0lBQUEsRUFBQyxDQUFDLEVBQUU4QyxJQUFJLENBQUMsQ0FBQztFQUMxRyxDQUFDLEVBQUUsQ0FBQ2YsV0FBVyxDQUFDLENBQUM7RUFFakIsT0FBT3ZFLE9BQU8sQ0FDWjtJQUFBLE9BQU87TUFBRThELFFBQVEsRUFBUkEsUUFBUTtNQUFFSSxTQUFTLEVBQVRBLFNBQVM7TUFBRVcsUUFBUSxFQUFSQSxRQUFRO01BQUVULFdBQVcsRUFBWEE7SUFBWSxDQUFDO0VBQUEsQ0FBQyxFQUN0RCxDQUFDTixRQUFRLEVBQUVJLFNBQVMsRUFBRVcsUUFBUSxFQUFFVCxXQUFXLENBQzdDLENBQUM7QUFDSCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTW1CLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUFDLEtBQUEsRUFLMkI7RUFBQSxJQUp2REMsU0FBUyxHQUFBRCxLQUFBLENBQVRDLFNBQVM7SUFDVEMsZ0JBQWdCLEdBQUFGLEtBQUEsQ0FBaEJFLGdCQUFnQjtJQUNoQkMsWUFBWSxHQUFBSCxLQUFBLENBQVpHLFlBQVk7SUFDWkMsY0FBYyxHQUFBSixLQUFBLENBQWRJLGNBQWM7RUFFZCxJQUFBQyxLQUFBLEdBQWN2RixJQUFJLENBQUMsQ0FBQztJQUFad0YsQ0FBQyxHQUFBRCxLQUFBLENBQURDLENBQUM7RUFDVCxJQUFNQyxLQUFLLEdBQUdwRixRQUFRLENBQUMsQ0FBQztFQUN4QixJQUFBcUYscUJBQUEsR0FBc0N4RixzQkFBc0IsQ0FBQ21GLFlBQVksQ0FBQztJQUFsRXZFLFlBQVksR0FBQTRFLHFCQUFBLENBQVo1RSxZQUFZO0lBQUVDLFdBQVcsR0FBQTJFLHFCQUFBLENBQVgzRSxXQUFXO0VBQ2pDLElBQUE0RSxTQUFBLEdBQW9DL0YsUUFBUSxDQUFvQm1CLFdBQVcsQ0FBQztJQUFBNkUsVUFBQSxHQUFBL0QsY0FBQSxDQUFBOEQsU0FBQTtJQUFyRUUsVUFBVSxHQUFBRCxVQUFBO0lBQUVFLGFBQWEsR0FBQUYsVUFBQTtFQUNoQyxJQUFBRyxVQUFBLEdBQXNDbkcsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBb0csVUFBQSxHQUFBbkUsY0FBQSxDQUFBa0UsVUFBQTtJQUE5Q0UsV0FBVyxHQUFBRCxVQUFBO0lBQUVFLGNBQWMsR0FBQUYsVUFBQTtFQUNsQyxJQUFBRyxVQUFBLEdBQW9DdkcsUUFBUSxDQUFrRDtNQUM1RndHLE1BQU0sRUFBRSxDQUFDO01BQ1RDLElBQUksRUFBRSxDQUFDO01BQ1BDLEtBQUssRUFBRTtJQUNULENBQUMsQ0FBQztJQUFBQyxVQUFBLEdBQUExRSxjQUFBLENBQUFzRSxVQUFBO0lBSktLLFVBQVUsR0FBQUQsVUFBQTtJQUFFRSxhQUFhLEdBQUFGLFVBQUE7RUFLaEMsSUFBQUcsVUFBQSxHQUFzQzlHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFBQStHLFVBQUEsR0FBQTlFLGNBQUEsQ0FBQTZFLFVBQUE7SUFBMUNFLFdBQVcsR0FBQUQsVUFBQTtJQUFFRSxjQUFjLEdBQUFGLFVBQUE7RUFDbEMsSUFBQUcsVUFBQSxHQUFzRGxILFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQW1ILFVBQUEsR0FBQWxGLGNBQUEsQ0FBQWlGLFVBQUE7SUFBOURFLG1CQUFtQixHQUFBRCxVQUFBO0lBQUVFLHNCQUFzQixHQUFBRixVQUFBO0VBQ2xELElBQU1HLGNBQWMsR0FBR3ZILE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDcEMsSUFBTXdILFVBQVUsR0FBR3hILE1BQU0sQ0FBd0IsSUFBSSxDQUFDO0VBQ3RELElBQU15SCxZQUFZLEdBQUdqSCxnQkFBZ0IsQ0FBQyxDQUFDO0VBRXZDLElBQU1rSCxLQUFLLEdBQUc3RSxlQUFlLENBQUMsQ0FBQztFQUMvQixJQUFBOEUsZ0JBQUEsR0FDRXJILGVBQWUsQ0FBQzRGLFVBQVUsRUFBRXdCLEtBQUssQ0FBQztJQUQ1QkUsS0FBSyxHQUFBRCxnQkFBQSxDQUFMQyxLQUFLO0lBQUVDLE9BQU8sR0FBQUYsZ0JBQUEsQ0FBUEUsT0FBTztJQUFFQyxLQUFLLEdBQUFILGdCQUFBLENBQUxHLEtBQUs7SUFBRUMsZ0JBQWdCLEdBQUFKLGdCQUFBLENBQWhCSSxnQkFBZ0I7SUFBRUMsT0FBTyxHQUFBTCxnQkFBQSxDQUFQSyxPQUFPO0lBQUVDLGFBQWEsR0FBQU4sZ0JBQUEsQ0FBYk0sYUFBYTtJQUFFQyxRQUFRLEdBQUFQLGdCQUFBLENBQVJPLFFBQVE7SUFBRUMsV0FBVyxHQUFBUixnQkFBQSxDQUFYUSxXQUFXO0lBQUVDLGlCQUFpQixHQUFBVCxnQkFBQSxDQUFqQlMsaUJBQWlCO0VBR2pIdEksU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUNxQixZQUFZLENBQUNpQixRQUFRLENBQUM4RCxVQUFVLENBQUMsRUFBRTtNQUN0Q0MsYUFBYSxDQUFDL0UsV0FBVyxDQUFDO0lBQzVCO0VBQ0YsQ0FBQyxFQUFFLENBQUNELFlBQVksRUFBRStFLFVBQVUsRUFBRTlFLFdBQVcsQ0FBQyxDQUFDO0VBRTNDLElBQU1pSCxlQUFlLEdBQUd4SSxXQUFXLENBQUMsWUFBTTtJQUFBLElBQUF5SSxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxrQkFBQSxFQUFBQyxzQkFBQTtJQUN4QyxJQUFNQyxVQUFVLEdBQUdqRCxnQkFBZ0IsYUFBaEJBLGdCQUFnQixnQkFBQTZDLHFCQUFBLEdBQWhCN0MsZ0JBQWdCLENBQUVrRCxPQUFPLGNBQUFMLHFCQUFBLHVCQUF6QkEscUJBQUEsQ0FBMkJNLHFCQUFxQixDQUFDLENBQUM7SUFDckUsSUFBTUMsVUFBVSxJQUFBTixxQkFBQSxJQUFBQyxrQkFBQSxHQUFHaEQsU0FBUyxDQUFDbUQsT0FBTyxjQUFBSCxrQkFBQSxnQkFBQUMsc0JBQUEsR0FBakJELGtCQUFBLENBQW1CTSxtQkFBbUIsY0FBQUwsc0JBQUEsdUJBQXRDQSxzQkFBQSxDQUFBTSxJQUFBLENBQUFQLGtCQUF5QyxDQUFDLGNBQUFELHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBSTtJQUNyRSxJQUFNUyxJQUFJLEdBQUdOLFVBQVUsYUFBVkEsVUFBVSxjQUFWQSxVQUFVLEdBQUlHLFVBQVU7SUFDckMsSUFBSSxDQUFDRyxJQUFJLElBQUlBLElBQUksQ0FBQ3JDLEtBQUssSUFBSSxDQUFDLEVBQUU7TUFDNUIsSUFBTXNDLEtBQUssR0FBR3hCLFlBQVksQ0FBQyxDQUFDO01BQzVCLElBQUksQ0FBQ3dCLEtBQUssRUFBRTtNQUNaLElBQU1DLFVBQVMsR0FBR0MsTUFBTSxDQUFDQyxXQUFXO01BQ3BDLElBQU1DLFVBQVMsR0FBR0YsTUFBTSxDQUFDRyxVQUFVO01BQ25DLElBQU1DLFNBQVMsR0FBRyxHQUFHO01BQ3JCLElBQU03QyxLQUFJLEdBQUdqRixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVELElBQUksQ0FBQ2EsR0FBRyxDQUFDK0csVUFBUyxHQUFHRSxTQUFTLEdBQUcsQ0FBQyxFQUFFTixLQUFLLENBQUN2QyxJQUFJLENBQUMsQ0FBQztNQUN6RUksYUFBYSxDQUFDO1FBQ1pILEtBQUssRUFBRTRDLFNBQVM7UUFDaEI3QyxJQUFJLEVBQUpBLEtBQUk7UUFDSkQsTUFBTSxFQUFFeUMsVUFBUyxHQUFHRCxLQUFLLENBQUNPLEdBQUcsR0FBRztNQUNsQyxDQUFDLENBQUM7TUFDRjtJQUNGO0lBRUEsSUFBTUgsU0FBUyxHQUFHRixNQUFNLENBQUNHLFVBQVU7SUFDbkMsSUFBTUosU0FBUyxHQUFHQyxNQUFNLENBQUNDLFdBQVc7SUFDcEMsSUFBUXpDLEtBQUssR0FBS3FDLElBQUksQ0FBZHJDLEtBQUs7SUFDYixJQUFNRCxJQUFJLEdBQUdqRixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVELElBQUksQ0FBQ2EsR0FBRyxDQUFDK0csU0FBUyxHQUFHMUMsS0FBSyxHQUFHLENBQUMsRUFBRXFDLElBQUksQ0FBQ3RDLElBQUksQ0FBQyxDQUFDO0lBQ3BFO0lBQ0FJLGFBQWEsQ0FBQztNQUNaSCxLQUFLLEVBQUxBLEtBQUs7TUFDTEQsSUFBSSxFQUFKQSxJQUFJO01BQ0pELE1BQU0sRUFBRXlDLFNBQVMsR0FBR0YsSUFBSSxDQUFDUSxHQUFHLEdBQUc7SUFDakMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUFFLENBQUMvRCxnQkFBZ0IsRUFBRUQsU0FBUyxFQUFFaUMsWUFBWSxDQUFDLENBQUM7RUFFL0MsSUFBTWdDLHdCQUF3QixHQUFHNUosV0FBVyxDQUFDLFlBQU07SUFDakQwSCxjQUFjLENBQUNvQixPQUFPLEdBQUcsS0FBSztFQUNoQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTWUsS0FBSyxHQUFHN0osV0FBVyxDQUFDLFlBQU07SUFDOUIwRyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQ3JCNkIsaUJBQWlCLENBQUMsRUFBRSxDQUFDO0VBQ3ZCLENBQUMsRUFBRSxDQUFDQSxpQkFBaUIsQ0FBQyxDQUFDO0VBRXZCLElBQU11QixhQUFhLEdBQUc5SixXQUFXLENBQy9CLFVBQUMrSixPQUFnRSxFQUFLO0lBQ3BFLElBQUl6SSxZQUFZLENBQUNvQixNQUFNLEtBQUssQ0FBQyxFQUFFO01BQzdCLElBQUkrRCxXQUFXLEVBQUVvRCxLQUFLLENBQUMsQ0FBQztNQUN4QjtJQUNGO0lBRUEsSUFBSUUsT0FBTyxDQUFDQyxNQUFNLEVBQUU7TUFDbEI7TUFDQTtNQUNBO01BQ0EsSUFBTUMsZUFBZSxHQUFHckksSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFa0ksT0FBTyxDQUFDMUksV0FBVyxHQUFHQyxZQUFZLENBQUNvQixNQUFNLENBQUM7TUFDOUUsSUFBTXdILG9CQUFvQixHQUFHdEksSUFBSSxDQUFDYSxHQUFHLENBQUNzSCxPQUFPLENBQUMxSSxXQUFXLEVBQUVDLFlBQVksQ0FBQ29CLE1BQU0sQ0FBQztNQUMvRSxJQUFNeUgsY0FBYyxNQUFBQyxNQUFBLENBQU0sR0FBRyxDQUFDQyxNQUFNLENBQUNKLGVBQWUsQ0FBQyxFQUFBRyxNQUFBLENBQUdMLE9BQU8sQ0FBQ08sS0FBSyxDQUFFO01BQ3ZFLElBQU1DLFVBQVUsR0FBR25KLDBCQUEwQixDQUFDOEksb0JBQW9CLEVBQUU1SSxZQUFZLEVBQUVDLFdBQVcsQ0FBQztNQUU5RixJQUFJLENBQUNrRixXQUFXLEVBQUU7UUFDaEJDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDcEJKLGFBQWEsQ0FBQ2lFLFVBQVUsQ0FBQztRQUN6Qi9CLGVBQWUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQ2QsY0FBYyxDQUFDb0IsT0FBTyxFQUFFO1VBQzNCN0MsS0FBSyxDQUFDckYsTUFBTSxDQUFDNEosaUJBQWlCLEVBQUU7WUFBRTVILElBQUksRUFBRTJIO1VBQVcsQ0FBQyxDQUFDO1VBQ3JEN0MsY0FBYyxDQUFDb0IsT0FBTyxHQUFHLElBQUk7UUFDL0I7TUFDRixDQUFDLE1BQU07UUFDTHhDLGFBQWEsQ0FBQ2lFLFVBQVUsQ0FBQztRQUN6Qi9CLGVBQWUsQ0FBQyxDQUFDO01BQ25CO01BQ0FELGlCQUFpQixDQUFDNEIsY0FBYyxDQUFDO0lBQ25DLENBQUMsTUFBTSxJQUFJMUQsV0FBVyxFQUFFO01BQ3RCb0QsS0FBSyxDQUFDLENBQUM7SUFDVDtFQUNGLENBQUMsRUFDRCxDQUFDdkksWUFBWSxFQUFFQyxXQUFXLEVBQUVrRixXQUFXLEVBQUUrQixlQUFlLEVBQUVELGlCQUFpQixFQUFFdEMsS0FBSyxFQUFFNEQsS0FBSyxDQUMzRixDQUFDO0VBRUQsSUFBTVksa0JBQWtCLEdBQUd6SyxXQUFXLENBQ3BDLFVBQUMwSyxJQUF3QixFQUFLO0lBQUEsSUFBQUMsa0JBQUEsRUFBQUMsb0JBQUEsRUFBQUMscUJBQUEsRUFBQUMsZUFBQSxFQUFBQyxrQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxjQUFBLEVBQUFDLGlCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGVBQUEsRUFBQUMsbUJBQUE7SUFDNUIsSUFBTUMsT0FBdUIsR0FBRztNQUM5QnJILEVBQUUsRUFBRXdHLElBQUksQ0FBQ3hHLEVBQUU7TUFDWHRCLElBQUksRUFBRThILElBQUksQ0FBQzlILElBQUk7TUFDZjRJLEtBQUssRUFBRWQsSUFBSSxDQUFDZSxPQUFPO01BQ25CQyxRQUFRLEVBQUU7UUFDUjFILFFBQVEsR0FBQTJHLGtCQUFBLEdBQUVELElBQUksQ0FBQ3hGLEdBQUcsQ0FBQ2xCLFFBQVEsY0FBQTJHLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUksSUFBSTtRQUNuQ2dCLFVBQVUsR0FBQWYsb0JBQUEsR0FBRUYsSUFBSSxDQUFDeEYsR0FBRyxDQUFDeUcsVUFBVSxjQUFBZixvQkFBQSxjQUFBQSxvQkFBQSxHQUFJLElBQUk7UUFDdkNnQixXQUFXLEdBQUFmLHFCQUFBLEdBQUVILElBQUksQ0FBQ3hGLEdBQUcsQ0FBQzBHLFdBQVcsY0FBQWYscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO1FBQ3pDZ0IsS0FBSyxHQUFBZixlQUFBLEdBQUVKLElBQUksQ0FBQ3hGLEdBQUcsQ0FBQzJHLEtBQUssY0FBQWYsZUFBQSxjQUFBQSxlQUFBLEdBQUksSUFBSTtRQUM3QmdCLFFBQVEsR0FBQWYsa0JBQUEsR0FBRUwsSUFBSSxDQUFDeEYsR0FBRyxDQUFDNEcsUUFBUSxjQUFBZixrQkFBQSxjQUFBQSxrQkFBQSxHQUFJLElBQUk7UUFDbkNnQixXQUFXLEdBQUFmLHFCQUFBLEdBQUVOLElBQUksQ0FBQ3hGLEdBQUcsQ0FBQzZHLFdBQVcsY0FBQWYscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxJQUFJO1FBQ3pDZ0IsY0FBYyxHQUFBZixxQkFBQSxHQUFFUCxJQUFJLENBQUN4RixHQUFHLENBQUM4RyxjQUFjLGNBQUFmLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBSTtRQUMvQ2dCLElBQUksR0FBQWYsY0FBQSxHQUFFUixJQUFJLENBQUN4RixHQUFHLENBQUMrRyxJQUFJLGNBQUFmLGNBQUEsY0FBQUEsY0FBQSxHQUFJLElBQUk7UUFDM0JnQixPQUFPLEdBQUFmLGlCQUFBLEdBQUVULElBQUksQ0FBQ3hGLEdBQUcsQ0FBQ2dILE9BQU8sY0FBQWYsaUJBQUEsY0FBQUEsaUJBQUEsR0FBSSxJQUFJO1FBQ2pDZ0IsWUFBWSxHQUFBZixxQkFBQSxHQUFFVixJQUFJLENBQUN4RixHQUFHLENBQUNpSCxZQUFZLGNBQUFmLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBSTtRQUMzQ2dCLEtBQUssR0FBQWYsZUFBQSxHQUFFWCxJQUFJLENBQUN4RixHQUFHLENBQUNrSCxLQUFLLGNBQUFmLGVBQUEsY0FBQUEsZUFBQSxHQUFJO01BQzNCO0lBQ0YsQ0FBQztJQUNELENBQUFDLG1CQUFBLEdBQUEzRixTQUFTLENBQUNtRCxPQUFPLGNBQUF3QyxtQkFBQSxlQUFqQkEsbUJBQUEsQ0FBbUJlLGFBQWEsQ0FBQ2QsT0FBTyxDQUFDO0lBQ3pDekYsY0FBYyxhQUFkQSxjQUFjLGVBQWRBLGNBQWMsQ0FBR3lGLE9BQU8sQ0FBQztJQUN6QnRGLEtBQUssQ0FBQ3JGLE1BQU0sQ0FBQzBMLG1CQUFtQixFQUFFO01BQUUxSixJQUFJLEVBQUUySSxPQUFPLENBQUMzSSxJQUFJO01BQUVzQixFQUFFLEVBQUVxSSxNQUFNLENBQUNoQixPQUFPLENBQUNySCxFQUFFO0lBQUUsQ0FBQyxDQUFDO0lBQ2pGMkYsS0FBSyxDQUFDLENBQUM7RUFDVCxDQUFDLEVBQ0QsQ0FBQ2xFLFNBQVMsRUFBRUcsY0FBYyxFQUFFRyxLQUFLLEVBQUU0RCxLQUFLLENBQzFDLENBQUM7RUFFRCxJQUFNMkMsZ0JBQWdCLEdBQUd4TSxXQUFXLENBQ2xDLFVBQUM0QyxJQUF1QixFQUFLO0lBQUEsSUFBQTZKLG1CQUFBO0lBQzNCbkcsYUFBYSxDQUFDMUQsSUFBSSxDQUFDO0lBQ25CLElBQU04SixhQUFhLEdBQUcvSiwwQkFBMEIsQ0FBQ0MsSUFBSSxFQUFFdEIsWUFBWSxDQUFDO0lBQ3BFLENBQUFtTCxtQkFBQSxHQUFBOUcsU0FBUyxDQUFDbUQsT0FBTyxjQUFBMkQsbUJBQUEsZUFBakJBLG1CQUFBLENBQW1CRSxzQkFBc0IsQ0FBQ0QsYUFBYSxDQUFDO0lBQ3hEekcsS0FBSyxDQUFDckYsTUFBTSxDQUFDZ00sdUJBQXVCLEVBQUU7TUFBRWhLLElBQUksRUFBSkE7SUFBSyxDQUFDLENBQUM7RUFDakQsQ0FBQyxFQUNELENBQUN0QixZQUFZLEVBQUVxRSxTQUFTLEVBQUVNLEtBQUssQ0FDakMsQ0FBQztFQUVELElBQU00RyxhQUFhLEdBQUc3TSxXQUFXLENBQy9CLFVBQUM4TSxDQUFnQyxFQUFjO0lBQzdDLElBQUksQ0FBQ3JHLFdBQVcsSUFBSW5GLFlBQVksQ0FBQ29CLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxLQUFLO0lBRTNELElBQUlvSyxDQUFDLENBQUNDLEdBQUcsS0FBSyxRQUFRLEVBQUU7TUFDdEJELENBQUMsQ0FBQ0UsY0FBYyxDQUFDLENBQUM7TUFDbEJuRCxLQUFLLENBQUMsQ0FBQztNQUNQLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxDQUFDaUQsQ0FBQyxDQUFDQyxHQUFHLEtBQUssWUFBWSxJQUFJRCxDQUFDLENBQUNDLEdBQUcsS0FBSyxXQUFXLE1BQU1ELENBQUMsQ0FBQ0csT0FBTyxJQUFJSCxDQUFDLENBQUNJLE1BQU0sQ0FBQyxFQUFFO01BQ2hGSixDQUFDLENBQUNFLGNBQWMsQ0FBQyxDQUFDO01BQ2xCLElBQU1sSyxHQUFHLEdBQUd4QixZQUFZLENBQUN5QixPQUFPLENBQUNzRCxVQUFVLENBQUM7TUFDNUMsSUFBTThHLEtBQUssR0FBR0wsQ0FBQyxDQUFDQyxHQUFHLEtBQUssWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDN0MsSUFBTUssT0FBTyxHQUFHLENBQUN0SyxHQUFHLEdBQUdxSyxLQUFLLEdBQUc3TCxZQUFZLENBQUNvQixNQUFNLElBQUlwQixZQUFZLENBQUNvQixNQUFNO01BQ3pFOEosZ0JBQWdCLENBQUNsTCxZQUFZLENBQUM4TCxPQUFPLENBQUMsQ0FBQztNQUN2QyxPQUFPLElBQUk7SUFDYjtJQUVBLElBQUlyRixLQUFLLENBQUNyRixNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sS0FBSztJQUVwQyxJQUFJb0ssQ0FBQyxDQUFDQyxHQUFHLEtBQUssV0FBVyxFQUFFO01BQ3pCRCxDQUFDLENBQUNFLGNBQWMsQ0FBQyxDQUFDO01BQ2xCdkYsc0JBQXNCLENBQUMsSUFBSSxDQUFDO01BQzVCSixjQUFjLENBQUMsVUFBQWdHLElBQUk7UUFBQSxPQUFLdEYsS0FBSyxDQUFDckYsTUFBTSxHQUFHLENBQUMsR0FBR2QsSUFBSSxDQUFDYSxHQUFHLENBQUM0SyxJQUFJLEdBQUcsQ0FBQyxFQUFFdEYsS0FBSyxDQUFDckYsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7TUFBQSxDQUFDLENBQUM7TUFDckYsT0FBTyxJQUFJO0lBQ2I7SUFDQSxJQUFJb0ssQ0FBQyxDQUFDQyxHQUFHLEtBQUssU0FBUyxFQUFFO01BQ3ZCRCxDQUFDLENBQUNFLGNBQWMsQ0FBQyxDQUFDO01BQ2xCdkYsc0JBQXNCLENBQUMsSUFBSSxDQUFDO01BQzVCSixjQUFjLENBQUMsVUFBQWdHLElBQUk7UUFBQSxPQUFJekwsSUFBSSxDQUFDQyxHQUFHLENBQUN3TCxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztNQUFBLEVBQUM7TUFDN0MsT0FBTyxJQUFJO0lBQ2I7SUFDQSxJQUFJUCxDQUFDLENBQUNDLEdBQUcsS0FBSyxPQUFPLElBQUlELENBQUMsQ0FBQ0MsR0FBRyxLQUFLLEtBQUssRUFBRTtNQUN4Q0QsQ0FBQyxDQUFDRSxjQUFjLENBQUMsQ0FBQztNQUNsQnZDLGtCQUFrQixDQUFDMUMsS0FBSyxDQUFDWCxXQUFXLENBQUMsQ0FBQztNQUN0QyxPQUFPLElBQUk7SUFDYjtJQUNBLE9BQU8sS0FBSztFQUNkLENBQUMsRUFDRCxDQUFDWCxXQUFXLEVBQUVzQixLQUFLLEVBQUV6RyxZQUFZLEVBQUUrRSxVQUFVLEVBQUVlLFdBQVcsRUFBRXFELGtCQUFrQixFQUFFWixLQUFLLEVBQUUyQyxnQkFBZ0IsQ0FDekcsQ0FBQztFQUVEdk0sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUN3RyxXQUFXLEVBQUUsT0FBTzZHLFNBQVM7SUFDbEMsSUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUE7TUFBQSxPQUFTL0UsZUFBZSxDQUFDLENBQUM7SUFBQTtJQUN2Q2MsTUFBTSxDQUFDa0UsZ0JBQWdCLENBQUMsUUFBUSxFQUFFRCxPQUFPLEVBQUUsSUFBSSxDQUFDO0lBQ2hEakUsTUFBTSxDQUFDa0UsZ0JBQWdCLENBQUMsUUFBUSxFQUFFRCxPQUFPLENBQUM7SUFDMUMsT0FBTyxZQUFNO01BQ1hqRSxNQUFNLENBQUNtRSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUVGLE9BQU8sRUFBRSxJQUFJLENBQUM7TUFDbkRqRSxNQUFNLENBQUNtRSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUVGLE9BQU8sQ0FBQztJQUMvQyxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUM5RyxXQUFXLEVBQUUrQixlQUFlLENBQUMsQ0FBQztFQUVsQ3ZJLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDd0csV0FBVyxFQUFFLE9BQU82RyxTQUFTO0lBRWxDLElBQU1JLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLFVBQXNCLEVBQUs7TUFBQSxJQUFBQyxtQkFBQTtNQUMzRCxJQUFNQyxNQUFNLEdBQUdGLFVBQVUsQ0FBQ0UsTUFBcUI7TUFDL0MsSUFBSSxDQUFDQSxNQUFNLEVBQUU7TUFDYixLQUFBRCxtQkFBQSxHQUFJakcsVUFBVSxDQUFDbUIsT0FBTyxjQUFBOEUsbUJBQUEsZUFBbEJBLG1CQUFBLENBQW9CRSxRQUFRLENBQUNELE1BQU0sQ0FBQyxFQUFFO01BQzFDaEUsS0FBSyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRURrRSxRQUFRLENBQUNQLGdCQUFnQixDQUFDLFdBQVcsRUFBRUUsd0JBQXdCLENBQUM7SUFDaEUsT0FBTztNQUFBLE9BQU1LLFFBQVEsQ0FBQ04sbUJBQW1CLENBQUMsV0FBVyxFQUFFQyx3QkFBd0IsQ0FBQztJQUFBO0VBQ2xGLENBQUMsRUFBRSxDQUFDakgsV0FBVyxFQUFFb0QsS0FBSyxDQUFDLENBQUM7RUFFeEIsSUFBTW1FLG9CQUFvQixHQUFHN04sTUFBTSxDQUFDLEtBQUssQ0FBQztFQUMxQ0YsU0FBUyxDQUFDLFlBQU07SUFDZCxPQUFPLFlBQU07TUFDWCtOLG9CQUFvQixDQUFDbEYsT0FBTyxHQUFHVixhQUFhO0lBQzlDLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ0EsYUFBYSxDQUFDLENBQUM7RUFFbkJuSSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUkrTixvQkFBb0IsQ0FBQ2xGLE9BQU8sRUFBRTtJQUNsQ3pCLGNBQWMsQ0FBQyxDQUFDLENBQUM7RUFDbkIsQ0FBQyxFQUFFLENBQUNVLEtBQUssQ0FBQ3JGLE1BQU0sRUFBRTJELFVBQVUsQ0FBQyxDQUFDO0VBRTlCLElBQU00SCxXQUFXLEdBQUcvTixPQUFPLENBQW1CLFlBQU07SUFDbEQsSUFBSSxDQUFDdUcsV0FBVyxFQUFFLE9BQU8sSUFBSTtJQUM3QixvQkFDRTFGLElBQUEsQ0FBQ1QsVUFBVTtNQUFDNE4sT0FBTyxFQUFFbEgsVUFBVSxDQUFDSixNQUFPO01BQUN1SCxLQUFLLEVBQUVuSCxVQUFVLENBQUNILElBQUs7TUFBQ3VILE1BQU0sRUFBRXBILFVBQVUsQ0FBQ0YsS0FBTTtNQUFBdUgsUUFBQSxlQUN2RnROLElBQUEsQ0FBQ1YscUJBQXFCO1FBQ3BCaU8sR0FBRyxFQUFFM0csVUFBVztRQUNoQnJHLFlBQVksRUFBRUEsWUFBYTtRQUMzQitFLFVBQVUsRUFBRUEsVUFBVztRQUN2QmtJLFlBQVksRUFBRS9CLGdCQUFpQjtRQUMvQnpFLEtBQUssRUFBRUEsS0FBTTtRQUNiQyxPQUFPLEVBQUVBLE9BQVE7UUFDakJDLEtBQUssRUFBRUEsS0FBTTtRQUNiQyxnQkFBZ0IsRUFBRUEsZ0JBQWlCO1FBQ25DQyxPQUFPLEVBQUVBLE9BQVE7UUFDakJDLGFBQWEsRUFBRUEsYUFBYztRQUM3Qm9HLGNBQWMsRUFBRW5HLFFBQVM7UUFDekJDLFdBQVcsRUFBRUEsV0FBWTtRQUN6Qm1HLFlBQVksRUFBRXpJLENBQUMsQ0FBQyw2QkFBNkIsRUFBRTtVQUM3QzBJLFlBQVksRUFBRTtRQUNoQixDQUFDLENBQUU7UUFDSEMsY0FBYyxFQUFFbEUsa0JBQW1CO1FBQ25DckQsV0FBVyxFQUFFQSxXQUFZO1FBQ3pCd0gsbUJBQW1CLEVBQUV2SCxjQUFlO1FBQ3BDRyxtQkFBbUIsRUFBRUEsbUJBQW9CO1FBQ3pDcUgsaUJBQWlCLEVBQUUsU0FBbkJBLGlCQUFpQkEsQ0FBQTtVQUFBLE9BQVFwSCxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7UUFBQTtNQUFDLENBQ3hEO0lBQUMsQ0FDUSxDQUFDO0VBRWpCLENBQUMsRUFBRSxDQUNEaEIsV0FBVyxFQUNYTyxVQUFVLEVBQ1YxRixZQUFZLEVBQ1orRSxVQUFVLEVBQ1ZtRyxnQkFBZ0IsRUFDaEJ6RSxLQUFLLEVBQ0xDLE9BQU8sRUFDUEMsS0FBSyxFQUNMQyxnQkFBZ0IsRUFDaEJDLE9BQU8sRUFDUEMsYUFBYSxFQUNiQyxRQUFRLEVBQ1JDLFdBQVcsRUFDWG1DLGtCQUFrQixFQUNsQnJELFdBQVcsRUFDWEksbUJBQW1CLENBQ3BCLENBQUM7RUFFRixPQUFPO0lBQUVmLFdBQVcsRUFBWEEsV0FBVztJQUFFbUQsd0JBQXdCLEVBQXhCQSx3QkFBd0I7SUFBRUUsYUFBYSxFQUFiQSxhQUFhO0lBQUUrQyxhQUFhLEVBQWJBLGFBQWE7SUFBRW9CLFdBQVcsRUFBWEEsV0FBVztJQUFFcEUsS0FBSyxFQUFMQTtFQUFNLENBQUM7QUFDcEcsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -285,11 +285,11 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
285
285
  }(), [t]);
286
286
  var askMaia = /*#__PURE__*/function () {
287
287
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref3) {
288
- var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, feeId, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, taskId, taskName, faqId, agentSuggestionId, fuaId, scId, agentEntity, contextMessage, _abortControllerRef$c, response, _onErrorRef$current3, _t5;
288
+ var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, feeId, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, faqId, agentSuggestionId, agentEntity, contextMessage, _abortControllerRef$c, response, _onErrorRef$current3, _t5;
289
289
  return _regeneratorRuntime.wrap(function (_context2) {
290
290
  while (1) switch (_context2.prev = _context2.next) {
291
291
  case 0:
292
- message = _ref3.message, history = _ref3.history, projectId = _ref3.projectId, lang = _ref3.lang, userId = _ref3.userId, firstName = _ref3.firstName, lastName = _ref3.lastName, companyId = _ref3.companyId, chatId = _ref3.chatId, messageId = _ref3.messageId, clientId = _ref3.clientId, clientName = _ref3.clientName, feeId = _ref3.feeId, agentName = _ref3.agentName, agentId = _ref3.agentId, isWebSearchActive = _ref3.isWebSearchActive, isDeepSearchActive = _ref3.isDeepSearchActive, attachments = _ref3.attachments, projectName = _ref3.projectName, taskId = _ref3.taskId, taskName = _ref3.taskName, faqId = _ref3.faqId, agentSuggestionId = _ref3.agentSuggestionId, fuaId = _ref3.fuaId, scId = _ref3.scId, agentEntity = _ref3.agentEntity, contextMessage = _ref3.contextMessage;
292
+ message = _ref3.message, history = _ref3.history, projectId = _ref3.projectId, lang = _ref3.lang, userId = _ref3.userId, firstName = _ref3.firstName, lastName = _ref3.lastName, companyId = _ref3.companyId, chatId = _ref3.chatId, messageId = _ref3.messageId, clientId = _ref3.clientId, clientName = _ref3.clientName, feeId = _ref3.feeId, agentName = _ref3.agentName, agentId = _ref3.agentId, isWebSearchActive = _ref3.isWebSearchActive, isDeepSearchActive = _ref3.isDeepSearchActive, attachments = _ref3.attachments, projectName = _ref3.projectName, faqId = _ref3.faqId, agentSuggestionId = _ref3.agentSuggestionId, agentEntity = _ref3.agentEntity, contextMessage = _ref3.contextMessage;
293
293
  _context2.prev = 1;
294
294
  setLoading(true);
295
295
  setIsWriting(false);
@@ -299,7 +299,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
299
299
 
300
300
  abortControllerRef.current = new AbortController();
301
301
  _context2.next = 2;
302
- return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
302
+ return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
303
303
  input: message,
304
304
  history: history,
305
305
  lang: lang,
@@ -328,18 +328,10 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
328
328
  projectName: projectName
329
329
  } : {}), clientName ? {
330
330
  clientName: clientName
331
- } : {}), taskId != null ? {
332
- taskId: taskId
333
- } : {}), taskName ? {
334
- taskName: taskName
335
331
  } : {}), faqId ? {
336
332
  faqId: faqId
337
333
  } : {}), agentSuggestionId ? {
338
334
  agentSuggestionId: agentSuggestionId
339
- } : {}), fuaId ? {
340
- fuaId: fuaId
341
- } : {}), scId ? {
342
- scId: scId
343
335
  } : {}), agentEntity != null ? {
344
336
  agentEntity: agentEntity
345
337
  } : {}), contextMessage ? {
@@ -430,4 +422,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
430
422
  handleSSEStream: handleSSEStream // Exponer para poder usarlo en continue-thread
431
423
  };
432
424
  };
433
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJfcmVmIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RhcnRXcml0aW5nIiwib25TdG9wIiwib25FcnJvciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJkYXRhIiwic2V0RGF0YSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNMb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsb2FkaW5nTWVzc2FnZSIsInNldExvYWRpbmdNZXNzYWdlIiwiYWJvcnRDb250cm9sbGVyUmVmIiwiaXNTdG9wcGVkUmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfZGF0YSRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsIl9vbkVycm9yUmVmJGN1cnJlbnQiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsIl9kYXRhIiwiX29uU3RhcnRXcml0aW5nUmVmJGN1Iiwibm9kZU1lc3NhZ2UiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiYXR0YWNobWVudHMiLCJzdWdnZXN0aW9ucyIsImFnZW50SWRSYXciLCJjb21wbGV0ZWRBZ2VudElkIiwiX29uRXJyb3JSZWYkY3VycmVudDIiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsImNhbmNlbCIsImFicnVwdCIsInJlYWQiLCJzZW50IiwiZGVjb2RlIiwic3RyZWFtIiwic3BsaXQiLCJwb3AiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInMiLCJuIiwidHJpbSIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3RfcmVwbHkiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJTdHJpbmciLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJjb250ZXh0TWVzc2FnZSIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiQWJvcnRDb250cm9sbGVyIiwiT3JjaGVzdHJhdG9yIiwib3JjaGVzdHJhdG9yIiwiX29iamVjdFNwcmVhZCIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInJlc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBDaGF0SGlzdG9yeSB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBBZ2VudEVudGl0eSB9IGZyb20gJy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzIH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuXG5leHBvcnQgY29uc3QgdXNlT3JjaGVzdHJhdG9yU3RyZWFtID0gKHtcbiAgb25TdHJlYW1VcGRhdGUsXG4gIG9uRmluaXNoU3RyZWFtLFxuICBvblN0YXJ0V3JpdGluZyxcbiAgb25TdG9wLFxuICBvbkVycm9yLFxuICBvbkFwcHJvdmFsUmVxdWlyZWQsXG59OiBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZSwgc2V0TG9hZGluZ01lc3NhZ2VdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWJvcnRDb250cm9sbGVyUmVmID0gdXNlUmVmPEFib3J0Q29udHJvbGxlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzU3RvcHBlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCBvblN0cmVhbVVwZGF0ZVJlZiA9IHVzZVJlZihvblN0cmVhbVVwZGF0ZSlcbiAgY29uc3Qgb25GaW5pc2hTdHJlYW1SZWYgPSB1c2VSZWYob25GaW5pc2hTdHJlYW0pXG4gIGNvbnN0IG9uU3RhcnRXcml0aW5nUmVmID0gdXNlUmVmKG9uU3RhcnRXcml0aW5nKVxuICBjb25zdCBvblN0b3BSZWYgPSB1c2VSZWYob25TdG9wKVxuICBjb25zdCBvbkVycm9yUmVmID0gdXNlUmVmKG9uRXJyb3IpXG4gIGNvbnN0IG9uQXBwcm92YWxSZXF1aXJlZFJlZiA9IHVzZVJlZihvbkFwcHJvdmFsUmVxdWlyZWQpXG5cbiAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudCA9IG9uU3RyZWFtVXBkYXRlXG4gIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQgPSBvbkZpbmlzaFN0cmVhbVxuICBvblN0YXJ0V3JpdGluZ1JlZi5jdXJyZW50ID0gb25TdGFydFdyaXRpbmdcbiAgb25TdG9wUmVmLmN1cnJlbnQgPSBvblN0b3BcbiAgb25FcnJvclJlZi5jdXJyZW50ID0gb25FcnJvclxuICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudCA9IG9uQXBwcm92YWxSZXF1aXJlZFxuXG4gIGNvbnN0IGhhbmRsZVNTRVN0cmVhbSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIHJBRi10aHJvdHRsZTogZXZpdGEgZW1pdGlyIG9uU3RyZWFtVXBkYXRlIG3DoXMgZGUgdW5hIHZleiBwb3IgZnJhbWUuXG4gICAgICAvLyBBY3VtdWxhIGVsIMO6bHRpbW8gdmFsb3IgeSBsbyBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLlxuICAgICAgLy8gTm90YTogbm8gdG9jYW1vcyBlbCBzdGF0ZSBgZGF0YWAgZW4gZWwgaG90IHBhdGggKHNvbG8gc2UgYWN0dWFsaXphIGVuXG4gICAgICAvLyBgY29tcGxldGVgL3Jlc2V0cykgcGFyYSBubyByZS1yZW5kZXJpemFyIGEgbG9zIGNvbnN1bWlkb3JlcyBkZWwgaG9va1xuICAgICAgLy8gZW4gY2FkYSBmcmFtZTsgZWwgdGV4dG8gZW4gdml2byB2aWFqYSBwb3IgZWwgc3RyZWFtaW5nU3RvcmUuXG4gICAgICBsZXQgcGVuZGluZ0NvbnRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHJldHVyblxuICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZClcbiAgICAgICAgICByYWZJZCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudD8uKHRvRW1pdCwgbnVsbCwgJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gICAgICAgIGxldCBidWZmZXIgPSAnJ1xuICAgICAgICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgICAgICAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgICAgICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gICAgICAgICAgICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuXG4gICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndG9rZW4nOlxuICAgICAgICAgICAgICAgICAgaWYgKCFoYXNTdGFydGVkV3JpdGluZykge1xuICAgICAgICAgICAgICAgICAgICBoYXNTdGFydGVkV3JpdGluZyA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKHQoJ2NoYXQud3JpdGluZycpKVxuICAgICAgICAgICAgICAgICAgICBvblN0YXJ0V3JpdGluZ1JlZi5jdXJyZW50Py4oKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZWRDb250ZW50ICs9IGRhdGEuY29udGVudFxuICAgICAgICAgICAgICAgICAgZW1pdFRocm90dGxlZChhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgICAgICAgICAvLyBTaSBlbCBldmVudG8gbm9kZSB0aWVuZSB1biBtZW5zYWplLCBhY3R1YWxpemFybG8gcGFyYSBtb3N0cmFybG8gZW4gZWwgbG9hZGVyXG4gICAgICAgICAgICAgICAgICBpZiAoZGF0YS5tZXNzYWdlICYmIHR5cGVvZiBkYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFzZWd1cmFyIHF1ZSBpc0xvYWRpbmcgZXN0w6kgZW4gdHJ1ZSBwYXJhIG1vc3RyYXIgZWwgbG9hZGVyXG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gTW9zdHJhciBub21icmUgc29sbyBwYXJhIGNyZWF0ZV90YXNrIC8gY2xvbmVfdGFzaywgZWwgcmVzdG8gbXVlc3RyYSBnZW7DqXJpY29cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZU1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVzc2FnZS5pbmNsdWRlcygnY3JlYXRlX3Rhc2snKSB8fCBkYXRhLm1lc3NhZ2UuaW5jbHVkZXMoJ2Nsb25lX3Rhc2snKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBkYXRhLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hhdC5leGVjdXRpbmdBY3Rpb24nKVxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShub2RlTWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSBkYXRhLmNvbnRlbnQgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2VzID0gZGF0YS5zb3VyY2VzIHx8IG51bGxcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IGRhdGEubWVtb3J5X3Nlc3Npb25faWQgfHwgJydcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShkYXRhLmF0dGFjaG1lbnRzKSA/IGRhdGEuYXR0YWNobWVudHMgOiBudWxsXG4gICAgICAgICAgICAgICAgICBsZXQgc3VnZ2VzdGlvbnMgPSBudWxsXG4gICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLnN1Z2dlc3RfcmVwbHkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gZGF0YS5zdWdnZXN0X3JlcGx5XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5zdWdnZXN0aW9ucykpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBkYXRhLnN1Z2dlc3Rpb25zXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjb25zdCBhZ2VudElkUmF3ID0gZGF0YS5hZ2VudF9pZCA/PyBkYXRhLmFnZW50SWRcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPVxuICAgICAgICAgICAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldERhdGEoZmluYWxDb250ZW50KVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBzZSBjb21wbGV0YVxuICAgICAgICAgICAgICAgICAgb25GaW5pc2hTdHJlYW1SZWYuY3VycmVudD8uKFxuICAgICAgICAgICAgICAgICAgICBmaW5hbENvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICAgICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOlxuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIHNlIHJlcXVpZXJlIGFwcm9iYWNpw7NuXG4gICAgICAgICAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudD8uKGRhdGEsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZGF0YS5lcnJvcilcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIGhheSBlcnJvclxuICAgICAgICAgICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcblxuICAgICAgICAvLyBTb2xvIGVqZWN1dGFyIG9uRXJyb3Igc2kgbm8gZnVlIHVuIHN0b3AgaW50ZW5jaW9uYWxcbiAgICAgICAgaWYgKCFpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3RdXG4gIClcblxuICBjb25zdCBhc2tNYWlhID0gYXN5bmMgKHtcbiAgICBtZXNzYWdlLFxuICAgIGhpc3RvcnksXG4gICAgcHJvamVjdElkLFxuICAgIGxhbmcsXG4gICAgdXNlcklkLFxuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICBjb21wYW55SWQsXG4gICAgY2hhdElkLFxuICAgIG1lc3NhZ2VJZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICAgIGZlZUlkLFxuICAgIGFnZW50TmFtZSxcbiAgICBhZ2VudElkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhdHRhY2htZW50cyxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICB0YXNrSWQsXG4gICAgdGFza05hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgZnVhSWQsXG4gICAgc2NJZCxcbiAgICBhZ2VudEVudGl0eSxcbiAgICBjb250ZXh0TWVzc2FnZSxcbiAgfToge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGhpc3Rvcnk6IENoYXRIaXN0b3J5W11cbiAgICBwcm9qZWN0SWQ6IG51bWJlciB8IG51bGxcbiAgICBsYW5nOiBzdHJpbmdcbiAgICB1c2VySWQ6IHN0cmluZ1xuICAgIGZpcnN0TmFtZT86IHN0cmluZ1xuICAgIGxhc3ROYW1lPzogc3RyaW5nXG4gICAgY29tcGFueUlkOiBzdHJpbmdcbiAgICBjaGF0SWQ6IHN0cmluZ1xuICAgIG1lc3NhZ2VJZDogc3RyaW5nXG4gICAgY2xpZW50SWQ/OiBudW1iZXJcbiAgICBjbGllbnROYW1lPzogc3RyaW5nXG4gICAgZmVlSWQ/OiBudW1iZXJcbiAgICBhZ2VudE5hbWU6IHN0cmluZ1xuICAgIGFnZW50SWQ6IHN0cmluZ1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICAgIHRhc2tJZD86IG51bWJlclxuICAgIHRhc2tOYW1lPzogc3RyaW5nXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICAgIGFnZW50RW50aXR5PzogQWdlbnRFbnRpdHlcbiAgICBjb250ZXh0TWVzc2FnZT86IENvbnRleHRNZXNzYWdlXG4gIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0RGF0YShudWxsKVxuICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2UgLy8gUmVzZXRlYXIgZmxhZyBhbCBpbmljaWFyIG51ZXZhIHBldGljacOzblxuXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBtZXNzYWdlLFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgbGFuZyxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxhc3ROYW1lID8geyBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVJZCB9IDoge30pLFxuICAgICAgICAgIGFnZW50TmFtZSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnROYW1lID8geyBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza05hbWUgPyB7IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRFbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaSBmdWUgdW4gYWJvcnQgaW50ZW5jaW9uYWwgKHN0b3AgbWFudWFsIG8gY2FtYmlvIGRlIGNoYXQpLCBubyBkaXNwYXJhciBvbkVycm9yXG4gICAgICAvLyBwb3JxdWUgZXNvIGluc2VydGEgdW4gXCJtZW5zYWplIGRlIGVycm9yXCIgZW4gZWwgY2hhdCBhbCBxdWUgYWNhYmFtb3MgZGUgbmF2ZWdhci5cbiAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgfVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKipcbiAgICogQWJvcnRhIGVsIHN0cmVhbSBlbiBjdXJzbyAoc2kgZXhpc3RlKSBzaW4gZGlzcGFyYXIgYG9uU3RvcGAuXG4gICAqIMOac2VsbyBlbiBjYXNvcyBkb25kZSBubyBxdWVyZW1vcyBhZ3JlZ2FyIGVsIG1lbnNhamUgZGUgXCJjYW5jZWxhZG9cIlxuICAgKiAocG9yIGVqZW1wbG8sIGFsIGNhbWJpYXIgZGUgY2hhdCkuXG4gICAqL1xuICBjb25zdCBhYm9ydFN0cmVhbVNpbGVudGx5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQ2xlYW51cCBhbCBkZXNtb250YXI6IHNpIHF1ZWRhIHVuIHN0cmVhbSBhY3Rpdm8sIGFib3J0YXJsbyBwYXJhIGV2aXRhclxuICAvLyBxdWUgaW50ZW50ZSBhY3R1YWxpemFyIGVzdGFkbyBlbiB1biBjb21wb25lbnRlIHlhIGRlc21vbnRhZG8gKGZ1Z2FzIGRlXG4gIC8vIG1lbW9yaWEgeSB3YXJuaW5ncykuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RGF0YShudWxsKVxuICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc2tNYWlhLFxuICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgcmVzZXQsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJlYWRcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUt0QyxTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBRWpELE9BQU8sSUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBQUMsSUFBQSxFQU9BO0VBQUEsSUFOaENDLGNBQWMsR0FBQUQsSUFBQSxDQUFkQyxjQUFjO0lBQ2RDLGNBQWMsR0FBQUYsSUFBQSxDQUFkRSxjQUFjO0lBQ2RDLGNBQWMsR0FBQUgsSUFBQSxDQUFkRyxjQUFjO0lBQ2RDLE1BQU0sR0FBQUosSUFBQSxDQUFOSSxNQUFNO0lBQ05DLE9BQU8sR0FBQUwsSUFBQSxDQUFQSyxPQUFPO0lBQ1BDLGtCQUFrQixHQUFBTixJQUFBLENBQWxCTSxrQkFBa0I7RUFFbEIsSUFBQUMsZUFBQSxHQUFjWCxjQUFjLENBQUMsQ0FBQ0UsUUFBUSxDQUFDVSxNQUFNLENBQUMsQ0FBQztJQUF2Q0MsQ0FBQyxHQUFBRixlQUFBLENBQURFLENBQUM7RUFDVCxJQUFBQyxTQUFBLEdBQXdCbEIsUUFBUSxDQUFnQixJQUFJLENBQUM7SUFBQW1CLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQTlDRyxJQUFJLEdBQUFGLFVBQUE7SUFBRUcsT0FBTyxHQUFBSCxVQUFBO0VBQ3BCLElBQUFJLFVBQUEsR0FBZ0N2QixRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUF3QixVQUFBLEdBQUFKLGNBQUEsQ0FBQUcsVUFBQTtJQUF4Q0UsU0FBUyxHQUFBRCxVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUM1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
425
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJfcmVmIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RhcnRXcml0aW5nIiwib25TdG9wIiwib25FcnJvciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJkYXRhIiwic2V0RGF0YSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNMb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsb2FkaW5nTWVzc2FnZSIsInNldExvYWRpbmdNZXNzYWdlIiwiYWJvcnRDb250cm9sbGVyUmVmIiwiaXNTdG9wcGVkUmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfZGF0YSRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsIl9vbkVycm9yUmVmJGN1cnJlbnQiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsIl9kYXRhIiwiX29uU3RhcnRXcml0aW5nUmVmJGN1Iiwibm9kZU1lc3NhZ2UiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiYXR0YWNobWVudHMiLCJzdWdnZXN0aW9ucyIsImFnZW50SWRSYXciLCJjb21wbGV0ZWRBZ2VudElkIiwiX29uRXJyb3JSZWYkY3VycmVudDIiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsImNhbmNlbCIsImFicnVwdCIsInJlYWQiLCJzZW50IiwiZGVjb2RlIiwic3RyZWFtIiwic3BsaXQiLCJwb3AiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInMiLCJuIiwidHJpbSIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3RfcmVwbHkiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJTdHJpbmciLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsImFnZW50RW50aXR5IiwiY29udGV4dE1lc3NhZ2UiLCJfYWJvcnRDb250cm9sbGVyUmVmJGMiLCJfb25FcnJvclJlZiRjdXJyZW50MyIsIl90NSIsIl9jb250ZXh0MiIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsIl9vYmplY3RTcHJlYWQiLCJpbnB1dCIsInNpZ25hbCIsIl94MiIsInN0b3BTdHJlYW1pbmciLCJfb25TdG9wUmVmJGN1cnJlbnQiLCJhYm9ydCIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJyZXNldCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VPcmNoZXN0cmF0b3JTdHJlYW0vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnN0YW50LWNvbmRpdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udGludWUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgQ2hhdEhpc3RvcnkgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgQWdlbnRFbnRpdHkgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcyB9IGZyb20gJy4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLmludGVyZmFjZSdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxufTogVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2UsIHNldExvYWRpbmdNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyByQUYtdGhyb3R0bGU6IGV2aXRhIGVtaXRpciBvblN0cmVhbVVwZGF0ZSBtw6FzIGRlIHVuYSB2ZXogcG9yIGZyYW1lLlxuICAgICAgLy8gQWN1bXVsYSBlbCDDumx0aW1vIHZhbG9yIHkgbG8gbGliZXJhIGVuIGVsIHByw7N4aW1vIHJlcXVlc3RBbmltYXRpb25GcmFtZS5cbiAgICAgIC8vIE5vdGE6IG5vIHRvY2Ftb3MgZWwgc3RhdGUgYGRhdGFgIGVuIGVsIGhvdCBwYXRoIChzb2xvIHNlIGFjdHVhbGl6YSBlblxuICAgICAgLy8gYGNvbXBsZXRlYC9yZXNldHMpIHBhcmEgbm8gcmUtcmVuZGVyaXphciBhIGxvcyBjb25zdW1pZG9yZXMgZGVsIGhvb2tcbiAgICAgIC8vIGVuIGNhZGEgZnJhbWU7IGVsIHRleHRvIGVuIHZpdm8gdmlhamEgcG9yIGVsIHN0cmVhbWluZ1N0b3JlLlxuICAgICAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSByZXR1cm5cbiAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJhZklkID0gbnVsbFxuICAgICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpXG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gICAgICAgIGlmICghcmVhZGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICAgICAgICBsZXQgYnVmZmVyID0gJydcbiAgICAgICAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgICAgIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcblxuICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzpcbiAgICAgICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZSh0KCdjaGF0LndyaXRpbmcnKSlcbiAgICAgICAgICAgICAgICAgICAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudD8uKClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudCArPSBkYXRhLmNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICAgICAgLy8gU2kgZWwgZXZlbnRvIG5vZGUgdGllbmUgdW4gbWVuc2FqZSwgYWN0dWFsaXphcmxvIHBhcmEgbW9zdHJhcmxvIGVuIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubWVzc2FnZSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBc2VndXJhciBxdWUgaXNMb2FkaW5nIGVzdMOpIGVuIHRydWUgcGFyYSBtb3N0cmFyIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vc3RyYXIgbm9tYnJlIHNvbG8gcGFyYSBjcmVhdGVfdGFzayAvIGNsb25lX3Rhc2ssIGVsIHJlc3RvIG11ZXN0cmEgZ2Vuw6lyaWNvXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lc3NhZ2UuaW5jbHVkZXMoJ2NyZWF0ZV90YXNrJykgfHwgZGF0YS5tZXNzYWdlLmluY2x1ZGVzKCdjbG9uZV90YXNrJylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2Uobm9kZU1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gZGF0YS5jb250ZW50IHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlcyA9IGRhdGEuc291cmNlcyB8fCBudWxsXG4gICAgICAgICAgICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSBkYXRhLm1lbW9yeV9zZXNzaW9uX2lkIHx8ICcnXG4gICAgICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZGF0YS5hdHRhY2htZW50cykgPyBkYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3Rpb25zID0gbnVsbFxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyA9IGRhdGEuc3VnZ2VzdF9yZXBseVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gZGF0YS5zdWdnZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGRhdGEuYWdlbnRfaWQgPz8gZGF0YS5hZ2VudElkXG4gICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXREYXRhKGZpbmFsQ29udGVudClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gc2UgY29tcGxldGFcbiAgICAgICAgICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgICAgICAgICAgZmluYWxDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzpcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBzZSByZXF1aWVyZSBhcHJvYmFjacOzblxuICAgICAgICAgICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQ/LihkYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBoYXkgZXJyb3JcbiAgICAgICAgICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFt0XVxuICApXG5cbiAgY29uc3QgYXNrTWFpYSA9IGFzeW5jICh7XG4gICAgbWVzc2FnZSxcbiAgICBoaXN0b3J5LFxuICAgIHByb2plY3RJZCxcbiAgICBsYW5nLFxuICAgIHVzZXJJZCxcbiAgICBmaXJzdE5hbWUsXG4gICAgbGFzdE5hbWUsXG4gICAgY29tcGFueUlkLFxuICAgIGNoYXRJZCxcbiAgICBtZXNzYWdlSWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgICBmZWVJZCxcbiAgICBhZ2VudE5hbWUsXG4gICAgYWdlbnRJZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgYXR0YWNobWVudHMsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgYWdlbnRFbnRpdHksXG4gICAgY29udGV4dE1lc3NhZ2UsXG4gIH06IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gICAgcHJvamVjdElkOiBudW1iZXIgfCBudWxsXG4gICAgbGFuZzogc3RyaW5nXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgICBsYXN0TmFtZT86IHN0cmluZ1xuICAgIGNvbXBhbnlJZDogc3RyaW5nXG4gICAgY2hhdElkOiBzdHJpbmdcbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGNsaWVudElkPzogbnVtYmVyXG4gICAgY2xpZW50TmFtZT86IHN0cmluZ1xuICAgIGZlZUlkPzogbnVtYmVyXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICAgIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZSAvLyBSZXNldGVhciBmbGFnIGFsIGluaWNpYXIgbnVldmEgcGV0aWNpw7NuXG5cbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yKFxuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQ6IG1lc3NhZ2UsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBsYW5nLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICAuLi4oZmlyc3ROYW1lID8geyBmaXJzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4obGFzdE5hbWUgPyB7IGxhc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgY29tcGFueUlkLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgLi4uKGZlZUlkICE9IG51bGwgPyB7IGZlZUlkIH0gOiB7fSksXG4gICAgICAgICAgYWdlbnROYW1lLFxuICAgICAgICAgIGFnZW50SWQsXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIC4uLihwcm9qZWN0SWQgPyB7IHByb2plY3RJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocHJvamVjdE5hbWUgPyB7IHByb2plY3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudE5hbWUgPyB7IGNsaWVudE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudEVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQ/LnNpZ25hbFxuICAgICAgKVxuXG4gICAgICBhd2FpdCBoYW5kbGVTU0VTdHJlYW0ocmVzcG9uc2UpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFNpIGZ1ZSB1biBhYm9ydCBpbnRlbmNpb25hbCAoc3RvcCBtYW51YWwgbyBjYW1iaW8gZGUgY2hhdCksIG5vIGRpc3BhcmFyIG9uRXJyb3JcbiAgICAgIC8vIHBvcnF1ZSBlc28gaW5zZXJ0YSB1biBcIm1lbnNhamUgZGUgZXJyb3JcIiBlbiBlbCBjaGF0IGFsIHF1ZSBhY2FiYW1vcyBkZSBuYXZlZ2FyLlxuICAgICAgaWYgKCFpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICB9XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0b3BTdHJlYW1pbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgICBvblN0b3BSZWYuY3VycmVudD8uKClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBBYm9ydGEgZWwgc3RyZWFtIGVuIGN1cnNvIChzaSBleGlzdGUpIHNpbiBkaXNwYXJhciBgb25TdG9wYC5cbiAgICogw5pzZWxvIGVuIGNhc29zIGRvbmRlIG5vIHF1ZXJlbW9zIGFncmVnYXIgZWwgbWVuc2FqZSBkZSBcImNhbmNlbGFkb1wiXG4gICAqIChwb3IgZWplbXBsbywgYWwgY2FtYmlhciBkZSBjaGF0KS5cbiAgICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBDbGVhbnVwIGFsIGRlc21vbnRhcjogc2kgcXVlZGEgdW4gc3RyZWFtIGFjdGl2bywgYWJvcnRhcmxvIHBhcmEgZXZpdGFyXG4gIC8vIHF1ZSBpbnRlbnRlIGFjdHVhbGl6YXIgZXN0YWRvIGVuIHVuIGNvbXBvbmVudGUgeWEgZGVzbW9udGFkbyAoZnVnYXMgZGVcbiAgLy8gbWVtb3JpYSB5IHdhcm5pbmdzKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICBzZXREYXRhKG51bGwpXG4gICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUU5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBS3RDLFNBQVNDLFFBQVEsUUFBUSx3QkFBd0I7QUFFakQsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFBQyxJQUFBLEVBT0E7RUFB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