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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/lib/components/atoms/Chip/Chip.js +4 -10
  2. package/lib/components/atoms/MAIAInput/MAIAInput.js +1 -1
  3. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  4. package/lib/components/atoms/icons/index.js +2 -1
  5. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +11 -6
  6. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +28 -17
  7. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +13 -2
  8. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +28 -40
  9. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +73 -30
  10. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -14
  11. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  12. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  13. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  14. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  15. package/lib/components/molecules/ChatFooter/ChatFooter.js +3 -17
  16. package/lib/components/molecules/Sidebar/Sidebar.js +19 -12
  17. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
  18. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  19. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  20. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
  21. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  22. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  23. package/lib/components/organisms/ChatAI/ChatAI.js +7 -3
  24. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
  25. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
  26. package/lib/context/global-context.js +3 -2
  27. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  28. package/lib/hooks/useChatManager/useChatManager.js +25 -139
  29. package/lib/hooks/useChatMessages/useChatMessages.js +1 -1
  30. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  31. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +10 -24
  32. package/lib/lang/br/index.js +48 -3
  33. package/lib/lang/en/index.js +48 -3
  34. package/lib/lang/es/index.js +48 -3
  35. package/lib/lang/fr/index.js +48 -3
  36. package/lib/services/maia/Agents/getAgentModels.js +8 -3
  37. package/lib/services/maia/Agents/getAgents.js +91 -68
  38. package/lib/services/maia/Chats/getChatsByUserId.js +9 -13
  39. package/lib/services/maia/Orchestrator/orchestrator.js +17 -3
  40. package/lib/services/maia/Skills/createSkill.js +39 -0
  41. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  42. package/lib/services/maia/Skills/generateSkill.js +41 -0
  43. package/lib/services/maia/Skills/getSkills.js +90 -0
  44. package/lib/services/maia/Skills/updateSkill.js +39 -0
  45. package/lib/services/utils/validateIsMaia.js +2 -2
  46. package/lib/types/Chat.js +1 -1
  47. package/lib/types/agent.js +1 -1
  48. package/lib/types/skill.js +2 -0
  49. package/lib/utils/hitlAnalytics.js +3 -3
  50. package/package.json +1 -1
@@ -535,4 +535,4 @@ export var useChatMessages = function useChatMessages(_ref) {
535
535
  handleScroll: handleScroll
536
536
  };
537
537
  };
538
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJidWlsZENvbnRleHRNZXNzYWdlIiwibWFpYSIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlVXNlciIsInVzZVRhYlRhc2tEZWZhdWx0IiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIm1hcENPUkxhbmciLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwicmV3cml0ZVRhc2tVcmxzSW5Db250ZW50IiwiY29udGVudCIsInRhYlNlZ21lbnQiLCJ0YXNrVXJsUmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwidXJsIiwidXNlQ2hhdE1lc3NhZ2VzIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25FcnJvciIsImNoYXRJZCIsImN1cnJlbnRVc2VyIiwidXNlckluaXRpYWxNZXNzYWdlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlciIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibG9hZGluZ01lc3NhZ2VzIiwic2V0TG9hZGluZ01lc3NhZ2VzIiwiX3VzZVN0YXRlMyIsIl9vYmplY3RTcHJlYWQiLCJpZCIsImRhdGUiLCJEYXRlIiwibWVzc2FnZSIsImZ1YUlkIiwic2NJZCIsImF0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsIl91c2VTdGF0ZTQiLCJtZXNzYWdlcyIsInNldE1lc3NhZ2VzIiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0VGFzayIsInByb2plY3QiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsInRhYlRhc2tEZWZhdWx0IiwicmVmZXRjaFRhYlRhc2tEZWZhdWx0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImxhc3RFdmFsdWF0ZWRLZXkiLCJzZXRMYXN0RXZhbHVhdGVkS2V5IiwiaXNMb2FkaW5nUmVmIiwiaW5pdGlhbExvYWREb25lIiwicHJldmlvdXNDaGF0SWQiLCJzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYyIiwicHJvamVjdElkTWVzc2FnZSIsInByb2plY3ROYW1lRnJvbVNlc3Npb24iLCJjbGllbnRJZEZyb21TZXNzaW9uIiwiY2xpZW50TmFtZUZyb21TZXNzaW9uIiwidGFza0lkRnJvbVNlc3Npb24iLCJ0YXNrTmFtZUZyb21TZXNzaW9uIiwicHJvamVjdHMiLCJoYXNNdWx0aUFnZW50c0FjY2VzcyIsInByb2plY3RJZE51bSIsImZvdW5kUHJvamVjdCIsIl9mb3VuZFByb2plY3QkY2xpZW50Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJuYW1lIiwiTnVtYmVyIiwiYWJydXB0Iiwic2VudCIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJmaW5kIiwicCIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsImNsaWVudCIsInByb2plY3RJZCIsIlN0cmluZyIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwibG9hZE1lc3NhZ2VzIiwiX2NhbGxlZTIiLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQiLCJpdGVtcyIsIm5leHRJdGVtIiwiYWdlbnREZWxldGVkIiwiYWdlbnROb1Blcm1pc3Npb24iLCJoYXNBZ2VudEFjY2VzcyIsImhhc0FnZW50UGVybWlzc2lvbiIsInByb2plY3REZWxldGVkIiwiYWdlbnRJbkxpc3QiLCJjb250ZXh0UHJvamVjdElkIiwiaXRlbXNUb1NldCIsInRhYiIsIl90IiwiX2NvbnRleHQyIiwiY3VycmVudCIsIkNoYXRzIiwiZ2V0Q2hhdE1lc3NhZ2VzIiwib2Zmc2V0IiwiY2FuY2VsbGVkVGV4dCIsImxhbmciLCJsYW5ndWFnZSIsImNsaWVudElkIiwidGFza0lkIiwidGFza05hbWUiLCJlbW9qaSIsInR5cGUiLCJpc19kZWxldGVkIiwiZGVsZXRlZF9hdCIsImRlbGV0ZWRBdCIsImNvbm5lY3RvcnMiLCJ2aWV3IiwiYWdlbnQiLCJpc19mcm9tX2NvbnZlcnNhdGlvbiIsInByb2plY3RfZGVsZXRlZCIsImEiLCJ1bmRlZmluZWQiLCJoYXNfbm90X2FjY2VzcyIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJwYXJzZUludCIsImNvbmNhdCIsIm1hcCIsIml0ZW0iLCJmaW5pc2giLCJsb2FkTW9yZU1lc3NhZ2VzIiwiX3JlZjUiLCJfY2FsbGVlMyIsImNvbnRhaW5lciIsIm9sZFNjcm9sbEhlaWdodCIsIm9sZFNjcm9sbFRvcCIsIl95aWVsZCRtYWlhJENoYXRzJGdldDIiLCJpdGVtc1RvTWVyZ2UiLCJuZXdNZXNzYWdlcyIsIl90MiIsIl9jb250ZXh0MyIsInNjcm9sbEhlaWdodCIsInNjcm9sbFRvcCIsIl90b0NvbnN1bWFibGVBcnJheSIsInNsaWNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVyUmVmIiwibmV3U2Nyb2xsSGVpZ2h0IiwiaGVpZ2h0RGlmZmVyZW5jZSIsIl94MiIsImhhbmRsZVNjcm9sbCIsImNsaWVudEhlaWdodCIsInNjcm9sbFBlcmNlbnRhZ2UiLCJkaWRSZXdyaXRlUmVmIiwibGVuZ3RoIiwibmVlZHNSZXdyaXRlIiwic29tZSIsIm1zZyIsIm1hdGNoZXMiLCJtYXRjaCIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJyZXdyaXR0ZW4iLCJhZGRNZXNzYWdlIiwiZXhpc3RpbmdNZXNzYWdlSW5kZXgiLCJmaW5kSW5kZXgiLCJyZW1vdmVNZXNzYWdlIiwibWVzc2FnZUlkIiwiZmlsdGVyIiwiaGFzTW9yZU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNZXNzYWdlcy91c2VDaGF0TWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBVc2VDaGF0TWVzc2FnZXNQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1lc3NhZ2VzLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlJ1xuXG5jb25zdCByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nLCB0YWJTZWdtZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWVzc2FnZXMgPSAoe1xuICBvbkVycm9yLFxuICBjaGF0SWQsXG4gIGN1cnJlbnRVc2VyLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZXMsIHNldExvYWRpbmdNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VTdGF0ZTxDaGF0TWVzc2FnZVtdPihcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2VcbiAgICAgID8gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAndXNlci1pbml0aWFsLW1lc3NhZ2UnLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICAgICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW11cbiAgKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBzZWxlY3RBZ2VudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2ssIHByb2plY3QgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0LCB0YWJUYXNrRGVmYXVsdCwgcmVmZXRjaFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG4gIGNvbnN0IFtpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNldElzTG9hZGluZ01vcmVNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xhc3RFdmFsdWF0ZWRLZXksIHNldExhc3RFdmFsdWF0ZWRLZXldID0gdXNlU3RhdGU8bnVtYmVyIHwgdW5kZWZpbmVkPigwKVxuICBjb25zdCBpc0xvYWRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGluaXRpYWxMb2FkRG9uZSA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcHJldmlvdXNDaGF0SWQgPSB1c2VSZWYoY2hhdElkKVxuXG4gIGNvbnN0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgIH06IHtcbiAgICAgIHByb2plY3RJZE1lc3NhZ2U6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudElkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgICAgdGFza0lkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICB9KSA9PiB7XG4gICAgICAvLyBUYXJlYSBkZSBsYSBjb252ZXJzYWNpw7NuOiBzZSBkZXJpdmEgZGUgbGEgbWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBwYXJhIG1vc3RyYXIgZWwgY2hpcFxuICAgICAgLy8gZGUgbGEgdGFyZWEgKHkgcmVlbnZpYXIgbGEgbWV0YWRhdGEgZW4gY2FkYSBtZW5zYWplKSBzaW4gaW1wb3J0YXIgZGVzZGUgZMOzbmRlIHNlIGFicmEuXG4gICAgICBpZiAodGFza0lkRnJvbVNlc3Npb24gIT0gbnVsbCAmJiB0YXNrTmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgIHNldFRhc2soeyBpZDogdGFza0lkRnJvbVNlc3Npb24sIG5hbWU6IHRhc2tOYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIH1cblxuICAgICAgLy8gQ29udmVyc2FjacOzbiBjb24gY2xpZW50X21ldGFkYXRhOiBzZXRlYXIgY2xpZW50ZSB5IGxpbXBpYXIgcHJveWVjdG9cbiAgICAgIGlmIChjbGllbnRJZEZyb21TZXNzaW9uICE9IG51bGwgJiYgY2xpZW50TmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgIHNldENsaWVudCh7IGlkOiBOdW1iZXIoY2xpZW50SWRGcm9tU2Vzc2lvbiksIG5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbiB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICBjb25zdCBoYXNNdWx0aUFnZW50c0FjY2VzcyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICAgICAgaWYgKHByb2plY3RJZE1lc3NhZ2UgJiYgaGFzTXVsdGlBZ2VudHNBY2Nlc3MpIHtcbiAgICAgICAgY29uc3QgcHJvamVjdElkTnVtID0gTnVtYmVyKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICAgIGNvbnN0IGZvdW5kUHJvamVjdCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBwcm9qZWN0SWROdW0pXG5cbiAgICAgICAgaWYgKGZvdW5kUHJvamVjdCkge1xuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmRQcm9qZWN0Lm5hbWUsXG4gICAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZFByb2plY3QuY2xpZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmRQcm9qZWN0LmlkKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3QoZm91bmRQcm9qZWN0KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lRnJvbVNlc3Npb24pIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICBjbGllbnROYW1lOiAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBwcm9qZWN0SWROdW0sIG5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIH1cblxuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtmZXRjaFByb2plY3RzLCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdCwgc2V0VGFza11cbiAgKVxuXG4gIGNvbnN0IGxvYWRNZXNzYWdlcyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKHRydWUpXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IGZhbHNlXG4gICAgICBjb25zdCB7XG4gICAgICAgIGl0ZW1zLFxuICAgICAgICBuZXh0SXRlbSxcbiAgICAgICAgYWdlbnREZWxldGVkLFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbixcbiAgICAgICAgaGFzQWdlbnRBY2Nlc3MsXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbixcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgcHJvamVjdERlbGV0ZWQsXG4gICAgICAgIGNsaWVudElkOiBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIHRhc2tJZDogdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgIHRhc2tOYW1lOiB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdE1lc3NhZ2VzKHtcbiAgICAgICAgY2hhdElkLFxuICAgICAgICBjdXJyZW50VXNlcixcbiAgICAgICAgb2Zmc2V0OiBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgICBjYW5jZWxsZWRUZXh0OiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgICBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpLFxuICAgICAgfSlcbiAgICAgIGlmIChhZ2VudERlbGV0ZWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgIGlkOiBhZ2VudERlbGV0ZWQuaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnREZWxldGVkLm5hbWUsXG4gICAgICAgICAgZW1vamk6IGFnZW50RGVsZXRlZC5lbW9qaSxcbiAgICAgICAgICB0eXBlOiAnY3VzdG9tJyxcbiAgICAgICAgICBpc19kZWxldGVkOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZWRfYXQ6IGFnZW50RGVsZXRlZC5kZWxldGVkQXQsXG4gICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uPy5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBubyBlc3TDoSBlbiBsYSBsaXN0YSBwZXJvIHRpZW5lIHBlcm1pc29zLCBhY2Nlc28geSBubyBlc3TDoSBlbGltaW5hZG8sIHNldGVhcmxvIG5vcm1hbG1lbnRlXG4gICAgICAvLyBFeGNsdWlyIGFnZW50ZXMgbm8tY3VzdG9tIHBhcmEgdXN1YXJpb3MgY29uIHJvbGVzIGRlc2hhYmlsaXRhZG9zXG4gICAgICBpZiAoXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uICYmXG4gICAgICAgICFhZ2VudERlbGV0ZWQgJiZcbiAgICAgICAgdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnRzLmZpbmQoYWdlbnQgPT4gYWdlbnQuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnIHwgJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgaXNfZnJvbV9jb252ZXJzYXRpb246IHRydWUsXG4gICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIGVzdMOhIGVuIGxhIGxpc3RhIHkgdGllbmUgYWNjZXNvL3Blcm1pc29zLCBhY3R1YWxpemFyIHByb2plY3RfZGVsZXRlZCAobyBsaW1waWFybG8gYWwgY2FtYmlhciBkZSBjaGF0KVxuICAgICAgaWYgKFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnREZWxldGVkICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICBhZ2VudHMuZmluZChhID0+IGEuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGFnZW50SW5MaXN0ID0gYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICAgaWYgKGFnZW50SW5MaXN0KSB7XG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgLi4uYWdlbnRJbkxpc3QsXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHsgcHJvamVjdF9kZWxldGVkOiB1bmRlZmluZWQgfSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gdGllbmUgYWNjZXNvIG8gcGVybWlzb3Mgc2Vnw7puIGxhIHJlc3B1ZXN0YSBkZSBzZXNzaW9ucywgc2VsZWNjaW9uYXJsbyBjb24gZWwgZmxhZyBjb3JyZXNwb25kaWVudGVcbiAgICAgIC8vIExhIHZhbGlkYWNpw7NuIGFob3JhIHNlIGJhc2EgZW4gbGFzIHByb3BpZWRhZGVzIGhhc19hZ2VudF9hY2Nlc3MgeSBoYXNfYWdlbnRfcGVybWlzc2lvbiBkZSBsYSByZXNwdWVzdGFcbiAgICAgIGlmIChhZ2VudE5vUGVybWlzc2lvbiAmJiAhYWdlbnREZWxldGVkKSB7XG4gICAgICAgIGlmICghaGFzQWdlbnRBY2Nlc3MpIHtcbiAgICAgICAgICAvLyBDYXNvIDE6IE5vIHRpZW5lIGFjY2VzbyBhbCBhZ2VudGVcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnIHwgJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgICBoYXNfbm90X2FjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNBZ2VudFBlcm1pc3Npb24pIHtcbiAgICAgICAgICAvLyBDYXNvIDI6IE5vIHRpZW5lIHBlcm1pc29zIHBhcmEgdmlzdWFsaXphci9pbnRlcmFjdHVhciBjb24gZWwgYWdlbnRlXG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyB8ICdvcmNoZXN0cmF0b3InLFxuICAgICAgICAgICAgaGFzX25vdF9wZXJtaXNzaW9uczogdHJ1ZSxcbiAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3REZWxldGVkKSB7XG4gICAgICAgICAgLy8gQ2FzbyAzOiBFbCBwcm95ZWN0byBkZSBsYSBjb252ZXJzYWNpw7NuIGZ1ZSBlbGltaW5hZG9cbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnIHwgJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyA/IHsgY29ubmVjdG9yczogYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyB9IDoge30pLFxuICAgICAgICAgICAgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEoe1xuICAgICAgICBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgfSlcblxuICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgY29uIGVsIHRhYiBkZWwgdXN1YXJpbyAobWUpXG4gICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gcHJvamVjdElkTWVzc2FnZSA/IHBhcnNlSW50KFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSwgMTApIDogbnVsbFxuICAgICAgbGV0IGl0ZW1zVG9TZXQgPSBpdGVtc1xuICAgICAgaWYgKGNvbnRleHRQcm9qZWN0SWQpIHtcbiAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICBpdGVtc1RvU2V0ID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChpdGVtLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgICAgICB9KSlcbiAgICAgIH1cbiAgICAgIHNldE1lc3NhZ2VzKGl0ZW1zVG9TZXQpXG4gICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KE51bWJlcihuZXh0SXRlbSkpXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcj8uKClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2NoYXRJZCwgY3VycmVudFVzZXIsIHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEsIG9uRXJyb3IsIGdldFRhYlRhc2tEZWZhdWx0XSlcblxuICBjb25zdCBsb2FkTW9yZU1lc3NhZ2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoaXNMb2FkaW5nUmVmLmN1cnJlbnQgfHwgIWxhc3RFdmFsdWF0ZWRLZXkgfHwgIWNvbnRhaW5lcikgcmV0dXJuXG4gICAgICB0cnkge1xuICAgICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzKHRydWUpXG5cbiAgICAgICAgY29uc3Qgb2xkU2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodFxuICAgICAgICBjb25zdCBvbGRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wXG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgIG5leHRJdGVtLFxuICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza0lkOiB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrTmFtZTogdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdE1lc3NhZ2VzKHtcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgY3VycmVudFVzZXIsXG4gICAgICAgICAgb2Zmc2V0OiBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgICAgIGxhbmc6IG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXdhaXQgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSh7XG4gICAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgZW4gbG9zIG1lbnNhamVzIGNhcmdhZG9zXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBwcm9qZWN0SWRNZXNzYWdlID8gcGFyc2VJbnQoU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLCAxMCkgOiBudWxsXG4gICAgICAgIGxldCBpdGVtc1RvTWVyZ2UgPSBpdGVtc1xuICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCkge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KDEpXG4gICAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICAgIGl0ZW1zVG9NZXJnZSA9IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgbWVzc2FnZTogcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50KGl0ZW0ubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbLi4ubWVzc2FnZXMuc2xpY2UoMCwgMSksIC4uLml0ZW1zVG9NZXJnZSwgLi4ubWVzc2FnZXMuc2xpY2UoMSldXG4gICAgICAgIHNldE1lc3NhZ2VzKG5ld01lc3NhZ2VzKVxuICAgICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KE51bWJlcihuZXh0SXRlbSkpXG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gY29udGFpbmVyXG4gICAgICAgICAgICBpZiAoY29udGFpbmVyUmVmKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1Njcm9sbEhlaWdodCA9IGNvbnRhaW5lclJlZi5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0RGlmZmVyZW5jZSA9IG5ld1Njcm9sbEhlaWdodCAtIG9sZFNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICBjb250YWluZXJSZWYuc2Nyb2xsVG9wID0gb2xkU2Nyb2xsVG9wICsgaGVpZ2h0RGlmZmVyZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBvbkVycm9yPy4oKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzKGZhbHNlKVxuICAgICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbY2hhdElkLCBjdXJyZW50VXNlciwgbGFzdEV2YWx1YXRlZEtleSwgb25FcnJvciwgbWVzc2FnZXMsIGdldFRhYlRhc2tEZWZhdWx0LCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWNvbnRhaW5lciB8fCBpc0xvYWRpbmdSZWYuY3VycmVudCB8fCAhaW5pdGlhbExvYWREb25lLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgICAgY29uc3Qgc2Nyb2xsUGVyY2VudGFnZSA9IHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCA+IDAgPyAoc2Nyb2xsVG9wIC8gKHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCkpICogMTAwIDogMFxuXG4gICAgICBpZiAoc2Nyb2xsUGVyY2VudGFnZSA8IDEwKSB7XG4gICAgICAgIGxvYWRNb3JlTWVzc2FnZXMoY29udGFpbmVyKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2xvYWRNb3JlTWVzc2FnZXNdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGF0SWQgIT09IHByZXZpb3VzQ2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIHNldE1lc3NhZ2VzKFxuICAgICAgICB1c2VySW5pdGlhbE1lc3NhZ2VcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAndXNlci1pbml0aWFsLW1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICAgICAgICAgICAgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCxcbiAgICAgICAgICAgICAgICAgIHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IFtdXG4gICAgICApXG4gICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KDApXG4gICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IGZhbHNlXG4gICAgICBwcmV2aW91c0NoYXRJZC5jdXJyZW50ID0gY2hhdElkXG5cbiAgICAgIC8vIExpbXBpYXIgZWwgZXN0YWRvIGRlbCBwcm95ZWN0byB5IGxhIHRhcmVhIGN1YW5kbyBjYW1iaWEgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG5cbiAgICAgIC8vIFZvbHZlciBhIGVqZWN1dGFyIGxhIHF1ZXJ5IG1lIHBhcmEgdGVuZXIgdGFiVGFza0RlZmF1bHQgYWN0dWFsaXphZG8gZW4gbGEgbnVldmEgY29udmVyc2FjacOzblxuICAgICAgcmVmZXRjaFRhYlRhc2tEZWZhdWx0KClcblxuICAgICAgaWYgKCF1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgICAgbG9hZE1lc3NhZ2VzKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBjaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIGN1cnJlbnRVc2VyLFxuICAgIGxvYWRNZXNzYWdlcyxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRUYXNrLFxuICAgIHJlZmV0Y2hUYWJUYXNrRGVmYXVsdCxcbiAgXSlcblxuICAvLyBDdWFuZG8gdGFiVGFza0RlZmF1bHQgcGFzYSBhIGVzdGFyIGRpc3BvbmlibGUgZGVzcHXDqXMgZGUgY2FyZ2FyLCByZWVzY3JpYmlyIFVSTHMgZGUgdGFyZWFzIGVuIGxvcyBtZW5zYWplcyB5YSBjYXJnYWRvcy5cbiAgLy8gUmVmIHBhcmEgZXZpdGFyIGJ1Y2xlOiBzZXRNZXNzYWdlcyhyZXdyaXR0ZW4pIGNhbWJpYSBtZXNzYWdlcyB5IHJlLWVqZWN1dGEgZWwgZWZlY3RvOyBzb2xvIHJlZXNjcmliaW1vcyB1bmEgdmV6IHBvciBsb3RlLlxuICBjb25zdCBkaWRSZXdyaXRlUmVmID0gdXNlUmVmKGZhbHNlKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdGFiVGFza0RlZmF1bHQgfHwgIXByb2plY3Q/LmlkIHx8IG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgY29uc3QgdGFiU2VnbWVudCA9IGAvJHt0YWJUYXNrRGVmYXVsdH1gXG4gICAgY29uc3QgbmVlZHNSZXdyaXRlID0gbWVzc2FnZXMuc29tZShtc2cgPT4ge1xuICAgICAgY29uc3QgY29udGVudCA9IG1zZy5tZXNzYWdlIHx8ICcnXG4gICAgICBjb25zdCBtYXRjaGVzID0gY29udGVudC5tYXRjaCh0YXNrVXJsUmVnZXgpXG4gICAgICBpZiAoIW1hdGNoZXM/Lmxlbmd0aCkgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gbWF0Y2hlcy5zb21lKHVybCA9PiAhdXJsLmVuZHNXaXRoKGAvJHt0YWJUYXNrRGVmYXVsdH1gKSAmJiAhdXJsLmluY2x1ZGVzKGAvJHt0YWJUYXNrRGVmYXVsdH0/YCkpXG4gICAgfSlcbiAgICBpZiAoIW5lZWRzUmV3cml0ZSkge1xuICAgICAgZGlkUmV3cml0ZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZGlkUmV3cml0ZVJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBkaWRSZXdyaXRlUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgY29uc3QgcmV3cml0dGVuID0gbWVzc2FnZXMubWFwKG1zZyA9PiAoe1xuICAgICAgLi4ubXNnLFxuICAgICAgbWVzc2FnZTogcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50KG1zZy5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICB9KSlcbiAgICBzZXRNZXNzYWdlcyhyZXdyaXR0ZW4pXG4gIH0sIFt0YWJUYXNrRGVmYXVsdCwgcHJvamVjdD8uaWQsIG1lc3NhZ2VzXSlcblxuICBjb25zdCBhZGRNZXNzYWdlID0gdXNlQ2FsbGJhY2soKG1lc3NhZ2U6IENoYXRNZXNzYWdlKSA9PiB7XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2VJbmRleCA9IHByZXYuZmluZEluZGV4KG1zZyA9PiBtc2cuaWQgPT09IG1lc3NhZ2UuaWQpXG5cbiAgICAgIGlmIChleGlzdGluZ01lc3NhZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld01lc3NhZ2VzID0gWy4uLnByZXZdXG4gICAgICAgIG5ld01lc3NhZ2VzW2V4aXN0aW5nTWVzc2FnZUluZGV4XSA9IG1lc3NhZ2VcbiAgICAgICAgcmV0dXJuIG5ld01lc3NhZ2VzXG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLnByZXYsIG1lc3NhZ2VdXG4gICAgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgcmVtb3ZlTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChtZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4gcHJldi5maWx0ZXIobXNnID0+IG1zZy5pZCAhPT0gbWVzc2FnZUlkKSlcbiAgfSwgW10pXG5cbiAgcmV0dXJuIHtcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgbWVzc2FnZXMsXG4gICAgaGFzTW9yZU1lc3NhZ2VzOiAhIWxhc3RFdmFsdWF0ZWRLZXksXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIGxvYWRNZXNzYWdlcyxcbiAgICBsb2FkTW9yZU1lc3NhZ2VzLFxuICAgIGFkZE1lc3NhZ2UsXG4gICAgcmVtb3ZlTWVzc2FnZSxcbiAgICBoYW5kbGVTY3JvbGwsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDaEUsU0FBU0MsV0FBVyxRQUFRLGdCQUFnQjtBQUU1QyxTQUFTQyxtQkFBbUIsUUFBUSw0QkFBNEI7QUFDaEUsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUV0QyxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFDOUIsU0FBU0MsT0FBTyxRQUFRLHdCQUF3QjtBQUNoRCxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBc0I7QUFDeEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLFVBQVUsUUFBUSxrQkFBa0I7QUFDN0MsU0FBU0Msa0NBQWtDLFFBQVEsc0NBQXNDO0FBRXpGLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLE9BQWUsRUFBRUMsVUFBa0IsRUFBYTtFQUNoRixJQUFNQyxZQUFZLEdBQUcsSUFBSUMsTUFBTSxDQUFDUCxzQkFBc0IsRUFBRSxHQUFHLENBQUM7RUFDNUQsT0FBT0ksT0FBTyxDQUFDSSxPQUFPLENBQUNGLFlBQVksRUFBRSxVQUFBRyxHQUFHO0lBQUEsT0FDdENBLEdBQUcsQ0FBQ0QsT0FBTyxDQUFDLHlEQUF5RCxFQUFFSCxVQUFVLENBQUM7RUFBQSxDQUNwRixDQUFDO0FBQ0gsQ0FBQztBQUVELE9BQU8sSUFBTUssZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFBQyxJQUFBLEVBTUE7RUFBQSxJQUFBQyxpQkFBQTtFQUFBLElBTDFCQyxPQUFPLEdBQUFGLElBQUEsQ0FBUEUsT0FBTztJQUNQQyxNQUFNLEdBQUFILElBQUEsQ0FBTkcsTUFBTTtJQUNOQyxXQUFXLEdBQUFKLElBQUEsQ0FBWEksV0FBVztJQUNYQyxrQkFBa0IsR0FBQUwsSUFBQSxDQUFsQkssa0JBQWtCO0lBQUFDLFdBQUEsR0FBQU4sSUFBQSxDQUNsQk8sTUFBTTtJQUFOQSxNQUFNLEdBQUFELFdBQUEsY0FBRyxFQUFFLEdBQUFBLFdBQUE7RUFFWCxJQUFBRSxLQUFBLEdBQW9CdEIsSUFBSSxDQUFDLENBQUM7SUFBbEJ1QixDQUFDLEdBQUFELEtBQUEsQ0FBREMsQ0FBQztJQUFFQyxJQUFJLEdBQUFGLEtBQUEsQ0FBSkUsSUFBSTtFQUNmLElBQU1DLElBQUksR0FBR3hCLE9BQU8sQ0FBQyxDQUFDO0VBQ3RCLElBQU15QixlQUFlLEdBQUdELElBQUksYUFBSkEsSUFBSSxnQkFBQVYsaUJBQUEsR0FBSlUsSUFBSSxDQUFFRSxXQUFXLGNBQUFaLGlCQUFBLHVCQUFqQkEsaUJBQUEsQ0FBbUJhLFNBQVM7RUFDcEQsSUFBQUMsU0FBQSxHQUE4Q3BDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXFDLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQXRERyxlQUFlLEdBQUFGLFVBQUE7SUFBRUcsa0JBQWtCLEdBQUFILFVBQUE7RUFDMUMsSUFBQUksVUFBQSxHQUFnQ3pDLFFBQVEsQ0FDdEMwQixrQkFBa0IsR0FDZCxDQUFBZ0IsYUFBQSxDQUFBQSxhQUFBO01BRUlDLEVBQUUsRUFBRSxzQkFBc0I7TUFDMUJDLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsQ0FBQztNQUNoQmIsSUFBSSxFQUFFUCxXQUFXO01BQ2pCcUIsT0FBTyxFQUFFbEMsa0NBQWtDLENBQUNjLGtCQUFrQixDQUFDb0IsT0FBTyxFQUFFO1FBQ3RFQyxLQUFLLEVBQUVyQixrQkFBa0IsQ0FBQ3FCLEtBQUs7UUFDL0JDLElBQUksRUFBRXRCLGtCQUFrQixDQUFDc0I7TUFDM0IsQ0FBQztJQUFDLEdBQ0V0QixrQkFBa0IsQ0FBQ3VCLFdBQVcsR0FBRztNQUFFQSxXQUFXLEVBQUV2QixrQkFBa0IsQ0FBQ3VCO0lBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNyRjdDLG1CQUFtQixDQUFDc0Isa0JBQWtCLENBQUN3QixRQUFRLENBQUMsR0FDaEQ7TUFBRUMsY0FBYyxFQUFFL0MsbUJBQW1CLENBQUNzQixrQkFBa0IsQ0FBQ3dCLFFBQVE7SUFBRSxDQUFDLEdBQ3BFLENBQUMsQ0FBQyxFQUVULEdBQ0QsRUFDTixDQUFDO0lBQUFFLFVBQUEsR0FBQWQsY0FBQSxDQUFBRyxVQUFBO0lBbEJNWSxRQUFRLEdBQUFELFVBQUE7SUFBRUUsV0FBVyxHQUFBRixVQUFBO0VBbUI1QixJQUFBRyxZQUFBLEdBQTBCcEQsV0FBVyxDQUFDLENBQUM7SUFBL0JxRCxhQUFhLEdBQUFELFlBQUEsQ0FBYkMsYUFBYTtFQUNyQixJQUFBQyxpQkFBQSxHQUFrRm5ELGdCQUFnQixDQUFDLENBQUM7SUFBNUZvRCxXQUFXLEdBQUFELGlCQUFBLENBQVhDLFdBQVc7SUFBRUMsZUFBZSxHQUFBRixpQkFBQSxDQUFmRSxlQUFlO0lBQUVDLFVBQVUsR0FBQUgsaUJBQUEsQ0FBVkcsVUFBVTtJQUFFQyxTQUFTLEdBQUFKLGlCQUFBLENBQVRJLFNBQVM7SUFBRUMsT0FBTyxHQUFBTCxpQkFBQSxDQUFQSyxPQUFPO0lBQUVDLE9BQU8sR0FBQU4saUJBQUEsQ0FBUE0sT0FBTztFQUM3RSxJQUFBQyxrQkFBQSxHQUFxRXZELGlCQUFpQixDQUFDLENBQUM7SUFBaEZ3RCxpQkFBaUIsR0FBQUQsa0JBQUEsQ0FBakJDLGlCQUFpQjtJQUFFQyxjQUFjLEdBQUFGLGtCQUFBLENBQWRFLGNBQWM7SUFBRUMscUJBQXFCLEdBQUFILGtCQUFBLENBQXJCRyxxQkFBcUI7RUFDaEUsSUFBQUMsVUFBQSxHQUEwRHBFLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXFFLFVBQUEsR0FBQS9CLGNBQUEsQ0FBQThCLFVBQUE7SUFBbEVFLHFCQUFxQixHQUFBRCxVQUFBO0lBQUVFLHdCQUF3QixHQUFBRixVQUFBO0VBQ3RELElBQUFHLFVBQUEsR0FBZ0R4RSxRQUFRLENBQXFCLENBQUMsQ0FBQztJQUFBeUUsVUFBQSxHQUFBbkMsY0FBQSxDQUFBa0MsVUFBQTtJQUF4RUUsZ0JBQWdCLEdBQUFELFVBQUE7SUFBRUUsbUJBQW1CLEdBQUFGLFVBQUE7RUFDNUMsSUFBTUcsWUFBWSxHQUFHM0UsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNsQyxJQUFNNEUsZUFBZSxHQUFHNUUsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNyQyxJQUFNNkUsY0FBYyxHQUFHN0UsTUFBTSxDQUFDdUIsTUFBTSxDQUFDO0VBRXJDLElBQU11RCxrQ0FBa0MsR0FBR2hGLFdBQVc7SUFBQSxJQUFBaUYsS0FBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQ3BELFNBQUFDLFFBQUFDLEtBQUE7TUFBQSxJQUFBQyxnQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxRQUFBLEVBQUFDLG9CQUFBLEVBQUFDLFlBQUEsRUFBQUMsWUFBQSxFQUFBQyxvQkFBQTtNQUFBLE9BQUFkLG1CQUFBLENBQUFlLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1VBQUE7WUFDRWQsZ0JBQWdCLEdBQUFELEtBQUEsQ0FBaEJDLGdCQUFnQixFQUNoQkMsc0JBQXNCLEdBQUFGLEtBQUEsQ0FBdEJFLHNCQUFzQixFQUN0QkMsbUJBQW1CLEdBQUFILEtBQUEsQ0FBbkJHLG1CQUFtQixFQUNuQkMscUJBQXFCLEdBQUFKLEtBQUEsQ0FBckJJLHFCQUFxQixFQUNyQkMsaUJBQWlCLEdBQUFMLEtBQUEsQ0FBakJLLGlCQUFpQixFQUNqQkMsbUJBQW1CLEdBQUFOLEtBQUEsQ0FBbkJNLG1CQUFtQjtZQVNuQjtZQUNBO1lBQ0EsSUFBSUQsaUJBQWlCLElBQUksSUFBSSxJQUFJQyxtQkFBbUIsRUFBRTtjQUNwRDdCLE9BQU8sQ0FBQztnQkFBRW5CLEVBQUUsRUFBRStDLGlCQUFpQjtnQkFBRVcsSUFBSSxFQUFFVjtjQUFvQixDQUFDLENBQUM7WUFDL0QsQ0FBQyxNQUFNO2NBQ0w3QixPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2Y7O1lBRUE7WUFBQSxNQUNJMEIsbUJBQW1CLElBQUksSUFBSSxJQUFJQyxxQkFBcUI7Y0FBQVMsUUFBQSxDQUFBRSxJQUFBO2NBQUE7WUFBQTtZQUN0RHZDLFNBQVMsQ0FBQztjQUFFbEIsRUFBRSxFQUFFMkQsTUFBTSxDQUFDZCxtQkFBbUIsQ0FBQztjQUFFYSxJQUFJLEVBQUVaO1lBQXNCLENBQUMsQ0FBQztZQUMzRTlCLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDckJDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFBQSxPQUFBc0MsUUFBQSxDQUFBSyxNQUFBO1VBQUE7WUFBQUwsUUFBQSxDQUFBRSxJQUFBO1lBQUEsT0FJSzVDLGFBQWEsQ0FBQzhCLGdCQUFnQixDQUFDO1VBQUE7WUFBaERNLFFBQVEsR0FBQU0sUUFBQSxDQUFBTSxJQUFBO1lBQ1JYLG9CQUFvQixHQUFHLENBQUMsQ0FBQ1ksTUFBTSxDQUFDQyx3Q0FBd0M7WUFFOUUsSUFBSXBCLGdCQUFnQixJQUFJTyxvQkFBb0IsRUFBRTtjQUN0Q0MsWUFBWSxHQUFHUSxNQUFNLENBQUNoQixnQkFBZ0IsQ0FBQztjQUN2Q1MsWUFBWSxHQUFHSCxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRWUsSUFBSSxDQUFDLFVBQUFDLENBQUM7Z0JBQUEsT0FBSU4sTUFBTSxDQUFDTSxDQUFDLENBQUNqRSxFQUFFLENBQUMsS0FBS21ELFlBQVk7Y0FBQSxFQUFDO2NBRXZFLElBQUlDLFlBQVksRUFBRTtnQkFDaEJwQyxlQUFlLENBQUM7a0JBQ2RrRCxXQUFXLEVBQUVkLFlBQVksQ0FBQ00sSUFBSTtrQkFDOUJTLFVBQVUsRUFBRSxFQUFBZCxvQkFBQSxHQUFBRCxZQUFZLENBQUNnQixNQUFNLGNBQUFmLG9CQUFBLHVCQUFuQkEsb0JBQUEsQ0FBcUJLLElBQUksS0FBSSxFQUFFO2tCQUMzQ1csU0FBUyxFQUFFQyxNQUFNLENBQUNsQixZQUFZLENBQUNwRCxFQUFFO2dCQUNuQyxDQUFDLENBQUM7Z0JBQ0ZpQixVQUFVLENBQUNtQyxZQUFZLENBQUM7Y0FDMUIsQ0FBQyxNQUFNLElBQUlSLHNCQUFzQixFQUFFO2dCQUNqQzVCLGVBQWUsQ0FBQztrQkFDZGtELFdBQVcsRUFBRXRCLHNCQUFzQjtrQkFDbkN1QixVQUFVLEVBQUUsRUFBRTtrQkFDZEUsU0FBUyxFQUFFQyxNQUFNLENBQUMzQixnQkFBZ0I7Z0JBQ3BDLENBQUMsQ0FBQztnQkFDRjFCLFVBQVUsQ0FBQztrQkFBRWpCLEVBQUUsRUFBRW1ELFlBQVk7a0JBQUVPLElBQUksRUFBRWQ7Z0JBQXVCLENBQUMsQ0FBQztjQUNoRSxDQUFDLE1BQU07Z0JBQ0w1QixlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUNyQkMsVUFBVSxDQUFDLElBQUksQ0FBQztjQUNsQjtjQUVBQyxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFHLElBQUksQ0FBQztZQUNuQixDQUFDLE1BQU07Y0FDTEYsZUFBZSxDQUFDLElBQUksQ0FBQztjQUNyQkMsVUFBVSxDQUFDLElBQUksQ0FBQztjQUNoQkMsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRyxJQUFJLENBQUM7WUFDbkI7VUFBQztVQUFBO1lBQUEsT0FBQXFDLFFBQUEsQ0FBQWdCLElBQUE7UUFBQTtNQUFBLEdBQUE5QixPQUFBO0lBQUEsQ0FDRjtJQUFBLGlCQUFBK0IsRUFBQTtNQUFBLE9BQUFuQyxLQUFBLENBQUFvQyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtFQUFBLEtBQ0QsQ0FBQzdELGFBQWEsRUFBRUssU0FBUyxFQUFFRixlQUFlLEVBQUVDLFVBQVUsRUFBRUUsT0FBTyxDQUNqRSxDQUFDO0VBRUQsSUFBTXdELFlBQVksR0FBR3ZILFdBQVcsY0FBQWtGLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBb0MsU0FBQTtJQUFBLElBQUFDLHFCQUFBLEVBQUFDLEtBQUEsRUFBQUMsUUFBQSxFQUFBQyxZQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGNBQUEsRUFBQUMsa0JBQUEsRUFBQXhDLGdCQUFBLEVBQUFDLHNCQUFBLEVBQUF3QyxjQUFBLEVBQUF2QyxtQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxtQkFBQSxFQUFBcUMsV0FBQSxFQUFBQyxnQkFBQSxFQUFBQyxVQUFBLEVBQUFDLEdBQUEsRUFBQXBILFVBQUEsRUFBQXFILEVBQUE7SUFBQSxPQUFBbEQsbUJBQUEsQ0FBQWUsSUFBQSxXQUFBb0MsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsQyxJQUFBLEdBQUFrQyxTQUFBLENBQUFqQyxJQUFBO1FBQUE7VUFBQWlDLFNBQUEsQ0FBQWxDLElBQUE7VUFFN0IzRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7VUFDeEJxQyxlQUFlLENBQUN5RCxPQUFPLEdBQUcsS0FBSztVQUFBRCxTQUFBLENBQUFqQyxJQUFBO1VBQUEsT0FlckIvRixJQUFJLENBQUNrSSxLQUFLLENBQUNDLGVBQWUsQ0FBQztZQUNuQ2hILE1BQU0sRUFBTkEsTUFBTTtZQUNOQyxXQUFXLEVBQVhBLFdBQVc7WUFDWGdILE1BQU0sRUFBRS9ELGdCQUFnQjtZQUN4QmdFLGFBQWEsRUFBRTVHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNsQzZHLElBQUksRUFBRWhJLFVBQVUsQ0FBQ29CLElBQUksQ0FBQzZHLFFBQVE7VUFDaEMsQ0FBQyxDQUFDO1FBQUE7VUFBQXBCLHFCQUFBLEdBQUFhLFNBQUEsQ0FBQTdCLElBQUE7VUFuQkFpQixLQUFLLEdBQUFELHFCQUFBLENBQUxDLEtBQUs7VUFDTEMsUUFBUSxHQUFBRixxQkFBQSxDQUFSRSxRQUFRO1VBQ1JDLFlBQVksR0FBQUgscUJBQUEsQ0FBWkcsWUFBWTtVQUNaQyxpQkFBaUIsR0FBQUoscUJBQUEsQ0FBakJJLGlCQUFpQjtVQUNqQkMsY0FBYyxHQUFBTCxxQkFBQSxDQUFkSyxjQUFjO1VBQ2RDLGtCQUFrQixHQUFBTixxQkFBQSxDQUFsQk0sa0JBQWtCO1VBQ1B4QyxnQkFBZ0IsR0FBQWtDLHFCQUFBLENBQTNCUixTQUFTO1VBQ0l6QixzQkFBc0IsR0FBQWlDLHFCQUFBLENBQW5DWCxXQUFXO1VBQ1hrQixjQUFjLEdBQUFQLHFCQUFBLENBQWRPLGNBQWM7VUFDSnZDLG1CQUFtQixHQUFBZ0MscUJBQUEsQ0FBN0JxQixRQUFRO1VBQ0lwRCxxQkFBcUIsR0FBQStCLHFCQUFBLENBQWpDVixVQUFVO1VBQ0ZwQixpQkFBaUIsR0FBQThCLHFCQUFBLENBQXpCc0IsTUFBTTtVQUNJbkQsbUJBQW1CLEdBQUE2QixxQkFBQSxDQUE3QnVCLFFBQVE7VUFRVixJQUFJcEIsWUFBWSxFQUFFO1lBQ2hCakUsV0FBVyxDQUFBaEIsYUFBQTtjQUNUQyxFQUFFLEVBQUVnRixZQUFZLENBQUNoRixFQUFFO2NBQ25CMEQsSUFBSSxFQUFFc0IsWUFBWSxDQUFDdEIsSUFBSTtjQUN2QjJDLEtBQUssRUFBRXJCLFlBQVksQ0FBQ3FCLEtBQUs7Y0FDekJDLElBQUksRUFBRSxRQUFRO2NBQ2RDLFVBQVUsRUFBRSxJQUFJO2NBQ2hCQyxVQUFVLEVBQUV4QixZQUFZLENBQUN5QjtZQUFTLEdBQzlCeEIsaUJBQWlCLGFBQWpCQSxpQkFBaUIsZUFBakJBLGlCQUFpQixDQUFFeUIsVUFBVSxHQUFHO2NBQUVBLFVBQVUsRUFBRXpCLGlCQUFpQixDQUFDeUI7WUFBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3RGLENBQUM7VUFDSjs7VUFFQTtVQUNBO1VBQ0EsSUFDRXpCLGlCQUFpQixJQUNqQixDQUFDRCxZQUFZLElBQ2IxRixlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFFcUgsSUFBSSxJQUNyQnpCLGNBQWMsSUFDZEMsa0JBQWtCLElBQ2xCLENBQUNsRyxNQUFNLENBQUMrRSxJQUFJLENBQUMsVUFBQTRDLEtBQUs7WUFBQSxPQUFJQSxLQUFLLENBQUM1RyxFQUFFLEtBQUtpRixpQkFBaUIsQ0FBQ2pGLEVBQUU7VUFBQSxFQUFDLEVBQ3hEO1lBQ0FlLFdBQVcsQ0FBQWhCLGFBQUEsQ0FBQUEsYUFBQTtjQUNUQyxFQUFFLEVBQUVpRixpQkFBaUIsQ0FBQ2pGLEVBQUU7Y0FDeEIwRCxJQUFJLEVBQUV1QixpQkFBaUIsQ0FBQ3ZCLElBQUk7Y0FDNUIyQyxLQUFLLEVBQUVwQixpQkFBaUIsQ0FBQ29CLEtBQUs7Y0FDOUJDLElBQUksRUFBRXJCLGlCQUFpQixDQUFDcUIsSUFBa0Q7Y0FDMUVPLG9CQUFvQixFQUFFO1lBQUksR0FDdEI1QixpQkFBaUIsQ0FBQ3lCLFVBQVUsR0FBRztjQUFFQSxVQUFVLEVBQUV6QixpQkFBaUIsQ0FBQ3lCO1lBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNoRnRCLGNBQWMsR0FBRztjQUFFMEIsZUFBZSxFQUFFO2dCQUFFcEQsSUFBSSxFQUFFMEIsY0FBYyxDQUFDMUI7Y0FBSztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDN0UsQ0FBQztVQUNKOztVQUVBO1VBQ0EsSUFDRXVCLGlCQUFpQixJQUNqQixDQUFDRCxZQUFZLElBQ2JFLGNBQWMsSUFDZEMsa0JBQWtCLElBQ2xCbEcsTUFBTSxDQUFDK0UsSUFBSSxDQUFDLFVBQUErQyxDQUFDO1lBQUEsT0FBSUEsQ0FBQyxDQUFDL0csRUFBRSxLQUFLaUYsaUJBQWlCLENBQUNqRixFQUFFO1VBQUEsRUFBQyxFQUMvQztZQUNNcUYsV0FBVyxHQUFHcEcsTUFBTSxDQUFDK0UsSUFBSSxDQUFDLFVBQUErQyxDQUFDO2NBQUEsT0FBSUEsQ0FBQyxDQUFDL0csRUFBRSxLQUFLaUYsaUJBQWlCLENBQUNqRixFQUFFO1lBQUEsRUFBQztZQUNuRSxJQUFJcUYsV0FBVyxFQUFFO2NBQ2Z0RSxXQUFXLENBQUFoQixhQUFBLENBQUFBLGFBQUEsS0FDTnNGLFdBQVcsR0FDVkQsY0FBYyxHQUFHO2dCQUFFMEIsZUFBZSxFQUFFO2tCQUFFcEQsSUFBSSxFQUFFMEIsY0FBYyxDQUFDMUI7Z0JBQUs7Y0FBRSxDQUFDLEdBQUc7Z0JBQUVvRCxlQUFlLEVBQUVFO2NBQVUsQ0FBQyxDQUN6RyxDQUFDO1lBQ0o7VUFDRjs7VUFFQTtVQUNBO1VBQ0EsSUFBSS9CLGlCQUFpQixJQUFJLENBQUNELFlBQVksRUFBRTtZQUN0QyxJQUFJLENBQUNFLGNBQWMsRUFBRTtjQUNuQjtjQUNBbkUsV0FBVyxDQUFBaEIsYUFBQSxDQUFBQSxhQUFBO2dCQUNUQyxFQUFFLEVBQUVpRixpQkFBaUIsQ0FBQ2pGLEVBQUU7Z0JBQ3hCMEQsSUFBSSxFQUFFdUIsaUJBQWlCLENBQUN2QixJQUFJO2dCQUM1QjJDLEtBQUssRUFBRXBCLGlCQUFpQixDQUFDb0IsS0FBSztnQkFDOUJDLElBQUksRUFBRXJCLGlCQUFpQixDQUFDcUIsSUFBa0Q7Z0JBQzFFVyxjQUFjLEVBQUU7Y0FBSSxHQUNoQmhDLGlCQUFpQixDQUFDeUIsVUFBVSxHQUFHO2dCQUFFQSxVQUFVLEVBQUV6QixpQkFBaUIsQ0FBQ3lCO2NBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNoRnRCLGNBQWMsR0FBRztnQkFBRTBCLGVBQWUsRUFBRTtrQkFBRXBELElBQUksRUFBRTBCLGNBQWMsQ0FBQzFCO2dCQUFLO2NBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM3RSxDQUFDO1lBQ0osQ0FBQyxNQUFNLElBQUksQ0FBQ3lCLGtCQUFrQixFQUFFO2NBQzlCO2NBQ0FwRSxXQUFXLENBQUFoQixhQUFBLENBQUFBLGFBQUE7Z0JBQ1RDLEVBQUUsRUFBRWlGLGlCQUFpQixDQUFDakYsRUFBRTtnQkFDeEIwRCxJQUFJLEVBQUV1QixpQkFBaUIsQ0FBQ3ZCLElBQUk7Z0JBQzVCMkMsS0FBSyxFQUFFcEIsaUJBQWlCLENBQUNvQixLQUFLO2dCQUM5QkMsSUFBSSxFQUFFckIsaUJBQWlCLENBQUNxQixJQUFrRDtnQkFDMUVZLG1CQUFtQixFQUFFO2NBQUksR0FDckJqQyxpQkFBaUIsQ0FBQ3lCLFVBQVUsR0FBRztnQkFBRUEsVUFBVSxFQUFFekIsaUJBQWlCLENBQUN5QjtjQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDaEZ0QixjQUFjLEdBQUc7Z0JBQUUwQixlQUFlLEVBQUU7a0JBQUVwRCxJQUFJLEVBQUUwQixjQUFjLENBQUMxQjtnQkFBSztjQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDN0UsQ0FBQztZQUNKLENBQUMsTUFBTSxJQUFJMEIsY0FBYyxFQUFFO2NBQ3pCO2NBQ0FyRSxXQUFXLENBQUFoQixhQUFBLENBQUFBLGFBQUE7Z0JBQ1RDLEVBQUUsRUFBRWlGLGlCQUFpQixDQUFDakYsRUFBRTtnQkFDeEIwRCxJQUFJLEVBQUV1QixpQkFBaUIsQ0FBQ3ZCLElBQUk7Z0JBQzVCMkMsS0FBSyxFQUFFcEIsaUJBQWlCLENBQUNvQixLQUFLO2dCQUM5QkMsSUFBSSxFQUFFckIsaUJBQWlCLENBQUNxQjtjQUFrRCxHQUN0RXJCLGlCQUFpQixDQUFDeUIsVUFBVSxHQUFHO2dCQUFFQSxVQUFVLEVBQUV6QixpQkFBaUIsQ0FBQ3lCO2NBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEZJLGVBQWUsRUFBRTtrQkFBRXBELElBQUksRUFBRTBCLGNBQWMsQ0FBQzFCO2dCQUFLO2NBQUMsRUFDL0MsQ0FBQztZQUNKO1VBQ0Y7VUFBQ2dDLFNBQUEsQ0FBQWpDLElBQUE7VUFBQSxPQUVLckIsa0NBQWtDLENBQUM7WUFDdkNPLGdCQUFnQixFQUFoQkEsZ0JBQWdCO1lBQ2hCQyxzQkFBc0IsRUFBdEJBLHNCQUFzQjtZQUN0QkMsbUJBQW1CLEVBQW5CQSxtQkFBbUI7WUFDbkJDLHFCQUFxQixFQUFyQkEscUJBQXFCO1lBQ3JCQyxpQkFBaUIsRUFBakJBLGlCQUFpQjtZQUNqQkMsbUJBQW1CLEVBQW5CQTtVQUNGLENBQUMsQ0FBQztRQUFBO1VBRUY7VUFDTXNDLGdCQUFnQixHQUFHM0MsZ0JBQWdCLEdBQUd3RSxRQUFRLENBQUM3QyxNQUFNLENBQUMzQixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUk7VUFDckY0QyxVQUFVLEdBQUdULEtBQUs7VUFBQSxLQUNsQlEsZ0JBQWdCO1lBQUFJLFNBQUEsQ0FBQWpDLElBQUE7WUFBQTtVQUFBO1VBQUFpQyxTQUFBLENBQUFqQyxJQUFBO1VBQUEsT0FDQW5DLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUFBO1VBQWhDa0UsR0FBRyxHQUFBRSxTQUFBLENBQUE3QixJQUFBO1VBQ0h6RixVQUFVLEdBQUdvSCxHQUFHLE9BQUE0QixNQUFBLENBQU81QixHQUFHLElBQUssU0FBUztVQUM5Q0QsVUFBVSxHQUFHVCxLQUFLLENBQUN1QyxHQUFHLENBQUMsVUFBQUMsSUFBSTtZQUFBLE9BQUF2SCxhQUFBLENBQUFBLGFBQUEsS0FDdEJ1SCxJQUFJO2NBQ1BuSCxPQUFPLEVBQUVqQyx3QkFBd0IsQ0FBQ29KLElBQUksQ0FBQ25ILE9BQU8sSUFBSSxFQUFFLEVBQUUvQixVQUFVO1lBQUM7VUFBQSxDQUNqRSxDQUFDO1FBQUE7VUFFTHVDLFdBQVcsQ0FBQzRFLFVBQVUsQ0FBQztVQUN2QnZELG1CQUFtQixDQUFDMkIsTUFBTSxDQUFDb0IsUUFBUSxDQUFDLENBQUM7VUFDckM3QyxlQUFlLENBQUN5RCxPQUFPLEdBQUcsSUFBSTtVQUFBRCxTQUFBLENBQUFqQyxJQUFBO1VBQUE7UUFBQTtVQUFBaUMsU0FBQSxDQUFBbEMsSUFBQTtVQUFBaUMsRUFBQSxHQUFBQyxTQUFBO1VBRTlCOUcsT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRyxDQUFDO1FBQUE7VUFBQThHLFNBQUEsQ0FBQWxDLElBQUE7VUFFWDNELGtCQUFrQixDQUFDLEtBQUssQ0FBQztVQUFBLE9BQUE2RixTQUFBLENBQUE2QixNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUE3QixTQUFBLENBQUFuQixJQUFBO01BQUE7SUFBQSxHQUFBSyxRQUFBO0VBQUEsQ0FFNUIsSUFBRSxDQUFDL0YsTUFBTSxFQUFFQyxXQUFXLEVBQUVzRCxrQ0FBa0MsRUFBRXhELE9BQU8sRUFBRTBDLGlCQUFpQixDQUFDLENBQUM7RUFFekYsSUFBTWtHLGdCQUFnQixHQUFHcEssV0FBVztJQUFBLElBQUFxSyxLQUFBLEdBQUFuRixpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQ2xDLFNBQUFrRixTQUFPQyxTQUFnQztNQUFBLElBQUFDLGVBQUEsRUFBQUMsWUFBQSxFQUFBQyxzQkFBQSxFQUFBaEQsS0FBQSxFQUFBQyxRQUFBLEVBQUFwQyxnQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxtQkFBQSxFQUFBc0MsZ0JBQUEsRUFBQXlDLFlBQUEsRUFBQXZDLEdBQUEsRUFBQXBILFVBQUEsRUFBQTRKLFdBQUEsRUFBQUMsR0FBQTtNQUFBLE9BQUExRixtQkFBQSxDQUFBZSxJQUFBLFdBQUE0RSxTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQTFFLElBQUEsR0FBQTBFLFNBQUEsQ0FBQXpFLElBQUE7VUFBQTtZQUFBLE1BQ2pDeEIsWUFBWSxDQUFDMEQsT0FBTyxJQUFJLENBQUM1RCxnQkFBZ0IsSUFBSSxDQUFDNEYsU0FBUztjQUFBTyxTQUFBLENBQUF6RSxJQUFBO2NBQUE7WUFBQTtZQUFBLE9BQUF5RSxTQUFBLENBQUF0RSxNQUFBO1VBQUE7WUFBQXNFLFNBQUEsQ0FBQTFFLElBQUE7WUFFekR2QixZQUFZLENBQUMwRCxPQUFPLEdBQUcsSUFBSTtZQUMzQi9ELHdCQUF3QixDQUFDLElBQUksQ0FBQztZQUV4QmdHLGVBQWUsR0FBR0QsU0FBUyxDQUFDUSxZQUFZO1lBQ3hDTixZQUFZLEdBQUdGLFNBQVMsQ0FBQ1MsU0FBUztZQUFBRixTQUFBLENBQUF6RSxJQUFBO1lBQUEsT0FXOUIvRixJQUFJLENBQUNrSSxLQUFLLENBQUNDLGVBQWUsQ0FBQztjQUNuQ2hILE1BQU0sRUFBTkEsTUFBTTtjQUNOQyxXQUFXLEVBQVhBLFdBQVc7Y0FDWGdILE1BQU0sRUFBRS9ELGdCQUFnQjtjQUN4QmlFLElBQUksRUFBRWhJLFVBQVUsQ0FBQ29CLElBQUksQ0FBQzZHLFFBQVE7WUFDaEMsQ0FBQyxDQUFDO1VBQUE7WUFBQTZCLHNCQUFBLEdBQUFJLFNBQUEsQ0FBQXJFLElBQUE7WUFiQWlCLEtBQUssR0FBQWdELHNCQUFBLENBQUxoRCxLQUFLO1lBQ0xDLFFBQVEsR0FBQStDLHNCQUFBLENBQVIvQyxRQUFRO1lBQ0dwQyxnQkFBZ0IsR0FBQW1GLHNCQUFBLENBQTNCekQsU0FBUztZQUNJekIsc0JBQXNCLEdBQUFrRixzQkFBQSxDQUFuQzVELFdBQVc7WUFDRHJCLG1CQUFtQixHQUFBaUYsc0JBQUEsQ0FBN0I1QixRQUFRO1lBQ0lwRCxxQkFBcUIsR0FBQWdGLHNCQUFBLENBQWpDM0QsVUFBVTtZQUNGcEIsaUJBQWlCLEdBQUErRSxzQkFBQSxDQUF6QjNCLE1BQU07WUFDSW5ELG1CQUFtQixHQUFBOEUsc0JBQUEsQ0FBN0IxQixRQUFRO1lBQUE4QixTQUFBLENBQUF6RSxJQUFBO1lBQUEsT0FRSnJCLGtDQUFrQyxDQUFDO2NBQ3ZDTyxnQkFBZ0IsRUFBaEJBLGdCQUFnQjtjQUNoQkMsc0JBQXNCLEVBQXRCQSxzQkFBc0I7Y0FDdEJDLG1CQUFtQixFQUFuQkEsbUJBQW1CO2NBQ25CQyxxQkFBcUIsRUFBckJBLHFCQUFxQjtjQUNyQkMsaUJBQWlCLEVBQWpCQSxpQkFBaUI7Y0FDakJDLG1CQUFtQixFQUFuQkE7WUFDRixDQUFDLENBQUM7VUFBQTtZQUVGO1lBQ01zQyxnQkFBZ0IsR0FBRzNDLGdCQUFnQixHQUFHd0UsUUFBUSxDQUFDN0MsTUFBTSxDQUFDM0IsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJO1lBQ3JGb0YsWUFBWSxHQUFHakQsS0FBSztZQUFBLEtBQ3BCUSxnQkFBZ0I7Y0FBQTRDLFNBQUEsQ0FBQXpFLElBQUE7Y0FBQTtZQUFBO1lBQUF5RSxTQUFBLENBQUF6RSxJQUFBO1lBQUEsT0FDQW5DLGlCQUFpQixDQUFDLENBQUMsQ0FBQztVQUFBO1lBQWhDa0UsR0FBRyxHQUFBMEMsU0FBQSxDQUFBckUsSUFBQTtZQUNIekYsVUFBVSxHQUFHb0gsR0FBRyxPQUFBNEIsTUFBQSxDQUFPNUIsR0FBRyxJQUFLLFNBQVM7WUFDOUN1QyxZQUFZLEdBQUdqRCxLQUFLLENBQUN1QyxHQUFHLENBQUMsVUFBQUMsSUFBSTtjQUFBLE9BQUF2SCxhQUFBLENBQUFBLGFBQUEsS0FDeEJ1SCxJQUFJO2dCQUNQbkgsT0FBTyxFQUFFakMsd0JBQXdCLENBQUNvSixJQUFJLENBQUNuSCxPQUFPLElBQUksRUFBRSxFQUFFL0IsVUFBVTtjQUFDO1lBQUEsQ0FDakUsQ0FBQztVQUFBO1lBRUM0SixXQUFXLE1BQUFaLE1BQUEsQ0FBQWlCLGtCQUFBLENBQU8zSCxRQUFRLENBQUM0SCxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFBRCxrQkFBQSxDQUFLTixZQUFZLEdBQUFNLGtCQUFBLENBQUszSCxRQUFRLENBQUM0SCxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ25GM0gsV0FBVyxDQUFDcUgsV0FBVyxDQUFDO1lBQ3hCaEcsbUJBQW1CLENBQUMyQixNQUFNLENBQUNvQixRQUFRLENBQUMsQ0FBQztZQUVyQ3dELHFCQUFxQixDQUFDLFlBQU07Y0FDMUJBLHFCQUFxQixDQUFDLFlBQU07Z0JBQzFCLElBQU1DLFlBQVksR0FBR2IsU0FBUztnQkFDOUIsSUFBSWEsWUFBWSxFQUFFO2tCQUNoQixJQUFNQyxlQUFlLEdBQUdELFlBQVksQ0FBQ0wsWUFBWTtrQkFDakQsSUFBTU8sZ0JBQWdCLEdBQUdELGVBQWUsR0FBR2IsZUFBZTtrQkFDMURZLFlBQVksQ0FBQ0osU0FBUyxHQUFHUCxZQUFZLEdBQUdhLGdCQUFnQjtnQkFDMUQ7Y0FDRixDQUFDLENBQUM7WUFDSixDQUFDLENBQUM7WUFBQVIsU0FBQSxDQUFBekUsSUFBQTtZQUFBO1VBQUE7WUFBQXlFLFNBQUEsQ0FBQTFFLElBQUE7WUFBQXlFLEdBQUEsR0FBQUMsU0FBQTtZQUVGdEosT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRyxDQUFDO1VBQUE7WUFBQXNKLFNBQUEsQ0FBQTFFLElBQUE7WUFFWDVCLHdCQUF3QixDQUFDLEtBQUssQ0FBQztZQUMvQkssWUFBWSxDQUFDMEQsT0FBTyxHQUFHLEtBQUs7WUFBQSxPQUFBdUMsU0FBQSxDQUFBWCxNQUFBO1VBQUE7VUFBQTtZQUFBLE9BQUFXLFNBQUEsQ0FBQTNELElBQUE7UUFBQTtNQUFBLEdBQUFtRCxRQUFBO0lBQUEsQ0FFL0I7SUFBQSxpQkFBQWlCLEdBQUE7TUFBQSxPQUFBbEIsS0FBQSxDQUFBaEQsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxLQUNELENBQUM3RixNQUFNLEVBQUVDLFdBQVcsRUFBRWlELGdCQUFnQixFQUFFbkQsT0FBTyxFQUFFOEIsUUFBUSxFQUFFWSxpQkFBaUIsRUFBRWMsa0NBQWtDLENBQ2xILENBQUM7RUFFRCxJQUFNd0csWUFBWSxHQUFHeEwsV0FBVyxDQUM5QixVQUFDdUssU0FBZ0MsRUFBSztJQUNwQyxJQUFJLENBQUNBLFNBQVMsSUFBSTFGLFlBQVksQ0FBQzBELE9BQU8sSUFBSSxDQUFDekQsZUFBZSxDQUFDeUQsT0FBTyxFQUFFO0lBRXBFLElBQVF5QyxTQUFTLEdBQWlDVCxTQUFTLENBQW5EUyxTQUFTO01BQUVELFlBQVksR0FBbUJSLFNBQVMsQ0FBeENRLFlBQVk7TUFBRVUsWUFBWSxHQUFLbEIsU0FBUyxDQUExQmtCLFlBQVk7SUFDN0MsSUFBTUMsZ0JBQWdCLEdBQUdYLFlBQVksR0FBR1UsWUFBWSxHQUFHLENBQUMsR0FBSVQsU0FBUyxJQUFJRCxZQUFZLEdBQUdVLFlBQVksQ0FBQyxHQUFJLEdBQUcsR0FBRyxDQUFDO0lBRWhILElBQUlDLGdCQUFnQixHQUFHLEVBQUUsRUFBRTtNQUN6QnRCLGdCQUFnQixDQUFDRyxTQUFTLENBQUM7SUFDN0I7RUFDRixDQUFDLEVBQ0QsQ0FBQ0gsZ0JBQWdCLENBQ25CLENBQUM7RUFFRGpLLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSXNCLE1BQU0sS0FBS3NELGNBQWMsQ0FBQ3dELE9BQU8sRUFBRTtNQUNyQ2hGLFdBQVcsQ0FDVDVCLGtCQUFrQixHQUNkLENBQUFnQixhQUFBLENBQUFBLGFBQUE7UUFFSUMsRUFBRSxFQUFFLHNCQUFzQjtRQUMxQkMsSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO1FBQ2hCYixJQUFJLEVBQUVQLFdBQVc7UUFDakJxQixPQUFPLEVBQUVsQyxrQ0FBa0MsQ0FBQ2Msa0JBQWtCLENBQUNvQixPQUFPLEVBQUU7VUFDdEVDLEtBQUssRUFBRXJCLGtCQUFrQixDQUFDcUIsS0FBSztVQUMvQkMsSUFBSSxFQUFFdEIsa0JBQWtCLENBQUNzQjtRQUMzQixDQUFDO01BQUMsR0FDRXRCLGtCQUFrQixDQUFDdUIsV0FBVyxHQUFHO1FBQUVBLFdBQVcsRUFBRXZCLGtCQUFrQixDQUFDdUI7TUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3JGN0MsbUJBQW1CLENBQUNzQixrQkFBa0IsQ0FBQ3dCLFFBQVEsQ0FBQyxHQUNoRDtRQUFFQyxjQUFjLEVBQUUvQyxtQkFBbUIsQ0FBQ3NCLGtCQUFrQixDQUFDd0IsUUFBUTtNQUFFLENBQUMsR0FDcEUsQ0FBQyxDQUFDLEVBRVQsR0FDRCxFQUNOLENBQUM7TUFDRHlCLG1CQUFtQixDQUFDLENBQUMsQ0FBQztNQUN0QkMsWUFBWSxDQUFDMEQsT0FBTyxHQUFHLEtBQUs7TUFDNUJ6RCxlQUFlLENBQUN5RCxPQUFPLEdBQUcsS0FBSztNQUMvQnhELGNBQWMsQ0FBQ3dELE9BQU8sR0FBRzlHLE1BQU07O01BRS9CO01BQ0FtQyxlQUFlLENBQUMsSUFBSSxDQUFDO01BQ3JCQyxVQUFVLENBQUMsSUFBSSxDQUFDO01BQ2hCRSxPQUFPLENBQUMsSUFBSSxDQUFDOztNQUViO01BQ0FLLHFCQUFxQixDQUFDLENBQUM7TUFFdkIsSUFBSSxDQUFDekMsa0JBQWtCLEVBQUU7UUFDdkI0RixZQUFZLENBQUMsQ0FBQztNQUNoQjtJQUNGO0VBQ0YsQ0FBQyxFQUFFLENBQ0Q5RixNQUFNLEVBQ05FLGtCQUFrQixFQUNsQkQsV0FBVyxFQUNYNkYsWUFBWSxFQUNaM0QsZUFBZSxFQUNmQyxVQUFVLEVBQ1ZFLE9BQU8sRUFDUEsscUJBQXFCLENBQ3RCLENBQUM7O0VBRUY7RUFDQTtFQUNBLElBQU11SCxhQUFhLEdBQUd6TCxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ25DQyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ2dFLGNBQWMsSUFBSSxFQUFDSCxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFFcEIsRUFBRSxLQUFJVSxRQUFRLENBQUNzSSxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQzlELElBQU0zSyxZQUFZLEdBQUcsSUFBSUMsTUFBTSxDQUFDUCxzQkFBc0IsRUFBRSxHQUFHLENBQUM7SUFDNUQsSUFBTUssVUFBVSxPQUFBZ0osTUFBQSxDQUFPN0YsY0FBYyxDQUFFO0lBQ3ZDLElBQU0wSCxZQUFZLEdBQUd2SSxRQUFRLENBQUN3SSxJQUFJLENBQUMsVUFBQUMsR0FBRyxFQUFJO01BQ3hDLElBQU1oTCxPQUFPLEdBQUdnTCxHQUFHLENBQUNoSixPQUFPLElBQUksRUFBRTtNQUNqQyxJQUFNaUosT0FBTyxHQUFHakwsT0FBTyxDQUFDa0wsS0FBSyxDQUFDaEwsWUFBWSxDQUFDO01BQzNDLElBQUksRUFBQytLLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUVKLE1BQU0sR0FBRSxPQUFPLEtBQUs7TUFDbEMsT0FBT0ksT0FBTyxDQUFDRixJQUFJLENBQUMsVUFBQTFLLEdBQUc7UUFBQSxPQUFJLENBQUNBLEdBQUcsQ0FBQzhLLFFBQVEsS0FBQWxDLE1BQUEsQ0FBSzdGLGNBQWMsQ0FBRSxDQUFDLElBQUksQ0FBQy9DLEdBQUcsQ0FBQytLLFFBQVEsS0FBQW5DLE1BQUEsQ0FBSzdGLGNBQWMsTUFBRyxDQUFDO01BQUEsRUFBQztJQUN6RyxDQUFDLENBQUM7SUFDRixJQUFJLENBQUMwSCxZQUFZLEVBQUU7TUFDakJGLGFBQWEsQ0FBQ3BELE9BQU8sR0FBRyxLQUFLO01BQzdCO0lBQ0Y7SUFDQSxJQUFJb0QsYUFBYSxDQUFDcEQsT0FBTyxFQUFFO0lBQzNCb0QsYUFBYSxDQUFDcEQsT0FBTyxHQUFHLElBQUk7SUFDNUIsSUFBTTZELFNBQVMsR0FBRzlJLFFBQVEsQ0FBQzJHLEdBQUcsQ0FBQyxVQUFBOEIsR0FBRztNQUFBLE9BQUFwSixhQUFBLENBQUFBLGFBQUEsS0FDN0JvSixHQUFHO1FBQ05oSixPQUFPLEVBQUVqQyx3QkFBd0IsQ0FBQ2lMLEdBQUcsQ0FBQ2hKLE9BQU8sSUFBSSxFQUFFLEVBQUUvQixVQUFVO01BQUM7SUFBQSxDQUNoRSxDQUFDO0lBQ0h1QyxXQUFXLENBQUM2SSxTQUFTLENBQUM7RUFDeEIsQ0FBQyxFQUFFLENBQUNqSSxjQUFjLEVBQUVILE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFcEIsRUFBRSxFQUFFVSxRQUFRLENBQUMsQ0FBQztFQUUzQyxJQUFNK0ksVUFBVSxHQUFHck0sV0FBVyxDQUFDLFVBQUMrQyxPQUFvQixFQUFLO0lBQ3ZEUSxXQUFXLENBQUMsVUFBQTZDLElBQUksRUFBSTtNQUNsQixJQUFNa0csb0JBQW9CLEdBQUdsRyxJQUFJLENBQUNtRyxTQUFTLENBQUMsVUFBQVIsR0FBRztRQUFBLE9BQUlBLEdBQUcsQ0FBQ25KLEVBQUUsS0FBS0csT0FBTyxDQUFDSCxFQUFFO01BQUEsRUFBQztNQUV6RSxJQUFJMEosb0JBQW9CLElBQUksQ0FBQyxFQUFFO1FBQzdCLElBQU0xQixXQUFXLEdBQUFLLGtCQUFBLENBQU83RSxJQUFJLENBQUM7UUFDN0J3RSxXQUFXLENBQUMwQixvQkFBb0IsQ0FBQyxHQUFHdkosT0FBTztRQUMzQyxPQUFPNkgsV0FBVztNQUNwQjtNQUNBLFVBQUFaLE1BQUEsQ0FBQWlCLGtCQUFBLENBQVc3RSxJQUFJLElBQUVyRCxPQUFPO0lBQzFCLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNeUosYUFBYSxHQUFHeE0sV0FBVyxDQUFDLFVBQUN5TSxTQUFpQixFQUFLO0lBQ3ZEbEosV0FBVyxDQUFDLFVBQUE2QyxJQUFJO01BQUEsT0FBSUEsSUFBSSxDQUFDc0csTUFBTSxDQUFDLFVBQUFYLEdBQUc7UUFBQSxPQUFJQSxHQUFHLENBQUNuSixFQUFFLEtBQUs2SixTQUFTO01BQUEsRUFBQztJQUFBLEVBQUM7RUFDL0QsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLE9BQU87SUFDTGpLLGVBQWUsRUFBZkEsZUFBZTtJQUNmYyxRQUFRLEVBQVJBLFFBQVE7SUFDUnFKLGVBQWUsRUFBRSxDQUFDLENBQUNoSSxnQkFBZ0I7SUFDbkNKLHFCQUFxQixFQUFyQkEscUJBQXFCO0lBQ3JCZ0QsWUFBWSxFQUFaQSxZQUFZO0lBQ1o2QyxnQkFBZ0IsRUFBaEJBLGdCQUFnQjtJQUNoQmlDLFVBQVUsRUFBVkEsVUFBVTtJQUNWRyxhQUFhLEVBQWJBLGFBQWE7SUFDYmhCLFlBQVksRUFBWkE7RUFDRixDQUFDO0FBQ0gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
538
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJidWlsZENvbnRleHRNZXNzYWdlIiwibWFpYSIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlVXNlciIsInVzZVRhYlRhc2tEZWZhdWx0IiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIm1hcENPUkxhbmciLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwicmV3cml0ZVRhc2tVcmxzSW5Db250ZW50IiwiY29udGVudCIsInRhYlNlZ21lbnQiLCJ0YXNrVXJsUmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwidXJsIiwidXNlQ2hhdE1lc3NhZ2VzIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25FcnJvciIsImNoYXRJZCIsImN1cnJlbnRVc2VyIiwidXNlckluaXRpYWxNZXNzYWdlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlciIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibG9hZGluZ01lc3NhZ2VzIiwic2V0TG9hZGluZ01lc3NhZ2VzIiwiX3VzZVN0YXRlMyIsIl9vYmplY3RTcHJlYWQiLCJpZCIsImRhdGUiLCJEYXRlIiwibWVzc2FnZSIsImZ1YUlkIiwic2NJZCIsImF0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsIl91c2VTdGF0ZTQiLCJtZXNzYWdlcyIsInNldE1lc3NhZ2VzIiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0VGFzayIsInByb2plY3QiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsInRhYlRhc2tEZWZhdWx0IiwicmVmZXRjaFRhYlRhc2tEZWZhdWx0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImxhc3RFdmFsdWF0ZWRLZXkiLCJzZXRMYXN0RXZhbHVhdGVkS2V5IiwiaXNMb2FkaW5nUmVmIiwiaW5pdGlhbExvYWREb25lIiwicHJldmlvdXNDaGF0SWQiLCJzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYyIiwicHJvamVjdElkTWVzc2FnZSIsInByb2plY3ROYW1lRnJvbVNlc3Npb24iLCJjbGllbnRJZEZyb21TZXNzaW9uIiwiY2xpZW50TmFtZUZyb21TZXNzaW9uIiwidGFza0lkRnJvbVNlc3Npb24iLCJ0YXNrTmFtZUZyb21TZXNzaW9uIiwicHJvamVjdHMiLCJoYXNNdWx0aUFnZW50c0FjY2VzcyIsInByb2plY3RJZE51bSIsImZvdW5kUHJvamVjdCIsIl9mb3VuZFByb2plY3QkY2xpZW50Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJuYW1lIiwiTnVtYmVyIiwiYWJydXB0Iiwic2VudCIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJmaW5kIiwicCIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsImNsaWVudCIsInByb2plY3RJZCIsIlN0cmluZyIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwibG9hZE1lc3NhZ2VzIiwiX2NhbGxlZTIiLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQiLCJpdGVtcyIsIm5leHRJdGVtIiwiYWdlbnREZWxldGVkIiwiYWdlbnROb1Blcm1pc3Npb24iLCJoYXNBZ2VudEFjY2VzcyIsImhhc0FnZW50UGVybWlzc2lvbiIsInByb2plY3REZWxldGVkIiwiYWdlbnRJbkxpc3QiLCJjb250ZXh0UHJvamVjdElkIiwiaXRlbXNUb1NldCIsInRhYiIsIl90IiwiX2NvbnRleHQyIiwiY3VycmVudCIsIkNoYXRzIiwiZ2V0Q2hhdE1lc3NhZ2VzIiwib2Zmc2V0IiwiY2FuY2VsbGVkVGV4dCIsImxhbmciLCJsYW5ndWFnZSIsImNsaWVudElkIiwidGFza0lkIiwidGFza05hbWUiLCJlbW9qaSIsInR5cGUiLCJpc19kZWxldGVkIiwiZGVsZXRlZF9hdCIsImRlbGV0ZWRBdCIsImNvbm5lY3RvcnMiLCJ2aWV3IiwiYWdlbnQiLCJpc19mcm9tX2NvbnZlcnNhdGlvbiIsInByb2plY3RfZGVsZXRlZCIsImEiLCJ1bmRlZmluZWQiLCJoYXNfbm90X2FjY2VzcyIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJwYXJzZUludCIsImNvbmNhdCIsIm1hcCIsIml0ZW0iLCJmaW5pc2giLCJsb2FkTW9yZU1lc3NhZ2VzIiwiX3JlZjUiLCJfY2FsbGVlMyIsImNvbnRhaW5lciIsIm9sZFNjcm9sbEhlaWdodCIsIm9sZFNjcm9sbFRvcCIsIl95aWVsZCRtYWlhJENoYXRzJGdldDIiLCJpdGVtc1RvTWVyZ2UiLCJuZXdNZXNzYWdlcyIsIl90MiIsIl9jb250ZXh0MyIsInNjcm9sbEhlaWdodCIsInNjcm9sbFRvcCIsIl90b0NvbnN1bWFibGVBcnJheSIsInNsaWNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVyUmVmIiwibmV3U2Nyb2xsSGVpZ2h0IiwiaGVpZ2h0RGlmZmVyZW5jZSIsIl94MiIsImhhbmRsZVNjcm9sbCIsImNsaWVudEhlaWdodCIsInNjcm9sbFBlcmNlbnRhZ2UiLCJkaWRSZXdyaXRlUmVmIiwibGVuZ3RoIiwibmVlZHNSZXdyaXRlIiwic29tZSIsIm1zZyIsIm1hdGNoZXMiLCJtYXRjaCIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJyZXdyaXR0ZW4iLCJhZGRNZXNzYWdlIiwiZXhpc3RpbmdNZXNzYWdlSW5kZXgiLCJmaW5kSW5kZXgiLCJyZW1vdmVNZXNzYWdlIiwibWVzc2FnZUlkIiwiZmlsdGVyIiwiaGFzTW9yZU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNZXNzYWdlcy91c2VDaGF0TWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBVc2VDaGF0TWVzc2FnZXNQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1lc3NhZ2VzLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlJ1xuXG5jb25zdCByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nLCB0YWJTZWdtZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWVzc2FnZXMgPSAoe1xuICBvbkVycm9yLFxuICBjaGF0SWQsXG4gIGN1cnJlbnRVc2VyLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZXMsIHNldExvYWRpbmdNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VTdGF0ZTxDaGF0TWVzc2FnZVtdPihcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2VcbiAgICAgID8gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAndXNlci1pbml0aWFsLW1lc3NhZ2UnLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSh1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSwge1xuICAgICAgICAgICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgICAgICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW11cbiAgKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBzZWxlY3RBZ2VudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2ssIHByb2plY3QgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0LCB0YWJUYXNrRGVmYXVsdCwgcmVmZXRjaFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG4gIGNvbnN0IFtpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNldElzTG9hZGluZ01vcmVNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xhc3RFdmFsdWF0ZWRLZXksIHNldExhc3RFdmFsdWF0ZWRLZXldID0gdXNlU3RhdGU8bnVtYmVyIHwgdW5kZWZpbmVkPigwKVxuICBjb25zdCBpc0xvYWRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGluaXRpYWxMb2FkRG9uZSA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcHJldmlvdXNDaGF0SWQgPSB1c2VSZWYoY2hhdElkKVxuXG4gIGNvbnN0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgIH06IHtcbiAgICAgIHByb2plY3RJZE1lc3NhZ2U6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudElkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgICAgdGFza0lkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICB9KSA9PiB7XG4gICAgICAvLyBUYXJlYSBkZSBsYSBjb252ZXJzYWNpw7NuOiBzZSBkZXJpdmEgZGUgbGEgbWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBwYXJhIG1vc3RyYXIgZWwgY2hpcFxuICAgICAgLy8gZGUgbGEgdGFyZWEgKHkgcmVlbnZpYXIgbGEgbWV0YWRhdGEgZW4gY2FkYSBtZW5zYWplKSBzaW4gaW1wb3J0YXIgZGVzZGUgZMOzbmRlIHNlIGFicmEuXG4gICAgICBpZiAodGFza0lkRnJvbVNlc3Npb24gIT0gbnVsbCAmJiB0YXNrTmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgIHNldFRhc2soeyBpZDogdGFza0lkRnJvbVNlc3Npb24sIG5hbWU6IHRhc2tOYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIH1cblxuICAgICAgLy8gQ29udmVyc2FjacOzbiBjb24gY2xpZW50X21ldGFkYXRhOiBzZXRlYXIgY2xpZW50ZSB5IGxpbXBpYXIgcHJveWVjdG9cbiAgICAgIGlmIChjbGllbnRJZEZyb21TZXNzaW9uICE9IG51bGwgJiYgY2xpZW50TmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgIHNldENsaWVudCh7IGlkOiBOdW1iZXIoY2xpZW50SWRGcm9tU2Vzc2lvbiksIG5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbiB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICBjb25zdCBoYXNNdWx0aUFnZW50c0FjY2VzcyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICAgICAgaWYgKHByb2plY3RJZE1lc3NhZ2UgJiYgaGFzTXVsdGlBZ2VudHNBY2Nlc3MpIHtcbiAgICAgICAgY29uc3QgcHJvamVjdElkTnVtID0gTnVtYmVyKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICAgIGNvbnN0IGZvdW5kUHJvamVjdCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBwcm9qZWN0SWROdW0pXG5cbiAgICAgICAgaWYgKGZvdW5kUHJvamVjdCkge1xuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmRQcm9qZWN0Lm5hbWUsXG4gICAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZFByb2plY3QuY2xpZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmRQcm9qZWN0LmlkKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3QoZm91bmRQcm9qZWN0KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lRnJvbVNlc3Npb24pIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICBjbGllbnROYW1lOiAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBwcm9qZWN0SWROdW0sIG5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIH1cblxuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtmZXRjaFByb2plY3RzLCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdCwgc2V0VGFza11cbiAgKVxuXG4gIGNvbnN0IGxvYWRNZXNzYWdlcyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKHRydWUpXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IGZhbHNlXG4gICAgICBjb25zdCB7XG4gICAgICAgIGl0ZW1zLFxuICAgICAgICBuZXh0SXRlbSxcbiAgICAgICAgYWdlbnREZWxldGVkLFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbixcbiAgICAgICAgaGFzQWdlbnRBY2Nlc3MsXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbixcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgcHJvamVjdERlbGV0ZWQsXG4gICAgICAgIGNsaWVudElkOiBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIHRhc2tJZDogdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgIHRhc2tOYW1lOiB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdE1lc3NhZ2VzKHtcbiAgICAgICAgY2hhdElkLFxuICAgICAgICBjdXJyZW50VXNlcixcbiAgICAgICAgb2Zmc2V0OiBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgICBjYW5jZWxsZWRUZXh0OiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgICBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpLFxuICAgICAgfSlcbiAgICAgIGlmIChhZ2VudERlbGV0ZWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgIGlkOiBhZ2VudERlbGV0ZWQuaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnREZWxldGVkLm5hbWUsXG4gICAgICAgICAgZW1vamk6IGFnZW50RGVsZXRlZC5lbW9qaSxcbiAgICAgICAgICB0eXBlOiAnY3VzdG9tJyxcbiAgICAgICAgICBpc19kZWxldGVkOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZWRfYXQ6IGFnZW50RGVsZXRlZC5kZWxldGVkQXQsXG4gICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uPy5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBubyBlc3TDoSBlbiBsYSBsaXN0YSBwZXJvIHRpZW5lIHBlcm1pc29zLCBhY2Nlc28geSBubyBlc3TDoSBlbGltaW5hZG8sIHNldGVhcmxvIG5vcm1hbG1lbnRlXG4gICAgICAvLyBFeGNsdWlyIGFnZW50ZXMgbm8tY3VzdG9tIHBhcmEgdXN1YXJpb3MgY29uIHJvbGVzIGRlc2hhYmlsaXRhZG9zXG4gICAgICBpZiAoXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uICYmXG4gICAgICAgICFhZ2VudERlbGV0ZWQgJiZcbiAgICAgICAgdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnRzLmZpbmQoYWdlbnQgPT4gYWdlbnQuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgIGlzX2Zyb21fY29udmVyc2F0aW9uOiB0cnVlLFxuICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBlc3TDoSBlbiBsYSBsaXN0YSB5IHRpZW5lIGFjY2Vzby9wZXJtaXNvcywgYWN0dWFsaXphciBwcm9qZWN0X2RlbGV0ZWQgKG8gbGltcGlhcmxvIGFsIGNhbWJpYXIgZGUgY2hhdClcbiAgICAgIGlmIChcbiAgICAgICAgYWdlbnROb1Blcm1pc3Npb24gJiZcbiAgICAgICAgIWFnZW50RGVsZXRlZCAmJlxuICAgICAgICBoYXNBZ2VudEFjY2VzcyAmJlxuICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24gJiZcbiAgICAgICAgYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICkge1xuICAgICAgICBjb25zdCBhZ2VudEluTGlzdCA9IGFnZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gYWdlbnROb1Blcm1pc3Npb24uaWQpXG4gICAgICAgIGlmIChhZ2VudEluTGlzdCkge1xuICAgICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICAgIC4uLmFnZW50SW5MaXN0LFxuICAgICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7IHByb2plY3RfZGVsZXRlZDogdW5kZWZpbmVkIH0pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIHRpZW5lIGFjY2VzbyBvIHBlcm1pc29zIHNlZ8O6biBsYSByZXNwdWVzdGEgZGUgc2Vzc2lvbnMsIHNlbGVjY2lvbmFybG8gY29uIGVsIGZsYWcgY29ycmVzcG9uZGllbnRlXG4gICAgICAvLyBMYSB2YWxpZGFjacOzbiBhaG9yYSBzZSBiYXNhIGVuIGxhcyBwcm9waWVkYWRlcyBoYXNfYWdlbnRfYWNjZXNzIHkgaGFzX2FnZW50X3Blcm1pc3Npb24gZGUgbGEgcmVzcHVlc3RhXG4gICAgICBpZiAoYWdlbnROb1Blcm1pc3Npb24gJiYgIWFnZW50RGVsZXRlZCkge1xuICAgICAgICBpZiAoIWhhc0FnZW50QWNjZXNzKSB7XG4gICAgICAgICAgLy8gQ2FzbyAxOiBObyB0aWVuZSBhY2Nlc28gYWwgYWdlbnRlXG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyxcbiAgICAgICAgICAgIGhhc19ub3RfYWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc0FnZW50UGVybWlzc2lvbikge1xuICAgICAgICAgIC8vIENhc28gMjogTm8gdGllbmUgcGVybWlzb3MgcGFyYSB2aXN1YWxpemFyL2ludGVyYWN0dWFyIGNvbiBlbCBhZ2VudGVcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgaGFzX25vdF9wZXJtaXNzaW9uczogdHJ1ZSxcbiAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3REZWxldGVkKSB7XG4gICAgICAgICAgLy8gQ2FzbyAzOiBFbCBwcm95ZWN0byBkZSBsYSBjb252ZXJzYWNpw7NuIGZ1ZSBlbGltaW5hZG9cbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgIHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhKHtcbiAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgIH0pXG5cbiAgICAgIC8vIFNpIGhheSBwcm95ZWN0byBlbiBsYSBjb252ZXJzYWNpw7NuLCByZWVzY3JpYmlyIFVSTHMgZGUgdGFyZWFzIGNvbiBlbCB0YWIgZGVsIHVzdWFyaW8gKG1lKVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3RJZE1lc3NhZ2UgPyBwYXJzZUludChTdHJpbmcocHJvamVjdElkTWVzc2FnZSksIDEwKSA6IG51bGxcbiAgICAgIGxldCBpdGVtc1RvU2V0ID0gaXRlbXNcbiAgICAgIGlmIChjb250ZXh0UHJvamVjdElkKSB7XG4gICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KDEpXG4gICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgaXRlbXNUb1NldCA9IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQoaXRlbS5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICAgICAgfSkpXG4gICAgICB9XG4gICAgICBzZXRNZXNzYWdlcyhpdGVtc1RvU2V0KVxuICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleShOdW1iZXIobmV4dEl0ZW0pKVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSB0cnVlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uRXJyb3I/LigpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlcyhmYWxzZSlcbiAgICB9XG4gIH0sIFtjaGF0SWQsIGN1cnJlbnRVc2VyLCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhLCBvbkVycm9yLCBnZXRUYWJUYXNrRGVmYXVsdF0pXG5cbiAgY29uc3QgbG9hZE1vcmVNZXNzYWdlcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChjb250YWluZXI6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKGlzTG9hZGluZ1JlZi5jdXJyZW50IHx8ICFsYXN0RXZhbHVhdGVkS2V5IHx8ICFjb250YWluZXIpIHJldHVyblxuICAgICAgdHJ5IHtcbiAgICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzTG9hZGluZ01vcmVNZXNzYWdlcyh0cnVlKVxuXG4gICAgICAgIGNvbnN0IG9sZFNjcm9sbEhlaWdodCA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHRcbiAgICAgICAgY29uc3Qgb2xkU2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICBuZXh0SXRlbSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50TmFtZTogY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tJZDogdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza05hbWU6IHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRNZXNzYWdlcyh7XG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgICAgIG9mZnNldDogbGFzdEV2YWx1YXRlZEtleSxcbiAgICAgICAgICBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpLFxuICAgICAgICB9KVxuXG4gICAgICAgIGF3YWl0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEoe1xuICAgICAgICAgIHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNpIGhheSBwcm95ZWN0byBlbiBsYSBjb252ZXJzYWNpw7NuLCByZWVzY3JpYmlyIFVSTHMgZGUgdGFyZWFzIGVuIGxvcyBtZW5zYWplcyBjYXJnYWRvc1xuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gcHJvamVjdElkTWVzc2FnZSA/IHBhcnNlSW50KFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSwgMTApIDogbnVsbFxuICAgICAgICBsZXQgaXRlbXNUb01lcmdlID0gaXRlbXNcbiAgICAgICAgaWYgKGNvbnRleHRQcm9qZWN0SWQpIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCgxKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBpdGVtc1RvTWVyZ2UgPSBpdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChpdGVtLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld01lc3NhZ2VzID0gWy4uLm1lc3NhZ2VzLnNsaWNlKDAsIDEpLCAuLi5pdGVtc1RvTWVyZ2UsIC4uLm1lc3NhZ2VzLnNsaWNlKDEpXVxuICAgICAgICBzZXRNZXNzYWdlcyhuZXdNZXNzYWdlcylcbiAgICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleShOdW1iZXIobmV4dEl0ZW0pKVxuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGNvbnRhaW5lclxuICAgICAgICAgICAgaWYgKGNvbnRhaW5lclJlZikge1xuICAgICAgICAgICAgICBjb25zdCBuZXdTY3JvbGxIZWlnaHQgPSBjb250YWluZXJSZWYuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgIGNvbnN0IGhlaWdodERpZmZlcmVuY2UgPSBuZXdTY3JvbGxIZWlnaHQgLSBvbGRTY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgY29udGFpbmVyUmVmLnNjcm9sbFRvcCA9IG9sZFNjcm9sbFRvcCArIGhlaWdodERpZmZlcmVuY2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgb25FcnJvcj8uKClcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldElzTG9hZGluZ01vcmVNZXNzYWdlcyhmYWxzZSlcbiAgICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW2NoYXRJZCwgY3VycmVudFVzZXIsIGxhc3RFdmFsdWF0ZWRLZXksIG9uRXJyb3IsIG1lc3NhZ2VzLCBnZXRUYWJUYXNrRGVmYXVsdCwgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250YWluZXI6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKCFjb250YWluZXIgfHwgaXNMb2FkaW5nUmVmLmN1cnJlbnQgfHwgIWluaXRpYWxMb2FkRG9uZS5jdXJyZW50KSByZXR1cm5cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcbiAgICAgIGNvbnN0IHNjcm9sbFBlcmNlbnRhZ2UgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgPiAwID8gKHNjcm9sbFRvcCAvIChzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQpKSAqIDEwMCA6IDBcblxuICAgICAgaWYgKHNjcm9sbFBlcmNlbnRhZ2UgPCAxMCkge1xuICAgICAgICBsb2FkTW9yZU1lc3NhZ2VzKGNvbnRhaW5lcilcbiAgICAgIH1cbiAgICB9LFxuICAgIFtsb2FkTW9yZU1lc3NhZ2VzXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2hhdElkICE9PSBwcmV2aW91c0NoYXRJZC5jdXJyZW50KSB7XG4gICAgICBzZXRNZXNzYWdlcyhcbiAgICAgICAgdXNlckluaXRpYWxNZXNzYWdlXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3VzZXItaW5pdGlhbC1tZXNzYWdlJyxcbiAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkodXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsIHtcbiAgICAgICAgICAgICAgICAgIGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQsXG4gICAgICAgICAgICAgICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXVxuICAgICAgKVxuICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleSgwKVxuICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcHJldmlvdXNDaGF0SWQuY3VycmVudCA9IGNoYXRJZFxuXG4gICAgICAvLyBMaW1waWFyIGVsIGVzdGFkbyBkZWwgcHJveWVjdG8geSBsYSB0YXJlYSBjdWFuZG8gY2FtYmlhIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICAvLyBWb2x2ZXIgYSBlamVjdXRhciBsYSBxdWVyeSBtZSBwYXJhIHRlbmVyIHRhYlRhc2tEZWZhdWx0IGFjdHVhbGl6YWRvIGVuIGxhIG51ZXZhIGNvbnZlcnNhY2nDs25cbiAgICAgIHJlZmV0Y2hUYWJUYXNrRGVmYXVsdCgpXG5cbiAgICAgIGlmICghdXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgY2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBjdXJyZW50VXNlcixcbiAgICBsb2FkTWVzc2FnZXMsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0VGFzayxcbiAgICByZWZldGNoVGFiVGFza0RlZmF1bHQsXG4gIF0pXG5cbiAgLy8gQ3VhbmRvIHRhYlRhc2tEZWZhdWx0IHBhc2EgYSBlc3RhciBkaXNwb25pYmxlIGRlc3B1w6lzIGRlIGNhcmdhciwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgeWEgY2FyZ2Fkb3MuXG4gIC8vIFJlZiBwYXJhIGV2aXRhciBidWNsZTogc2V0TWVzc2FnZXMocmV3cml0dGVuKSBjYW1iaWEgbWVzc2FnZXMgeSByZS1lamVjdXRhIGVsIGVmZWN0bzsgc29sbyByZWVzY3JpYmltb3MgdW5hIHZleiBwb3IgbG90ZS5cbiAgY29uc3QgZGlkUmV3cml0ZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhYlRhc2tEZWZhdWx0IHx8ICFwcm9qZWN0Py5pZCB8fCBtZXNzYWdlcy5sZW5ndGggPT09IDApIHJldHVyblxuICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgIGNvbnN0IHRhYlNlZ21lbnQgPSBgLyR7dGFiVGFza0RlZmF1bHR9YFxuICAgIGNvbnN0IG5lZWRzUmV3cml0ZSA9IG1lc3NhZ2VzLnNvbWUobXNnID0+IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtc2cubWVzc2FnZSB8fCAnJ1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGNvbnRlbnQubWF0Y2godGFza1VybFJlZ2V4KVxuICAgICAgaWYgKCFtYXRjaGVzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIG1hdGNoZXMuc29tZSh1cmwgPT4gIXVybC5lbmRzV2l0aChgLyR7dGFiVGFza0RlZmF1bHR9YCkgJiYgIXVybC5pbmNsdWRlcyhgLyR7dGFiVGFza0RlZmF1bHR9P2ApKVxuICAgIH0pXG4gICAgaWYgKCFuZWVkc1Jld3JpdGUpIHtcbiAgICAgIGRpZFJld3JpdGVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGRpZFJld3JpdGVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgZGlkUmV3cml0ZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGNvbnN0IHJld3JpdHRlbiA9IG1lc3NhZ2VzLm1hcChtc2cgPT4gKHtcbiAgICAgIC4uLm1zZyxcbiAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChtc2cubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgfSkpXG4gICAgc2V0TWVzc2FnZXMocmV3cml0dGVuKVxuICB9LCBbdGFiVGFza0RlZmF1bHQsIHByb2plY3Q/LmlkLCBtZXNzYWdlc10pXG5cbiAgY29uc3QgYWRkTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4ge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlSW5kZXggPSBwcmV2LmZpbmRJbmRleChtc2cgPT4gbXNnLmlkID09PSBtZXNzYWdlLmlkKVxuXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5wcmV2XVxuICAgICAgICBuZXdNZXNzYWdlc1tleGlzdGluZ01lc3NhZ2VJbmRleF0gPSBtZXNzYWdlXG4gICAgICAgIHJldHVybiBuZXdNZXNzYWdlc1xuICAgICAgfVxuICAgICAgcmV0dXJuIFsuLi5wcmV2LCBtZXNzYWdlXVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHJlbW92ZU1lc3NhZ2UgPSB1c2VDYWxsYmFjaygobWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IHByZXYuZmlsdGVyKG1zZyA9PiBtc2cuaWQgIT09IG1lc3NhZ2VJZCkpXG4gIH0sIFtdKVxuXG4gIHJldHVybiB7XG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIG1lc3NhZ2VzLFxuICAgIGhhc01vcmVNZXNzYWdlczogISFsYXN0RXZhbHVhdGVkS2V5LFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICBsb2FkTWVzc2FnZXMsXG4gICAgbG9hZE1vcmVNZXNzYWdlcyxcbiAgICBhZGRNZXNzYWdlLFxuICAgIHJlbW92ZU1lc3NhZ2UsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7QUFFNUMsU0FBU0MsbUJBQW1CLFFBQVEsNEJBQTRCO0FBQ2hFLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFFdEMsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLElBQUksUUFBUSxTQUFTO0FBQzlCLFNBQVNDLE9BQU8sUUFBUSx3QkFBd0I7QUFDaEQsU0FBU0MsaUJBQWlCLFFBQVEsc0JBQXNCO0FBQ3hELFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxVQUFVLFFBQVEsa0JBQWtCO0FBQzdDLFNBQVNDLGtDQUFrQyxRQUFRLHNDQUFzQztBQUV6RixJQUFNQyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJ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
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQXBwcm92YWxSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZENvbnRleHQgPSB7XG4gIHByb2plY3RfaWQ6IG51bWJlciB8IG51bGxcbiAgcHJvamVjdF9uYW1lOiBzdHJpbmcgfCBudWxsXG4gIGNsaWVudF9pZDogbnVtYmVyIHwgbnVsbFxuICBjbGllbnRfbmFtZTogc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcyA9IHtcbiAgb25TdHJlYW1VcGRhdGU/OiAobWVzc2FnZTogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uRmluaXNoU3RyZWFtPzogKFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBzb3VyY2VzOiBhbnksXG4gICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgLyoqIFRyYXMgYXByb2JhciBjcmVhdGVfYWdlbnQgZWwgYmFja2VuZCBwdWVkZSBlbnZpYXIgZWwgaWQgZW4gZWwgZXZlbnRvIGBjb21wbGV0ZWAgKi9cbiAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbCxcbiAgICAvKiogTm9tYnJlIGRlbCBzdWJhZ2VudGUgcXVlIHJlc3BvbmRpw7MgKG9ycXVlc3RhZG9yIOKGkiBlc3BlY2lhbGlzdGEpLCBzaSBhcGxpY2EgKi9cbiAgICBzdWJhZ2VudE5hbWU/OiBzdHJpbmcgfCBudWxsLFxuICAgIC8qKiBDb250ZXh0byByZXN1ZWx0byBwb3IgZWwgc3ViYWdlbnRlIChwcm9qZWN0X2lkLCBjbGllbnRfaWQsIGV0Yy4pICovXG4gICAgcmVzb2x2ZWRDb250ZXh0PzogUmVzb2x2ZWRDb250ZXh0IHwgbnVsbFxuICApID0+IHZvaWRcbiAgb25TdGFydFdyaXRpbmc/OiAoKSA9PiB2b2lkXG4gIG9uU3RvcD86ICgpID0+IHZvaWRcbiAgb25FcnJvcj86IChlcnJvclR5cGU/OiBzdHJpbmcsIGVycm9yTWVzc2FnZT86IHN0cmluZykgPT4gdm9pZFxuICBvbkFwcHJvdmFsUmVxdWlyZWQ/OiAoYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbD5cbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQXBwcm92YWxSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuXG5leHBvcnQgdHlwZSBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcyA9IHtcbiAgb25TdHJlYW1VcGRhdGU/OiAobWVzc2FnZTogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uRmluaXNoU3RyZWFtPzogKFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBzb3VyY2VzOiBhbnksXG4gICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgLyoqIFRyYXMgYXByb2JhciBjcmVhdGVfYWdlbnQgZWwgYmFja2VuZCBwdWVkZSBlbnZpYXIgZWwgaWQgZW4gZWwgZXZlbnRvIGBjb21wbGV0ZWAgKi9cbiAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICApID0+IHZvaWRcbiAgb25TdGFydFdyaXRpbmc/OiAoKSA9PiB2b2lkXG4gIG9uU3RvcD86ICgpID0+IHZvaWRcbiAgb25FcnJvcj86IChlcnJvclR5cGU/OiBzdHJpbmcsIGVycm9yTWVzc2FnZT86IHN0cmluZykgPT4gdm9pZFxuICBvbkFwcHJvdmFsUmVxdWlyZWQ/OiAoYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbD5cbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -113,7 +113,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
113
113
  }, [isLoading, isWriting, streamActivity === null || streamActivity === void 0 ? void 0 : streamActivity.phase, t]);
114
114
  var handleSSEStream = useCallback(/*#__PURE__*/function () {
115
115
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
116
- var _data$subagent, _onErrorRef$current, _data$error, _data$error2;
116
+ var _onErrorRef$current, _data$error, _data$error2;
117
117
  var pendingContent, rafId, emitThrottled, flushPending, _response$body, reader, decoder, buffer, accumulatedContent, hasStartedWriting, ensureWritingStarted, applyStreamChunk, applyStreamComplete, _yield$reader$read, done, value, lines, _iterator, _step, line, _line$split, _line$split2, eventLine, dataLine, eventType, dataStr, _data, chunk, _chunk, _onApprovalRequiredRe, isManualApproval, _onErrorRef$current2, _t, _t2, _t3, _t4;
118
118
  return _regeneratorRuntime.wrap(function (_context) {
119
119
  while (1) switch (_context.prev = _context.next) {
@@ -176,7 +176,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
176
176
  emitThrottled(accumulatedContent);
177
177
  };
178
178
  applyStreamComplete = function applyStreamComplete(payload) {
179
- var _payload$agent_id, _subagentRaw$name, _subagentRaw$resolved, _onFinishStreamRef$cu;
179
+ var _payload$agent_id, _onFinishStreamRef$cu;
180
180
  var finalContent = payload.content || accumulatedContent;
181
181
  var sources = payload.sources || null;
182
182
  var memorySessionId = payload.memory_session_id || '';
@@ -189,15 +189,12 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
189
189
  }
190
190
  var agentIdRaw = (_payload$agent_id = payload.agent_id) !== null && _payload$agent_id !== void 0 ? _payload$agent_id : payload.agentId;
191
191
  var completedAgentId = agentIdRaw != null && String(agentIdRaw).trim() !== '' ? String(agentIdRaw).trim() : null;
192
- var subagentRaw = payload.subagent;
193
- var subagentName = subagentRaw !== null && subagentRaw !== void 0 && (_subagentRaw$name = subagentRaw.name) !== null && _subagentRaw$name !== void 0 && _subagentRaw$name.trim() ? subagentRaw.name.trim() : null;
194
- var resolvedContext = (_subagentRaw$resolved = subagentRaw === null || subagentRaw === void 0 ? void 0 : subagentRaw.resolved_context) !== null && _subagentRaw$resolved !== void 0 ? _subagentRaw$resolved : null;
195
192
  flushPending();
196
193
  setData(finalContent);
197
194
  setLoading(false);
198
195
  setIsWriting(false);
199
196
  clearStreamLoadingState();
200
- (_onFinishStreamRef$cu = onFinishStreamRef.current) === null || _onFinishStreamRef$cu === void 0 || _onFinishStreamRef$cu.call(onFinishStreamRef, finalContent, sources, memorySessionId, attachments, suggestions, completedAgentId, subagentName, resolvedContext);
197
+ (_onFinishStreamRef$cu = onFinishStreamRef.current) === null || _onFinishStreamRef$cu === void 0 || _onFinishStreamRef$cu.call(onFinishStreamRef, finalContent, sources, memorySessionId, attachments, suggestions, completedAgentId);
201
198
  };
202
199
  case 3:
203
200
  if (!true) {
@@ -287,20 +284,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
287
284
  }
288
285
  return _context.abrupt("continue", 21);
289
286
  case 16:
290
- // Orchestrator delegated to a subagent: show which specialist
291
- // is handling the request in the activity indicator.
292
- if (_data.node === 'agent_transfer' && (_data$subagent = _data.subagent) !== null && _data$subagent !== void 0 && _data$subagent.name) {
293
- setLoading(true);
294
- // 'action' phase does not rotate its message, so the
295
- // "Consulting <agent>" label stays visible while the
296
- // subagent works (instead of being replaced after ~3s).
297
- applyStreamActivity({
298
- phase: 'action',
299
- message: t('chat.activity.transferringToAgent', {
300
- name: _data.subagent.name
301
- })
302
- });
303
- } else if (_data.message && typeof _data.message === 'string') {
287
+ if (_data.message && typeof _data.message === 'string') {
304
288
  setLoading(true);
305
289
  applyStreamActivity(resolveHitlNodeStreamActivity(_data.message, t, hitlExecutionContextRef === null || hitlExecutionContextRef === void 0 ? void 0 : hitlExecutionContextRef.current, typeof _data.thread_id === 'string' ? _data.thread_id : undefined));
306
290
  }
@@ -390,11 +374,11 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
390
374
  }(), [applyStreamActivity, clearStreamLoadingState, hitlExecutionContextRef, t]);
391
375
  var askMaia = /*#__PURE__*/function () {
392
376
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref3) {
393
- 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, _attachments$length, _abortControllerRef$c, initialActivity, response, _onErrorRef$current3, _t5;
377
+ 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, contextData, _attachments$length, _abortControllerRef$c, initialActivity, response, _onErrorRef$current3, _t5;
394
378
  return _regeneratorRuntime.wrap(function (_context2) {
395
379
  while (1) switch (_context2.prev = _context2.next) {
396
380
  case 0:
397
- 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;
381
+ 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, contextData = _ref3.contextData;
398
382
  _context2.prev = 1;
399
383
  setLoading(true);
400
384
  setIsWriting(false);
@@ -411,7 +395,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
411
395
 
412
396
  abortControllerRef.current = new AbortController();
413
397
  _context2.next = 2;
414
- return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
398
+ return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
415
399
  input: message,
416
400
  history: history,
417
401
  lang: lang,
@@ -456,6 +440,8 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
456
440
  agentEntity: agentEntity
457
441
  } : {}), contextMessage ? {
458
442
  contextMessage: contextMessage
443
+ } : {}), contextData ? {
444
+ contextData: contextData
459
445
  } : {}), (_abortControllerRef$c = abortControllerRef.current) === null || _abortControllerRef$c === void 0 ? void 0 : _abortControllerRef$c.signal);
460
446
  case 2:
461
447
  response = _context2.sent;
@@ -553,4 +539,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
553
539
  handleSSEStream: handleSSEStream // Exponer para poder usarlo en continue-thread
554
540
  };
555
541
  };
556
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJhZHZhbmNlZCIsIm5leHRJbmRleCIsImNsZWFySW50ZXJ2YWwiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfZGF0YSRzdWJhZ2VudCIsIl9vbkVycm9yUmVmJGN1cnJlbnQiLCJfZGF0YSRlcnJvciIsIl9kYXRhJGVycm9yMiIsInBlbmRpbmdDb250ZW50IiwicmFmSWQiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaGFzU3RhcnRlZFdyaXRpbmciLCJlbnN1cmVXcml0aW5nU3RhcnRlZCIsImFwcGx5U3RyZWFtQ2h1bmsiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsIl9kYXRhIiwiY2h1bmsiLCJfY2h1bmsiLCJfb25BcHByb3ZhbFJlcXVpcmVkUmUiLCJpc01hbnVhbEFwcHJvdmFsIiwiX29uRXJyb3JSZWYkY3VycmVudDIiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJjb250ZW50IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiX29uU3RyZWFtVXBkYXRlUmVmJGN1IiwidG9FbWl0IiwiY2FsbCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiX29uU3RyZWFtVXBkYXRlUmVmJGN1MiIsImJvZHkiLCJnZXRSZWFkZXIiLCJFcnJvciIsIlRleHREZWNvZGVyIiwiX29uU3RhcnRXcml0aW5nUmVmJGN1IiwicGF5bG9hZCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JG5hbWUiLCJfc3ViYWdlbnRSYXckcmVzb2x2ZWQiLCJfb25GaW5pc2hTdHJlYW1SZWYkY3UiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJzdWJhZ2VudE5hbWUiLCJuYW1lIiwicmVzb2x2ZWRDb250ZXh0IiwicmVzb2x2ZWRfY29udGV4dCIsImNhbmNlbCIsImFicnVwdCIsInJlYWQiLCJzZW50IiwiZGVjb2RlIiwic3RyZWFtIiwic3BsaXQiLCJwb3AiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInMiLCJuIiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsIm5vZGUiLCJ0aHJlYWRfaWQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJwZW5kaW5nX2FjdGlvbnMiLCJsZW5ndGgiLCJjb25zb2xlIiwiZXJyb3IiLCJ0eXBlIiwid2FybiIsImUiLCJmIiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJhc2tNYWlhIiwiX3JlZjQiLCJfY2FsbGVlMiIsIl9yZWYzIiwiaGlzdG9yeSIsInByb2plY3RJZCIsImxhbmciLCJ1c2VySWQiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnlJZCIsImNoYXRJZCIsIm1lc3NhZ2VJZCIsImNsaWVudElkIiwiY2xpZW50TmFtZSIsImZlZUlkIiwiYWdlbnROYW1lIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJwcm9qZWN0TmFtZSIsInRhc2tJZCIsInRhc2tOYW1lIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsImZ1YUlkIiwic2NJZCIsImFnZW50RW50aXR5IiwiY29udGV4dE1lc3NhZ2UiLCJfYXR0YWNobWVudHMkbGVuZ3RoIiwiX2Fib3J0Q29udHJvbGxlclJlZiRjIiwiaW5pdGlhbEFjdGl2aXR5IiwiX29uRXJyb3JSZWYkY3VycmVudDMiLCJfdDUiLCJfY29udGV4dDIiLCJoYXNBdHRhY2htZW50cyIsIkJvb2xlYW4iLCJhdHRhY2htZW50c0NvdW50IiwiQWJvcnRDb250cm9sbGVyIiwiT3JjaGVzdHJhdG9yIiwib3JjaGVzdHJhdG9yIiwiX29iamVjdFNwcmVhZCIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMgfSBmcm9tICcuL3VzZU9yY2hlc3RyYXRvclN0cmVhbS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQge1xuICBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyxcbiAgYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSxcbiAgY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSxcbiAgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSxcbiAgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5LFxuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCwgbWVyZ2VTdHJlYW1DaHVuayB9IGZyb20gJy4uLy4uL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQnXG5cbmV4cG9ydCBjb25zdCB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gPSAoe1xuICBvblN0cmVhbVVwZGF0ZSxcbiAgb25GaW5pc2hTdHJlYW0sXG4gIG9uU3RhcnRXcml0aW5nLFxuICBvblN0b3AsXG4gIG9uRXJyb3IsXG4gIG9uQXBwcm92YWxSZXF1aXJlZCxcbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsXG59OiBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZSwgc2V0TG9hZGluZ01lc3NhZ2VdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3N0cmVhbUFjdGl2aXR5LCBzZXRTdHJlYW1BY3Rpdml0eV0gPSB1c2VTdGF0ZTxTdHJlYW1BY3Rpdml0eSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmID0gdXNlUmVmKDApXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgIHNldFN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgfSwgW10pXG5cbiAgY29uc3QgYXBwbHlTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkpID0+IHtcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2Py5waGFzZSA9PT0gYWN0aXZpdHkucGhhc2UgJiYgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShhY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2Py5waGFzZSAhPT0gYWN0aXZpdHkucGhhc2UpIHtcbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICAgIH1cbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKGFjdGl2aXR5Lm1lc3NhZ2UpXG4gICAgICByZXR1cm4gYWN0aXZpdHlcbiAgICB9KVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNMb2FkaW5nIHx8IGlzV3JpdGluZyB8fCAhc3RyZWFtQWN0aXZpdHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKCFjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKHN0cmVhbUFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc2V0U3RyZWFtQWN0aXZpdHkocHJldiA9PiB7XG4gICAgICAgIGlmICghcHJldiB8fCAhY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShwcmV2LnBoYXNlKSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKHByZXYucGhhc2UsIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZHZhbmNlZCA9IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldiwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCwgdClcbiAgICAgICAgaWYgKCFhZHZhbmNlZCkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IGFkdmFuY2VkLm5leHRJbmRleFxuICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShhZHZhbmNlZC5hY3Rpdml0eS5tZXNzYWdlKVxuICAgICAgICByZXR1cm4gYWR2YW5jZWQuYWN0aXZpdHlcbiAgICAgIH0pXG4gICAgfSwgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMpXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZClcbiAgfSwgW2lzTG9hZGluZywgaXNXcml0aW5nLCBzdHJlYW1BY3Rpdml0eT8ucGhhc2UsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVNTRVN0cmVhbSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIHJBRi10aHJvdHRsZTogZXZpdGEgZW1pdGlyIG9uU3RyZWFtVXBkYXRlIG3DoXMgZGUgdW5hIHZleiBwb3IgZnJhbWUuXG4gICAgICAvLyBBY3VtdWxhIGVsIMO6bHRpbW8gdmFsb3IgeSBsbyBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLlxuICAgICAgLy8gTm90YTogbm8gdG9jYW1vcyBlbCBzdGF0ZSBgZGF0YWAgZW4gZWwgaG90IHBhdGggKHNvbG8gc2UgYWN0dWFsaXphIGVuXG4gICAgICAvLyBgY29tcGxldGVgL3Jlc2V0cykgcGFyYSBubyByZS1yZW5kZXJpemFyIGEgbG9zIGNvbnN1bWlkb3JlcyBkZWwgaG9va1xuICAgICAgLy8gZW4gY2FkYSBmcmFtZTsgZWwgdGV4dG8gZW4gdml2byB2aWFqYSBwb3IgZWwgc3RyZWFtaW5nU3RvcmUuXG4gICAgICBsZXQgcGVuZGluZ0NvbnRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHJldHVyblxuICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZClcbiAgICAgICAgICByYWZJZCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudD8uKHRvRW1pdCwgbnVsbCwgJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gICAgICAgIGxldCBidWZmZXIgPSAnJ1xuICAgICAgICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgICAgICAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICAgICAgICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgICAgICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgICAgICAgIHNldElzV3JpdGluZyh0cnVlKVxuICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgICAgICAgIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNodW5rID0gKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoIWNodW5rKSByZXR1cm5cbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY2h1bmspXG4gICAgICAgICAgZW1pdFRocm90dGxlZChhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNvbXBsZXRlID0gKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBwYXlsb2FkLnNvdXJjZXMgfHwgbnVsbFxuICAgICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChwYXlsb2FkLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5hdHRhY2htZW50cykgPyBwYXlsb2FkLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgICAgIGxldCBzdWdnZXN0aW9uczogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdF9yZXBseSkpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdXG4gICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW11cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IHBheWxvYWQuYWdlbnRfaWQgPz8gcGF5bG9hZC5hZ2VudElkXG4gICAgICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9XG4gICAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICAgIGNvbnN0IHN1YmFnZW50UmF3ID0gcGF5bG9hZC5zdWJhZ2VudCBhcyB7XG4gICAgICAgICAgICBuYW1lPzogc3RyaW5nXG4gICAgICAgICAgICByZXNvbHZlZF9jb250ZXh0PzogaW1wb3J0KCcuL3VzZU9yY2hlc3RyYXRvclN0cmVhbS5pbnRlcmZhY2UnKS5SZXNvbHZlZENvbnRleHQgfCBudWxsXG4gICAgICAgICAgfSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgICAgICBjb25zdCBzdWJhZ2VudE5hbWUgPSBzdWJhZ2VudFJhdz8ubmFtZT8udHJpbSgpID8gc3ViYWdlbnRSYXcubmFtZS50cmltKCkgOiBudWxsXG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRDb250ZXh0ID0gc3ViYWdlbnRSYXc/LnJlc29sdmVkX2NvbnRleHQgPz8gbnVsbFxuICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgc2V0RGF0YShmaW5hbENvbnRlbnQpXG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgIGZpbmFsQ29udGVudCxcbiAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZCxcbiAgICAgICAgICAgIHN1YmFnZW50TmFtZSxcbiAgICAgICAgICAgIHJlc29sdmVkQ29udGV4dFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgICAgIC8vIE9yY2hlc3RyYXRvciBkZWxlZ2F0ZWQgdG8gYSBzdWJhZ2VudDogc2hvdyB3aGljaCBzcGVjaWFsaXN0XG4gICAgICAgICAgICAgICAgICAvLyBpcyBoYW5kbGluZyB0aGUgcmVxdWVzdCBpbiB0aGUgYWN0aXZpdHkgaW5kaWNhdG9yLlxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubm9kZSA9PT0gJ2FnZW50X3RyYW5zZmVyJyAmJiBkYXRhLnN1YmFnZW50Py5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gJ2FjdGlvbicgcGhhc2UgZG9lcyBub3Qgcm90YXRlIGl0cyBtZXNzYWdlLCBzbyB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gXCJDb25zdWx0aW5nIDxhZ2VudD5cIiBsYWJlbCBzdGF5cyB2aXNpYmxlIHdoaWxlIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBzdWJhZ2VudCB3b3JrcyAoaW5zdGVhZCBvZiBiZWluZyByZXBsYWNlZCBhZnRlciB+M3MpLlxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICBwaGFzZTogJ2FjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdCgnY2hhdC5hY3Rpdml0eS50cmFuc2ZlcnJpbmdUb0FnZW50JywgeyBuYW1lOiBkYXRhLnN1YmFnZW50Lm5hbWUgfSksXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEubWVzc2FnZSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZGF0YS50aHJlYWRfaWQgPT09ICdzdHJpbmcnID8gZGF0YS50aHJlYWRfaWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOiB7XG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgY29uc3QgaXNNYW51YWxBcHByb3ZhbCA9IGRhdGEubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICBpZiAoIWlzTWFudWFsQXBwcm92YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQ/LihkYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBpZiAoaXNNYW51YWxBcHByb3ZhbCAmJiBBcnJheS5pc0FycmF5KGRhdGEucGVuZGluZ19hY3Rpb25zKSAmJiBkYXRhLnBlbmRpbmdfYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShyZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCkpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBkYXRhLmVycm9yKVxuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIGhheSBlcnJvclxuICAgICAgICAgICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oZGF0YS5lcnJvcj8udHlwZSwgZGF0YS5lcnJvcj8ubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuXG4gICAgICAgIC8vIFNvbG8gZWplY3V0YXIgb25FcnJvciBzaSBubyBmdWUgdW4gc3RvcCBpbnRlbmNpb25hbFxuICAgICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthcHBseVN0cmVhbUFjdGl2aXR5LCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSwgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsIHRdXG4gIClcblxuICBjb25zdCBhc2tNYWlhID0gYXN5bmMgKHtcbiAgICBtZXNzYWdlLFxuICAgIGhpc3RvcnksXG4gICAgcHJvamVjdElkLFxuICAgIGxhbmcsXG4gICAgdXNlcklkLFxuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICBjb21wYW55SWQsXG4gICAgY2hhdElkLFxuICAgIG1lc3NhZ2VJZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICAgIGZlZUlkLFxuICAgIGFnZW50TmFtZSxcbiAgICBhZ2VudElkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhdHRhY2htZW50cyxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICB0YXNrSWQsXG4gICAgdGFza05hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgZnVhSWQsXG4gICAgc2NJZCxcbiAgICBhZ2VudEVudGl0eSxcbiAgICBjb250ZXh0TWVzc2FnZSxcbiAgfToge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGhpc3Rvcnk6IENoYXRIaXN0b3J5W11cbiAgICBwcm9qZWN0SWQ6IG51bWJlciB8IG51bGxcbiAgICBsYW5nOiBzdHJpbmdcbiAgICB1c2VySWQ6IHN0cmluZ1xuICAgIGZpcnN0TmFtZT86IHN0cmluZ1xuICAgIGxhc3ROYW1lPzogc3RyaW5nXG4gICAgY29tcGFueUlkOiBzdHJpbmdcbiAgICBjaGF0SWQ6IHN0cmluZ1xuICAgIG1lc3NhZ2VJZDogc3RyaW5nXG4gICAgY2xpZW50SWQ/OiBudW1iZXJcbiAgICBjbGllbnROYW1lPzogc3RyaW5nXG4gICAgZmVlSWQ/OiBudW1iZXJcbiAgICBhZ2VudE5hbWU6IHN0cmluZ1xuICAgIGFnZW50SWQ6IHN0cmluZ1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICAgIHRhc2tJZD86IG51bWJlclxuICAgIHRhc2tOYW1lPzogc3RyaW5nXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICAgIGFnZW50RW50aXR5PzogQWdlbnRFbnRpdHlcbiAgICBjb250ZXh0TWVzc2FnZT86IENvbnRleHRNZXNzYWdlXG4gIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0RGF0YShudWxsKVxuICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCB7XG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgIGhhc0F0dGFjaG1lbnRzOiBCb29sZWFuKGF0dGFjaG1lbnRzPy5sZW5ndGgpLFxuICAgICAgICBhdHRhY2htZW50c0NvdW50OiBhdHRhY2htZW50cz8ubGVuZ3RoID8/IDAsXG4gICAgICB9KVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShpbml0aWFsQWN0aXZpdHkpXG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlIC8vIFJlc2V0ZWFyIGZsYWcgYWwgaW5pY2lhciBudWV2YSBwZXRpY2nDs25cblxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dDogbWVzc2FnZSxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIC4uLihmaXJzdE5hbWUgPyB7IGZpcnN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihsYXN0TmFtZSA/IHsgbGFzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICBjb21wYW55SWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAuLi4oZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQgfSA6IHt9KSxcbiAgICAgICAgICBhZ2VudE5hbWUsXG4gICAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIC4uLihwcm9qZWN0TmFtZSA/IHsgcHJvamVjdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50TmFtZSA/IHsgY2xpZW50TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLih0YXNrSWQgIT0gbnVsbCA/IHsgdGFza0lkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tOYW1lID8geyB0YXNrTmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50RW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNvbnRleHRNZXNzYWdlID8geyBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudD8uc2lnbmFsXG4gICAgICApXG5cbiAgICAgIGF3YWl0IGhhbmRsZVNTRVN0cmVhbShyZXNwb25zZSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2kgZnVlIHVuIGFib3J0IGludGVuY2lvbmFsIChzdG9wIG1hbnVhbCBvIGNhbWJpbyBkZSBjaGF0KSwgbm8gZGlzcGFyYXIgb25FcnJvclxuICAgICAgLy8gcG9ycXVlIGVzbyBpbnNlcnRhIHVuIFwibWVuc2FqZSBkZSBlcnJvclwiIGVuIGVsIGNoYXQgYWwgcXVlIGFjYWJhbW9zIGRlIG5hdmVnYXIuXG4gICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgIH1cbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RvcFN0cmVhbWluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGVdKVxuXG4gIC8qKlxuICAgKiBBYm9ydGEgZWwgc3RyZWFtIGVuIGN1cnNvIChzaSBleGlzdGUpIHNpbiBkaXNwYXJhciBgb25TdG9wYC5cbiAgICogw5pzZWxvIGVuIGNhc29zIGRvbmRlIG5vIHF1ZXJlbW9zIGFncmVnYXIgZWwgbWVuc2FqZSBkZSBcImNhbmNlbGFkb1wiXG4gICAqIChwb3IgZWplbXBsbywgYWwgY2FtYmlhciBkZSBjaGF0KS5cbiAgICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLy8gQ2xlYW51cCBhbCBkZXNtb250YXI6IHNpIHF1ZWRhIHVuIHN0cmVhbSBhY3Rpdm8sIGFib3J0YXJsbyBwYXJhIGV2aXRhclxuICAvLyBxdWUgaW50ZW50ZSBhY3R1YWxpemFyIGVzdGFkbyBlbiB1biBjb21wb25lbnRlIHlhIGRlc21vbnRhZG8gKGZ1Z2FzIGRlXG4gIC8vIG1lbW9yaWEgeSB3YXJuaW5ncykuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlU3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKCFhY3Rpdml0eSkge1xuICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICB9LFxuICAgIFthcHBseVN0cmVhbUFjdGl2aXR5LCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIHNldERhdGEobnVsbClcbiAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc2tNYWlhLFxuICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgcmVzZXQsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJlYWRcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUt0QyxTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBRWpELFNBQ0VDLDBCQUEwQixFQUMxQkMsNEJBQTRCLEVBQzVCQywrQkFBK0IsRUFDL0JDLDRCQUE0QixFQUM1QkMsd0JBQXdCLEVBQ3hCQyx5QkFBeUIsRUFDekJDLHdCQUF3QixFQUN4QkMsNkJBQTZCLEVBQzdCQyxnQ0FBZ0MsUUFDM0Isb0NBQW9DO0FBQzNDLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFFekYsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFBQyxJQUFBLEVBUUE7RUFBQSxJQVBoQ0MsY0FBYyxHQUFBRCxJQUFBLENBQWRDLGNBQWM7SUFDZEMsY0FBYyxHQUFB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O01BQzNCVCxrQkFBa0IsQ0FBQ1MsT0FBTyxDQUFDa0wsS0FBSyxDQUFDLENBQUM7TUFDbEMzTCxrQkFBa0IsQ0FBQ1MsT0FBTyxHQUFHLElBQUk7TUFDakN0QixVQUFVLENBQUMsS0FBSyxDQUFDO01BQ2pCSSxZQUFZLENBQUMsS0FBSyxDQUFDO01BQ25CbUIsdUJBQXVCLENBQUMsQ0FBQztJQUMzQjtFQUNGLENBQUMsRUFBRSxDQUFDQSx1QkFBdUIsQ0FBQyxDQUFDOztFQUU3QjtFQUNBO0VBQ0E7RUFDQTFELFNBQVMsQ0FBQyxZQUFNO0lBQ2QsT0FBTyxZQUFNO01BQ1gsSUFBSWdELGtCQUFrQixDQUFDUyxPQUFPLEVBQUU7UUFDOUJULGtCQUFrQixDQUFDUyxPQUFPLENBQUNrTCxLQUFLLENBQUMsQ0FBQztRQUNsQzNMLGtCQUFrQixDQUFDUyxPQUFPLEdBQUcsSUFBSTtNQUNuQztJQUNGLENBQUM7RUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTW9MLG9CQUFvQixHQUFHL08sV0FBVyxDQUN0QyxVQUFDOEQsUUFBK0IsRUFBSztJQUNuQyxJQUFJLENBQUNBLFFBQVEsRUFBRTtNQUNiRix1QkFBdUIsQ0FBQyxDQUFDO01BQ3pCO0lBQ0Y7SUFDQUMsbUJBQW1CLENBQUNDLFFBQVEsQ0FBQztFQUMvQixDQUFDLEVBQ0QsQ0FBQ0QsbUJBQW1CLEVBQUVELHVCQUF1QixDQUMvQyxDQUFDO0VBRUQsSUFBTW9MLEtBQUssR0FBRyxTQUFSQSxLQUFLQSxDQUFBLEVBQVM7SUFDbEIvTSxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2JJLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDakJJLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkJtQix1QkFBdUIsQ0FBQyxDQUFDO0lBQ3pCVCxZQUFZLENBQUNRLE9BQU8sR0FBRyxLQUFLO0VBQzlCLENBQUM7RUFFRCxPQUFPO0lBQ0xvSSxPQUFPLEVBQVBBLE9BQU87SUFDUGhILFFBQVEsRUFBRS9DLElBQUk7SUFDZEksU0FBUyxFQUFUQSxTQUFTO0lBQ1RJLFNBQVMsRUFBVEEsU0FBUztJQUNUSSxjQUFjLEVBQWRBLGNBQWM7SUFDZEksY0FBYyxFQUFkQSxjQUFjO0lBQ2QrTCxvQkFBb0IsRUFBcEJBLG9CQUFvQjtJQUNwQkMsS0FBSyxFQUFMQSxLQUFLO0lBQ0xMLGFBQWEsRUFBYkEsYUFBYTtJQUNiRyxtQkFBbUIsRUFBbkJBLG1CQUFtQjtJQUNuQnJLLGVBQWUsRUFBZkEsZUFBZSxDQUFFO0VBQ25CLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
542
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJhZHZhbmNlZCIsIm5leHRJbmRleCIsImNsZWFySW50ZXJ2YWwiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfb25FcnJvclJlZiRjdXJyZW50IiwiX2RhdGEkZXJyb3IiLCJfZGF0YSRlcnJvcjIiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiYXBwbHlTdHJlYW1Db21wbGV0ZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJfbGluZSRzcGxpdDIiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsImRhdGFTdHIiLCJfZGF0YSIsImNodW5rIiwiX2NodW5rIiwiX29uQXBwcm92YWxSZXF1aXJlZFJlIiwiaXNNYW51YWxBcHByb3ZhbCIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsIl9vblN0YXJ0V3JpdGluZ1JlZiRjdSIsInBheWxvYWQiLCJfcGF5bG9hZCRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJyZXBsYWNlIiwiSlNPTiIsInBhcnNlIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwicGVuZGluZ19hY3Rpb25zIiwibGVuZ3RoIiwiY29uc29sZSIsImVycm9yIiwidHlwZSIsIndhcm4iLCJlIiwiZiIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiYXNrTWFpYSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcmVmMyIsImhpc3RvcnkiLCJwcm9qZWN0SWQiLCJsYW5nIiwidXNlcklkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjaGF0SWQiLCJtZXNzYWdlSWQiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJmZWVJZCIsImFnZW50TmFtZSIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwicHJvamVjdE5hbWUiLCJ0YXNrSWQiLCJ0YXNrTmFtZSIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJmdWFJZCIsInNjSWQiLCJhZ2VudEVudGl0eSIsImNvbnRleHRNZXNzYWdlIiwiY29udGV4dERhdGEiLCJfYXR0YWNobWVudHMkbGVuZ3RoIiwiX2Fib3J0Q29udHJvbGxlclJlZiRjIiwiaW5pdGlhbEFjdGl2aXR5IiwiX29uRXJyb3JSZWYkY3VycmVudDMiLCJfdDUiLCJfY29udGV4dDIiLCJoYXNBdHRhY2htZW50cyIsIkJvb2xlYW4iLCJhdHRhY2htZW50c0NvdW50IiwiQWJvcnRDb250cm9sbGVyIiwiT3JjaGVzdHJhdG9yIiwib3JjaGVzdHJhdG9yIiwiX29iamVjdFNwcmVhZCIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMgfSBmcm9tICcuL3VzZU9yY2hlc3RyYXRvclN0cmVhbS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQge1xuICBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyxcbiAgYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSxcbiAgY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSxcbiAgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSxcbiAgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5LFxuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCwgbWVyZ2VTdHJlYW1DaHVuayB9IGZyb20gJy4uLy4uL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQnXG5cbmV4cG9ydCBjb25zdCB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gPSAoe1xuICBvblN0cmVhbVVwZGF0ZSxcbiAgb25GaW5pc2hTdHJlYW0sXG4gIG9uU3RhcnRXcml0aW5nLFxuICBvblN0b3AsXG4gIG9uRXJyb3IsXG4gIG9uQXBwcm92YWxSZXF1aXJlZCxcbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsXG59OiBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZSwgc2V0TG9hZGluZ01lc3NhZ2VdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3N0cmVhbUFjdGl2aXR5LCBzZXRTdHJlYW1BY3Rpdml0eV0gPSB1c2VTdGF0ZTxTdHJlYW1BY3Rpdml0eSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmID0gdXNlUmVmKDApXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgIHNldFN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgfSwgW10pXG5cbiAgY29uc3QgYXBwbHlTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkpID0+IHtcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2Py5waGFzZSA9PT0gYWN0aXZpdHkucGhhc2UgJiYgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShhY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2Py5waGFzZSAhPT0gYWN0aXZpdHkucGhhc2UpIHtcbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICAgIH1cbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKGFjdGl2aXR5Lm1lc3NhZ2UpXG4gICAgICByZXR1cm4gYWN0aXZpdHlcbiAgICB9KVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNMb2FkaW5nIHx8IGlzV3JpdGluZyB8fCAhc3RyZWFtQWN0aXZpdHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKCFjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKHN0cmVhbUFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc2V0U3RyZWFtQWN0aXZpdHkocHJldiA9PiB7XG4gICAgICAgIGlmICghcHJldiB8fCAhY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShwcmV2LnBoYXNlKSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKHByZXYucGhhc2UsIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZHZhbmNlZCA9IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldiwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCwgdClcbiAgICAgICAgaWYgKCFhZHZhbmNlZCkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IGFkdmFuY2VkLm5leHRJbmRleFxuICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShhZHZhbmNlZC5hY3Rpdml0eS5tZXNzYWdlKVxuICAgICAgICByZXR1cm4gYWR2YW5jZWQuYWN0aXZpdHlcbiAgICAgIH0pXG4gICAgfSwgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMpXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZClcbiAgfSwgW2lzTG9hZGluZywgaXNXcml0aW5nLCBzdHJlYW1BY3Rpdml0eT8ucGhhc2UsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVNTRVN0cmVhbSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIHJBRi10aHJvdHRsZTogZXZpdGEgZW1pdGlyIG9uU3RyZWFtVXBkYXRlIG3DoXMgZGUgdW5hIHZleiBwb3IgZnJhbWUuXG4gICAgICAvLyBBY3VtdWxhIGVsIMO6bHRpbW8gdmFsb3IgeSBsbyBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLlxuICAgICAgLy8gTm90YTogbm8gdG9jYW1vcyBlbCBzdGF0ZSBgZGF0YWAgZW4gZWwgaG90IHBhdGggKHNvbG8gc2UgYWN0dWFsaXphIGVuXG4gICAgICAvLyBgY29tcGxldGVgL3Jlc2V0cykgcGFyYSBubyByZS1yZW5kZXJpemFyIGEgbG9zIGNvbnN1bWlkb3JlcyBkZWwgaG9va1xuICAgICAgLy8gZW4gY2FkYSBmcmFtZTsgZWwgdGV4dG8gZW4gdml2byB2aWFqYSBwb3IgZWwgc3RyZWFtaW5nU3RvcmUuXG4gICAgICBsZXQgcGVuZGluZ0NvbnRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHJldHVyblxuICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZClcbiAgICAgICAgICByYWZJZCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudD8uKHRvRW1pdCwgbnVsbCwgJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gICAgICAgIGxldCBidWZmZXIgPSAnJ1xuICAgICAgICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgICAgICAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICAgICAgICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgICAgICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgICAgICAgIHNldElzV3JpdGluZyh0cnVlKVxuICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgICAgICAgIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNodW5rID0gKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoIWNodW5rKSByZXR1cm5cbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY2h1bmspXG4gICAgICAgICAgZW1pdFRocm90dGxlZChhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNvbXBsZXRlID0gKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBwYXlsb2FkLnNvdXJjZXMgfHwgbnVsbFxuICAgICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChwYXlsb2FkLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5hdHRhY2htZW50cykgPyBwYXlsb2FkLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgICAgIGxldCBzdWdnZXN0aW9uczogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdF9yZXBseSkpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdXG4gICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW11cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IHBheWxvYWQuYWdlbnRfaWQgPz8gcGF5bG9hZC5hZ2VudElkXG4gICAgICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9XG4gICAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgc2V0RGF0YShmaW5hbENvbnRlbnQpXG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgIGZpbmFsQ29udGVudCxcbiAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgICAgIGlmIChkYXRhLm1lc3NhZ2UgJiYgdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGRhdGEudGhyZWFkX2lkID09PSAnc3RyaW5nJyA/IGRhdGEudGhyZWFkX2lkIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWFudWFsQXBwcm92YWwgPSBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgaWYgKCFpc01hbnVhbEFwcHJvdmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG9uQXBwcm92YWxSZXF1aXJlZFJlZi5jdXJyZW50Py4oZGF0YSwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICAgICAgaWYgKGlzTWFudWFsQXBwcm92YWwgJiYgQXJyYXkuaXNBcnJheShkYXRhLnBlbmRpbmdfYWN0aW9ucykgJiYgZGF0YS5wZW5kaW5nX2FjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkocmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnQpKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZGF0YS5lcnJvcilcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBoYXkgZXJyb3JcbiAgICAgICAgICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKGRhdGEuZXJyb3I/LnR5cGUsIGRhdGEuZXJyb3I/Lm1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biBTU0UgZXZlbnQgdHlwZTonLCBldmVudFR5cGUpXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcblxuICAgICAgICAvLyBTb2xvIGVqZWN1dGFyIG9uRXJyb3Igc2kgbm8gZnVlIHVuIHN0b3AgaW50ZW5jaW9uYWxcbiAgICAgICAgaWYgKCFpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eSwgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUsIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLCB0XVxuICApXG5cbiAgY29uc3QgYXNrTWFpYSA9IGFzeW5jICh7XG4gICAgbWVzc2FnZSxcbiAgICBoaXN0b3J5LFxuICAgIHByb2plY3RJZCxcbiAgICBsYW5nLFxuICAgIHVzZXJJZCxcbiAgICBmaXJzdE5hbWUsXG4gICAgbGFzdE5hbWUsXG4gICAgY29tcGFueUlkLFxuICAgIGNoYXRJZCxcbiAgICBtZXNzYWdlSWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgICBmZWVJZCxcbiAgICBhZ2VudE5hbWUsXG4gICAgYWdlbnRJZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgYXR0YWNobWVudHMsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgdGFza0lkLFxuICAgIHRhc2tOYW1lLFxuICAgIGZhcUlkLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkLFxuICAgIGZ1YUlkLFxuICAgIHNjSWQsXG4gICAgYWdlbnRFbnRpdHksXG4gICAgY29udGV4dE1lc3NhZ2UsXG4gICAgY29udGV4dERhdGEsXG4gIH06IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gICAgcHJvamVjdElkOiBudW1iZXIgfCBudWxsXG4gICAgbGFuZzogc3RyaW5nXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgICBsYXN0TmFtZT86IHN0cmluZ1xuICAgIGNvbXBhbnlJZDogc3RyaW5nXG4gICAgY2hhdElkOiBzdHJpbmdcbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGNsaWVudElkPzogbnVtYmVyXG4gICAgY2xpZW50TmFtZT86IHN0cmluZ1xuICAgIGZlZUlkPzogbnVtYmVyXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICB0YXNrSWQ/OiBudW1iZXJcbiAgICB0YXNrTmFtZT86IHN0cmluZ1xuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5XG4gICAgY29udGV4dE1lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIHtcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHM/Lmxlbmd0aCksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IGF0dGFjaG1lbnRzPy5sZW5ndGggPz8gMCxcbiAgICAgIH0pXG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2UgLy8gUmVzZXRlYXIgZmxhZyBhbCBpbmljaWFyIG51ZXZhIHBldGljacOzblxuXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBtZXNzYWdlLFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgbGFuZyxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxhc3ROYW1lID8geyBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVJZCB9IDoge30pLFxuICAgICAgICAgIGFnZW50TmFtZSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnROYW1lID8geyBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza05hbWUgPyB7IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRFbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudD8uc2lnbmFsXG4gICAgICApXG5cbiAgICAgIGF3YWl0IGhhbmRsZVNTRVN0cmVhbShyZXNwb25zZSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2kgZnVlIHVuIGFib3J0IGludGVuY2lvbmFsIChzdG9wIG1hbnVhbCBvIGNhbWJpbyBkZSBjaGF0KSwgbm8gZGlzcGFyYXIgb25FcnJvclxuICAgICAgLy8gcG9ycXVlIGVzbyBpbnNlcnRhIHVuIFwibWVuc2FqZSBkZSBlcnJvclwiIGVuIGVsIGNoYXQgYWwgcXVlIGFjYWJhbW9zIGRlIG5hdmVnYXIuXG4gICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgIH1cbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RvcFN0cmVhbWluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGVdKVxuXG4gIC8qKlxuICAgKiBBYm9ydGEgZWwgc3RyZWFtIGVuIGN1cnNvIChzaSBleGlzdGUpIHNpbiBkaXNwYXJhciBgb25TdG9wYC5cbiAgICogw5pzZWxvIGVuIGNhc29zIGRvbmRlIG5vIHF1ZXJlbW9zIGFncmVnYXIgZWwgbWVuc2FqZSBkZSBcImNhbmNlbGFkb1wiXG4gICAqIChwb3IgZWplbXBsbywgYWwgY2FtYmlhciBkZSBjaGF0KS5cbiAgICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLy8gQ2xlYW51cCBhbCBkZXNtb250YXI6IHNpIHF1ZWRhIHVuIHN0cmVhbSBhY3Rpdm8sIGFib3J0YXJsbyBwYXJhIGV2aXRhclxuICAvLyBxdWUgaW50ZW50ZSBhY3R1YWxpemFyIGVzdGFkbyBlbiB1biBjb21wb25lbnRlIHlhIGRlc21vbnRhZG8gKGZ1Z2FzIGRlXG4gIC8vIG1lbW9yaWEgeSB3YXJuaW5ncykuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlU3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKCFhY3Rpdml0eSkge1xuICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICB9LFxuICAgIFthcHBseVN0cmVhbUFjdGl2aXR5LCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIHNldERhdGEobnVsbClcbiAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc2tNYWlhLFxuICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgcmVzZXQsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJlYWRcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUt0QyxTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBRWpELFNBQ0VDLDBCQUEwQixFQUMxQkMsNEJBQTRCLEVBQzVCQywrQkFBK0IsRUFDL0JDLDRCQUE0QixFQUM1QkMsd0JBQXdCLEVBQ3hCQyx5QkFBeUIsRUFDekJDLHdCQUF3QixFQUN4QkMsNkJBQTZCLEVBQzdCQyxnQ0FBZ0MsUUFDM0Isb0NBQW9DO0FBQzNDLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFFekYsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFBQyxJQUFBLEVBUUE7RUFBQSxJQVBoQ0MsY0FBYyxHQUFBRCxJQUFBLENBQWRDLGNBQWM7SUFDZEMsY0FBYyxHQUFBRixJQUFBLENBQWRFLGNBQWM7SUFDZEMsY0FBYyxHQUFBSCxJQUFBLENBQWRHLGNBQWM7SUFDZEMsTUFBTSxHQUFBSixJQUFBLENBQU5JLE1BQU07SUFDTkMsT0FBTyxHQUFBTCxJQUFBLENBQVBLLE9BQU87SUFDUEMsa0JBQWtCLEdBQUFOLElBQUEsQ0FBbEJNLGtCQUFrQjtJQUNsQkMsdUJBQXVCLEdBQUFQLElBQUEsQ0FBdkJPLHVCQUF1QjtFQUV2QixJQUFBQyxlQUFBLEdBQWN2QixjQUFjLENBQUMsQ0FBQ0UsUUFBUSxDQUFDc0IsTUFBTSxDQUFDLENBQUM7SUFBdkNDLENBQUMsR0FB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TyxHQUFHLElBQUk7TUFDM0JULGtCQUFrQixDQUFDUyxPQUFPLENBQUN5SyxLQUFLLENBQUMsQ0FBQztNQUNsQ2xMLGtCQUFrQixDQUFDUyxPQUFPLEdBQUcsSUFBSTtNQUNqQ3RCLFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDakJJLFlBQVksQ0FBQyxLQUFLLENBQUM7TUFDbkJtQix1QkFBdUIsQ0FBQyxDQUFDO0lBQzNCO0VBQ0YsQ0FBQyxFQUFFLENBQUNBLHVCQUF1QixDQUFDLENBQUM7O0VBRTdCO0VBQ0E7RUFDQTtFQUNBMUQsU0FBUyxDQUFDLFlBQU07SUFDZCxPQUFPLFlBQU07TUFDWCxJQUFJZ0Qsa0JBQWtCLENBQUNTLE9BQU8sRUFBRTtRQUM5QlQsa0JBQWtCLENBQUNTLE9BQU8sQ0FBQ3lLLEtBQUssQ0FBQyxDQUFDO1FBQ2xDbEwsa0JBQWtCLENBQUNTLE9BQU8sR0FBRyxJQUFJO01BQ25DO0lBQ0YsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNMkssb0JBQW9CLEdBQUd0TyxXQUFXLENBQ3RDLFVBQUM4RCxRQUErQixFQUFLO0lBQ25DLElBQUksQ0FBQ0EsUUFBUSxFQUFFO01BQ2JGLHVCQUF1QixDQUFDLENBQUM7TUFDekI7SUFDRjtJQUNBQyxtQkFBbUIsQ0FBQ0MsUUFBUSxDQUFDO0VBQy9CLENBQUMsRUFDRCxDQUFDRCxtQkFBbUIsRUFBRUQsdUJBQXVCLENBQy9DLENBQUM7RUFFRCxJQUFNMkssS0FBSyxHQUFHLFNBQVJBLEtBQUtBLENBQUEsRUFBUztJQUNsQnRNLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDYkksVUFBVSxDQUFDLEtBQUssQ0FBQztJQUNqQkksWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNuQm1CLHVCQUF1QixDQUFDLENBQUM7SUFDekJULFlBQVksQ0FBQ1EsT0FBTyxHQUFHLEtBQUs7RUFDOUIsQ0FBQztFQUVELE9BQU87SUFDTDBILE9BQU8sRUFBUEEsT0FBTztJQUNQdEcsUUFBUSxFQUFFL0MsSUFBSTtJQUNkSSxTQUFTLEVBQVRBLFNBQVM7SUFDVEksU0FBUyxFQUFUQSxTQUFTO0lBQ1RJLGNBQWMsRUFBZEEsY0FBYztJQUNkSSxjQUFjLEVBQWRBLGNBQWM7SUFDZHNMLG9CQUFvQixFQUFwQkEsb0JBQW9CO0lBQ3BCQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEwsYUFBYSxFQUFiQSxhQUFhO0lBQ2JHLG1CQUFtQixFQUFuQkEsbUJBQW1CO0lBQ25CNUosZUFBZSxFQUFmQSxlQUFlLENBQUU7RUFDbkIsQ0FBQztBQUNILENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=