@envive-ai/react-hooks 0.2.8 → 0.2.9

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 (162) hide show
  1. package/dist/{NewOrgConfig-BYo4V8-u.cjs → NewOrgConfig-BPnlb15T.cjs} +2 -2
  2. package/dist/{NewOrgConfig-kYrS59aR.js → NewOrgConfig-D80VRZ38.js} +2 -2
  3. package/dist/{SystemSettingsContext-BY1BFgAQ.js → SystemSettingsContext-ChQgRVnq.js} +2 -2
  4. package/dist/{SystemSettingsContext-EDpRMMt2.cjs → SystemSettingsContext-DLrUiwz2.cjs} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-BHVBHQhu.js → TrackComponentVisibleEvent-B0I6P2Ed.js} +2 -2
  6. package/dist/{TrackComponentVisibleEvent-B_2kXqvV.cjs → TrackComponentVisibleEvent-DG5M_UjY.cjs} +2 -2
  7. package/dist/{amplitudeContext-D58WY1aS.js → amplitudeContext-DE3rKEV2.js} +2 -2
  8. package/dist/{amplitudeContext-CjkMpI_a.cjs → amplitudeContext-k-YmQmpX.cjs} +2 -2
  9. package/dist/application/models/index.cjs +2 -2
  10. package/dist/application/models/index.js +2 -2
  11. package/dist/application/utils/index.cjs +4 -4
  12. package/dist/application/utils/index.d.cts +2 -2
  13. package/dist/application/utils/index.d.ts +2 -2
  14. package/dist/application/utils/index.js +4 -4
  15. package/dist/atoms/app/index.cjs +2 -2
  16. package/dist/atoms/app/index.d.cts +6 -6
  17. package/dist/atoms/app/index.d.ts +7 -7
  18. package/dist/atoms/app/index.js +2 -2
  19. package/dist/atoms/chat/index.cjs +5 -5
  20. package/dist/atoms/chat/index.d.cts +26 -26
  21. package/dist/atoms/chat/index.d.ts +26 -26
  22. package/dist/atoms/chat/index.js +5 -5
  23. package/dist/atoms/globalSearch/index.cjs +1 -1
  24. package/dist/atoms/globalSearch/index.d.cts +6 -6
  25. package/dist/atoms/globalSearch/index.js +1 -1
  26. package/dist/atoms/org/index.cjs +2 -2
  27. package/dist/atoms/org/index.d.cts +15 -15
  28. package/dist/atoms/org/index.js +2 -2
  29. package/dist/atoms/search/index.cjs +9 -9
  30. package/dist/atoms/search/index.d.cts +1 -1
  31. package/dist/atoms/search/index.d.ts +1 -1
  32. package/dist/atoms/search/index.js +9 -9
  33. package/dist/{cdnContext-DzifgoNo.cjs → cdnContext-CaDyQ_5p.cjs} +1 -1
  34. package/dist/{cdnContext-B8zWuGGT.js → cdnContext-CtrIlAqX.js} +1 -1
  35. package/dist/{chat-CLo8FBCb.cjs → chat-B1B05BM-.cjs} +4 -4
  36. package/dist/{chat-Qkx5llOV.js → chat-BTfQhuk5.js} +4 -4
  37. package/dist/{chat-DCGriB7h.cjs → chat-CJ9D8n7g.cjs} +1 -1
  38. package/dist/{chat-ClvJ9xEj.js → chat-EJbfGWRr.js} +1 -1
  39. package/dist/{chatSearch-CjMcB3fG.js → chatSearch-BGWkK5FD.js} +5 -5
  40. package/dist/{chatSearch-CP7QtVyA.cjs → chatSearch-BWXonqb0.cjs} +5 -5
  41. package/dist/{chatState-BUN8ehpy.js → chatState-5iiJOrvd.js} +3 -3
  42. package/dist/{chatState-BUlDJ4NK.cjs → chatState-C1ksoACz.cjs} +3 -3
  43. package/dist/{commerce-api-CxnUXpTq.js → commerce-api-DA5_5J9U.js} +4 -4
  44. package/dist/{commerce-api-DNnrOYWX.cjs → commerce-api-DUmK4auK.cjs} +4 -4
  45. package/dist/{common-DQPvV_S_.cjs → common-CuwWqIJ1.cjs} +1 -1
  46. package/dist/{common-c_4eX0qn.js → common-Df2bwzd2.js} +1 -1
  47. package/dist/{components-DKwVHIjq.cjs → components-BCfFLf9X.cjs} +1 -1
  48. package/dist/{components-CDpaMUjK.js → components-QGCWJ26c.js} +1 -1
  49. package/dist/config/index.cjs +4 -4
  50. package/dist/config/index.js +4 -4
  51. package/dist/config/locators/components/chat/index.cjs +1 -1
  52. package/dist/config/locators/components/chat/index.js +1 -1
  53. package/dist/config/locators/components/common/index.cjs +1 -1
  54. package/dist/config/locators/components/common/index.js +1 -1
  55. package/dist/config/locators/components/index.cjs +1 -1
  56. package/dist/config/locators/components/index.js +1 -1
  57. package/dist/config/locators/index.cjs +4 -4
  58. package/dist/config/locators/index.js +4 -4
  59. package/dist/contexts/amplitudeContext/index.cjs +4 -4
  60. package/dist/contexts/amplitudeContext/index.js +4 -4
  61. package/dist/contexts/cdnContext/index.cjs +1 -1
  62. package/dist/contexts/cdnContext/index.js +1 -1
  63. package/dist/contexts/chatContext/index.cjs +14 -14
  64. package/dist/contexts/chatContext/index.d.cts +4 -4
  65. package/dist/contexts/chatContext/index.d.ts +2 -2
  66. package/dist/contexts/chatContext/index.js +14 -14
  67. package/dist/contexts/enviveCssContext/index.cjs +7 -7
  68. package/dist/contexts/enviveCssContext/index.js +7 -7
  69. package/dist/contexts/graphqlContext/index.cjs +3 -3
  70. package/dist/contexts/graphqlContext/index.js +3 -3
  71. package/dist/contexts/newOrgConfigContext/index.cjs +6 -6
  72. package/dist/contexts/newOrgConfigContext/index.js +6 -6
  73. package/dist/contexts/searchContext/index.cjs +7 -7
  74. package/dist/contexts/searchContext/index.js +7 -7
  75. package/dist/contexts/systemSettingsContext/index.cjs +1 -1
  76. package/dist/contexts/systemSettingsContext/index.d.cts +2 -2
  77. package/dist/contexts/systemSettingsContext/index.d.ts +2 -2
  78. package/dist/contexts/systemSettingsContext/index.js +1 -1
  79. package/dist/contexts/types.cjs +1 -1
  80. package/dist/contexts/types.js +1 -1
  81. package/dist/contexts/userIdentityContext/index.cjs +7 -7
  82. package/dist/contexts/userIdentityContext/index.js +7 -7
  83. package/dist/frontendConfig-DPpzM5cz.d.cts +1 -1
  84. package/dist/frontendConfig-msK69LYN.d.ts +1 -1
  85. package/dist/{globalSearch-BQEX-2Ml.js → globalSearch-CuyNpefG.js} +1 -1
  86. package/dist/{globalSearch-BOG3wmck.cjs → globalSearch-D7K4TS83.cjs} +1 -1
  87. package/dist/{graphqlContext-Dddy7mr7.cjs → graphqlContext-CT6auB8V.cjs} +2 -2
  88. package/dist/{graphqlContext-C0hG5Uer.js → graphqlContext-DYFkhHcB.js} +2 -2
  89. package/dist/hooks/AmplitudeOperations/index.cjs +4 -4
  90. package/dist/hooks/AmplitudeOperations/index.js +4 -4
  91. package/dist/hooks/AppDetails/index.cjs +5 -5
  92. package/dist/hooks/AppDetails/index.js +5 -5
  93. package/dist/hooks/CdnOperations/index.cjs +1 -1
  94. package/dist/hooks/CdnOperations/index.js +1 -1
  95. package/dist/hooks/ChatToggle/index.cjs +5 -5
  96. package/dist/hooks/ChatToggle/index.js +5 -5
  97. package/dist/hooks/ChatToggleAnalytics/index.cjs +5 -5
  98. package/dist/hooks/ChatToggleAnalytics/index.js +5 -5
  99. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  100. package/dist/hooks/GraphQLConfig/index.cjs +4 -4
  101. package/dist/hooks/GraphQLConfig/index.js +4 -4
  102. package/dist/hooks/IdentifyUser/index.cjs +7 -7
  103. package/dist/hooks/IdentifyUser/index.js +7 -7
  104. package/dist/hooks/ImageResolver/index.cjs +2 -2
  105. package/dist/hooks/ImageResolver/index.js +2 -2
  106. package/dist/hooks/MessageFilter/index.cjs +2 -2
  107. package/dist/hooks/MessageFilter/index.js +2 -2
  108. package/dist/hooks/NewOrgConfig/index.cjs +7 -7
  109. package/dist/hooks/NewOrgConfig/index.js +7 -7
  110. package/dist/hooks/Search/index.cjs +19 -19
  111. package/dist/hooks/Search/index.d.cts +7 -3
  112. package/dist/hooks/Search/index.d.ts +7 -3
  113. package/dist/hooks/Search/index.js +19 -19
  114. package/dist/hooks/SearchOperations/index.cjs +7 -7
  115. package/dist/hooks/SearchOperations/index.js +7 -7
  116. package/dist/hooks/SystemSettingsContext/index.cjs +2 -2
  117. package/dist/hooks/SystemSettingsContext/index.d.cts +2 -2
  118. package/dist/hooks/SystemSettingsContext/index.d.ts +2 -2
  119. package/dist/hooks/SystemSettingsContext/index.js +2 -2
  120. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +4 -4
  121. package/dist/hooks/TrackComponentVisibleEvent/index.js +4 -4
  122. package/dist/hooks/UpdateAnalyticsProps/index.cjs +3 -3
  123. package/dist/hooks/UpdateAnalyticsProps/index.js +3 -3
  124. package/dist/{index-ri9oOY3g.d.cts → index-B0elglKV.d.cts} +30 -30
  125. package/dist/{index-BVsXKN48.d.ts → index-DvUvoVHb.d.ts} +30 -30
  126. package/dist/{locators-BMQGmGLq.js → locators-C2fWd-74.js} +1 -1
  127. package/dist/{locators-DxYdak1F.cjs → locators-Cx3q6Z_h.cjs} +1 -1
  128. package/dist/{models-CE5YjbzE.js → models-BA9B8LGE.js} +2 -2
  129. package/dist/{models-CJy0mOoW.cjs → models-BubplUcB.cjs} +2 -2
  130. package/dist/{newOrgConfigAtom-CPA6Gp6n.cjs → newOrgConfigAtom-DkZVcH1n.cjs} +1 -1
  131. package/dist/{newOrgConfigAtom-DEUj6H-p.js → newOrgConfigAtom-TCV1_sTk.js} +1 -1
  132. package/dist/{newOrgConfigContext-P4xkie1E.js → newOrgConfigContext-XmEpnUcU.js} +3 -3
  133. package/dist/{newOrgConfigContext-Dg2gtrwB.cjs → newOrgConfigContext-f3ZD_laY.cjs} +3 -3
  134. package/dist/{org-B_cWn2bt.cjs → org-B_56cFG-.cjs} +1 -1
  135. package/dist/{org-h32_LSEb.js → org-D7JD-Jhj.js} +1 -1
  136. package/dist/{search-Bpd_wxaK.cjs → search-3Q6-C6L4.cjs} +3 -3
  137. package/dist/{search-BRBqhum7.js → search-B24LICty.js} +3 -3
  138. package/dist/{searchContext-4mMbhaHA.cjs → searchContext-B5ea-PzV.cjs} +3 -3
  139. package/dist/{searchContext-nzEsa-bl.js → searchContext-i5I9qGDl.js} +3 -3
  140. package/dist/{systemSettingsContext-DF0jSq9m.js → systemSettingsContext-B4kZOE-R.js} +1 -1
  141. package/dist/{systemSettingsContext-dmE1v6w8.cjs → systemSettingsContext-jFIz9KS4.cjs} +1 -1
  142. package/dist/types-BegmH0S1.d.ts +1 -1
  143. package/dist/{types-UUvB6h05.cjs → types-BwNrLPSZ.cjs} +1 -1
  144. package/dist/{types-CtUb63bt.js → types-D3uOF0Oy.js} +1 -1
  145. package/dist/{unsupportedProductExceptions-DGENUnEA.cjs → unsupportedProductExceptions-B4f9aLjr.cjs} +1 -1
  146. package/dist/{unsupportedProductExceptions-uQuuelOs.js → unsupportedProductExceptions-DlmraJm8.js} +1 -1
  147. package/dist/{useAmplitudeOperations-DzFMBUU_.cjs → useAmplitudeOperations-CnN2-inX.cjs} +2 -2
  148. package/dist/{useAmplitudeOperations-Cr03Hlk6.js → useAmplitudeOperations-DufyKAt6.js} +2 -2
  149. package/dist/{useAppDetails-D-l3HbOk.cjs → useAppDetails-CPqMbju3.cjs} +2 -2
  150. package/dist/{useAppDetails-Bgql1vXN.js → useAppDetails-WagqDI97.js} +2 -2
  151. package/dist/{useGraphQLConfig-8oeOwWRP.js → useGraphQLConfig-CxLC4kGG.js} +2 -2
  152. package/dist/{useGraphQLConfig-CO9lCk8b.cjs → useGraphQLConfig-Ttye_Nhq.cjs} +2 -2
  153. package/dist/{userIdentityContext-BtOui2qA.js → userIdentityContext-Djf2FPEf.js} +2 -2
  154. package/dist/{userIdentityContext-B_CPsBYG.cjs → userIdentityContext-Dxm2Lnyi.cjs} +2 -2
  155. package/dist/{utils-Cv772xzd.js → utils-BfwOaizA.js} +3 -3
  156. package/dist/utils-C2HshI4X.d.cts +1 -1
  157. package/dist/{utils-BXfzt6tu.cjs → utils-CUkxBB5H.cjs} +3 -3
  158. package/dist/utils-aa1jK0Xe.d.ts +1 -1
  159. package/package.json +1 -1
  160. package/src/hooks/Search/useSearch.tsx +2 -5
  161. /package/dist/{amplitudeContext-q3mggFSE.cjs → amplitudeContext-BJHyYQ5s.cjs} +0 -0
  162. /package/dist/{amplitudeContext-DbicJUzl.js → amplitudeContext-DffV4DW_.js} +0 -0
@@ -1,6 +1,6 @@
1
- import "../../types-CtUb63bt.js";
1
+ import "../../types-D3uOF0Oy.js";
2
2
  import "../../events-DyUix-Bn.js";
3
- import "../../models-CE5YjbzE.js";
3
+ import "../../models-BA9B8LGE.js";
4
4
  import "../../featureGates-KEwAL8p_.js";
5
5
  import "../../urlsParser-DxjoLj98.js";
6
6
  import "../../graphql-CkxgqsXP.js";
@@ -16,16 +16,16 @@ import "../../atomStore-DEcDhiLp.js";
16
16
  import "../../app-CflxT_xI.js";
17
17
  import "../../enviveConfigContext-DrDjCems.js";
18
18
  import "../../featureFlagServiceContext-FBM6DdMJ.js";
19
- import "../../amplitudeContext-D58WY1aS.js";
20
- import "../../chatState-BUN8ehpy.js";
19
+ import "../../amplitudeContext-DE3rKEV2.js";
20
+ import "../../chatState-5iiJOrvd.js";
21
21
  import "../../graphqlConfig-CZGjJ8hP.js";
22
- import "../../chat-Qkx5llOV.js";
23
- import "../../org-h32_LSEb.js";
24
- import "../../newOrgConfigAtom-DEUj6H-p.js";
22
+ import "../../chat-BTfQhuk5.js";
23
+ import "../../org-D7JD-Jhj.js";
24
+ import "../../newOrgConfigAtom-TCV1_sTk.js";
25
25
  import "../../utils-D82gfbgU.js";
26
- import { ChatSearchTurnAtom, additiveDynamicFiltersAtom, chatSearchFiltersAtom, chatSearchHasProductsAtom, chatSearchIdAtom, chatSearchIsLoadingAtom, chatSearchParamsAtom, chatSearchProductSortingAtom, chatSearchProducts, chatSearchQueryAtom, chatSearchStateAtom, createChatSearchFilterOption, getSearchParamsAtom, handleSearchResultsAtom, initiateChatSearchAtom, selectedFilterOptionsAtom, setChatSearchParamsAtom, setSearchParams } from "../../chatSearch-CjMcB3fG.js";
26
+ import { ChatSearchTurnAtom, additiveDynamicFiltersAtom, chatSearchFiltersAtom, chatSearchHasProductsAtom, chatSearchIdAtom, chatSearchIsLoadingAtom, chatSearchParamsAtom, chatSearchProductSortingAtom, chatSearchProducts, chatSearchQueryAtom, chatSearchStateAtom, createChatSearchFilterOption, getSearchParamsAtom, handleSearchResultsAtom, initiateChatSearchAtom, selectedFilterOptionsAtom, setChatSearchParamsAtom, setSearchParams } from "../../chatSearch-BGWkK5FD.js";
27
27
  import "../../types-DXnG1tV0.js";
28
28
  import "../../searchServiceAdapter-Db6jEcJs.js";
29
- import { addSearchFilterAtom, clearSearchFiltersAtom, createFilterOption, filteredSearchProductsAtom, internalSearchSystemStateAtom, performSearchAtom, removeSearchFilterAtom, searchAtom, searchFiltersAtom, searchParamsAtom, searchProductSortingAtom, searchSelectedFiltersAtom, searchSystemAtom } from "../../search-BRBqhum7.js";
29
+ import { addSearchFilterAtom, clearSearchFiltersAtom, createFilterOption, filteredSearchProductsAtom, internalSearchSystemStateAtom, performSearchAtom, removeSearchFilterAtom, searchAtom, searchFiltersAtom, searchParamsAtom, searchProductSortingAtom, searchSelectedFiltersAtom, searchSystemAtom } from "../../search-B24LICty.js";
30
30
 
31
31
  export { ChatSearchTurnAtom, addSearchFilterAtom, additiveDynamicFiltersAtom, chatSearchFiltersAtom, chatSearchHasProductsAtom, chatSearchIdAtom, chatSearchIsLoadingAtom, chatSearchParamsAtom, chatSearchProductSortingAtom, chatSearchProducts, chatSearchQueryAtom, chatSearchStateAtom, clearSearchFiltersAtom, createChatSearchFilterOption, createFilterOption, filteredSearchProductsAtom, getSearchParamsAtom, handleSearchResultsAtom, initiateChatSearchAtom, internalSearchSystemStateAtom, performSearchAtom, removeSearchFilterAtom, searchAtom, searchFiltersAtom, searchParamsAtom, searchProductSortingAtom, searchSelectedFiltersAtom, searchSystemAtom, selectedFilterOptionsAtom, setChatSearchParamsAtom, setSearchParams };
@@ -50,4 +50,4 @@ Object.defineProperty(exports, 'useCdn', {
50
50
  return useCdn;
51
51
  }
52
52
  });
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC1EemlmZ29Oby5janMiLCJuYW1lcyI6WyJDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwiY2RuVXJsQXRvbSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9jZG5Db250ZXh0L2NkbkNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBjZG5VcmxBdG9tIH0gZnJvbSBcIi4uLy4uL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcblxuaW50ZXJmYWNlIENkbkNvbnRleHRUeXBlIHtcbiAgY2RuVXJsOiBzdHJpbmc7XG4gIGdldENkbkJhc2VQYXRoOiAoKSA9PiBzdHJpbmc7XG4gIGdldEFzc2V0VVJMOiAoYXNzZXROYW1lOiBzdHJpbmcsIG9yZ1Nob3J0TmFtZTogc3RyaW5nKSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IENkbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0PENkbkNvbnRleHRUeXBlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCBDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHtcbiAgY2hpbGRyZW4sXG59KSA9PiB7XG4gIGNvbnN0IGNkblVybEF0b21WYWx1ZSA9IHVzZUF0b21WYWx1ZShjZG5VcmxBdG9tKTtcbiAgY29uc3QgY2RuVXJsID0gY2RuVXJsQXRvbVZhbHVlIHx8IFwiaHR0cHM6Ly9jZG4uc3BpZmZ5LmFpL290aGVyXCI7XG5cbiAgY29uc3QgZ2V0Q2RuQmFzZVBhdGggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmV0dXJuIGNkblVybDtcbiAgfSwgW2NkblVybF0pO1xuXG4gIGNvbnN0IGdldEFzc2V0VVJMID0gdXNlQ2FsbGJhY2soXG4gICAgKGFzc2V0TmFtZTogc3RyaW5nLCBvcmdTaG9ydE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGAke2dldENkbkJhc2VQYXRoKCl9L2Fzc2V0cy8ke29yZ1Nob3J0TmFtZX0vJHthc3NldE5hbWV9YDtcbiAgICB9LFxuICAgIFtnZXRDZG5CYXNlUGF0aF1cbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNkblVybCxcbiAgICAgIGdldENkbkJhc2VQYXRoLFxuICAgICAgZ2V0QXNzZXRVUkwsXG4gICAgfSksXG4gICAgW2NkblVybCwgZ2V0Q2RuQmFzZVBhdGgsIGdldEFzc2V0VVJMXVxuICApO1xuXG4gIHJldHVybiA8Q2RuQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0NkbkNvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUNkbiA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQ2RuQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZUNkbiBtdXN0IGJlIHVzZWQgd2l0aGluIGEgQ2RuUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBVUEsTUFBTSxzQ0FBa0QsS0FBSztBQUU3RCxNQUFhQSxlQUF3RCxFQUNuRSxlQUNJO0NBRUosTUFBTSxpQ0FEK0JDLGdDQUFXLElBQ2Q7Q0FFbEMsTUFBTSw4Q0FBbUM7QUFDdkMsU0FBTztJQUNOLENBQUMsT0FBTyxDQUFDO0NBRVosTUFBTSxzQ0FDSCxXQUFtQixpQkFBeUI7QUFDM0MsU0FBTyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsYUFBYSxHQUFHO0lBRXZELENBQUMsZUFBZSxDQUNqQjtDQUVELE1BQU0sa0NBQ0c7RUFDTDtFQUNBO0VBQ0E7RUFDRCxHQUNEO0VBQUM7RUFBUTtFQUFnQjtFQUFZLENBQ3RDO0FBRUQsUUFBTywyQ0FBQyxXQUFXO0VBQWdCO0VBQVE7R0FBK0I7O0FBRzVFLE1BQWEsZUFBZTtDQUMxQixNQUFNLGdDQUFxQixXQUFXO0FBQ3RDLEtBQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLDJDQUEyQztBQUU3RCxRQUFPIn0=
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC1DYUR5UV81cC5janMiLCJuYW1lcyI6WyJDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwiY2RuVXJsQXRvbSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9jZG5Db250ZXh0L2NkbkNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBjZG5VcmxBdG9tIH0gZnJvbSBcIi4uLy4uL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcblxuaW50ZXJmYWNlIENkbkNvbnRleHRUeXBlIHtcbiAgY2RuVXJsOiBzdHJpbmc7XG4gIGdldENkbkJhc2VQYXRoOiAoKSA9PiBzdHJpbmc7XG4gIGdldEFzc2V0VVJMOiAoYXNzZXROYW1lOiBzdHJpbmcsIG9yZ1Nob3J0TmFtZTogc3RyaW5nKSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IENkbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0PENkbkNvbnRleHRUeXBlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCBDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHtcbiAgY2hpbGRyZW4sXG59KSA9PiB7XG4gIGNvbnN0IGNkblVybEF0b21WYWx1ZSA9IHVzZUF0b21WYWx1ZShjZG5VcmxBdG9tKTtcbiAgY29uc3QgY2RuVXJsID0gY2RuVXJsQXRvbVZhbHVlIHx8IFwiaHR0cHM6Ly9jZG4uc3BpZmZ5LmFpL290aGVyXCI7XG5cbiAgY29uc3QgZ2V0Q2RuQmFzZVBhdGggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmV0dXJuIGNkblVybDtcbiAgfSwgW2NkblVybF0pO1xuXG4gIGNvbnN0IGdldEFzc2V0VVJMID0gdXNlQ2FsbGJhY2soXG4gICAgKGFzc2V0TmFtZTogc3RyaW5nLCBvcmdTaG9ydE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGAke2dldENkbkJhc2VQYXRoKCl9L2Fzc2V0cy8ke29yZ1Nob3J0TmFtZX0vJHthc3NldE5hbWV9YDtcbiAgICB9LFxuICAgIFtnZXRDZG5CYXNlUGF0aF1cbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNkblVybCxcbiAgICAgIGdldENkbkJhc2VQYXRoLFxuICAgICAgZ2V0QXNzZXRVUkwsXG4gICAgfSksXG4gICAgW2NkblVybCwgZ2V0Q2RuQmFzZVBhdGgsIGdldEFzc2V0VVJMXVxuICApO1xuXG4gIHJldHVybiA8Q2RuQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0NkbkNvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUNkbiA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQ2RuQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZUNkbiBtdXN0IGJlIHVzZWQgd2l0aGluIGEgQ2RuUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBVUEsTUFBTSxzQ0FBa0QsS0FBSztBQUU3RCxNQUFhQSxlQUF3RCxFQUNuRSxlQUNJO0NBRUosTUFBTSxpQ0FEK0JDLGdDQUFXLElBQ2Q7Q0FFbEMsTUFBTSw4Q0FBbUM7QUFDdkMsU0FBTztJQUNOLENBQUMsT0FBTyxDQUFDO0NBRVosTUFBTSxzQ0FDSCxXQUFtQixpQkFBeUI7QUFDM0MsU0FBTyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsYUFBYSxHQUFHO0lBRXZELENBQUMsZUFBZSxDQUNqQjtDQUVELE1BQU0sa0NBQ0c7RUFDTDtFQUNBO0VBQ0E7RUFDRCxHQUNEO0VBQUM7RUFBUTtFQUFnQjtFQUFZLENBQ3RDO0FBRUQsUUFBTywyQ0FBQyxXQUFXO0VBQWdCO0VBQVE7R0FBK0I7O0FBRzVFLE1BQWEsZUFBZTtDQUMxQixNQUFNLGdDQUFxQixXQUFXO0FBQ3RDLEtBQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLDJDQUEyQztBQUU3RCxRQUFPIn0=
@@ -35,4 +35,4 @@ const useCdn = () => {
35
35
 
36
36
  //#endregion
37
37
  export { CdnProvider, useCdn };
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC1COHpXdUdHVC5qcyIsIm5hbWVzIjpbIkNkblByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iXSwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dHMvY2RuQ29udGV4dC9jZG5Db250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgY2RuVXJsQXRvbSB9IGZyb20gXCIuLi8uLi9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnXCI7XG5cbmludGVyZmFjZSBDZG5Db250ZXh0VHlwZSB7XG4gIGNkblVybDogc3RyaW5nO1xuICBnZXRDZG5CYXNlUGF0aDogKCkgPT4gc3RyaW5nO1xuICBnZXRBc3NldFVSTDogKGFzc2V0TmFtZTogc3RyaW5nLCBvcmdTaG9ydE5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBDZG5Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxDZG5Db250ZXh0VHlwZSB8IG51bGw+KG51bGwpO1xuXG5leHBvcnQgY29uc3QgQ2RuUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7XG4gIGNoaWxkcmVuLFxufSkgPT4ge1xuICBjb25zdCBjZG5VcmxBdG9tVmFsdWUgPSB1c2VBdG9tVmFsdWUoY2RuVXJsQXRvbSk7XG4gIGNvbnN0IGNkblVybCA9IGNkblVybEF0b21WYWx1ZSB8fCBcImh0dHBzOi8vY2RuLnNwaWZmeS5haS9vdGhlclwiO1xuXG4gIGNvbnN0IGdldENkbkJhc2VQYXRoID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJldHVybiBjZG5Vcmw7XG4gIH0sIFtjZG5VcmxdKTtcblxuICBjb25zdCBnZXRBc3NldFVSTCA9IHVzZUNhbGxiYWNrKFxuICAgIChhc3NldE5hbWU6IHN0cmluZywgb3JnU2hvcnROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBgJHtnZXRDZG5CYXNlUGF0aCgpfS9hc3NldHMvJHtvcmdTaG9ydE5hbWV9LyR7YXNzZXROYW1lfWA7XG4gICAgfSxcbiAgICBbZ2V0Q2RuQmFzZVBhdGhdXG4gICk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjZG5VcmwsXG4gICAgICBnZXRDZG5CYXNlUGF0aCxcbiAgICAgIGdldEFzc2V0VVJMLFxuICAgIH0pLFxuICAgIFtjZG5VcmwsIGdldENkbkJhc2VQYXRoLCBnZXRBc3NldFVSTF1cbiAgKTtcblxuICByZXR1cm4gPENkbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9DZG5Db250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VDZG4gPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KENkbkNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VDZG4gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIENkblByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBVUEsTUFBTSxhQUFhLGNBQXFDLEtBQUs7QUFFN0QsTUFBYUEsZUFBd0QsRUFDbkUsZUFDSTtDQUVKLE1BQU0sU0FEa0IsYUFBYSxXQUFXLElBQ2Q7Q0FFbEMsTUFBTSxpQkFBaUIsa0JBQWtCO0FBQ3ZDLFNBQU87SUFDTixDQUFDLE9BQU8sQ0FBQztDQUVaLE1BQU0sY0FBYyxhQUNqQixXQUFtQixpQkFBeUI7QUFDM0MsU0FBTyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsYUFBYSxHQUFHO0lBRXZELENBQUMsZUFBZSxDQUNqQjtDQUVELE1BQU0sUUFBUSxlQUNMO0VBQ0w7RUFDQTtFQUNBO0VBQ0QsR0FDRDtFQUFDO0VBQVE7RUFBZ0I7RUFBWSxDQUN0QztBQUVELFFBQU8sb0JBQUMsV0FBVztFQUFnQjtFQUFRO0dBQStCOztBQUc1RSxNQUFhLGVBQWU7Q0FDMUIsTUFBTSxVQUFVLFdBQVcsV0FBVztBQUN0QyxLQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFBTSwyQ0FBMkM7QUFFN0QsUUFBTyJ9
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC1DdHJJbEFxWC5qcyIsIm5hbWVzIjpbIkNkblByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iXSwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dHMvY2RuQ29udGV4dC9jZG5Db250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgY2RuVXJsQXRvbSB9IGZyb20gXCIuLi8uLi9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnXCI7XG5cbmludGVyZmFjZSBDZG5Db250ZXh0VHlwZSB7XG4gIGNkblVybDogc3RyaW5nO1xuICBnZXRDZG5CYXNlUGF0aDogKCkgPT4gc3RyaW5nO1xuICBnZXRBc3NldFVSTDogKGFzc2V0TmFtZTogc3RyaW5nLCBvcmdTaG9ydE5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBDZG5Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxDZG5Db250ZXh0VHlwZSB8IG51bGw+KG51bGwpO1xuXG5leHBvcnQgY29uc3QgQ2RuUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7XG4gIGNoaWxkcmVuLFxufSkgPT4ge1xuICBjb25zdCBjZG5VcmxBdG9tVmFsdWUgPSB1c2VBdG9tVmFsdWUoY2RuVXJsQXRvbSk7XG4gIGNvbnN0IGNkblVybCA9IGNkblVybEF0b21WYWx1ZSB8fCBcImh0dHBzOi8vY2RuLnNwaWZmeS5haS9vdGhlclwiO1xuXG4gIGNvbnN0IGdldENkbkJhc2VQYXRoID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJldHVybiBjZG5Vcmw7XG4gIH0sIFtjZG5VcmxdKTtcblxuICBjb25zdCBnZXRBc3NldFVSTCA9IHVzZUNhbGxiYWNrKFxuICAgIChhc3NldE5hbWU6IHN0cmluZywgb3JnU2hvcnROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBgJHtnZXRDZG5CYXNlUGF0aCgpfS9hc3NldHMvJHtvcmdTaG9ydE5hbWV9LyR7YXNzZXROYW1lfWA7XG4gICAgfSxcbiAgICBbZ2V0Q2RuQmFzZVBhdGhdXG4gICk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjZG5VcmwsXG4gICAgICBnZXRDZG5CYXNlUGF0aCxcbiAgICAgIGdldEFzc2V0VVJMLFxuICAgIH0pLFxuICAgIFtjZG5VcmwsIGdldENkbkJhc2VQYXRoLCBnZXRBc3NldFVSTF1cbiAgKTtcblxuICByZXR1cm4gPENkbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9DZG5Db250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VDZG4gPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KENkbkNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VDZG4gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIENkblByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBVUEsTUFBTSxhQUFhLGNBQXFDLEtBQUs7QUFFN0QsTUFBYUEsZUFBd0QsRUFDbkUsZUFDSTtDQUVKLE1BQU0sU0FEa0IsYUFBYSxXQUFXLElBQ2Q7Q0FFbEMsTUFBTSxpQkFBaUIsa0JBQWtCO0FBQ3ZDLFNBQU87SUFDTixDQUFDLE9BQU8sQ0FBQztDQUVaLE1BQU0sY0FBYyxhQUNqQixXQUFtQixpQkFBeUI7QUFDM0MsU0FBTyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsYUFBYSxHQUFHO0lBRXZELENBQUMsZUFBZSxDQUNqQjtDQUVELE1BQU0sUUFBUSxlQUNMO0VBQ0w7RUFDQTtFQUNBO0VBQ0QsR0FDRDtFQUFDO0VBQVE7RUFBZ0I7RUFBWSxDQUN0QztBQUVELFFBQU8sb0JBQUMsV0FBVztFQUFnQjtFQUFRO0dBQStCOztBQUc1RSxNQUFhLGVBQWU7Q0FDMUIsTUFBTSxVQUFVLFdBQVcsV0FBVztBQUN0QyxLQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFBTSwyQ0FBMkM7QUFFN0QsUUFBTyJ9
@@ -1,11 +1,11 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_models = require('./models-CJy0mOoW.cjs');
2
+ const require_models = require('./models-BubplUcB.cjs');
3
3
  const require_logger = require('./logger-TBIl4uIH.cjs');
4
4
  const require_enviveConfig = require('./enviveConfig-Dv9-esGV.cjs');
5
5
  const require_atomStore = require('./atomStore-CmZbgQHc.cjs');
6
6
  const require_app = require('./app-BbPSHefQ.cjs');
7
- const require_amplitudeContext = require('./amplitudeContext-CjkMpI_a.cjs');
8
- const require_chatState = require('./chatState-BUlDJ4NK.cjs');
7
+ const require_amplitudeContext = require('./amplitudeContext-k-YmQmpX.cjs');
8
+ const require_chatState = require('./chatState-C1ksoACz.cjs');
9
9
  const require_graphqlConfig = require('./graphqlConfig-BnfE0ql5.cjs');
10
10
  let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
11
11
  __spiffy_ai_commerce_api_client = require_chunk.__toESM(__spiffy_ai_commerce_api_client);
@@ -397,4 +397,4 @@ Object.defineProperty(exports, 'widgetArrayAtom', {
397
397
  return widgetArrayAtom;
398
398
  }
399
399
  });
400
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1DTG84RkJDYi5janMiLCJuYW1lcyI6WyJnZXRBdG9tU3RvcmUiLCJvcmdTaG9ydE5hbWVBdG9tIiwib3JnSWRBdG9tIiwidXNlcklkQXRvbSIsImNoYXRJZEF0b20iLCJjb250ZXh0U291cmNlQXRvbSIsImVudkF0b20iLCJmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tIiwiQ29udGV4dFNvdXJjZUVudW0iLCJDb250ZXh0RW52RW51bSIsIk1lc3NhZ2VUeXBlIiwicmVwbHlFdmVudENhdGVnb3J5QXRvbSIsIlVzZXJFdmVudENhdGVnb3J5IiwidXNlclF1ZXJ5QXRvbSIsIm1lc3NhZ2VzQXRvbSIsInVzZXJIYXNSZXBsaWVkQXRvbSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJzZXNzaW9uU3RvcmFnZVV0aWwiLCJnZXRBdG9tU3RvcmUiLCJyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tIiwiVXNlckV2ZW50Q2F0ZWdvcnkiLCJmb3JtU3VibWl0QXRvbSIsIm5ld01lc3NhZ2U6IE1lc3NhZ2UiLCJNZXNzYWdlUm9sZSIsIk1lc3NhZ2VUeXBlIiwicmVwbHlFdmVudENhdGVnb3J5QXRvbSIsIlVzZXJFdmVudENhdGVnb3J5Iiwic3VnZ2VzdGlvbkF0b20iLCJtZXNzYWdlc0F0b20iLCJ1c2VySGFzUmVwbGllZEF0b20iLCJtZXNzYWdlc0F0b20iLCJ1c2VySGFzUmVwbGllZEF0b20iLCJnZXRBdG9tU3RvcmUiLCJ1c2VySGFzUmVwbGllZEF0b20iLCJyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tIiwidXNlclF1ZXJ5QXRvbSIsInN1Z2dlc3Rpb25BdG9tIiwiYXNrUXVlc3Rpb25CdG5DbGlja2VkQXRvbSIsIm1lc3NhZ2VzQXRvbSIsInVzZXJFdmVudHNBdG9tIiwic3VnZ2VzdGlvbnNBdG9tIiwic3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSIsInJlc3BvbnNlU3RyZWFtaW5nQXRvbSIsImNoYXRJc09wZW5BdG9tIiwiY2hhdE9uVG9nZ2xlQXRvbSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZS50cyIsIi4uL3NyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b20udHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9yZXBsaWVzLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvcGVyZm9ybWFuY2VNZXRyaWNzLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvZm9ybS50cyIsIi4uL3NyYy9hdG9tcy9jaGF0L3N1Z2dlc3Rpb25zLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvbGFzdE1lc3NhZ2UudHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9yZW5kZXJlZFdpZGdldFJlZnMudHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7XG4gIEdlbmVyYXRpb25QYXJhbXMsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgVXNlckV2ZW50LFxufSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgZ2V0QXRvbVN0b3JlIH0gZnJvbSBcInNyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlXCI7XG5pbXBvcnQgeyB1c2VySWRBdG9tLCBjaGF0SWRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hcHBcIjtcbmltcG9ydCB7XG4gIG9yZ1Nob3J0TmFtZUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBlbnZBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7IG9yZ0lkQXRvbSwgZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvb3JnL2dyYXBocWxDb25maWdcIjtcblxuY29uc3QgaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20gPSBhdG9tPFVzZXJFdmVudFtdPihbXSk7XG5cbmV4cG9ydCBjb25zdCB1c2VyRXZlbnRRdWV1ZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgcXVldWUgPSBnZXQoaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20pO1xuICByZXR1cm4gcXVldWUgPT09IHVuZGVmaW5lZCA/IFtdIDogcXVldWUuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQpO1xufSk7XG5cbi8qKlxuICogVGhpcyBhdG9tIGlzIHVzZWQgdG8gcXVldWUgYSBuZXcgbWVzc2FnZSBmb3IgcHJvY2Vzc2luZyBvbiBgbmV4dF9yZXNwb25zZXNgXG4gKiBJdCByZWNlaXZlcyBhIHNpbmdsZSBgdXNlckV2ZW50YCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBwcm9jZXNzaW5nIHF1ZXVlLlxuICogSWYgdGhlIGV2ZW50IGhhcyB0aGUgc2FtZSBldmVudElkIGFzIGFuIGV4aXN0aW5nIG1lc3NhZ2UgaW4gdGhlIHF1ZXVlIHRoZSBORVdcbiAqIGV2ZW50IGlzIGlnbm9yZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHF1ZXVlVXNlckV2ZW50QXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgdXNlckV2ZW50OiBVc2VyRXZlbnQpID0+IHtcbiAgICBpZiAodXNlckV2ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tLCBbXG4gICAgICAuLi5nZXQoaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20pLFxuICAgICAgdXNlckV2ZW50LFxuICAgIF0pO1xuICB9XG4pO1xuXG4vKipcbiAqIFRoaXMgYXRvbSBleHBvc2VzIGEgZnVuY3Rpb24gdG8gcmVzZXQgdGhlIGVudGlyZSBxdWV1ZS4gQWxsIG1lc3NhZ2VzIGluIHRoZSBxdWV1ZSB3aWxsIGJlIHB1cmdlZFxuICovXG5leHBvcnQgY29uc3QgY2xlYXJVc2VyRXZlbnRBdG9tID0gYXRvbShudWxsLCAoXywgc2V0KSA9PiB7XG4gIHNldChpbnRlcm5hbFVzZXJFdmVudFF1ZXVlQXRvbSwgW10pO1xufSk7XG5cbi8qKlxuICogVGhpcyBhdG9tIGlzIHVzZWQgdG8gbWFyayBldmVudHMgYXMgcHJvY2Vzc2VkIGFuZCByZW1vdmUgdGhlbSBmcm9tIHRoZSBxdWV1ZVxuICogSXQgYWNjZXB0cyBhIGxpc3Qgb2YgZXZlbnRJZCB2YWx1ZXMgYW5kIHdpbGwgcmVtb3ZlIGFsbCBldmVudHMgd2l0aCB0aG9zZSBldmVudElkcyBmcm9tIHRoZSBxdWV1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByb2Nlc3NVc2VyRXZlbnRBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCBldmVudElkczogc3RyaW5nW10pID0+IHtcbiAgICBjb25zdCBjdXJyID0gZ2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tKTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBjdXJyPy5maWx0ZXIoXG4gICAgICAoZXZlbnQpID0+ICFldmVudElkcy5pbmNsdWRlcyhldmVudC5ldmVudElkKVxuICAgICk7XG4gICAgc2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tLCByZW1haW5pbmcpO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudEF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQodXNlckV2ZW50UXVldWVBdG9tKS5sZW5ndGhcbik7XG5cbmltcG9ydCB7XG4gIENvbnRleHRTb3VyY2VFbnVtLFxuICBDb250ZXh0RW52RW51bSxcbn0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiOyAvLyBJbXBvcnQgbmVjZXNzYXJ5IGVudW1zXG4vLyBpbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50L2Rpc3QvbW9kZWxzL0NvbnRleHRcIjsgLy8gSW1wb3J0IENvbnRleHQgdHlwZVxuXG5leHBvcnQgY29uc3QgY3JlYXRlUmVzcG9uc2VQYXlsb2FkID0gKHtcbiAgdXNlckV2ZW50cyxcbiAgZ2VuZXJhdGlvblBhcmFtcyxcbn06IHtcbiAgdXNlckV2ZW50czogVXNlckV2ZW50W107XG4gIGdlbmVyYXRpb25QYXJhbXM/OiBHZW5lcmF0aW9uUGFyYW1zO1xufSk6IE5leHRNZXNzYWdlUmVxdWVzdCA9PiB7XG4gIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICBjb25zdCBvcmdTaG9ydE5hbWUgPSBhdG9tU3RvcmUuZ2V0KG9yZ1Nob3J0TmFtZUF0b20pO1xuICBjb25zdCBvcmdJZCA9IGF0b21TdG9yZS5nZXQob3JnSWRBdG9tKTtcbiAgY29uc3QgdXNlcklkID0gYXRvbVN0b3JlLmdldCh1c2VySWRBdG9tKTtcbiAgY29uc3QgY2hhdElkID0gYXRvbVN0b3JlLmdldChjaGF0SWRBdG9tKTtcbiAgY29uc3Qgc291cmNlID0gYXRvbVN0b3JlLmdldChjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGVudiA9IGF0b21TdG9yZS5nZXQoZW52QXRvbSk7XG5cbiAgY29uc3QgZmVhdHVyZUZsYWdTZXJ2aWNlID0gYXRvbVN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKTtcblxuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHVzZXJJZDogdXNlcklkID8/IFwiXCIsXG4gICAgb3JnX2lkOiBvcmdJZCA/PyBcIlwiLFxuICAgIG9yZ19zaG9ydF9uYW1lOiBvcmdTaG9ydE5hbWUgPz8gXCJcIixcbiAgICBjaGF0X2lkOiBjaGF0SWQgPz8gXCJcIixcbiAgICBzb3VyY2U6IHNvdXJjZSA/PyBDb250ZXh0U291cmNlRW51bS5BcHAsXG4gICAgZW52OiAoZW52IGFzIENvbnRleHRFbnZFbnVtKSA/PyBDb250ZXh0RW52RW51bS5EZXYsXG4gIH07XG5cbiAgY29uc3QgZmVhdHVyZUZsYWdzID1cbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge307XG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdXVpZCgpLFxuICAgIGNvbnRleHQsXG4gICAgdXNlckV2ZW50cyxcbiAgICBmZWF0dXJlRmxhZ3M6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVGbGFncykuZmlsdGVyKChbLCBpc0VuYWJsZWRdKSA9PiBpc0VuYWJsZWQpXG4gICAgKSwgLy8gQ29udmVydCBiYWNrIHRvIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+XG4gICAgZ2VuZXJhdGlvblBhcmFtcyxcbiAgfTtcbn07XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcblxuaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbi8vIFRoaXMgYXRvbSB3aWxsIGhvbGQgdGhlIHRyYWNrRXZlbnQgZnVuY3Rpb24gZnJvbSB0aGUgQW1wbGl0dWRlIGNvbnRleHQuXG4vLyBJdCBuZWVkcyB0byBiZSBpbml0aWFsaXplZCBieSBhIFJlYWN0IGNvbXBvbmVudCB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIHVzZUFtcGxpdHVkZSBob29rLlxuZXhwb3J0IGNvbnN0IGFtcGxpdHVkZVRyYWNrRXZlbnRBdG9tID0gYXRvbTxcbiAgKChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD4pIHwgbnVsbFxuPihudWxsKTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7XG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxuICByZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2NoYXRcIjtcbmltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHsgcXVldWVVc2VyRXZlbnRBdG9tIH0gZnJvbSBcIi4vbWVzc2FnZVF1ZXVlXCI7XG5pbXBvcnQgeyBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcbmltcG9ydCB7IGFtcGxpdHVkZVRyYWNrRXZlbnRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b21cIjtcblxudHlwZSBIYW5kbGVSZXBseVBhcmFtcyA9IHtcbiAgbWVzc2FnZTogTWVzc2FnZTtcbiAgdXNlclR5cGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVJlcGx5QXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgeyBtZXNzYWdlLCB1c2VyVHlwZWQgfTogSGFuZGxlUmVwbHlQYXJhbXMpID0+IHtcbiAgICBpZiAobWVzc2FnZS50eXBlICE9PSBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHJhY2tFdmVudCA9IGdldChhbXBsaXR1ZGVUcmFja0V2ZW50QXRvbSk7XG4gICAgY29uc3QgcXVlcnlUeXBlZCA9IG1lc3NhZ2UubWV0YWRhdGEuY29udGVudDtcblxuICAgIHNldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLCBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkKTtcbiAgICBzZXQodXNlclF1ZXJ5QXRvbSwgcXVlcnlUeXBlZCk7XG4gICAgc2V0KG1lc3NhZ2VzQXRvbSwgWy4uLmdldChtZXNzYWdlc0F0b20pLCBbbWVzc2FnZV1dKTtcbiAgICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcbiAgICBzZXQocXVldWVVc2VyRXZlbnRBdG9tLCB7XG4gICAgICBldmVudElkOiBtZXNzYWdlLmlkLFxuICAgICAgY3JlYXRlZEF0OiBtZXNzYWdlLmNyZWF0ZWRBdCxcbiAgICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBxdWVyeTogcXVlcnlUeXBlZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAodHJhY2tFdmVudCkge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0VXNlck1lc3NhZ2VJbnB1dCxcbiAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgbWVzc2FnZV9yb2xlOiBtZXNzYWdlLnJvbGUsXG4gICAgICAgICAgbWVzc2FnZV90eXBlOiBtZXNzYWdlLnR5cGUsXG4gICAgICAgICAgbWVzc2FnZV9tZXRhZGF0YToge1xuICAgICAgICAgICAgY29udGVudDogbWVzc2FnZT8ubWV0YWRhdGE/LmNvbnRlbnQsIC8vIFJlbW92ZWQgYW1wbGl0dWRlU2FmZVN0cmluZ1xuICAgICAgICAgICAgY3JlYXRlZF9hdDogbWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgICAgICAgICB1c2VyX3R5cGVkOiB1c2VyVHlwZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuKTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGF0b21XaXRoU3RvcmFnZSB9IGZyb20gXCJqb3RhaS91dGlsc1wiO1xuaW1wb3J0IExvZ2dlciBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyXCI7XG5pbXBvcnQge1xuICBnZXRBdG9tU3RvcmUsXG4gIHNlc3Npb25TdG9yYWdlVXRpbCxcbn0gZnJvbSBcInNyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlXCI7XG5cbmV4cG9ydCBjb25zdCBBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSA9IFwic3BpZmZ5LWFwcC1pbml0aWFsLXN0YXJ0LXRpbWVcIjtcbmV4cG9ydCBjb25zdCBQQUdFX0xPQURfT0ZGU0VUX1RJTUVfS0VZID0gXCJzcGlmZnktcGFnZS1sb2FkLW9mZnNldC10aW1lXCI7XG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgcGVyZm9ybWFuY2UgbWV0cmljcyB0aGF0IGNhbiBiZSBsb2dnZWQuIEFsbCB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhlXG4gKiBpbml0aWFsIHN0YXJ0IHRpbWUgb2YgdGhlIGFwcCBhbmQgYXJlIHN0b3JlZCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBlbnVtIFBlcmZNZXRyaWNzRXZlbnRzIHtcbiAgUGFnZUxvYWRPZmZzZXQgPSBcInBhZ2VfbG9hZF9vZmZzZXRfbXNcIixcbiAgTWFpbkJ1bmRsZUxvYWRlZCA9IFwibWFpbl9idW5kbGVfbG9hZGVkX21zXCIsXG4gIE9yZ0NvbmZpZ0xvYWRTdGFydGVkID0gXCJvcmdfY29uZmlnX2xvYWRfc3RhcnRlZF9tc1wiLFxuICBPcmdDb25maWdMb2FkRW5kZWQgPSBcIm9yZ19jb25maWdfbG9hZF9lbmRlZF9tc1wiLFxuICBGaXJzdFJlc3BvbnNlU3RhcnRlZCA9IFwiZmlyc3RfcmVzcG9uc2Vfc3RhcnRlZF9tc1wiLFxuICBGaXJzdFJlc3BvbnNlQ29tcGxldGVkID0gXCJmaXJzdF9yZXNwb25zZV9jb21wbGV0ZWRfbXNcIixcbiAgRmlyc3RTdWdnZXN0aW9uc1N0YXJ0ZWQgPSBcImZpcnN0X3N1Z2dlc3Rpb25zX3N0YXJ0ZWRfbXNcIixcbiAgRmlyc3RTdWdnZXN0aW9uc0NvbXBsZXRlZCA9IFwiZmlyc3Rfc3VnZ2VzdGlvbnNfY29tcGxldGVkX21zXCIsXG4gIEVtYmVkZGVkV2lkZ2V0UmVuZGVyZWQgPSBcImVtYmVkZGVkX3dpZGdldF9yZW5kZXJlZF9tc1wiLFxuICBGbG9hdGluZ0J1dHRvblJlbmRlcmVkID0gXCJmbG9hdGluZ19idXR0b25fcmVuZGVyZWRfbXNcIixcbiAgVG9wU3VnZ2VzdGlvbnNCYXJSZW5kZXJlZCA9IFwidG9wX3N1Z2dlc3Rpb25zX2Jhcl9yZW5kZXJlZF9tc1wiLFxuICBCb3R0b21TdWdnZXN0aW9uc0JhclJlbmRlcmVkID0gXCJib3R0b21fc3VnZ2VzdGlvbnNfYmFyX3JlbmRlcmVkX21zXCIsXG4gIFNlYXJjaFByb21wdFJlbmRlcmVkID0gXCJzZWFyY2hfcHJvbXB0X3JlbmRlcmVkX21zXCIsXG59XG5cbmNvbnN0IGludGVybmFsUGVyZk1ldHJpY3NBdG9tID0gYXRvbTxNYXA8UGVyZk1ldHJpY3NFdmVudHMsIG51bWJlcj4+KG5ldyBNYXAoKSk7XG5leHBvcnQgY29uc3QgYXBwSW5pdGlhbFN0YXJ0VGltZU1zQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICBBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSxcbiAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSkgPz8gdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBwYWdlTG9hZE9mZnNldFRpbWVBdG9tID0gYXRvbVdpdGhTdG9yYWdlPHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gIFBBR0VfTE9BRF9PRkZTRVRfVElNRV9LRVksXG4gIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oUEFHRV9MT0FEX09GRlNFVF9USU1FX0tFWSkgPz8gdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5cbi8qKlxuICogUmVzZXRzIHRoZSBwZXJmb3JtYW5jZSBtZXRyaWNzIGF0b20gdG8gYW4gZW1wdHkgbWFwLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBlcmZvcm1hbmNlXG4gKiBtZXRyaWNzIGhhdmUgYmVlbiByZXBvcnRlZCB0byBhbXBsaXR1ZGUuIE9uIFNQQSwgaXQgZW5zdXJlcyB0aGF0IHdlIGNhbiBzdGlsbCBjYXB0dXJlIG1ldHJpY3MgYXNcbiAqIHRoZSB1c2VyIG5hdmlnYXRlcyBhcm91bmQgdGhlIGFwcCAoYWx0aG91Z2ggdGhlcmUgaXMgbW9yZSB3b3JrIHRvIGJlIGRvbmUgdG8gZnVsbHkgZW5hYmxlIHRoaXMpLlxuICogT24gbm9uLVNQQSwgaXQgZW5zdXJlcyB0aGF0IHByZXZpb3VzbHkgY2FwdHVyZWQgbWV0cmljcyBhcmUgbm90IHJlcG9ydGVkIGFnYWluLlxuICovXG5leHBvcnQgY29uc3QgcmVzZXRQZXJmb3JtYW5jZU1ldHJpY3NBdG9tID0gKCkgPT4ge1xuICBjb25zdCBhdG9tU3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgYXRvbVN0b3JlLnNldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSwgbmV3IE1hcCgpKTtcbn07XG5leHBvcnQgY29uc3QgcGVyZm9ybWFuY2VNZXRyaWNzQXRvbSA9IGF0b20oKGdldCkgPT5cbiAgZ2V0KGludGVybmFsUGVyZk1ldHJpY3NBdG9tKVxuKTtcbmV4cG9ydCBjb25zdCBoYXNSZXBvcnRlZFBlcmZvcm1hbmNlTWV0cmljc0F0b20gPSBhdG9tPGJvb2xlYW4+KGZhbHNlKTtcblxuLyoqXG4gKiBMb2dzIGEgcGVyZm9ybWFuY2UgbWV0cmljIGJ5IGNhcHR1cmluZyB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgaW5pdGlhbCBhcHAgc3RhcnQgdGltZVxuICogYW5kIHRoZSBjdXJyZW50IHRpbWUuIElmIHRoZSBtZXRyaWMgaGFzIGFscmVhZHkgYmVlbiBsb2dnZWQsIGl0IHdpbGwgbm90IGJlIGxvZ2dlZCBhZ2Fpbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHBlcmZvcm1hbmNlIG1ldHJpYyBuYW1lIHRvIGxvZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvZ1BlcmZNZXRyaWNBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCB2YWx1ZTogUGVyZk1ldHJpY3NFdmVudHMpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVGltZVN0b3JhZ2VWYWx1ZSA9IGdldChhcHBJbml0aWFsU3RhcnRUaW1lTXNBdG9tKTtcbiAgICBjb25zdCBpbml0aWFsVGltZU1zID0gaW5pdGlhbFRpbWVTdG9yYWdlVmFsdWVcbiAgICAgID8gcGFyc2VJbnQoaW5pdGlhbFRpbWVTdG9yYWdlVmFsdWUsIDEwKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoaW5pdGlhbFRpbWVNcyA9PSBudWxsKSB7XG4gICAgICBMb2dnZXIubG9nV2FybihcbiAgICAgICAgYFtzcGlmZnktYWldIE5vIGluaXRpYWwgYXBwIHN0YXJ0IHRpbWUgZm91bmQuIFNraXBwaW5nLi4uYCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRQZXJmTWV0cmljcyA9IGdldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSk7XG4gICAgaWYgKGN1cnJlbnRQZXJmTWV0cmljcy5oYXModmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRpbWVNcyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVsdGFNcyA9IGN1cnJlbnRUaW1lTXMgLSBpbml0aWFsVGltZU1zO1xuICAgIGN1cnJlbnRQZXJmTWV0cmljcy5zZXQodmFsdWUsIGRlbHRhTXMpO1xuICAgIHNldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSwgY3VycmVudFBlcmZNZXRyaWNzKTtcbiAgfVxuKTtcbiIsImltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IGF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBGb3JtU3VibWl0dGVkQXR0cmlidXRlcywgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBmb3JtU3VibWl0QXRvbSwgcmVwbHlFdmVudENhdGVnb3J5QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0JztcbmltcG9ydCB7IHF1ZXVlVXNlckV2ZW50QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZSc7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGb3JtU3VibWl0dGVkQXRvbSA9IGF0b20obnVsbCwgKF8sIHNldCwgZm9ybTogRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXMpID0+IHtcbiAgc2V0KHJlcGx5RXZlbnRDYXRlZ29yeUF0b20sIFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQpO1xuICBzZXQoZm9ybVN1Ym1pdEF0b20sIGZvcm0pO1xuXG4gIGNvbnN0IGZvcm1Vc2VyRXZlbnQgPSB7XG4gICAgZXZlbnRJZDogdXVpZCgpLFxuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGF0dHJpYnV0ZXM6IGZvcm0sXG4gIH0gc2F0aXNmaWVzIFVzZXJFdmVudDtcbiAgc2V0KHF1ZXVlVXNlckV2ZW50QXRvbSwgZm9ybVVzZXJFdmVudCk7XG59KTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlUm9sZSwgTWVzc2FnZVR5cGUsIFN1Z2dlc3Rpb24gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVwbHlFdmVudENhdGVnb3J5QXRvbSxcbiAgc3VnZ2VzdGlvbkF0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQnO1xuaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgcXVldWVVc2VyRXZlbnRBdG9tIH0gZnJvbSAnLi9tZXNzYWdlUXVldWUnO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlU3VnZ2VzdGlvbkF0b20gPSBhdG9tKG51bGwsIChnZXQsIHNldCwgc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbikgPT4ge1xuICBjb25zdCBuZXdNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgIGlkOiBzdWdnZXN0aW9uLmlkLFxuICAgIHJvbGU6IE1lc3NhZ2VSb2xlLlVzZXIsXG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU3VnZ2VzdGlvbkNsaWNrZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHN1Z2dlc3Rpb25JZDogc3VnZ2VzdGlvbi5pZCxcbiAgICAgIHN1Z2dlc3Rpb25Db250ZW50OiBzdWdnZXN0aW9uLmNvbnRlbnQsXG4gICAgfSxcbiAgfTtcblxuICBzZXQocmVwbHlFdmVudENhdGVnb3J5QXRvbSwgVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQpO1xuICBzZXQoc3VnZ2VzdGlvbkF0b20sIHN1Z2dlc3Rpb24pO1xuICBzZXQobWVzc2FnZXNBdG9tLCBbLi4uZ2V0KG1lc3NhZ2VzQXRvbSksIFtuZXdNZXNzYWdlXV0pO1xuICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcbiAgc2V0KHF1ZXVlVXNlckV2ZW50QXRvbSwge1xuICAgIGV2ZW50SWQ6IHN1Z2dlc3Rpb24uaWQsXG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIGNyZWF0ZWRBdDogbmV3TWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgc3VnZ2VzdGlvbklkOiBzdWdnZXN0aW9uLmlkLFxuICAgIH0sXG4gIH0pO1xufSk7XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgbWVzc2FnZXNBdG9tLCB1c2VySGFzUmVwbGllZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5cbmV4cG9ydCBjb25zdCBsYXN0QXNzaXN0YW50TWVzc2FnZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXQobWVzc2FnZXNBdG9tKTtcbiAgY29uc3QgdXNlckhhc1JlcGxpZWQgPSBnZXQodXNlckhhc1JlcGxpZWRBdG9tKTtcbiAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDAgJiYgIXVzZXJIYXNSZXBsaWVkKSB7XG4gICAgcmV0dXJuIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBudWxsO1xufSk7XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tIFwic3JjL2F0b21zL2F0b21TdG9yZS9hdG9tU3RvcmVcIjtcblxuY29uc3QgaW50ZXJuYWxXaWRnZXRBcnJheUF0b20gPSBhdG9tPEhUTUxFbGVtZW50W10+KFtdKTtcblxuZXhwb3J0IGNvbnN0IHdpZGdldEFycmF5QXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsV2lkZ2V0QXJyYXlBdG9tKSk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYWxsIGlzIHVzZWQgdG8gY3JlYXRlIGEgbGlzdCBvZiB0aGUgU3BpZmZ5IHdpZGdldHNcbiAqIHRoYXQgYXJlIHJlbmRlcmluZyBvbiB0aGUgcGFnZS5cbiAqXG4gKiBJdCBpcyB1c2VkIGJ5IHRoZSBGbG9hdGluZ0J1dHRvbiB3aWRnZXQgdG8gc2xpZGUgb3V0IG9mIHZpZXcgd2hlbiBpdFxuICogb3ZlcmxhcHMgd2l0aCBhbm90aGVyIFNwaWZmeSB3aWRnZXQuXG4gKlxuICogVGhlIHNwaWZmeSB3aWRnZXRzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgdGhpcyBhcnJheSBmb3IgdGhlIGZsb2F0aW5nIGJ1dHRvblxuICogdG8ga25vdyBhYm91dCB0aGVtLlxuICpcbiAqIFRvZGF5IHRoZSBcIlN1Z2dlc3Rpb25CYXJcIiB3aWRnZXQgaXMgbm90IGFkZGVkLCBidXQgdGhlIG90aGVyIHdpZGdldHMgYXJlLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFdpZGdldCA9IChyZWY6IEhUTUxFbGVtZW50LCBpZHg/OiBudW1iZXIpID0+IHtcbiAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gIGNvbnN0IHZhbCA9IGF0b21TdG9yZS5nZXQoaW50ZXJuYWxXaWRnZXRBcnJheUF0b20pO1xuICBjb25zdCBpbnNlcnRJZHggPSBpZHggPz8gdmFsLmxlbmd0aDtcbiAgdmFsW2luc2VydElkeF0gPSByZWY7XG4gIGF0b21TdG9yZS5zZXQoaW50ZXJuYWxXaWRnZXRBcnJheUF0b20sIHZhbCk7XG59O1xuIiwiaW1wb3J0IHsgYXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7XG4gIHJlc3BvbnNlU3RyZWFtaW5nQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxuICByZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLFxuICB1c2VySGFzUmVwbGllZEF0b20sXG4gIGFza1F1ZXN0aW9uQnRuQ2xpY2tlZEF0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgY2hhdElzT3BlbkF0b20sXG4gIGNoYXRPblRvZ2dsZUF0b20sXG4gIHVzZXJFdmVudHNBdG9tLFxuICBzdWdnZXN0aW9uQXRvbSxcbn0gZnJvbSAnLi9jaGF0U3RhdGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NoYXRTdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcGxpZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJmb3JtYW5jZU1ldHJpY3MnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3VnZ2VzdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXN0TWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbmRlcmVkV2lkZ2V0UmVmcyc7XG5cbmV4cG9ydCBjb25zdCBjaGF0QXRvbSA9IGF0b20oKGdldCkgPT4gKHtcbiAgdXNlckhhc1JlcGxpZWQ6IGdldCh1c2VySGFzUmVwbGllZEF0b20pLFxuICByZXBseUV2ZW50Q2F0ZWdvcnk6IGdldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tKSxcbiAgdXNlclF1ZXJ5OiBnZXQodXNlclF1ZXJ5QXRvbSksXG4gIHN1Z2dlc3Rpb246IGdldChzdWdnZXN0aW9uQXRvbSksXG4gIGFza1F1ZXN0aW9uQnRuQ2xpY2tlZDogZ2V0KGFza1F1ZXN0aW9uQnRuQ2xpY2tlZEF0b20pLFxuICBtZXNzYWdlczogZ2V0KG1lc3NhZ2VzQXRvbSksXG4gIHVzZXJFdmVudHM6IGdldCh1c2VyRXZlbnRzQXRvbSksXG4gIHN1Z2dlc3Rpb25zOiBnZXQoc3VnZ2VzdGlvbnNBdG9tKSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nOiBnZXQoc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSksXG4gIHJlc3BvbnNlU3RyZWFtaW5nOiBnZXQocmVzcG9uc2VTdHJlYW1pbmdBdG9tKSxcbiAgaXNPcGVuOiBnZXQoY2hhdElzT3BlbkF0b20pLFxuICBvblRvZ2dsZTogZ2V0KGNoYXRPblRvZ2dsZUF0b20pLFxufSkpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLE1BQU0sNkNB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
400
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1CMUIwNUJNLS5janMiLCJuYW1lcyI6WyJnZXRBdG9tU3RvcmUiLCJvcmdTaG9ydE5hbWVBdG9tIiwib3JnSWRBdG9tIiwidXNlcklkQXRvbSIsImNoYXRJZEF0b20iLCJjb250ZXh0U291cmNlQXRvbSIsImVudkF0b20iLCJmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tIiwiQ29udGV4dFNvdXJjZUVudW0iLCJDb250ZXh0RW52RW51bSIsIk1lc3NhZ2VUeXBlIiwicmVwbHlFdmVudENhdGVnb3J5QXRvbSIsIlVzZXJFdmVudENhdGVnb3J5IiwidXNlclF1ZXJ5QXRvbSIsIm1lc3NhZ2VzQXRvbSIsInVzZXJIYXNSZXBsaWVkQXRvbSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJzZXNzaW9uU3RvcmFnZVV0aWwiLCJnZXRBdG9tU3RvcmUiLCJyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tIiwiVXNlckV2ZW50Q2F0ZWdvcnkiLCJmb3JtU3VibWl0QXRvbSIsIm5ld01lc3NhZ2U6IE1lc3NhZ2UiLCJNZXNzYWdlUm9sZSIsIk1lc3NhZ2VUeXBlIiwicmVwbHlFdmVudENhdGVnb3J5QXRvbSIsIlVzZXJFdmVudENhdGVnb3J5Iiwic3VnZ2VzdGlvbkF0b20iLCJtZXNzYWdlc0F0b20iLCJ1c2VySGFzUmVwbGllZEF0b20iLCJtZXNzYWdlc0F0b20iLCJ1c2VySGFzUmVwbGllZEF0b20iLCJnZXRBdG9tU3RvcmUiLCJ1c2VySGFzUmVwbGllZEF0b20iLCJyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tIiwidXNlclF1ZXJ5QXRvbSIsInN1Z2dlc3Rpb25BdG9tIiwiYXNrUXVlc3Rpb25CdG5DbGlja2VkQXRvbSIsIm1lc3NhZ2VzQXRvbSIsInVzZXJFdmVudHNBdG9tIiwic3VnZ2VzdGlvbnNBdG9tIiwic3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSIsInJlc3BvbnNlU3RyZWFtaW5nQXRvbSIsImNoYXRJc09wZW5BdG9tIiwiY2hhdE9uVG9nZ2xlQXRvbSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZS50cyIsIi4uL3NyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b20udHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9yZXBsaWVzLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvcGVyZm9ybWFuY2VNZXRyaWNzLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvZm9ybS50cyIsIi4uL3NyYy9hdG9tcy9jaGF0L3N1Z2dlc3Rpb25zLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvbGFzdE1lc3NhZ2UudHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9yZW5kZXJlZFdpZGdldFJlZnMudHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7XG4gIEdlbmVyYXRpb25QYXJhbXMsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgVXNlckV2ZW50LFxufSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgZ2V0QXRvbVN0b3JlIH0gZnJvbSBcInNyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlXCI7XG5pbXBvcnQgeyB1c2VySWRBdG9tLCBjaGF0SWRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hcHBcIjtcbmltcG9ydCB7XG4gIG9yZ1Nob3J0TmFtZUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBlbnZBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7IG9yZ0lkQXRvbSwgZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvb3JnL2dyYXBocWxDb25maWdcIjtcblxuY29uc3QgaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20gPSBhdG9tPFVzZXJFdmVudFtdPihbXSk7XG5cbmV4cG9ydCBjb25zdCB1c2VyRXZlbnRRdWV1ZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgcXVldWUgPSBnZXQoaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20pO1xuICByZXR1cm4gcXVldWUgPT09IHVuZGVmaW5lZCA/IFtdIDogcXVldWUuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQpO1xufSk7XG5cbi8qKlxuICogVGhpcyBhdG9tIGlzIHVzZWQgdG8gcXVldWUgYSBuZXcgbWVzc2FnZSBmb3IgcHJvY2Vzc2luZyBvbiBgbmV4dF9yZXNwb25zZXNgXG4gKiBJdCByZWNlaXZlcyBhIHNpbmdsZSBgdXNlckV2ZW50YCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBwcm9jZXNzaW5nIHF1ZXVlLlxuICogSWYgdGhlIGV2ZW50IGhhcyB0aGUgc2FtZSBldmVudElkIGFzIGFuIGV4aXN0aW5nIG1lc3NhZ2UgaW4gdGhlIHF1ZXVlIHRoZSBORVdcbiAqIGV2ZW50IGlzIGlnbm9yZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHF1ZXVlVXNlckV2ZW50QXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgdXNlckV2ZW50OiBVc2VyRXZlbnQpID0+IHtcbiAgICBpZiAodXNlckV2ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tLCBbXG4gICAgICAuLi5nZXQoaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20pLFxuICAgICAgdXNlckV2ZW50LFxuICAgIF0pO1xuICB9XG4pO1xuXG4vKipcbiAqIFRoaXMgYXRvbSBleHBvc2VzIGEgZnVuY3Rpb24gdG8gcmVzZXQgdGhlIGVudGlyZSBxdWV1ZS4gQWxsIG1lc3NhZ2VzIGluIHRoZSBxdWV1ZSB3aWxsIGJlIHB1cmdlZFxuICovXG5leHBvcnQgY29uc3QgY2xlYXJVc2VyRXZlbnRBdG9tID0gYXRvbShudWxsLCAoXywgc2V0KSA9PiB7XG4gIHNldChpbnRlcm5hbFVzZXJFdmVudFF1ZXVlQXRvbSwgW10pO1xufSk7XG5cbi8qKlxuICogVGhpcyBhdG9tIGlzIHVzZWQgdG8gbWFyayBldmVudHMgYXMgcHJvY2Vzc2VkIGFuZCByZW1vdmUgdGhlbSBmcm9tIHRoZSBxdWV1ZVxuICogSXQgYWNjZXB0cyBhIGxpc3Qgb2YgZXZlbnRJZCB2YWx1ZXMgYW5kIHdpbGwgcmVtb3ZlIGFsbCBldmVudHMgd2l0aCB0aG9zZSBldmVudElkcyBmcm9tIHRoZSBxdWV1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByb2Nlc3NVc2VyRXZlbnRBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCBldmVudElkczogc3RyaW5nW10pID0+IHtcbiAgICBjb25zdCBjdXJyID0gZ2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tKTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBjdXJyPy5maWx0ZXIoXG4gICAgICAoZXZlbnQpID0+ICFldmVudElkcy5pbmNsdWRlcyhldmVudC5ldmVudElkKVxuICAgICk7XG4gICAgc2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tLCByZW1haW5pbmcpO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudEF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQodXNlckV2ZW50UXVldWVBdG9tKS5sZW5ndGhcbik7XG5cbmltcG9ydCB7XG4gIENvbnRleHRTb3VyY2VFbnVtLFxuICBDb250ZXh0RW52RW51bSxcbn0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiOyAvLyBJbXBvcnQgbmVjZXNzYXJ5IGVudW1zXG4vLyBpbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50L2Rpc3QvbW9kZWxzL0NvbnRleHRcIjsgLy8gSW1wb3J0IENvbnRleHQgdHlwZVxuXG5leHBvcnQgY29uc3QgY3JlYXRlUmVzcG9uc2VQYXlsb2FkID0gKHtcbiAgdXNlckV2ZW50cyxcbiAgZ2VuZXJhdGlvblBhcmFtcyxcbn06IHtcbiAgdXNlckV2ZW50czogVXNlckV2ZW50W107XG4gIGdlbmVyYXRpb25QYXJhbXM/OiBHZW5lcmF0aW9uUGFyYW1zO1xufSk6IE5leHRNZXNzYWdlUmVxdWVzdCA9PiB7XG4gIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICBjb25zdCBvcmdTaG9ydE5hbWUgPSBhdG9tU3RvcmUuZ2V0KG9yZ1Nob3J0TmFtZUF0b20pO1xuICBjb25zdCBvcmdJZCA9IGF0b21TdG9yZS5nZXQob3JnSWRBdG9tKTtcbiAgY29uc3QgdXNlcklkID0gYXRvbVN0b3JlLmdldCh1c2VySWRBdG9tKTtcbiAgY29uc3QgY2hhdElkID0gYXRvbVN0b3JlLmdldChjaGF0SWRBdG9tKTtcbiAgY29uc3Qgc291cmNlID0gYXRvbVN0b3JlLmdldChjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGVudiA9IGF0b21TdG9yZS5nZXQoZW52QXRvbSk7XG5cbiAgY29uc3QgZmVhdHVyZUZsYWdTZXJ2aWNlID0gYXRvbVN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKTtcblxuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHVzZXJJZDogdXNlcklkID8/IFwiXCIsXG4gICAgb3JnX2lkOiBvcmdJZCA/PyBcIlwiLFxuICAgIG9yZ19zaG9ydF9uYW1lOiBvcmdTaG9ydE5hbWUgPz8gXCJcIixcbiAgICBjaGF0X2lkOiBjaGF0SWQgPz8gXCJcIixcbiAgICBzb3VyY2U6IHNvdXJjZSA/PyBDb250ZXh0U291cmNlRW51bS5BcHAsXG4gICAgZW52OiAoZW52IGFzIENvbnRleHRFbnZFbnVtKSA/PyBDb250ZXh0RW52RW51bS5EZXYsXG4gIH07XG5cbiAgY29uc3QgZmVhdHVyZUZsYWdzID1cbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge307XG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdXVpZCgpLFxuICAgIGNvbnRleHQsXG4gICAgdXNlckV2ZW50cyxcbiAgICBmZWF0dXJlRmxhZ3M6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVGbGFncykuZmlsdGVyKChbLCBpc0VuYWJsZWRdKSA9PiBpc0VuYWJsZWQpXG4gICAgKSwgLy8gQ29udmVydCBiYWNrIHRvIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+XG4gICAgZ2VuZXJhdGlvblBhcmFtcyxcbiAgfTtcbn07XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcblxuaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbi8vIFRoaXMgYXRvbSB3aWxsIGhvbGQgdGhlIHRyYWNrRXZlbnQgZnVuY3Rpb24gZnJvbSB0aGUgQW1wbGl0dWRlIGNvbnRleHQuXG4vLyBJdCBuZWVkcyB0byBiZSBpbml0aWFsaXplZCBieSBhIFJlYWN0IGNvbXBvbmVudCB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIHVzZUFtcGxpdHVkZSBob29rLlxuZXhwb3J0IGNvbnN0IGFtcGxpdHVkZVRyYWNrRXZlbnRBdG9tID0gYXRvbTxcbiAgKChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD4pIHwgbnVsbFxuPihudWxsKTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7XG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxuICByZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2NoYXRcIjtcbmltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHsgcXVldWVVc2VyRXZlbnRBdG9tIH0gZnJvbSBcIi4vbWVzc2FnZVF1ZXVlXCI7XG5pbXBvcnQgeyBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcbmltcG9ydCB7IGFtcGxpdHVkZVRyYWNrRXZlbnRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b21cIjtcblxudHlwZSBIYW5kbGVSZXBseVBhcmFtcyA9IHtcbiAgbWVzc2FnZTogTWVzc2FnZTtcbiAgdXNlclR5cGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVJlcGx5QXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgeyBtZXNzYWdlLCB1c2VyVHlwZWQgfTogSGFuZGxlUmVwbHlQYXJhbXMpID0+IHtcbiAgICBpZiAobWVzc2FnZS50eXBlICE9PSBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHJhY2tFdmVudCA9IGdldChhbXBsaXR1ZGVUcmFja0V2ZW50QXRvbSk7XG4gICAgY29uc3QgcXVlcnlUeXBlZCA9IG1lc3NhZ2UubWV0YWRhdGEuY29udGVudDtcblxuICAgIHNldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLCBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkKTtcbiAgICBzZXQodXNlclF1ZXJ5QXRvbSwgcXVlcnlUeXBlZCk7XG4gICAgc2V0KG1lc3NhZ2VzQXRvbSwgWy4uLmdldChtZXNzYWdlc0F0b20pLCBbbWVzc2FnZV1dKTtcbiAgICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcbiAgICBzZXQocXVldWVVc2VyRXZlbnRBdG9tLCB7XG4gICAgICBldmVudElkOiBtZXNzYWdlLmlkLFxuICAgICAgY3JlYXRlZEF0OiBtZXNzYWdlLmNyZWF0ZWRBdCxcbiAgICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBxdWVyeTogcXVlcnlUeXBlZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAodHJhY2tFdmVudCkge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0VXNlck1lc3NhZ2VJbnB1dCxcbiAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgbWVzc2FnZV9yb2xlOiBtZXNzYWdlLnJvbGUsXG4gICAgICAgICAgbWVzc2FnZV90eXBlOiBtZXNzYWdlLnR5cGUsXG4gICAgICAgICAgbWVzc2FnZV9tZXRhZGF0YToge1xuICAgICAgICAgICAgY29udGVudDogbWVzc2FnZT8ubWV0YWRhdGE/LmNvbnRlbnQsIC8vIFJlbW92ZWQgYW1wbGl0dWRlU2FmZVN0cmluZ1xuICAgICAgICAgICAgY3JlYXRlZF9hdDogbWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgICAgICAgICB1c2VyX3R5cGVkOiB1c2VyVHlwZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuKTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGF0b21XaXRoU3RvcmFnZSB9IGZyb20gXCJqb3RhaS91dGlsc1wiO1xuaW1wb3J0IExvZ2dlciBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyXCI7XG5pbXBvcnQge1xuICBnZXRBdG9tU3RvcmUsXG4gIHNlc3Npb25TdG9yYWdlVXRpbCxcbn0gZnJvbSBcInNyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlXCI7XG5cbmV4cG9ydCBjb25zdCBBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSA9IFwic3BpZmZ5LWFwcC1pbml0aWFsLXN0YXJ0LXRpbWVcIjtcbmV4cG9ydCBjb25zdCBQQUdFX0xPQURfT0ZGU0VUX1RJTUVfS0VZID0gXCJzcGlmZnktcGFnZS1sb2FkLW9mZnNldC10aW1lXCI7XG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgcGVyZm9ybWFuY2UgbWV0cmljcyB0aGF0IGNhbiBiZSBsb2dnZWQuIEFsbCB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhlXG4gKiBpbml0aWFsIHN0YXJ0IHRpbWUgb2YgdGhlIGFwcCBhbmQgYXJlIHN0b3JlZCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBlbnVtIFBlcmZNZXRyaWNzRXZlbnRzIHtcbiAgUGFnZUxvYWRPZmZzZXQgPSBcInBhZ2VfbG9hZF9vZmZzZXRfbXNcIixcbiAgTWFpbkJ1bmRsZUxvYWRlZCA9IFwibWFpbl9idW5kbGVfbG9hZGVkX21zXCIsXG4gIE9yZ0NvbmZpZ0xvYWRTdGFydGVkID0gXCJvcmdfY29uZmlnX2xvYWRfc3RhcnRlZF9tc1wiLFxuICBPcmdDb25maWdMb2FkRW5kZWQgPSBcIm9yZ19jb25maWdfbG9hZF9lbmRlZF9tc1wiLFxuICBGaXJzdFJlc3BvbnNlU3RhcnRlZCA9IFwiZmlyc3RfcmVzcG9uc2Vfc3RhcnRlZF9tc1wiLFxuICBGaXJzdFJlc3BvbnNlQ29tcGxldGVkID0gXCJmaXJzdF9yZXNwb25zZV9jb21wbGV0ZWRfbXNcIixcbiAgRmlyc3RTdWdnZXN0aW9uc1N0YXJ0ZWQgPSBcImZpcnN0X3N1Z2dlc3Rpb25zX3N0YXJ0ZWRfbXNcIixcbiAgRmlyc3RTdWdnZXN0aW9uc0NvbXBsZXRlZCA9IFwiZmlyc3Rfc3VnZ2VzdGlvbnNfY29tcGxldGVkX21zXCIsXG4gIEVtYmVkZGVkV2lkZ2V0UmVuZGVyZWQgPSBcImVtYmVkZGVkX3dpZGdldF9yZW5kZXJlZF9tc1wiLFxuICBGbG9hdGluZ0J1dHRvblJlbmRlcmVkID0gXCJmbG9hdGluZ19idXR0b25fcmVuZGVyZWRfbXNcIixcbiAgVG9wU3VnZ2VzdGlvbnNCYXJSZW5kZXJlZCA9IFwidG9wX3N1Z2dlc3Rpb25zX2Jhcl9yZW5kZXJlZF9tc1wiLFxuICBCb3R0b21TdWdnZXN0aW9uc0JhclJlbmRlcmVkID0gXCJib3R0b21fc3VnZ2VzdGlvbnNfYmFyX3JlbmRlcmVkX21zXCIsXG4gIFNlYXJjaFByb21wdFJlbmRlcmVkID0gXCJzZWFyY2hfcHJvbXB0X3JlbmRlcmVkX21zXCIsXG59XG5cbmNvbnN0IGludGVybmFsUGVyZk1ldHJpY3NBdG9tID0gYXRvbTxNYXA8UGVyZk1ldHJpY3NFdmVudHMsIG51bWJlcj4+KG5ldyBNYXAoKSk7XG5leHBvcnQgY29uc3QgYXBwSW5pdGlhbFN0YXJ0VGltZU1zQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICBBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSxcbiAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSkgPz8gdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBwYWdlTG9hZE9mZnNldFRpbWVBdG9tID0gYXRvbVdpdGhTdG9yYWdlPHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gIFBBR0VfTE9BRF9PRkZTRVRfVElNRV9LRVksXG4gIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oUEFHRV9MT0FEX09GRlNFVF9USU1FX0tFWSkgPz8gdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5cbi8qKlxuICogUmVzZXRzIHRoZSBwZXJmb3JtYW5jZSBtZXRyaWNzIGF0b20gdG8gYW4gZW1wdHkgbWFwLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBlcmZvcm1hbmNlXG4gKiBtZXRyaWNzIGhhdmUgYmVlbiByZXBvcnRlZCB0byBhbXBsaXR1ZGUuIE9uIFNQQSwgaXQgZW5zdXJlcyB0aGF0IHdlIGNhbiBzdGlsbCBjYXB0dXJlIG1ldHJpY3MgYXNcbiAqIHRoZSB1c2VyIG5hdmlnYXRlcyBhcm91bmQgdGhlIGFwcCAoYWx0aG91Z2ggdGhlcmUgaXMgbW9yZSB3b3JrIHRvIGJlIGRvbmUgdG8gZnVsbHkgZW5hYmxlIHRoaXMpLlxuICogT24gbm9uLVNQQSwgaXQgZW5zdXJlcyB0aGF0IHByZXZpb3VzbHkgY2FwdHVyZWQgbWV0cmljcyBhcmUgbm90IHJlcG9ydGVkIGFnYWluLlxuICovXG5leHBvcnQgY29uc3QgcmVzZXRQZXJmb3JtYW5jZU1ldHJpY3NBdG9tID0gKCkgPT4ge1xuICBjb25zdCBhdG9tU3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgYXRvbVN0b3JlLnNldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSwgbmV3IE1hcCgpKTtcbn07XG5leHBvcnQgY29uc3QgcGVyZm9ybWFuY2VNZXRyaWNzQXRvbSA9IGF0b20oKGdldCkgPT5cbiAgZ2V0KGludGVybmFsUGVyZk1ldHJpY3NBdG9tKVxuKTtcbmV4cG9ydCBjb25zdCBoYXNSZXBvcnRlZFBlcmZvcm1hbmNlTWV0cmljc0F0b20gPSBhdG9tPGJvb2xlYW4+KGZhbHNlKTtcblxuLyoqXG4gKiBMb2dzIGEgcGVyZm9ybWFuY2UgbWV0cmljIGJ5IGNhcHR1cmluZyB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgaW5pdGlhbCBhcHAgc3RhcnQgdGltZVxuICogYW5kIHRoZSBjdXJyZW50IHRpbWUuIElmIHRoZSBtZXRyaWMgaGFzIGFscmVhZHkgYmVlbiBsb2dnZWQsIGl0IHdpbGwgbm90IGJlIGxvZ2dlZCBhZ2Fpbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHBlcmZvcm1hbmNlIG1ldHJpYyBuYW1lIHRvIGxvZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvZ1BlcmZNZXRyaWNBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCB2YWx1ZTogUGVyZk1ldHJpY3NFdmVudHMpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVGltZVN0b3JhZ2VWYWx1ZSA9IGdldChhcHBJbml0aWFsU3RhcnRUaW1lTXNBdG9tKTtcbiAgICBjb25zdCBpbml0aWFsVGltZU1zID0gaW5pdGlhbFRpbWVTdG9yYWdlVmFsdWVcbiAgICAgID8gcGFyc2VJbnQoaW5pdGlhbFRpbWVTdG9yYWdlVmFsdWUsIDEwKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoaW5pdGlhbFRpbWVNcyA9PSBudWxsKSB7XG4gICAgICBMb2dnZXIubG9nV2FybihcbiAgICAgICAgYFtzcGlmZnktYWldIE5vIGluaXRpYWwgYXBwIHN0YXJ0IHRpbWUgZm91bmQuIFNraXBwaW5nLi4uYCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRQZXJmTWV0cmljcyA9IGdldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSk7XG4gICAgaWYgKGN1cnJlbnRQZXJmTWV0cmljcy5oYXModmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRpbWVNcyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVsdGFNcyA9IGN1cnJlbnRUaW1lTXMgLSBpbml0aWFsVGltZU1zO1xuICAgIGN1cnJlbnRQZXJmTWV0cmljcy5zZXQodmFsdWUsIGRlbHRhTXMpO1xuICAgIHNldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSwgY3VycmVudFBlcmZNZXRyaWNzKTtcbiAgfVxuKTtcbiIsImltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IGF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBGb3JtU3VibWl0dGVkQXR0cmlidXRlcywgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBmb3JtU3VibWl0QXRvbSwgcmVwbHlFdmVudENhdGVnb3J5QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0JztcbmltcG9ydCB7IHF1ZXVlVXNlckV2ZW50QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZSc7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGb3JtU3VibWl0dGVkQXRvbSA9IGF0b20obnVsbCwgKF8sIHNldCwgZm9ybTogRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXMpID0+IHtcbiAgc2V0KHJlcGx5RXZlbnRDYXRlZ29yeUF0b20sIFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQpO1xuICBzZXQoZm9ybVN1Ym1pdEF0b20sIGZvcm0pO1xuXG4gIGNvbnN0IGZvcm1Vc2VyRXZlbnQgPSB7XG4gICAgZXZlbnRJZDogdXVpZCgpLFxuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGF0dHJpYnV0ZXM6IGZvcm0sXG4gIH0gc2F0aXNmaWVzIFVzZXJFdmVudDtcbiAgc2V0KHF1ZXVlVXNlckV2ZW50QXRvbSwgZm9ybVVzZXJFdmVudCk7XG59KTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlUm9sZSwgTWVzc2FnZVR5cGUsIFN1Z2dlc3Rpb24gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVwbHlFdmVudENhdGVnb3J5QXRvbSxcbiAgc3VnZ2VzdGlvbkF0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQnO1xuaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgcXVldWVVc2VyRXZlbnRBdG9tIH0gZnJvbSAnLi9tZXNzYWdlUXVldWUnO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlU3VnZ2VzdGlvbkF0b20gPSBhdG9tKG51bGwsIChnZXQsIHNldCwgc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbikgPT4ge1xuICBjb25zdCBuZXdNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgIGlkOiBzdWdnZXN0aW9uLmlkLFxuICAgIHJvbGU6IE1lc3NhZ2VSb2xlLlVzZXIsXG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU3VnZ2VzdGlvbkNsaWNrZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHN1Z2dlc3Rpb25JZDogc3VnZ2VzdGlvbi5pZCxcbiAgICAgIHN1Z2dlc3Rpb25Db250ZW50OiBzdWdnZXN0aW9uLmNvbnRlbnQsXG4gICAgfSxcbiAgfTtcblxuICBzZXQocmVwbHlFdmVudENhdGVnb3J5QXRvbSwgVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQpO1xuICBzZXQoc3VnZ2VzdGlvbkF0b20sIHN1Z2dlc3Rpb24pO1xuICBzZXQobWVzc2FnZXNBdG9tLCBbLi4uZ2V0KG1lc3NhZ2VzQXRvbSksIFtuZXdNZXNzYWdlXV0pO1xuICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcbiAgc2V0KHF1ZXVlVXNlckV2ZW50QXRvbSwge1xuICAgIGV2ZW50SWQ6IHN1Z2dlc3Rpb24uaWQsXG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIGNyZWF0ZWRBdDogbmV3TWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgc3VnZ2VzdGlvbklkOiBzdWdnZXN0aW9uLmlkLFxuICAgIH0sXG4gIH0pO1xufSk7XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgbWVzc2FnZXNBdG9tLCB1c2VySGFzUmVwbGllZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5cbmV4cG9ydCBjb25zdCBsYXN0QXNzaXN0YW50TWVzc2FnZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXQobWVzc2FnZXNBdG9tKTtcbiAgY29uc3QgdXNlckhhc1JlcGxpZWQgPSBnZXQodXNlckhhc1JlcGxpZWRBdG9tKTtcbiAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDAgJiYgIXVzZXJIYXNSZXBsaWVkKSB7XG4gICAgcmV0dXJuIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBudWxsO1xufSk7XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tIFwic3JjL2F0b21zL2F0b21TdG9yZS9hdG9tU3RvcmVcIjtcblxuY29uc3QgaW50ZXJuYWxXaWRnZXRBcnJheUF0b20gPSBhdG9tPEhUTUxFbGVtZW50W10+KFtdKTtcblxuZXhwb3J0IGNvbnN0IHdpZGdldEFycmF5QXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsV2lkZ2V0QXJyYXlBdG9tKSk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYWxsIGlzIHVzZWQgdG8gY3JlYXRlIGEgbGlzdCBvZiB0aGUgU3BpZmZ5IHdpZGdldHNcbiAqIHRoYXQgYXJlIHJlbmRlcmluZyBvbiB0aGUgcGFnZS5cbiAqXG4gKiBJdCBpcyB1c2VkIGJ5IHRoZSBGbG9hdGluZ0J1dHRvbiB3aWRnZXQgdG8gc2xpZGUgb3V0IG9mIHZpZXcgd2hlbiBpdFxuICogb3ZlcmxhcHMgd2l0aCBhbm90aGVyIFNwaWZmeSB3aWRnZXQuXG4gKlxuICogVGhlIHNwaWZmeSB3aWRnZXRzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgdGhpcyBhcnJheSBmb3IgdGhlIGZsb2F0aW5nIGJ1dHRvblxuICogdG8ga25vdyBhYm91dCB0aGVtLlxuICpcbiAqIFRvZGF5IHRoZSBcIlN1Z2dlc3Rpb25CYXJcIiB3aWRnZXQgaXMgbm90IGFkZGVkLCBidXQgdGhlIG90aGVyIHdpZGdldHMgYXJlLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFdpZGdldCA9IChyZWY6IEhUTUxFbGVtZW50LCBpZHg/OiBudW1iZXIpID0+IHtcbiAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gIGNvbnN0IHZhbCA9IGF0b21TdG9yZS5nZXQoaW50ZXJuYWxXaWRnZXRBcnJheUF0b20pO1xuICBjb25zdCBpbnNlcnRJZHggPSBpZHggPz8gdmFsLmxlbmd0aDtcbiAgdmFsW2luc2VydElkeF0gPSByZWY7XG4gIGF0b21TdG9yZS5zZXQoaW50ZXJuYWxXaWRnZXRBcnJheUF0b20sIHZhbCk7XG59O1xuIiwiaW1wb3J0IHsgYXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7XG4gIHJlc3BvbnNlU3RyZWFtaW5nQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxuICByZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLFxuICB1c2VySGFzUmVwbGllZEF0b20sXG4gIGFza1F1ZXN0aW9uQnRuQ2xpY2tlZEF0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgY2hhdElzT3BlbkF0b20sXG4gIGNoYXRPblRvZ2dsZUF0b20sXG4gIHVzZXJFdmVudHNBdG9tLFxuICBzdWdnZXN0aW9uQXRvbSxcbn0gZnJvbSAnLi9jaGF0U3RhdGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NoYXRTdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcGxpZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJmb3JtYW5jZU1ldHJpY3MnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3VnZ2VzdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXN0TWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbmRlcmVkV2lkZ2V0UmVmcyc7XG5cbmV4cG9ydCBjb25zdCBjaGF0QXRvbSA9IGF0b20oKGdldCkgPT4gKHtcbiAgdXNlckhhc1JlcGxpZWQ6IGdldCh1c2VySGFzUmVwbGllZEF0b20pLFxuICByZXBseUV2ZW50Q2F0ZWdvcnk6IGdldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tKSxcbiAgdXNlclF1ZXJ5OiBnZXQodXNlclF1ZXJ5QXRvbSksXG4gIHN1Z2dlc3Rpb246IGdldChzdWdnZXN0aW9uQXRvbSksXG4gIGFza1F1ZXN0aW9uQnRuQ2xpY2tlZDogZ2V0KGFza1F1ZXN0aW9uQnRuQ2xpY2tlZEF0b20pLFxuICBtZXNzYWdlczogZ2V0KG1lc3NhZ2VzQXRvbSksXG4gIHVzZXJFdmVudHM6IGdldCh1c2VyRXZlbnRzQXRvbSksXG4gIHN1Z2dlc3Rpb25zOiBnZXQoc3VnZ2VzdGlvbnNBdG9tKSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nOiBnZXQoc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSksXG4gIHJlc3BvbnNlU3RyZWFtaW5nOiBnZXQocmVzcG9uc2VTdHJlYW1pbmdBdG9tKSxcbiAgaXNPcGVuOiBnZXQoY2hhdElzT3BlbkF0b20pLFxuICBvblRvZ2dsZTogZ2V0KGNoYXRPblRvZ2dsZUF0b20pLFxufSkpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLE1BQU0sNkNB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
@@ -1,10 +1,10 @@
1
- import { MessageRole, MessageType } from "./models-CE5YjbzE.js";
1
+ import { MessageRole, MessageType } from "./models-BA9B8LGE.js";
2
2
  import { logger_default } from "./logger-W3lqg-4b.js";
3
3
  import { contextSourceAtom, envAtom, orgShortNameAtom } from "./enviveConfig-DZBohDpc.js";
4
4
  import { getAtomStore, sessionStorageUtil } from "./atomStore-DEcDhiLp.js";
5
5
  import { chatIdAtom, userIdAtom } from "./app-CflxT_xI.js";
6
- import { SpiffyMetricsEventName } from "./amplitudeContext-D58WY1aS.js";
7
- import { askQuestionBtnClickedAtom, chatIsOpenAtom, chatOnToggleAtom, formSubmitAtom, messagesAtom, replyEventCategoryAtom, responseStreamingAtom, suggestionAtom, suggestionsAtom, suggestionsLoadingAtom, userEventsAtom, userHasRepliedAtom, userQueryAtom } from "./chatState-BUN8ehpy.js";
6
+ import { SpiffyMetricsEventName } from "./amplitudeContext-DE3rKEV2.js";
7
+ import { askQuestionBtnClickedAtom, chatIsOpenAtom, chatOnToggleAtom, formSubmitAtom, messagesAtom, replyEventCategoryAtom, responseStreamingAtom, suggestionAtom, suggestionsAtom, suggestionsLoadingAtom, userEventsAtom, userHasRepliedAtom, userQueryAtom } from "./chatState-5iiJOrvd.js";
8
8
  import { featureFlagServiceAtom, orgIdAtom } from "./graphqlConfig-CZGjJ8hP.js";
9
9
  import { ContextEnvEnum, ContextSourceEnum, UserEventCategory } from "@spiffy-ai/commerce-api-client";
10
10
  import { v4 } from "uuid";
@@ -255,4 +255,4 @@ const chatAtom = atom((get) => ({
255
255
 
256
256
  //#endregion
257
257
  export { APP_INITIAL_START_TIME_KEY, PAGE_LOAD_OFFSET_TIME_KEY, PerfMetricsEvents, addWidget, amplitudeTrackEventAtom, appInitialStartTimeMsAtom, chatAtom, clearUserEventAtom, createResponsePayload, handleFormSubmittedAtom, handleReplyAtom, handleSuggestionAtom, hasReportedPerformanceMetricsAtom, lastAssistantMessageAtom, logPerfMetricAtom, pageLoadOffsetTimeAtom, performanceMetricsAtom, processUserEventAtom, queueUserEventAtom, resetPerformanceMetricsAtom, userEventQueueAtom, userQueueEventCountAtom, widgetArrayAtom };
258
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1Ra3g1bGxPVi5qcyIsIm5hbWVzIjpbInV1aWQiLCJ1dWlkIiwibmV3TWVzc2FnZTogTWVzc2FnZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZS50cyIsIi4uL3NyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b20udHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9yZXBsaWVzLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvcGVyZm9ybWFuY2VNZXRyaWNzLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvZm9ybS50cyIsIi4uL3NyYy9hdG9tcy9jaGF0L3N1Z2dlc3Rpb25zLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvbGFzdE1lc3NhZ2UudHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9yZW5kZXJlZFdpZGdldFJlZnMudHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7XG4gIEdlbmVyYXRpb25QYXJhbXMsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgVXNlckV2ZW50LFxufSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgZ2V0QXRvbVN0b3JlIH0gZnJvbSBcInNyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlXCI7XG5pbXBvcnQgeyB1c2VySWRBdG9tLCBjaGF0SWRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hcHBcIjtcbmltcG9ydCB7XG4gIG9yZ1Nob3J0TmFtZUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBlbnZBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7IG9yZ0lkQXRvbSwgZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvb3JnL2dyYXBocWxDb25maWdcIjtcblxuY29uc3QgaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20gPSBhdG9tPFVzZXJFdmVudFtdPihbXSk7XG5cbmV4cG9ydCBjb25zdCB1c2VyRXZlbnRRdWV1ZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgcXVldWUgPSBnZXQoaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20pO1xuICByZXR1cm4gcXVldWUgPT09IHVuZGVmaW5lZCA/IFtdIDogcXVldWUuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQpO1xufSk7XG5cbi8qKlxuICogVGhpcyBhdG9tIGlzIHVzZWQgdG8gcXVldWUgYSBuZXcgbWVzc2FnZSBmb3IgcHJvY2Vzc2luZyBvbiBgbmV4dF9yZXNwb25zZXNgXG4gKiBJdCByZWNlaXZlcyBhIHNpbmdsZSBgdXNlckV2ZW50YCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBwcm9jZXNzaW5nIHF1ZXVlLlxuICogSWYgdGhlIGV2ZW50IGhhcyB0aGUgc2FtZSBldmVudElkIGFzIGFuIGV4aXN0aW5nIG1lc3NhZ2UgaW4gdGhlIHF1ZXVlIHRoZSBORVdcbiAqIGV2ZW50IGlzIGlnbm9yZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHF1ZXVlVXNlckV2ZW50QXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgdXNlckV2ZW50OiBVc2VyRXZlbnQpID0+IHtcbiAgICBpZiAodXNlckV2ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tLCBbXG4gICAgICAuLi5nZXQoaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20pLFxuICAgICAgdXNlckV2ZW50LFxuICAgIF0pO1xuICB9XG4pO1xuXG4vKipcbiAqIFRoaXMgYXRvbSBleHBvc2VzIGEgZnVuY3Rpb24gdG8gcmVzZXQgdGhlIGVudGlyZSBxdWV1ZS4gQWxsIG1lc3NhZ2VzIGluIHRoZSBxdWV1ZSB3aWxsIGJlIHB1cmdlZFxuICovXG5leHBvcnQgY29uc3QgY2xlYXJVc2VyRXZlbnRBdG9tID0gYXRvbShudWxsLCAoXywgc2V0KSA9PiB7XG4gIHNldChpbnRlcm5hbFVzZXJFdmVudFF1ZXVlQXRvbSwgW10pO1xufSk7XG5cbi8qKlxuICogVGhpcyBhdG9tIGlzIHVzZWQgdG8gbWFyayBldmVudHMgYXMgcHJvY2Vzc2VkIGFuZCByZW1vdmUgdGhlbSBmcm9tIHRoZSBxdWV1ZVxuICogSXQgYWNjZXB0cyBhIGxpc3Qgb2YgZXZlbnRJZCB2YWx1ZXMgYW5kIHdpbGwgcmVtb3ZlIGFsbCBldmVudHMgd2l0aCB0aG9zZSBldmVudElkcyBmcm9tIHRoZSBxdWV1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByb2Nlc3NVc2VyRXZlbnRBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCBldmVudElkczogc3RyaW5nW10pID0+IHtcbiAgICBjb25zdCBjdXJyID0gZ2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tKTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBjdXJyPy5maWx0ZXIoXG4gICAgICAoZXZlbnQpID0+ICFldmVudElkcy5pbmNsdWRlcyhldmVudC5ldmVudElkKVxuICAgICk7XG4gICAgc2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tLCByZW1haW5pbmcpO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudEF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQodXNlckV2ZW50UXVldWVBdG9tKS5sZW5ndGhcbik7XG5cbmltcG9ydCB7XG4gIENvbnRleHRTb3VyY2VFbnVtLFxuICBDb250ZXh0RW52RW51bSxcbn0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiOyAvLyBJbXBvcnQgbmVjZXNzYXJ5IGVudW1zXG4vLyBpbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50L2Rpc3QvbW9kZWxzL0NvbnRleHRcIjsgLy8gSW1wb3J0IENvbnRleHQgdHlwZVxuXG5leHBvcnQgY29uc3QgY3JlYXRlUmVzcG9uc2VQYXlsb2FkID0gKHtcbiAgdXNlckV2ZW50cyxcbiAgZ2VuZXJhdGlvblBhcmFtcyxcbn06IHtcbiAgdXNlckV2ZW50czogVXNlckV2ZW50W107XG4gIGdlbmVyYXRpb25QYXJhbXM/OiBHZW5lcmF0aW9uUGFyYW1zO1xufSk6IE5leHRNZXNzYWdlUmVxdWVzdCA9PiB7XG4gIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICBjb25zdCBvcmdTaG9ydE5hbWUgPSBhdG9tU3RvcmUuZ2V0KG9yZ1Nob3J0TmFtZUF0b20pO1xuICBjb25zdCBvcmdJZCA9IGF0b21TdG9yZS5nZXQob3JnSWRBdG9tKTtcbiAgY29uc3QgdXNlcklkID0gYXRvbVN0b3JlLmdldCh1c2VySWRBdG9tKTtcbiAgY29uc3QgY2hhdElkID0gYXRvbVN0b3JlLmdldChjaGF0SWRBdG9tKTtcbiAgY29uc3Qgc291cmNlID0gYXRvbVN0b3JlLmdldChjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGVudiA9IGF0b21TdG9yZS5nZXQoZW52QXRvbSk7XG5cbiAgY29uc3QgZmVhdHVyZUZsYWdTZXJ2aWNlID0gYXRvbVN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKTtcblxuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHVzZXJJZDogdXNlcklkID8/IFwiXCIsXG4gICAgb3JnX2lkOiBvcmdJZCA/PyBcIlwiLFxuICAgIG9yZ19zaG9ydF9uYW1lOiBvcmdTaG9ydE5hbWUgPz8gXCJcIixcbiAgICBjaGF0X2lkOiBjaGF0SWQgPz8gXCJcIixcbiAgICBzb3VyY2U6IHNvdXJjZSA/PyBDb250ZXh0U291cmNlRW51bS5BcHAsXG4gICAgZW52OiAoZW52IGFzIENvbnRleHRFbnZFbnVtKSA/PyBDb250ZXh0RW52RW51bS5EZXYsXG4gIH07XG5cbiAgY29uc3QgZmVhdHVyZUZsYWdzID1cbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge307XG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdXVpZCgpLFxuICAgIGNvbnRleHQsXG4gICAgdXNlckV2ZW50cyxcbiAgICBmZWF0dXJlRmxhZ3M6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVGbGFncykuZmlsdGVyKChbLCBpc0VuYWJsZWRdKSA9PiBpc0VuYWJsZWQpXG4gICAgKSwgLy8gQ29udmVydCBiYWNrIHRvIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+XG4gICAgZ2VuZXJhdGlvblBhcmFtcyxcbiAgfTtcbn07XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcblxuaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbi8vIFRoaXMgYXRvbSB3aWxsIGhvbGQgdGhlIHRyYWNrRXZlbnQgZnVuY3Rpb24gZnJvbSB0aGUgQW1wbGl0dWRlIGNvbnRleHQuXG4vLyBJdCBuZWVkcyB0byBiZSBpbml0aWFsaXplZCBieSBhIFJlYWN0IGNvbXBvbmVudCB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIHVzZUFtcGxpdHVkZSBob29rLlxuZXhwb3J0IGNvbnN0IGFtcGxpdHVkZVRyYWNrRXZlbnRBdG9tID0gYXRvbTxcbiAgKChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD4pIHwgbnVsbFxuPihudWxsKTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7XG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxuICByZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2NoYXRcIjtcbmltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHsgcXVldWVVc2VyRXZlbnRBdG9tIH0gZnJvbSBcIi4vbWVzc2FnZVF1ZXVlXCI7XG5pbXBvcnQgeyBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcbmltcG9ydCB7IGFtcGxpdHVkZVRyYWNrRXZlbnRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b21cIjtcblxudHlwZSBIYW5kbGVSZXBseVBhcmFtcyA9IHtcbiAgbWVzc2FnZTogTWVzc2FnZTtcbiAgdXNlclR5cGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVJlcGx5QXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgeyBtZXNzYWdlLCB1c2VyVHlwZWQgfTogSGFuZGxlUmVwbHlQYXJhbXMpID0+IHtcbiAgICBpZiAobWVzc2FnZS50eXBlICE9PSBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHJhY2tFdmVudCA9IGdldChhbXBsaXR1ZGVUcmFja0V2ZW50QXRvbSk7XG4gICAgY29uc3QgcXVlcnlUeXBlZCA9IG1lc3NhZ2UubWV0YWRhdGEuY29udGVudDtcblxuICAgIHNldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLCBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkKTtcbiAgICBzZXQodXNlclF1ZXJ5QXRvbSwgcXVlcnlUeXBlZCk7XG4gICAgc2V0KG1lc3NhZ2VzQXRvbSwgWy4uLmdldChtZXNzYWdlc0F0b20pLCBbbWVzc2FnZV1dKTtcbiAgICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcbiAgICBzZXQocXVldWVVc2VyRXZlbnRBdG9tLCB7XG4gICAgICBldmVudElkOiBtZXNzYWdlLmlkLFxuICAgICAgY3JlYXRlZEF0OiBtZXNzYWdlLmNyZWF0ZWRBdCxcbiAgICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBxdWVyeTogcXVlcnlUeXBlZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAodHJhY2tFdmVudCkge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0VXNlck1lc3NhZ2VJbnB1dCxcbiAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgbWVzc2FnZV9yb2xlOiBtZXNzYWdlLnJvbGUsXG4gICAgICAgICAgbWVzc2FnZV90eXBlOiBtZXNzYWdlLnR5cGUsXG4gICAgICAgICAgbWVzc2FnZV9tZXRhZGF0YToge1xuICAgICAgICAgICAgY29udGVudDogbWVzc2FnZT8ubWV0YWRhdGE/LmNvbnRlbnQsIC8vIFJlbW92ZWQgYW1wbGl0dWRlU2FmZVN0cmluZ1xuICAgICAgICAgICAgY3JlYXRlZF9hdDogbWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgICAgICAgICB1c2VyX3R5cGVkOiB1c2VyVHlwZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuKTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGF0b21XaXRoU3RvcmFnZSB9IGZyb20gXCJqb3RhaS91dGlsc1wiO1xuaW1wb3J0IExvZ2dlciBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyXCI7XG5pbXBvcnQge1xuICBnZXRBdG9tU3RvcmUsXG4gIHNlc3Npb25TdG9yYWdlVXRpbCxcbn0gZnJvbSBcInNyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlXCI7XG5cbmV4cG9ydCBjb25zdCBBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSA9IFwic3BpZmZ5LWFwcC1pbml0aWFsLXN0YXJ0LXRpbWVcIjtcbmV4cG9ydCBjb25zdCBQQUdFX0xPQURfT0ZGU0VUX1RJTUVfS0VZID0gXCJzcGlmZnktcGFnZS1sb2FkLW9mZnNldC10aW1lXCI7XG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgcGVyZm9ybWFuY2UgbWV0cmljcyB0aGF0IGNhbiBiZSBsb2dnZWQuIEFsbCB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhlXG4gKiBpbml0aWFsIHN0YXJ0IHRpbWUgb2YgdGhlIGFwcCBhbmQgYXJlIHN0b3JlZCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBlbnVtIFBlcmZNZXRyaWNzRXZlbnRzIHtcbiAgUGFnZUxvYWRPZmZzZXQgPSBcInBhZ2VfbG9hZF9vZmZzZXRfbXNcIixcbiAgTWFpbkJ1bmRsZUxvYWRlZCA9IFwibWFpbl9idW5kbGVfbG9hZGVkX21zXCIsXG4gIE9yZ0NvbmZpZ0xvYWRTdGFydGVkID0gXCJvcmdfY29uZmlnX2xvYWRfc3RhcnRlZF9tc1wiLFxuICBPcmdDb25maWdMb2FkRW5kZWQgPSBcIm9yZ19jb25maWdfbG9hZF9lbmRlZF9tc1wiLFxuICBGaXJzdFJlc3BvbnNlU3RhcnRlZCA9IFwiZmlyc3RfcmVzcG9uc2Vfc3RhcnRlZF9tc1wiLFxuICBGaXJzdFJlc3BvbnNlQ29tcGxldGVkID0gXCJmaXJzdF9yZXNwb25zZV9jb21wbGV0ZWRfbXNcIixcbiAgRmlyc3RTdWdnZXN0aW9uc1N0YXJ0ZWQgPSBcImZpcnN0X3N1Z2dlc3Rpb25zX3N0YXJ0ZWRfbXNcIixcbiAgRmlyc3RTdWdnZXN0aW9uc0NvbXBsZXRlZCA9IFwiZmlyc3Rfc3VnZ2VzdGlvbnNfY29tcGxldGVkX21zXCIsXG4gIEVtYmVkZGVkV2lkZ2V0UmVuZGVyZWQgPSBcImVtYmVkZGVkX3dpZGdldF9yZW5kZXJlZF9tc1wiLFxuICBGbG9hdGluZ0J1dHRvblJlbmRlcmVkID0gXCJmbG9hdGluZ19idXR0b25fcmVuZGVyZWRfbXNcIixcbiAgVG9wU3VnZ2VzdGlvbnNCYXJSZW5kZXJlZCA9IFwidG9wX3N1Z2dlc3Rpb25zX2Jhcl9yZW5kZXJlZF9tc1wiLFxuICBCb3R0b21TdWdnZXN0aW9uc0JhclJlbmRlcmVkID0gXCJib3R0b21fc3VnZ2VzdGlvbnNfYmFyX3JlbmRlcmVkX21zXCIsXG4gIFNlYXJjaFByb21wdFJlbmRlcmVkID0gXCJzZWFyY2hfcHJvbXB0X3JlbmRlcmVkX21zXCIsXG59XG5cbmNvbnN0IGludGVybmFsUGVyZk1ldHJpY3NBdG9tID0gYXRvbTxNYXA8UGVyZk1ldHJpY3NFdmVudHMsIG51bWJlcj4+KG5ldyBNYXAoKSk7XG5leHBvcnQgY29uc3QgYXBwSW5pdGlhbFN0YXJ0VGltZU1zQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICBBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSxcbiAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSkgPz8gdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBwYWdlTG9hZE9mZnNldFRpbWVBdG9tID0gYXRvbVdpdGhTdG9yYWdlPHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gIFBBR0VfTE9BRF9PRkZTRVRfVElNRV9LRVksXG4gIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oUEFHRV9MT0FEX09GRlNFVF9USU1FX0tFWSkgPz8gdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5cbi8qKlxuICogUmVzZXRzIHRoZSBwZXJmb3JtYW5jZSBtZXRyaWNzIGF0b20gdG8gYW4gZW1wdHkgbWFwLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBlcmZvcm1hbmNlXG4gKiBtZXRyaWNzIGhhdmUgYmVlbiByZXBvcnRlZCB0byBhbXBsaXR1ZGUuIE9uIFNQQSwgaXQgZW5zdXJlcyB0aGF0IHdlIGNhbiBzdGlsbCBjYXB0dXJlIG1ldHJpY3MgYXNcbiAqIHRoZSB1c2VyIG5hdmlnYXRlcyBhcm91bmQgdGhlIGFwcCAoYWx0aG91Z2ggdGhlcmUgaXMgbW9yZSB3b3JrIHRvIGJlIGRvbmUgdG8gZnVsbHkgZW5hYmxlIHRoaXMpLlxuICogT24gbm9uLVNQQSwgaXQgZW5zdXJlcyB0aGF0IHByZXZpb3VzbHkgY2FwdHVyZWQgbWV0cmljcyBhcmUgbm90IHJlcG9ydGVkIGFnYWluLlxuICovXG5leHBvcnQgY29uc3QgcmVzZXRQZXJmb3JtYW5jZU1ldHJpY3NBdG9tID0gKCkgPT4ge1xuICBjb25zdCBhdG9tU3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgYXRvbVN0b3JlLnNldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSwgbmV3IE1hcCgpKTtcbn07XG5leHBvcnQgY29uc3QgcGVyZm9ybWFuY2VNZXRyaWNzQXRvbSA9IGF0b20oKGdldCkgPT5cbiAgZ2V0KGludGVybmFsUGVyZk1ldHJpY3NBdG9tKVxuKTtcbmV4cG9ydCBjb25zdCBoYXNSZXBvcnRlZFBlcmZvcm1hbmNlTWV0cmljc0F0b20gPSBhdG9tPGJvb2xlYW4+KGZhbHNlKTtcblxuLyoqXG4gKiBMb2dzIGEgcGVyZm9ybWFuY2UgbWV0cmljIGJ5IGNhcHR1cmluZyB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgaW5pdGlhbCBhcHAgc3RhcnQgdGltZVxuICogYW5kIHRoZSBjdXJyZW50IHRpbWUuIElmIHRoZSBtZXRyaWMgaGFzIGFscmVhZHkgYmVlbiBsb2dnZWQsIGl0IHdpbGwgbm90IGJlIGxvZ2dlZCBhZ2Fpbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHBlcmZvcm1hbmNlIG1ldHJpYyBuYW1lIHRvIGxvZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvZ1BlcmZNZXRyaWNBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCB2YWx1ZTogUGVyZk1ldHJpY3NFdmVudHMpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVGltZVN0b3JhZ2VWYWx1ZSA9IGdldChhcHBJbml0aWFsU3RhcnRUaW1lTXNBdG9tKTtcbiAgICBjb25zdCBpbml0aWFsVGltZU1zID0gaW5pdGlhbFRpbWVTdG9yYWdlVmFsdWVcbiAgICAgID8gcGFyc2VJbnQoaW5pdGlhbFRpbWVTdG9yYWdlVmFsdWUsIDEwKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoaW5pdGlhbFRpbWVNcyA9PSBudWxsKSB7XG4gICAgICBMb2dnZXIubG9nV2FybihcbiAgICAgICAgYFtzcGlmZnktYWldIE5vIGluaXRpYWwgYXBwIHN0YXJ0IHRpbWUgZm91bmQuIFNraXBwaW5nLi4uYCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRQZXJmTWV0cmljcyA9IGdldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSk7XG4gICAgaWYgKGN1cnJlbnRQZXJmTWV0cmljcy5oYXModmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRpbWVNcyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVsdGFNcyA9IGN1cnJlbnRUaW1lTXMgLSBpbml0aWFsVGltZU1zO1xuICAgIGN1cnJlbnRQZXJmTWV0cmljcy5zZXQodmFsdWUsIGRlbHRhTXMpO1xuICAgIHNldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSwgY3VycmVudFBlcmZNZXRyaWNzKTtcbiAgfVxuKTtcbiIsImltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IGF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBGb3JtU3VibWl0dGVkQXR0cmlidXRlcywgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBmb3JtU3VibWl0QXRvbSwgcmVwbHlFdmVudENhdGVnb3J5QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0JztcbmltcG9ydCB7IHF1ZXVlVXNlckV2ZW50QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZSc7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGb3JtU3VibWl0dGVkQXRvbSA9IGF0b20obnVsbCwgKF8sIHNldCwgZm9ybTogRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXMpID0+IHtcbiAgc2V0KHJlcGx5RXZlbnRDYXRlZ29yeUF0b20sIFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQpO1xuICBzZXQoZm9ybVN1Ym1pdEF0b20sIGZvcm0pO1xuXG4gIGNvbnN0IGZvcm1Vc2VyRXZlbnQgPSB7XG4gICAgZXZlbnRJZDogdXVpZCgpLFxuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGF0dHJpYnV0ZXM6IGZvcm0sXG4gIH0gc2F0aXNmaWVzIFVzZXJFdmVudDtcbiAgc2V0KHF1ZXVlVXNlckV2ZW50QXRvbSwgZm9ybVVzZXJFdmVudCk7XG59KTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlUm9sZSwgTWVzc2FnZVR5cGUsIFN1Z2dlc3Rpb24gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVwbHlFdmVudENhdGVnb3J5QXRvbSxcbiAgc3VnZ2VzdGlvbkF0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQnO1xuaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgcXVldWVVc2VyRXZlbnRBdG9tIH0gZnJvbSAnLi9tZXNzYWdlUXVldWUnO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlU3VnZ2VzdGlvbkF0b20gPSBhdG9tKG51bGwsIChnZXQsIHNldCwgc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbikgPT4ge1xuICBjb25zdCBuZXdNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgIGlkOiBzdWdnZXN0aW9uLmlkLFxuICAgIHJvbGU6IE1lc3NhZ2VSb2xlLlVzZXIsXG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU3VnZ2VzdGlvbkNsaWNrZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHN1Z2dlc3Rpb25JZDogc3VnZ2VzdGlvbi5pZCxcbiAgICAgIHN1Z2dlc3Rpb25Db250ZW50OiBzdWdnZXN0aW9uLmNvbnRlbnQsXG4gICAgfSxcbiAgfTtcblxuICBzZXQocmVwbHlFdmVudENhdGVnb3J5QXRvbSwgVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQpO1xuICBzZXQoc3VnZ2VzdGlvbkF0b20sIHN1Z2dlc3Rpb24pO1xuICBzZXQobWVzc2FnZXNBdG9tLCBbLi4uZ2V0KG1lc3NhZ2VzQXRvbSksIFtuZXdNZXNzYWdlXV0pO1xuICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcbiAgc2V0KHF1ZXVlVXNlckV2ZW50QXRvbSwge1xuICAgIGV2ZW50SWQ6IHN1Z2dlc3Rpb24uaWQsXG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIGNyZWF0ZWRBdDogbmV3TWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgc3VnZ2VzdGlvbklkOiBzdWdnZXN0aW9uLmlkLFxuICAgIH0sXG4gIH0pO1xufSk7XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgbWVzc2FnZXNBdG9tLCB1c2VySGFzUmVwbGllZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5cbmV4cG9ydCBjb25zdCBsYXN0QXNzaXN0YW50TWVzc2FnZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXQobWVzc2FnZXNBdG9tKTtcbiAgY29uc3QgdXNlckhhc1JlcGxpZWQgPSBnZXQodXNlckhhc1JlcGxpZWRBdG9tKTtcbiAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDAgJiYgIXVzZXJIYXNSZXBsaWVkKSB7XG4gICAgcmV0dXJuIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBudWxsO1xufSk7XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tIFwic3JjL2F0b21zL2F0b21TdG9yZS9hdG9tU3RvcmVcIjtcblxuY29uc3QgaW50ZXJuYWxXaWRnZXRBcnJheUF0b20gPSBhdG9tPEhUTUxFbGVtZW50W10+KFtdKTtcblxuZXhwb3J0IGNvbnN0IHdpZGdldEFycmF5QXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsV2lkZ2V0QXJyYXlBdG9tKSk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYWxsIGlzIHVzZWQgdG8gY3JlYXRlIGEgbGlzdCBvZiB0aGUgU3BpZmZ5IHdpZGdldHNcbiAqIHRoYXQgYXJlIHJlbmRlcmluZyBvbiB0aGUgcGFnZS5cbiAqXG4gKiBJdCBpcyB1c2VkIGJ5IHRoZSBGbG9hdGluZ0J1dHRvbiB3aWRnZXQgdG8gc2xpZGUgb3V0IG9mIHZpZXcgd2hlbiBpdFxuICogb3ZlcmxhcHMgd2l0aCBhbm90aGVyIFNwaWZmeSB3aWRnZXQuXG4gKlxuICogVGhlIHNwaWZmeSB3aWRnZXRzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgdGhpcyBhcnJheSBmb3IgdGhlIGZsb2F0aW5nIGJ1dHRvblxuICogdG8ga25vdyBhYm91dCB0aGVtLlxuICpcbiAqIFRvZGF5IHRoZSBcIlN1Z2dlc3Rpb25CYXJcIiB3aWRnZXQgaXMgbm90IGFkZGVkLCBidXQgdGhlIG90aGVyIHdpZGdldHMgYXJlLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFdpZGdldCA9IChyZWY6IEhUTUxFbGVtZW50LCBpZHg/OiBudW1iZXIpID0+IHtcbiAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gIGNvbnN0IHZhbCA9IGF0b21TdG9yZS5nZXQoaW50ZXJuYWxXaWRnZXRBcnJheUF0b20pO1xuICBjb25zdCBpbnNlcnRJZHggPSBpZHggPz8gdmFsLmxlbmd0aDtcbiAgdmFsW2luc2VydElkeF0gPSByZWY7XG4gIGF0b21TdG9yZS5zZXQoaW50ZXJuYWxXaWRnZXRBcnJheUF0b20sIHZhbCk7XG59O1xuIiwiaW1wb3J0IHsgYXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7XG4gIHJlc3BvbnNlU3RyZWFtaW5nQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxuICByZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLFxuICB1c2VySGFzUmVwbGllZEF0b20sXG4gIGFza1F1ZXN0aW9uQnRuQ2xpY2tlZEF0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgY2hhdElzT3BlbkF0b20sXG4gIGNoYXRPblRvZ2dsZUF0b20sXG4gIHVzZXJFdmVudHNBdG9tLFxuICBzdWdnZXN0aW9uQXRvbSxcbn0gZnJvbSAnLi9jaGF0U3RhdGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NoYXRTdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcGxpZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJmb3JtYW5jZU1ldHJpY3MnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3VnZ2VzdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXN0TWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbmRlcmVkV2lkZ2V0UmVmcyc7XG5cbmV4cG9ydCBjb25zdCBjaGF0QXRvbSA9IGF0b20oKGdldCkgPT4gKHtcbiAgdXNlckhhc1JlcGxpZWQ6IGdldCh1c2VySGFzUmVwbGllZEF0b20pLFxuICByZXBseUV2ZW50Q2F0ZWdvcnk6IGdldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tKSxcbiAgdXNlclF1ZXJ5OiBnZXQodXNlclF1ZXJ5QXRvbSksXG4gIHN1Z2dlc3Rpb246IGdldChzdWdnZXN0aW9uQXRvbSksXG4gIGFza1F1ZXN0aW9uQnRuQ2xpY2tlZDogZ2V0KGFza1F1ZXN0aW9uQnRuQ2xpY2tlZEF0b20pLFxuICBtZXNzYWdlczogZ2V0KG1lc3NhZ2VzQXRvbSksXG4gIHVzZXJFdmVudHM6IGdldCh1c2VyRXZlbnRzQXRvbSksXG4gIHN1Z2dlc3Rpb25zOiBnZXQoc3VnZ2VzdGlvbnNBdG9tKSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nOiBnZXQoc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSksXG4gIHJlc3BvbnNlU3RyZWFtaW5nOiBnZXQocmVzcG9uc2VTdHJlYW1pbmdBdG9tKSxcbiAgaXNPcGVuOiBnZXQoY2hhdElzT3BlbkF0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
258
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1CVGZRaHVrNS5qcyIsIm5hbWVzIjpbInV1aWQiLCJ1dWlkIiwibmV3TWVzc2FnZTogTWVzc2FnZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZS50cyIsIi4uL3NyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b20udHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9yZXBsaWVzLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvcGVyZm9ybWFuY2VNZXRyaWNzLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvZm9ybS50cyIsIi4uL3NyYy9hdG9tcy9jaGF0L3N1Z2dlc3Rpb25zLnRzIiwiLi4vc3JjL2F0b21zL2NoYXQvbGFzdE1lc3NhZ2UudHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9yZW5kZXJlZFdpZGdldFJlZnMudHMiLCIuLi9zcmMvYXRvbXMvY2hhdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7XG4gIEdlbmVyYXRpb25QYXJhbXMsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgVXNlckV2ZW50LFxufSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgZ2V0QXRvbVN0b3JlIH0gZnJvbSBcInNyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlXCI7XG5pbXBvcnQgeyB1c2VySWRBdG9tLCBjaGF0SWRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hcHBcIjtcbmltcG9ydCB7XG4gIG9yZ1Nob3J0TmFtZUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBlbnZBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7IG9yZ0lkQXRvbSwgZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvb3JnL2dyYXBocWxDb25maWdcIjtcblxuY29uc3QgaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20gPSBhdG9tPFVzZXJFdmVudFtdPihbXSk7XG5cbmV4cG9ydCBjb25zdCB1c2VyRXZlbnRRdWV1ZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgcXVldWUgPSBnZXQoaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20pO1xuICByZXR1cm4gcXVldWUgPT09IHVuZGVmaW5lZCA/IFtdIDogcXVldWUuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQpO1xufSk7XG5cbi8qKlxuICogVGhpcyBhdG9tIGlzIHVzZWQgdG8gcXVldWUgYSBuZXcgbWVzc2FnZSBmb3IgcHJvY2Vzc2luZyBvbiBgbmV4dF9yZXNwb25zZXNgXG4gKiBJdCByZWNlaXZlcyBhIHNpbmdsZSBgdXNlckV2ZW50YCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBwcm9jZXNzaW5nIHF1ZXVlLlxuICogSWYgdGhlIGV2ZW50IGhhcyB0aGUgc2FtZSBldmVudElkIGFzIGFuIGV4aXN0aW5nIG1lc3NhZ2UgaW4gdGhlIHF1ZXVlIHRoZSBORVdcbiAqIGV2ZW50IGlzIGlnbm9yZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHF1ZXVlVXNlckV2ZW50QXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgdXNlckV2ZW50OiBVc2VyRXZlbnQpID0+IHtcbiAgICBpZiAodXNlckV2ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tLCBbXG4gICAgICAuLi5nZXQoaW50ZXJuYWxVc2VyRXZlbnRRdWV1ZUF0b20pLFxuICAgICAgdXNlckV2ZW50LFxuICAgIF0pO1xuICB9XG4pO1xuXG4vKipcbiAqIFRoaXMgYXRvbSBleHBvc2VzIGEgZnVuY3Rpb24gdG8gcmVzZXQgdGhlIGVudGlyZSBxdWV1ZS4gQWxsIG1lc3NhZ2VzIGluIHRoZSBxdWV1ZSB3aWxsIGJlIHB1cmdlZFxuICovXG5leHBvcnQgY29uc3QgY2xlYXJVc2VyRXZlbnRBdG9tID0gYXRvbShudWxsLCAoXywgc2V0KSA9PiB7XG4gIHNldChpbnRlcm5hbFVzZXJFdmVudFF1ZXVlQXRvbSwgW10pO1xufSk7XG5cbi8qKlxuICogVGhpcyBhdG9tIGlzIHVzZWQgdG8gbWFyayBldmVudHMgYXMgcHJvY2Vzc2VkIGFuZCByZW1vdmUgdGhlbSBmcm9tIHRoZSBxdWV1ZVxuICogSXQgYWNjZXB0cyBhIGxpc3Qgb2YgZXZlbnRJZCB2YWx1ZXMgYW5kIHdpbGwgcmVtb3ZlIGFsbCBldmVudHMgd2l0aCB0aG9zZSBldmVudElkcyBmcm9tIHRoZSBxdWV1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByb2Nlc3NVc2VyRXZlbnRBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCBldmVudElkczogc3RyaW5nW10pID0+IHtcbiAgICBjb25zdCBjdXJyID0gZ2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tKTtcbiAgICBjb25zdCByZW1haW5pbmcgPSBjdXJyPy5maWx0ZXIoXG4gICAgICAoZXZlbnQpID0+ICFldmVudElkcy5pbmNsdWRlcyhldmVudC5ldmVudElkKVxuICAgICk7XG4gICAgc2V0KGludGVybmFsVXNlckV2ZW50UXVldWVBdG9tLCByZW1haW5pbmcpO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudEF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQodXNlckV2ZW50UXVldWVBdG9tKS5sZW5ndGhcbik7XG5cbmltcG9ydCB7XG4gIENvbnRleHRTb3VyY2VFbnVtLFxuICBDb250ZXh0RW52RW51bSxcbn0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiOyAvLyBJbXBvcnQgbmVjZXNzYXJ5IGVudW1zXG4vLyBpbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50L2Rpc3QvbW9kZWxzL0NvbnRleHRcIjsgLy8gSW1wb3J0IENvbnRleHQgdHlwZVxuXG5leHBvcnQgY29uc3QgY3JlYXRlUmVzcG9uc2VQYXlsb2FkID0gKHtcbiAgdXNlckV2ZW50cyxcbiAgZ2VuZXJhdGlvblBhcmFtcyxcbn06IHtcbiAgdXNlckV2ZW50czogVXNlckV2ZW50W107XG4gIGdlbmVyYXRpb25QYXJhbXM/OiBHZW5lcmF0aW9uUGFyYW1zO1xufSk6IE5leHRNZXNzYWdlUmVxdWVzdCA9PiB7XG4gIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICBjb25zdCBvcmdTaG9ydE5hbWUgPSBhdG9tU3RvcmUuZ2V0KG9yZ1Nob3J0TmFtZUF0b20pO1xuICBjb25zdCBvcmdJZCA9IGF0b21TdG9yZS5nZXQob3JnSWRBdG9tKTtcbiAgY29uc3QgdXNlcklkID0gYXRvbVN0b3JlLmdldCh1c2VySWRBdG9tKTtcbiAgY29uc3QgY2hhdElkID0gYXRvbVN0b3JlLmdldChjaGF0SWRBdG9tKTtcbiAgY29uc3Qgc291cmNlID0gYXRvbVN0b3JlLmdldChjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGVudiA9IGF0b21TdG9yZS5nZXQoZW52QXRvbSk7XG5cbiAgY29uc3QgZmVhdHVyZUZsYWdTZXJ2aWNlID0gYXRvbVN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKTtcblxuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHVzZXJJZDogdXNlcklkID8/IFwiXCIsXG4gICAgb3JnX2lkOiBvcmdJZCA/PyBcIlwiLFxuICAgIG9yZ19zaG9ydF9uYW1lOiBvcmdTaG9ydE5hbWUgPz8gXCJcIixcbiAgICBjaGF0X2lkOiBjaGF0SWQgPz8gXCJcIixcbiAgICBzb3VyY2U6IHNvdXJjZSA/PyBDb250ZXh0U291cmNlRW51bS5BcHAsXG4gICAgZW52OiAoZW52IGFzIENvbnRleHRFbnZFbnVtKSA/PyBDb250ZXh0RW52RW51bS5EZXYsXG4gIH07XG5cbiAgY29uc3QgZmVhdHVyZUZsYWdzID1cbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge307XG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdXVpZCgpLFxuICAgIGNvbnRleHQsXG4gICAgdXNlckV2ZW50cyxcbiAgICBmZWF0dXJlRmxhZ3M6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVGbGFncykuZmlsdGVyKChbLCBpc0VuYWJsZWRdKSA9PiBpc0VuYWJsZWQpXG4gICAgKSwgLy8gQ29udmVydCBiYWNrIHRvIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+XG4gICAgZ2VuZXJhdGlvblBhcmFtcyxcbiAgfTtcbn07XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcblxuaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbi8vIFRoaXMgYXRvbSB3aWxsIGhvbGQgdGhlIHRyYWNrRXZlbnQgZnVuY3Rpb24gZnJvbSB0aGUgQW1wbGl0dWRlIGNvbnRleHQuXG4vLyBJdCBuZWVkcyB0byBiZSBpbml0aWFsaXplZCBieSBhIFJlYWN0IGNvbXBvbmVudCB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIHVzZUFtcGxpdHVkZSBob29rLlxuZXhwb3J0IGNvbnN0IGFtcGxpdHVkZVRyYWNrRXZlbnRBdG9tID0gYXRvbTxcbiAgKChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD4pIHwgbnVsbFxuPihudWxsKTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7XG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxuICByZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2NoYXRcIjtcbmltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHsgcXVldWVVc2VyRXZlbnRBdG9tIH0gZnJvbSBcIi4vbWVzc2FnZVF1ZXVlXCI7XG5pbXBvcnQgeyBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSBcInNyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHRcIjtcbmltcG9ydCB7IGFtcGxpdHVkZVRyYWNrRXZlbnRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b21cIjtcblxudHlwZSBIYW5kbGVSZXBseVBhcmFtcyA9IHtcbiAgbWVzc2FnZTogTWVzc2FnZTtcbiAgdXNlclR5cGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVJlcGx5QXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgeyBtZXNzYWdlLCB1c2VyVHlwZWQgfTogSGFuZGxlUmVwbHlQYXJhbXMpID0+IHtcbiAgICBpZiAobWVzc2FnZS50eXBlICE9PSBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHJhY2tFdmVudCA9IGdldChhbXBsaXR1ZGVUcmFja0V2ZW50QXRvbSk7XG4gICAgY29uc3QgcXVlcnlUeXBlZCA9IG1lc3NhZ2UubWV0YWRhdGEuY29udGVudDtcblxuICAgIHNldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLCBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkKTtcbiAgICBzZXQodXNlclF1ZXJ5QXRvbSwgcXVlcnlUeXBlZCk7XG4gICAgc2V0KG1lc3NhZ2VzQXRvbSwgWy4uLmdldChtZXNzYWdlc0F0b20pLCBbbWVzc2FnZV1dKTtcbiAgICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcbiAgICBzZXQocXVldWVVc2VyRXZlbnRBdG9tLCB7XG4gICAgICBldmVudElkOiBtZXNzYWdlLmlkLFxuICAgICAgY3JlYXRlZEF0OiBtZXNzYWdlLmNyZWF0ZWRBdCxcbiAgICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBxdWVyeTogcXVlcnlUeXBlZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAodHJhY2tFdmVudCkge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0VXNlck1lc3NhZ2VJbnB1dCxcbiAgICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgbWVzc2FnZV9yb2xlOiBtZXNzYWdlLnJvbGUsXG4gICAgICAgICAgbWVzc2FnZV90eXBlOiBtZXNzYWdlLnR5cGUsXG4gICAgICAgICAgbWVzc2FnZV9tZXRhZGF0YToge1xuICAgICAgICAgICAgY29udGVudDogbWVzc2FnZT8ubWV0YWRhdGE/LmNvbnRlbnQsIC8vIFJlbW92ZWQgYW1wbGl0dWRlU2FmZVN0cmluZ1xuICAgICAgICAgICAgY3JlYXRlZF9hdDogbWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgICAgICAgICB1c2VyX3R5cGVkOiB1c2VyVHlwZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuKTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGF0b21XaXRoU3RvcmFnZSB9IGZyb20gXCJqb3RhaS91dGlsc1wiO1xuaW1wb3J0IExvZ2dlciBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyXCI7XG5pbXBvcnQge1xuICBnZXRBdG9tU3RvcmUsXG4gIHNlc3Npb25TdG9yYWdlVXRpbCxcbn0gZnJvbSBcInNyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlXCI7XG5cbmV4cG9ydCBjb25zdCBBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSA9IFwic3BpZmZ5LWFwcC1pbml0aWFsLXN0YXJ0LXRpbWVcIjtcbmV4cG9ydCBjb25zdCBQQUdFX0xPQURfT0ZGU0VUX1RJTUVfS0VZID0gXCJzcGlmZnktcGFnZS1sb2FkLW9mZnNldC10aW1lXCI7XG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgcGVyZm9ybWFuY2UgbWV0cmljcyB0aGF0IGNhbiBiZSBsb2dnZWQuIEFsbCB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhlXG4gKiBpbml0aWFsIHN0YXJ0IHRpbWUgb2YgdGhlIGFwcCBhbmQgYXJlIHN0b3JlZCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBlbnVtIFBlcmZNZXRyaWNzRXZlbnRzIHtcbiAgUGFnZUxvYWRPZmZzZXQgPSBcInBhZ2VfbG9hZF9vZmZzZXRfbXNcIixcbiAgTWFpbkJ1bmRsZUxvYWRlZCA9IFwibWFpbl9idW5kbGVfbG9hZGVkX21zXCIsXG4gIE9yZ0NvbmZpZ0xvYWRTdGFydGVkID0gXCJvcmdfY29uZmlnX2xvYWRfc3RhcnRlZF9tc1wiLFxuICBPcmdDb25maWdMb2FkRW5kZWQgPSBcIm9yZ19jb25maWdfbG9hZF9lbmRlZF9tc1wiLFxuICBGaXJzdFJlc3BvbnNlU3RhcnRlZCA9IFwiZmlyc3RfcmVzcG9uc2Vfc3RhcnRlZF9tc1wiLFxuICBGaXJzdFJlc3BvbnNlQ29tcGxldGVkID0gXCJmaXJzdF9yZXNwb25zZV9jb21wbGV0ZWRfbXNcIixcbiAgRmlyc3RTdWdnZXN0aW9uc1N0YXJ0ZWQgPSBcImZpcnN0X3N1Z2dlc3Rpb25zX3N0YXJ0ZWRfbXNcIixcbiAgRmlyc3RTdWdnZXN0aW9uc0NvbXBsZXRlZCA9IFwiZmlyc3Rfc3VnZ2VzdGlvbnNfY29tcGxldGVkX21zXCIsXG4gIEVtYmVkZGVkV2lkZ2V0UmVuZGVyZWQgPSBcImVtYmVkZGVkX3dpZGdldF9yZW5kZXJlZF9tc1wiLFxuICBGbG9hdGluZ0J1dHRvblJlbmRlcmVkID0gXCJmbG9hdGluZ19idXR0b25fcmVuZGVyZWRfbXNcIixcbiAgVG9wU3VnZ2VzdGlvbnNCYXJSZW5kZXJlZCA9IFwidG9wX3N1Z2dlc3Rpb25zX2Jhcl9yZW5kZXJlZF9tc1wiLFxuICBCb3R0b21TdWdnZXN0aW9uc0JhclJlbmRlcmVkID0gXCJib3R0b21fc3VnZ2VzdGlvbnNfYmFyX3JlbmRlcmVkX21zXCIsXG4gIFNlYXJjaFByb21wdFJlbmRlcmVkID0gXCJzZWFyY2hfcHJvbXB0X3JlbmRlcmVkX21zXCIsXG59XG5cbmNvbnN0IGludGVybmFsUGVyZk1ldHJpY3NBdG9tID0gYXRvbTxNYXA8UGVyZk1ldHJpY3NFdmVudHMsIG51bWJlcj4+KG5ldyBNYXAoKSk7XG5leHBvcnQgY29uc3QgYXBwSW5pdGlhbFN0YXJ0VGltZU1zQXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICBBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSxcbiAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShBUFBfSU5JVElBTF9TVEFSVF9USU1FX0tFWSkgPz8gdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBwYWdlTG9hZE9mZnNldFRpbWVBdG9tID0gYXRvbVdpdGhTdG9yYWdlPHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gIFBBR0VfTE9BRF9PRkZTRVRfVElNRV9LRVksXG4gIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oUEFHRV9MT0FEX09GRlNFVF9USU1FX0tFWSkgPz8gdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5cbi8qKlxuICogUmVzZXRzIHRoZSBwZXJmb3JtYW5jZSBtZXRyaWNzIGF0b20gdG8gYW4gZW1wdHkgbWFwLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBlcmZvcm1hbmNlXG4gKiBtZXRyaWNzIGhhdmUgYmVlbiByZXBvcnRlZCB0byBhbXBsaXR1ZGUuIE9uIFNQQSwgaXQgZW5zdXJlcyB0aGF0IHdlIGNhbiBzdGlsbCBjYXB0dXJlIG1ldHJpY3MgYXNcbiAqIHRoZSB1c2VyIG5hdmlnYXRlcyBhcm91bmQgdGhlIGFwcCAoYWx0aG91Z2ggdGhlcmUgaXMgbW9yZSB3b3JrIHRvIGJlIGRvbmUgdG8gZnVsbHkgZW5hYmxlIHRoaXMpLlxuICogT24gbm9uLVNQQSwgaXQgZW5zdXJlcyB0aGF0IHByZXZpb3VzbHkgY2FwdHVyZWQgbWV0cmljcyBhcmUgbm90IHJlcG9ydGVkIGFnYWluLlxuICovXG5leHBvcnQgY29uc3QgcmVzZXRQZXJmb3JtYW5jZU1ldHJpY3NBdG9tID0gKCkgPT4ge1xuICBjb25zdCBhdG9tU3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgYXRvbVN0b3JlLnNldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSwgbmV3IE1hcCgpKTtcbn07XG5leHBvcnQgY29uc3QgcGVyZm9ybWFuY2VNZXRyaWNzQXRvbSA9IGF0b20oKGdldCkgPT5cbiAgZ2V0KGludGVybmFsUGVyZk1ldHJpY3NBdG9tKVxuKTtcbmV4cG9ydCBjb25zdCBoYXNSZXBvcnRlZFBlcmZvcm1hbmNlTWV0cmljc0F0b20gPSBhdG9tPGJvb2xlYW4+KGZhbHNlKTtcblxuLyoqXG4gKiBMb2dzIGEgcGVyZm9ybWFuY2UgbWV0cmljIGJ5IGNhcHR1cmluZyB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgaW5pdGlhbCBhcHAgc3RhcnQgdGltZVxuICogYW5kIHRoZSBjdXJyZW50IHRpbWUuIElmIHRoZSBtZXRyaWMgaGFzIGFscmVhZHkgYmVlbiBsb2dnZWQsIGl0IHdpbGwgbm90IGJlIGxvZ2dlZCBhZ2Fpbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHBlcmZvcm1hbmNlIG1ldHJpYyBuYW1lIHRvIGxvZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvZ1BlcmZNZXRyaWNBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCB2YWx1ZTogUGVyZk1ldHJpY3NFdmVudHMpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVGltZVN0b3JhZ2VWYWx1ZSA9IGdldChhcHBJbml0aWFsU3RhcnRUaW1lTXNBdG9tKTtcbiAgICBjb25zdCBpbml0aWFsVGltZU1zID0gaW5pdGlhbFRpbWVTdG9yYWdlVmFsdWVcbiAgICAgID8gcGFyc2VJbnQoaW5pdGlhbFRpbWVTdG9yYWdlVmFsdWUsIDEwKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoaW5pdGlhbFRpbWVNcyA9PSBudWxsKSB7XG4gICAgICBMb2dnZXIubG9nV2FybihcbiAgICAgICAgYFtzcGlmZnktYWldIE5vIGluaXRpYWwgYXBwIHN0YXJ0IHRpbWUgZm91bmQuIFNraXBwaW5nLi4uYCxcbiAgICAgICAgdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRQZXJmTWV0cmljcyA9IGdldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSk7XG4gICAgaWYgKGN1cnJlbnRQZXJmTWV0cmljcy5oYXModmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRpbWVNcyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVsdGFNcyA9IGN1cnJlbnRUaW1lTXMgLSBpbml0aWFsVGltZU1zO1xuICAgIGN1cnJlbnRQZXJmTWV0cmljcy5zZXQodmFsdWUsIGRlbHRhTXMpO1xuICAgIHNldChpbnRlcm5hbFBlcmZNZXRyaWNzQXRvbSwgY3VycmVudFBlcmZNZXRyaWNzKTtcbiAgfVxuKTtcbiIsImltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IGF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBGb3JtU3VibWl0dGVkQXR0cmlidXRlcywgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBmb3JtU3VibWl0QXRvbSwgcmVwbHlFdmVudENhdGVnb3J5QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0JztcbmltcG9ydCB7IHF1ZXVlVXNlckV2ZW50QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZSc7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGb3JtU3VibWl0dGVkQXRvbSA9IGF0b20obnVsbCwgKF8sIHNldCwgZm9ybTogRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXMpID0+IHtcbiAgc2V0KHJlcGx5RXZlbnRDYXRlZ29yeUF0b20sIFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQpO1xuICBzZXQoZm9ybVN1Ym1pdEF0b20sIGZvcm0pO1xuXG4gIGNvbnN0IGZvcm1Vc2VyRXZlbnQgPSB7XG4gICAgZXZlbnRJZDogdXVpZCgpLFxuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkLFxuICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGF0dHJpYnV0ZXM6IGZvcm0sXG4gIH0gc2F0aXNmaWVzIFVzZXJFdmVudDtcbiAgc2V0KHF1ZXVlVXNlckV2ZW50QXRvbSwgZm9ybVVzZXJFdmVudCk7XG59KTtcbiIsImltcG9ydCB7IGF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlUm9sZSwgTWVzc2FnZVR5cGUsIFN1Z2dlc3Rpb24gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVwbHlFdmVudENhdGVnb3J5QXRvbSxcbiAgc3VnZ2VzdGlvbkF0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQnO1xuaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgcXVldWVVc2VyRXZlbnRBdG9tIH0gZnJvbSAnLi9tZXNzYWdlUXVldWUnO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlU3VnZ2VzdGlvbkF0b20gPSBhdG9tKG51bGwsIChnZXQsIHNldCwgc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbikgPT4ge1xuICBjb25zdCBuZXdNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgIGlkOiBzdWdnZXN0aW9uLmlkLFxuICAgIHJvbGU6IE1lc3NhZ2VSb2xlLlVzZXIsXG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU3VnZ2VzdGlvbkNsaWNrZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHN1Z2dlc3Rpb25JZDogc3VnZ2VzdGlvbi5pZCxcbiAgICAgIHN1Z2dlc3Rpb25Db250ZW50OiBzdWdnZXN0aW9uLmNvbnRlbnQsXG4gICAgfSxcbiAgfTtcblxuICBzZXQocmVwbHlFdmVudENhdGVnb3J5QXRvbSwgVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQpO1xuICBzZXQoc3VnZ2VzdGlvbkF0b20sIHN1Z2dlc3Rpb24pO1xuICBzZXQobWVzc2FnZXNBdG9tLCBbLi4uZ2V0KG1lc3NhZ2VzQXRvbSksIFtuZXdNZXNzYWdlXV0pO1xuICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcbiAgc2V0KHF1ZXVlVXNlckV2ZW50QXRvbSwge1xuICAgIGV2ZW50SWQ6IHN1Z2dlc3Rpb24uaWQsXG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIGNyZWF0ZWRBdDogbmV3TWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgc3VnZ2VzdGlvbklkOiBzdWdnZXN0aW9uLmlkLFxuICAgIH0sXG4gIH0pO1xufSk7XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgbWVzc2FnZXNBdG9tLCB1c2VySGFzUmVwbGllZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5cbmV4cG9ydCBjb25zdCBsYXN0QXNzaXN0YW50TWVzc2FnZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXQobWVzc2FnZXNBdG9tKTtcbiAgY29uc3QgdXNlckhhc1JlcGxpZWQgPSBnZXQodXNlckhhc1JlcGxpZWRBdG9tKTtcbiAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDAgJiYgIXVzZXJIYXNSZXBsaWVkKSB7XG4gICAgcmV0dXJuIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBudWxsO1xufSk7XG4iLCJpbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tIFwic3JjL2F0b21zL2F0b21TdG9yZS9hdG9tU3RvcmVcIjtcblxuY29uc3QgaW50ZXJuYWxXaWRnZXRBcnJheUF0b20gPSBhdG9tPEhUTUxFbGVtZW50W10+KFtdKTtcblxuZXhwb3J0IGNvbnN0IHdpZGdldEFycmF5QXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsV2lkZ2V0QXJyYXlBdG9tKSk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYWxsIGlzIHVzZWQgdG8gY3JlYXRlIGEgbGlzdCBvZiB0aGUgU3BpZmZ5IHdpZGdldHNcbiAqIHRoYXQgYXJlIHJlbmRlcmluZyBvbiB0aGUgcGFnZS5cbiAqXG4gKiBJdCBpcyB1c2VkIGJ5IHRoZSBGbG9hdGluZ0J1dHRvbiB3aWRnZXQgdG8gc2xpZGUgb3V0IG9mIHZpZXcgd2hlbiBpdFxuICogb3ZlcmxhcHMgd2l0aCBhbm90aGVyIFNwaWZmeSB3aWRnZXQuXG4gKlxuICogVGhlIHNwaWZmeSB3aWRnZXRzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgdGhpcyBhcnJheSBmb3IgdGhlIGZsb2F0aW5nIGJ1dHRvblxuICogdG8ga25vdyBhYm91dCB0aGVtLlxuICpcbiAqIFRvZGF5IHRoZSBcIlN1Z2dlc3Rpb25CYXJcIiB3aWRnZXQgaXMgbm90IGFkZGVkLCBidXQgdGhlIG90aGVyIHdpZGdldHMgYXJlLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFdpZGdldCA9IChyZWY6IEhUTUxFbGVtZW50LCBpZHg/OiBudW1iZXIpID0+IHtcbiAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gIGNvbnN0IHZhbCA9IGF0b21TdG9yZS5nZXQoaW50ZXJuYWxXaWRnZXRBcnJheUF0b20pO1xuICBjb25zdCBpbnNlcnRJZHggPSBpZHggPz8gdmFsLmxlbmd0aDtcbiAgdmFsW2luc2VydElkeF0gPSByZWY7XG4gIGF0b21TdG9yZS5zZXQoaW50ZXJuYWxXaWRnZXRBcnJheUF0b20sIHZhbCk7XG59O1xuIiwiaW1wb3J0IHsgYXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7XG4gIHJlc3BvbnNlU3RyZWFtaW5nQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxuICByZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLFxuICB1c2VySGFzUmVwbGllZEF0b20sXG4gIGFza1F1ZXN0aW9uQnRuQ2xpY2tlZEF0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgY2hhdElzT3BlbkF0b20sXG4gIGNoYXRPblRvZ2dsZUF0b20sXG4gIHVzZXJFdmVudHNBdG9tLFxuICBzdWdnZXN0aW9uQXRvbSxcbn0gZnJvbSAnLi9jaGF0U3RhdGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NoYXRTdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcGxpZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJmb3JtYW5jZU1ldHJpY3MnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vc3VnZ2VzdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXN0TWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbmRlcmVkV2lkZ2V0UmVmcyc7XG5cbmV4cG9ydCBjb25zdCBjaGF0QXRvbSA9IGF0b20oKGdldCkgPT4gKHtcbiAgdXNlckhhc1JlcGxpZWQ6IGdldCh1c2VySGFzUmVwbGllZEF0b20pLFxuICByZXBseUV2ZW50Q2F0ZWdvcnk6IGdldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tKSxcbiAgdXNlclF1ZXJ5OiBnZXQodXNlclF1ZXJ5QXRvbSksXG4gIHN1Z2dlc3Rpb246IGdldChzdWdnZXN0aW9uQXRvbSksXG4gIGFza1F1ZXN0aW9uQnRuQ2xpY2tlZDogZ2V0KGFza1F1ZXN0aW9uQnRuQ2xpY2tlZEF0b20pLFxuICBtZXNzYWdlczogZ2V0KG1lc3NhZ2VzQXRvbSksXG4gIHVzZXJFdmVudHM6IGdldCh1c2VyRXZlbnRzQXRvbSksXG4gIHN1Z2dlc3Rpb25zOiBnZXQoc3VnZ2VzdGlvbnNBdG9tKSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nOiBnZXQoc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSksXG4gIHJlc3BvbnNlU3RyZWFtaW5nOiBnZXQocmVzcG9uc2VTdHJlYW1pbmdBdG9tKSxcbiAgaXNPcGVuOiBnZXQoY2hhdElzT3BlbkF0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
@@ -142,4 +142,4 @@ Object.defineProperty(exports, 'TAG_TESTID', {
142
142
  return TAG_TESTID;
143
143
  }
144
144
  });
145
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1EQ0dyaUI3aC5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy9sb2NhdG9ycy9jb21wb25lbnRzL2NoYXQvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGVzdCBpZHMgZm9yIGNvbXBvbmVudHMgcmVuZGVyZWQgaW5zaWRlIHRoZSBjaGF0IG1vZGFsLCBhbmQgdGhlIGNoYXQgbW9kYWxcbmV4cG9ydCBjb25zdCBDSEFUX0NPTlRBSU5FUl9JRCA9ICcjc3BpZmZ5LW1vZGFsLWNvbnRhaW5lcic7XG5leHBvcnQgY29uc3QgQ0hBVF9IRUFERVJfQ09OVEFJTkVSX1RFU1RJRCA9ICdzcGlmZnktY2hhdC1oZWFkZXItY29udGFpbmVyJztcbmV4cG9ydCBjb25zdCBDSEFUX0hFQURFUl9DTE9TRV9CVVRUT05fVEVTVElEID0gJ3NwaWZmeS1jaGF0LWhlYWRlci1jbG9zZS1idXR0b24nO1xuZXhwb3J0IGNvbnN0IENIQVRfTUVTU0FHRV9DT05UQUlORVJfVEVTVElEID0gJ3NwaWZmeS1jaGF0LW1lc3NhZ2UtY29udGFpbmVyJztcbmV4cG9ydCBjb25zdCBDSEFUX01FU1NBR0VfRElWSURFUl9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtbWVzc2FnZS1kaXZpZGVyJztcbmV4cG9ydCBjb25zdCBDSEFUX01PREFMX1RFU1RJRCA9ICdzcGlmZnktbW9kYWwtc2hhZG93LWRvbS1jb250YWluZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfUkVQTFlfSU5QVVRfVEVTVElEID0gJ3NwaWZmeS1jaGF0LXJlcGx5LWlucHV0JztcbmV4cG9ydCBjb25zdCBDSEFUX1JFUExZX0lOUFVUX1NFTkRfQlVUVE9OX1RFU1RJRCA9ICdzcGlmZnktY2hhdC1yZXBseS1pbnB1dC1zZW5kLWJ1dHRvbic7XG5leHBvcnQgY29uc3QgQ0hBVF9WSUVXX1BSRVZJT1VTX01FU1NBR0VTX1RFU1RJRCA9ICdzcGlmZnktY2hhdC12aWV3LXByZXZpb3VzLW1lc3NhZ2VzJztcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0NBUk9VU0VMX1RFU1RJRCA9ICdkeW5hbWljLWNhcm91c2VsJztcbmV4cG9ydCBjb25zdCBJTUFHRV9TVEFDS19URVNUSUQgPSAnc3BpZmZ5LXByb2R1Y3QtY29tcGFyaXNvbi1pbWFnZS1zdGFjayc7XG5leHBvcnQgY29uc3QgSU1BR0VfU1RBQ0tfRklSU1RfSU1BR0VfVEVTVElEID0gJ3NwaWZmeS1wcm9kdWN0LWNvbXBhcmlzb24taW1hZ2Utc3RhY2stZmlyc3QtaW1hZ2UnO1xuZXhwb3J0IGNvbnN0IElNQUdFX1NUQUNLX1NFQ09ORF9JTUFHRV9URVNUSUQgPSAnc3BpZmZ5LXByb2R1Y3QtY29tcGFyaXNvbi1pbWFnZS1zdGFjay1zZWNvbmQtaW1hZ2UnO1xuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVTU0FHRV9DT05UQUlORVJfVEVTVElEID0gJ3NwaWZmeS1tZXNzYWdlcy1sb2FkaW5nLWNvbnRhaW5lcic7XG5leHBvcnQgY29uc3QgTU9CSUxFX0NIQVRfSEVBREVSX1RFU1RJRCA9ICdzcGlmZnktbW9iaWxlLWNoYXQtaGVhZGVyJztcbmV4cG9ydCBjb25zdCBTQ1JPTExBQkxFX1NVR0dFU1RJT05TX1RFU1RJRCA9ICdzcGlmZnktc2Nyb2xsYWJsZS1zdWdnZXN0aW9ucyc7XG5leHBvcnQgY29uc3QgU1VHR0VTVElPTl9CQVJfVEVTVElEID0gJ3NwaWZmeS1zdWdnZXN0aW9uLWJhcic7XG5leHBvcnQgY29uc3QgU1VHR0VTVElPTl9CQVJfQlVUVE9OX1RFU1RJRCA9ICdzcGlmZnktc3VnZ2VzdGlvbi1iYXItYnV0dG9uJztcblxuZXhwb3J0IGNvbnN0IFRBR19URVNUSUQgPSAnc3BpZmZ5LXRhZyc7XG5leHBvcnQgY29uc3QgQU5JTUFURURfTUVTU0FHRVNfVEVTVElEID0gJ3NwaWZmeS1hbmltYXRlZC1tZXNzYWdlcyc7XG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsTUFBYSxvQkFBb0I7QUFDakMsTUFBYSwrQkFBK0I7QUFDNUMsTUFBYSxrQ0FBa0M7QUFDL0MsTUFBYSxnQ0FBZ0M7QUFDN0MsTUFBYSw4QkFBOEI7QUFDM0MsTUFBYSxvQkFBb0I7QUFDakMsTUFBYSwwQkFBMEI7QUFDdkMsTUFBYSxzQ0FBc0M7QUFDbkQsTUFBYSxxQ0FBcUM7QUFDbEQsTUFBYSwwQkFBMEI7QUFDdkMsTUFBYSxxQkFBcUI7QUFDbEMsTUFBYSxpQ0FBaUM7QUFDOUMsTUFBYSxrQ0FBa0M7QUFDL0MsTUFBYSxtQ0FBbUM7QUFDaEQsTUFBYSw0QkFBNEI7QUFDekMsTUFBYSxnQ0FBZ0M7QUFDN0MsTUFBYSx3QkFBd0I7QUFDckMsTUFBYSwrQkFBK0I7QUFFNUMsTUFBYSxhQUFhO0FBQzFCLE1BQWEsMkJBQTJCIn0=
145
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1DSjlEOG43Zy5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy9sb2NhdG9ycy9jb21wb25lbnRzL2NoYXQvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGVzdCBpZHMgZm9yIGNvbXBvbmVudHMgcmVuZGVyZWQgaW5zaWRlIHRoZSBjaGF0IG1vZGFsLCBhbmQgdGhlIGNoYXQgbW9kYWxcbmV4cG9ydCBjb25zdCBDSEFUX0NPTlRBSU5FUl9JRCA9ICcjc3BpZmZ5LW1vZGFsLWNvbnRhaW5lcic7XG5leHBvcnQgY29uc3QgQ0hBVF9IRUFERVJfQ09OVEFJTkVSX1RFU1RJRCA9ICdzcGlmZnktY2hhdC1oZWFkZXItY29udGFpbmVyJztcbmV4cG9ydCBjb25zdCBDSEFUX0hFQURFUl9DTE9TRV9CVVRUT05fVEVTVElEID0gJ3NwaWZmeS1jaGF0LWhlYWRlci1jbG9zZS1idXR0b24nO1xuZXhwb3J0IGNvbnN0IENIQVRfTUVTU0FHRV9DT05UQUlORVJfVEVTVElEID0gJ3NwaWZmeS1jaGF0LW1lc3NhZ2UtY29udGFpbmVyJztcbmV4cG9ydCBjb25zdCBDSEFUX01FU1NBR0VfRElWSURFUl9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtbWVzc2FnZS1kaXZpZGVyJztcbmV4cG9ydCBjb25zdCBDSEFUX01PREFMX1RFU1RJRCA9ICdzcGlmZnktbW9kYWwtc2hhZG93LWRvbS1jb250YWluZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfUkVQTFlfSU5QVVRfVEVTVElEID0gJ3NwaWZmeS1jaGF0LXJlcGx5LWlucHV0JztcbmV4cG9ydCBjb25zdCBDSEFUX1JFUExZX0lOUFVUX1NFTkRfQlVUVE9OX1RFU1RJRCA9ICdzcGlmZnktY2hhdC1yZXBseS1pbnB1dC1zZW5kLWJ1dHRvbic7XG5leHBvcnQgY29uc3QgQ0hBVF9WSUVXX1BSRVZJT1VTX01FU1NBR0VTX1RFU1RJRCA9ICdzcGlmZnktY2hhdC12aWV3LXByZXZpb3VzLW1lc3NhZ2VzJztcbmV4cG9ydCBjb25zdCBEWU5BTUlDX0NBUk9VU0VMX1RFU1RJRCA9ICdkeW5hbWljLWNhcm91c2VsJztcbmV4cG9ydCBjb25zdCBJTUFHRV9TVEFDS19URVNUSUQgPSAnc3BpZmZ5LXByb2R1Y3QtY29tcGFyaXNvbi1pbWFnZS1zdGFjayc7XG5leHBvcnQgY29uc3QgSU1BR0VfU1RBQ0tfRklSU1RfSU1BR0VfVEVTVElEID0gJ3NwaWZmeS1wcm9kdWN0LWNvbXBhcmlzb24taW1hZ2Utc3RhY2stZmlyc3QtaW1hZ2UnO1xuZXhwb3J0IGNvbnN0IElNQUdFX1NUQUNLX1NFQ09ORF9JTUFHRV9URVNUSUQgPSAnc3BpZmZ5LXByb2R1Y3QtY29tcGFyaXNvbi1pbWFnZS1zdGFjay1zZWNvbmQtaW1hZ2UnO1xuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVTU0FHRV9DT05UQUlORVJfVEVTVElEID0gJ3NwaWZmeS1tZXNzYWdlcy1sb2FkaW5nLWNvbnRhaW5lcic7XG5leHBvcnQgY29uc3QgTU9CSUxFX0NIQVRfSEVBREVSX1RFU1RJRCA9ICdzcGlmZnktbW9iaWxlLWNoYXQtaGVhZGVyJztcbmV4cG9ydCBjb25zdCBTQ1JPTExBQkxFX1NVR0dFU1RJT05TX1RFU1RJRCA9ICdzcGlmZnktc2Nyb2xsYWJsZS1zdWdnZXN0aW9ucyc7XG5leHBvcnQgY29uc3QgU1VHR0VTVElPTl9CQVJfVEVTVElEID0gJ3NwaWZmeS1zdWdnZXN0aW9uLWJhcic7XG5leHBvcnQgY29uc3QgU1VHR0VTVElPTl9CQVJfQlVUVE9OX1RFU1RJRCA9ICdzcGlmZnktc3VnZ2VzdGlvbi1iYXItYnV0dG9uJztcblxuZXhwb3J0IGNvbnN0IFRBR19URVNUSUQgPSAnc3BpZmZ5LXRhZyc7XG5leHBvcnQgY29uc3QgQU5JTUFURURfTUVTU0FHRVNfVEVTVElEID0gJ3NwaWZmeS1hbmltYXRlZC1tZXNzYWdlcyc7XG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsTUFBYSxvQkFBb0I7QUFDakMsTUFBYSwrQkFBK0I7QUFDNUMsTUFBYSxrQ0FBa0M7QUFDL0MsTUFBYSxnQ0FBZ0M7QUFDN0MsTUFBYSw4QkFBOEI7QUFDM0MsTUFBYSxvQkFBb0I7QUFDakMsTUFBYSwwQkFBMEI7QUFDdkMsTUFBYSxzQ0FBc0M7QUFDbkQsTUFBYSxxQ0FBcUM7QUFDbEQsTUFBYSwwQkFBMEI7QUFDdkMsTUFBYSxxQkFBcUI7QUFDbEMsTUFBYSxpQ0FBaUM7QUFDOUMsTUFBYSxrQ0FBa0M7QUFDL0MsTUFBYSxtQ0FBbUM7QUFDaEQsTUFBYSw0QkFBNEI7QUFDekMsTUFBYSxnQ0FBZ0M7QUFDN0MsTUFBYSx3QkFBd0I7QUFDckMsTUFBYSwrQkFBK0I7QUFFNUMsTUFBYSxhQUFhO0FBQzFCLE1BQWEsMkJBQTJCIn0=
@@ -22,4 +22,4 @@ const ANIMATED_MESSAGES_TESTID = "spiffy-animated-messages";
22
22
 
23
23
  //#endregion
24
24
  export { ANIMATED_MESSAGES_TESTID, CHAT_CONTAINER_ID, CHAT_HEADER_CLOSE_BUTTON_TESTID, CHAT_HEADER_CONTAINER_TESTID, CHAT_MESSAGE_CONTAINER_TESTID, CHAT_MESSAGE_DIVIDER_TESTID, CHAT_MODAL_TESTID, CHAT_REPLY_INPUT_SEND_BUTTON_TESTID, CHAT_REPLY_INPUT_TESTID, CHAT_VIEW_PREVIOUS_MESSAGES_TESTID, DYNAMIC_CAROUSEL_TESTID, IMAGE_STACK_FIRST_IMAGE_TESTID, IMAGE_STACK_SECOND_IMAGE_TESTID, IMAGE_STACK_TESTID, LOADING_MESSAGE_CONTAINER_TESTID, MOBILE_CHAT_HEADER_TESTID, SCROLLABLE_SUGGESTIONS_TESTID, SUGGESTION_BAR_BUTTON_TESTID, SUGGESTION_BAR_TESTID, TAG_TESTID };
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1DbHZKOXhFai5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnL2xvY2F0b3JzL2NvbXBvbmVudHMvY2hhdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUZXN0IGlkcyBmb3IgY29tcG9uZW50cyByZW5kZXJlZCBpbnNpZGUgdGhlIGNoYXQgbW9kYWwsIGFuZCB0aGUgY2hhdCBtb2RhbFxuZXhwb3J0IGNvbnN0IENIQVRfQ09OVEFJTkVSX0lEID0gJyNzcGlmZnktbW9kYWwtY29udGFpbmVyJztcbmV4cG9ydCBjb25zdCBDSEFUX0hFQURFUl9DT05UQUlORVJfVEVTVElEID0gJ3NwaWZmeS1jaGF0LWhlYWRlci1jb250YWluZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfSEVBREVSX0NMT1NFX0JVVFRPTl9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtaGVhZGVyLWNsb3NlLWJ1dHRvbic7XG5leHBvcnQgY29uc3QgQ0hBVF9NRVNTQUdFX0NPTlRBSU5FUl9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtbWVzc2FnZS1jb250YWluZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfTUVTU0FHRV9ESVZJREVSX1RFU1RJRCA9ICdzcGlmZnktY2hhdC1tZXNzYWdlLWRpdmlkZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfTU9EQUxfVEVTVElEID0gJ3NwaWZmeS1tb2RhbC1zaGFkb3ctZG9tLWNvbnRhaW5lcic7XG5leHBvcnQgY29uc3QgQ0hBVF9SRVBMWV9JTlBVVF9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtcmVwbHktaW5wdXQnO1xuZXhwb3J0IGNvbnN0IENIQVRfUkVQTFlfSU5QVVRfU0VORF9CVVRUT05fVEVTVElEID0gJ3NwaWZmeS1jaGF0LXJlcGx5LWlucHV0LXNlbmQtYnV0dG9uJztcbmV4cG9ydCBjb25zdCBDSEFUX1ZJRVdfUFJFVklPVVNfTUVTU0FHRVNfVEVTVElEID0gJ3NwaWZmeS1jaGF0LXZpZXctcHJldmlvdXMtbWVzc2FnZXMnO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfQ0FST1VTRUxfVEVTVElEID0gJ2R5bmFtaWMtY2Fyb3VzZWwnO1xuZXhwb3J0IGNvbnN0IElNQUdFX1NUQUNLX1RFU1RJRCA9ICdzcGlmZnktcHJvZHVjdC1jb21wYXJpc29uLWltYWdlLXN0YWNrJztcbmV4cG9ydCBjb25zdCBJTUFHRV9TVEFDS19GSVJTVF9JTUFHRV9URVNUSUQgPSAnc3BpZmZ5LXByb2R1Y3QtY29tcGFyaXNvbi1pbWFnZS1zdGFjay1maXJzdC1pbWFnZSc7XG5leHBvcnQgY29uc3QgSU1BR0VfU1RBQ0tfU0VDT05EX0lNQUdFX1RFU1RJRCA9ICdzcGlmZnktcHJvZHVjdC1jb21wYXJpc29uLWltYWdlLXN0YWNrLXNlY29uZC1pbWFnZSc7XG5leHBvcnQgY29uc3QgTE9BRElOR19NRVNTQUdFX0NPTlRBSU5FUl9URVNUSUQgPSAnc3BpZmZ5LW1lc3NhZ2VzLWxvYWRpbmctY29udGFpbmVyJztcbmV4cG9ydCBjb25zdCBNT0JJTEVfQ0hBVF9IRUFERVJfVEVTVElEID0gJ3NwaWZmeS1tb2JpbGUtY2hhdC1oZWFkZXInO1xuZXhwb3J0IGNvbnN0IFNDUk9MTEFCTEVfU1VHR0VTVElPTlNfVEVTVElEID0gJ3NwaWZmeS1zY3JvbGxhYmxlLXN1Z2dlc3Rpb25zJztcbmV4cG9ydCBjb25zdCBTVUdHRVNUSU9OX0JBUl9URVNUSUQgPSAnc3BpZmZ5LXN1Z2dlc3Rpb24tYmFyJztcbmV4cG9ydCBjb25zdCBTVUdHRVNUSU9OX0JBUl9CVVRUT05fVEVTVElEID0gJ3NwaWZmeS1zdWdnZXN0aW9uLWJhci1idXR0b24nO1xuXG5leHBvcnQgY29uc3QgVEFHX1RFU1RJRCA9ICdzcGlmZnktdGFnJztcbmV4cG9ydCBjb25zdCBBTklNQVRFRF9NRVNTQUdFU19URVNUSUQgPSAnc3BpZmZ5LWFuaW1hdGVkLW1lc3NhZ2VzJztcbiJdLCJtYXBwaW5ncyI6IjtBQUNBLE1BQWEsb0JBQW9CO0FBQ2pDLE1BQWEsK0JBQStCO0FBQzVDLE1BQWEsa0NBQWtDO0FBQy9DLE1BQWEsZ0NBQWdDO0FBQzdDLE1BQWEsOEJBQThCO0FBQzNDLE1BQWEsb0JBQW9CO0FBQ2pDLE1BQWEsMEJBQTBCO0FBQ3ZDLE1BQWEsc0NBQXNDO0FBQ25ELE1BQWEscUNBQXFDO0FBQ2xELE1BQWEsMEJBQTBCO0FBQ3ZDLE1BQWEscUJBQXFCO0FBQ2xDLE1BQWEsaUNBQWlDO0FBQzlDLE1BQWEsa0NBQWtDO0FBQy9DLE1BQWEsbUNBQW1DO0FBQ2hELE1BQWEsNEJBQTRCO0FBQ3pDLE1BQWEsZ0NBQWdDO0FBQzdDLE1BQWEsd0JBQXdCO0FBQ3JDLE1BQWEsK0JBQStCO0FBRTVDLE1BQWEsYUFBYTtBQUMxQixNQUFhLDJCQUEyQiJ9
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1FSmJmR1dSci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnL2xvY2F0b3JzL2NvbXBvbmVudHMvY2hhdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUZXN0IGlkcyBmb3IgY29tcG9uZW50cyByZW5kZXJlZCBpbnNpZGUgdGhlIGNoYXQgbW9kYWwsIGFuZCB0aGUgY2hhdCBtb2RhbFxuZXhwb3J0IGNvbnN0IENIQVRfQ09OVEFJTkVSX0lEID0gJyNzcGlmZnktbW9kYWwtY29udGFpbmVyJztcbmV4cG9ydCBjb25zdCBDSEFUX0hFQURFUl9DT05UQUlORVJfVEVTVElEID0gJ3NwaWZmeS1jaGF0LWhlYWRlci1jb250YWluZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfSEVBREVSX0NMT1NFX0JVVFRPTl9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtaGVhZGVyLWNsb3NlLWJ1dHRvbic7XG5leHBvcnQgY29uc3QgQ0hBVF9NRVNTQUdFX0NPTlRBSU5FUl9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtbWVzc2FnZS1jb250YWluZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfTUVTU0FHRV9ESVZJREVSX1RFU1RJRCA9ICdzcGlmZnktY2hhdC1tZXNzYWdlLWRpdmlkZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfTU9EQUxfVEVTVElEID0gJ3NwaWZmeS1tb2RhbC1zaGFkb3ctZG9tLWNvbnRhaW5lcic7XG5leHBvcnQgY29uc3QgQ0hBVF9SRVBMWV9JTlBVVF9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtcmVwbHktaW5wdXQnO1xuZXhwb3J0IGNvbnN0IENIQVRfUkVQTFlfSU5QVVRfU0VORF9CVVRUT05fVEVTVElEID0gJ3NwaWZmeS1jaGF0LXJlcGx5LWlucHV0LXNlbmQtYnV0dG9uJztcbmV4cG9ydCBjb25zdCBDSEFUX1ZJRVdfUFJFVklPVVNfTUVTU0FHRVNfVEVTVElEID0gJ3NwaWZmeS1jaGF0LXZpZXctcHJldmlvdXMtbWVzc2FnZXMnO1xuZXhwb3J0IGNvbnN0IERZTkFNSUNfQ0FST1VTRUxfVEVTVElEID0gJ2R5bmFtaWMtY2Fyb3VzZWwnO1xuZXhwb3J0IGNvbnN0IElNQUdFX1NUQUNLX1RFU1RJRCA9ICdzcGlmZnktcHJvZHVjdC1jb21wYXJpc29uLWltYWdlLXN0YWNrJztcbmV4cG9ydCBjb25zdCBJTUFHRV9TVEFDS19GSVJTVF9JTUFHRV9URVNUSUQgPSAnc3BpZmZ5LXByb2R1Y3QtY29tcGFyaXNvbi1pbWFnZS1zdGFjay1maXJzdC1pbWFnZSc7XG5leHBvcnQgY29uc3QgSU1BR0VfU1RBQ0tfU0VDT05EX0lNQUdFX1RFU1RJRCA9ICdzcGlmZnktcHJvZHVjdC1jb21wYXJpc29uLWltYWdlLXN0YWNrLXNlY29uZC1pbWFnZSc7XG5leHBvcnQgY29uc3QgTE9BRElOR19NRVNTQUdFX0NPTlRBSU5FUl9URVNUSUQgPSAnc3BpZmZ5LW1lc3NhZ2VzLWxvYWRpbmctY29udGFpbmVyJztcbmV4cG9ydCBjb25zdCBNT0JJTEVfQ0hBVF9IRUFERVJfVEVTVElEID0gJ3NwaWZmeS1tb2JpbGUtY2hhdC1oZWFkZXInO1xuZXhwb3J0IGNvbnN0IFNDUk9MTEFCTEVfU1VHR0VTVElPTlNfVEVTVElEID0gJ3NwaWZmeS1zY3JvbGxhYmxlLXN1Z2dlc3Rpb25zJztcbmV4cG9ydCBjb25zdCBTVUdHRVNUSU9OX0JBUl9URVNUSUQgPSAnc3BpZmZ5LXN1Z2dlc3Rpb24tYmFyJztcbmV4cG9ydCBjb25zdCBTVUdHRVNUSU9OX0JBUl9CVVRUT05fVEVTVElEID0gJ3NwaWZmeS1zdWdnZXN0aW9uLWJhci1idXR0b24nO1xuXG5leHBvcnQgY29uc3QgVEFHX1RFU1RJRCA9ICdzcGlmZnktdGFnJztcbmV4cG9ydCBjb25zdCBBTklNQVRFRF9NRVNTQUdFU19URVNUSUQgPSAnc3BpZmZ5LWFuaW1hdGVkLW1lc3NhZ2VzJztcbiJdLCJtYXBwaW5ncyI6IjtBQUNBLE1BQWEsb0JBQW9CO0FBQ2pDLE1BQWEsK0JBQStCO0FBQzVDLE1BQWEsa0NBQWtDO0FBQy9DLE1BQWEsZ0NBQWdDO0FBQzdDLE1BQWEsOEJBQThCO0FBQzNDLE1BQWEsb0JBQW9CO0FBQ2pDLE1BQWEsMEJBQTBCO0FBQ3ZDLE1BQWEsc0NBQXNDO0FBQ25ELE1BQWEscUNBQXFDO0FBQ2xELE1BQWEsMEJBQTBCO0FBQ3ZDLE1BQWEscUJBQXFCO0FBQ2xDLE1BQWEsaUNBQWlDO0FBQzlDLE1BQWEsa0NBQWtDO0FBQy9DLE1BQWEsbUNBQW1DO0FBQ2hELE1BQWEsNEJBQTRCO0FBQ3pDLE1BQWEsZ0NBQWdDO0FBQzdDLE1BQWEsd0JBQXdCO0FBQ3JDLE1BQWEsK0JBQStCO0FBRTVDLE1BQWEsYUFBYTtBQUMxQixNQUFhLDJCQUEyQiJ9
@@ -1,7 +1,7 @@
1
- import { MessageRole, MessageType } from "./models-CE5YjbzE.js";
2
- import { messagesAtom, replyEventCategoryAtom, userHasRepliedAtom, userQueryAtom } from "./chatState-BUN8ehpy.js";
3
- import { queueUserEventAtom } from "./chat-Qkx5llOV.js";
4
- import { newOrgConfigAtom } from "./newOrgConfigAtom-DEUj6H-p.js";
1
+ import { MessageRole, MessageType } from "./models-BA9B8LGE.js";
2
+ import { messagesAtom, replyEventCategoryAtom, userHasRepliedAtom, userQueryAtom } from "./chatState-5iiJOrvd.js";
3
+ import { queueUserEventAtom } from "./chat-BTfQhuk5.js";
4
+ import { newOrgConfigAtom } from "./newOrgConfigAtom-TCV1_sTk.js";
5
5
  import { formatFilterDisplayName } from "./utils-D82gfbgU.js";
6
6
  import { ProductSorting } from "./types-DXnG1tV0.js";
7
7
  import { UserEventCategory } from "@spiffy-ai/commerce-api-client";
@@ -292,4 +292,4 @@ const setChatSearchParamsAtom = atom(null, (_, set, query) => {
292
292
 
293
293
  //#endregion
294
294
  export { ChatSearchTurnAtom, ProductFilters, ProductSorter, additiveDynamicFiltersAtom, chatSearchFiltersAtom, chatSearchHasProductsAtom, chatSearchIdAtom, chatSearchIsLoadingAtom, chatSearchParamsAtom, chatSearchProductSortingAtom, chatSearchProducts, chatSearchQueryAtom, chatSearchStateAtom, createChatSearchFilterOption, getSearchParamsAtom, handleSearchResultsAtom, initiateChatSearchAtom, selectedFilterOptionsAtom, setChatSearchParamsAtom, setSearchParams };
295
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFNlYXJjaC1Dak1jQjNmRy5qcyIsIm5hbWVzIjpbInV1aWQiXSwic291cmNlcyI6WyIuLi9zcmMvYXRvbXMvc2VhcmNoL3Byb2R1Y3RGaWx0ZXJzLnRzIiwiLi4vc3JjL2F0b21zL3NlYXJjaC9wcm9kdWN0U29ydGVyLnRzIiwiLi4vc3JjL2F0b21zL3NlYXJjaC9jaGF0U2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZpbHRlckF0dHJpYnV0ZSB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5pbXBvcnQgeyBTZWxlY3RlZEZpbHRlck9wdGlvbiB9IGZyb20gJ3NyYy9hdG9tcy9zZWFyY2gvc2VhcmNoQVBJJztcbmltcG9ydCB7IENoYXRTZWFyY2hGaWx0ZXIsIENoYXRTZWFyY2hGaWx0ZXJJdGVtIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBnZXRQcmljZUJ1Y2tldCA9IChwcmljZTogbnVtYmVyLCBidWNrZXRTaXplOiBudW1iZXIpID0+IHtcbiAgY29uc3QgYnVja2V0ID0gTWF0aC5mbG9vcihwcmljZSAvIGJ1Y2tldFNpemUpO1xuICByZXR1cm4gYnVja2V0ICogYnVja2V0U2l6ZTtcbn07XG5cbmNvbnN0IGlzU3RyaW5nQXJyYXkgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmdbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpO1xufTtcblxudHlwZSBGaWx0ZXJTb3J0RnVuY3Rpb24gPSAoYTogQ2hhdFNlYXJjaEZpbHRlckl0ZW0sIGI6IENoYXRTZWFyY2hGaWx0ZXJJdGVtKSA9PiBudW1iZXI7XG5cbmNvbnN0IHNvcnRGaWx0ZXIgPSAoZmlsdGVyQ29uZmlnOiBGaWx0ZXJBdHRyaWJ1dGUpOiBGaWx0ZXJTb3J0RnVuY3Rpb24gPT4ge1xuICBpZiAoZmlsdGVyQ29uZmlnLnR5cGUgPT09ICdwcmljZScpIHtcbiAgICByZXR1cm4gKGEsIGIpID0+IE51bWJlcihhLmZpbHRlckl0ZW1JZCkgLSBOdW1iZXIoYi5maWx0ZXJJdGVtSWQpO1xuICB9XG4gIGlmIChmaWx0ZXJDb25maWcudHlwZSA9PT0gJ2R5bmFtaWMnKSB7XG4gICAgaWYgKGZpbHRlckNvbmZpZy5zb3J0aW5nLnR5cGUgPT09ICdhbHBoYWJldGljJykge1xuICAgICAgcmV0dXJuIChhLCBiKSA9PiBhLmRpc3BsYXlOYW1lLmxvY2FsZUNvbXBhcmUoYi5kaXNwbGF5TmFtZSk7XG4gICAgfVxuICAgIC8vIFNvcnQgYnkgdGhlIG51bWJlciBvZiBwcm9kdWN0cywgaWYgdGhleSBtYXRjaCwgc29ydCBieSBhbHBoYWJldGljYWxcbiAgICBpZiAoZmlsdGVyQ29uZmlnLnNvcnRpbmcudHlwZSA9PT0gJ3Byb2R1Y3RDb3VudCcpIHtcbiAgICAgIHJldHVybiAoYSwgYikgPT5cbiAgICAgICAgYS5wcm9kdWN0Q291bnQgPT09IGIucHJvZHVjdENvdW50XG4gICAgICAgICAgPyBhLmRpc3BsYXlOYW1lLmxvY2FsZUNvbXBhcmUoYi5kaXNwbGF5TmFtZSlcbiAgICAgICAgICA6IGIucHJvZHVjdENvdW50IC0gYS5wcm9kdWN0Q291bnQ7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJDb25maWcuc29ydGluZy50eXBlID09PSAnY3VzdG9tJykge1xuICAgICAgY29uc3Qgc29ydGVkS2V5cyA9IGZpbHRlckNvbmZpZy5zb3J0aW5nLm1hcDtcbiAgICAgIHJldHVybiAoYSwgYikgPT4ge1xuICAgICAgICBpZiAoc29ydGVkS2V5c1thLmRpc3BsYXlOYW1lXSAmJiBzb3J0ZWRLZXlzW2IuZGlzcGxheU5hbWVdKSB7XG4gICAgICAgICAgLy8gSWYgYm90aCBhcmUgaW4gdGhlIHNvcnRlZEtleXMsIHNvcnQgYnkgdGhlIGluZGV4XG4gICAgICAgICAgcmV0dXJuIHNvcnRlZEtleXNbYS5kaXNwbGF5TmFtZV0gLSBzb3J0ZWRLZXlzW2IuZGlzcGxheU5hbWVdO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG9ubHkgJ2EnIGlzIGluIHRoZSBzb3J0ZWRLZXlzLCBwdXQgaXQgYmVmb3JlIHRoZSBvdGhlclxuICAgICAgICBpZiAoc29ydGVkS2V5c1thLmRpc3BsYXlOYW1lXSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBvbmx5ICdiJyBpcyBpbiB0aGUgc29ydGVkS2V5cywgcHV0IGl0IGJlZm9yZSB0aGUgb3RoZXJcbiAgICAgICAgaWYgKHNvcnRlZEtleXNbYi5kaXNwbGF5TmFtZV0pIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBuZWl0aGVyIGFyZSBpbiB0aGUgc29ydGVkS2V5cywgc29ydCBieSBwcm9kdWN0Q291bnRcbiAgICAgICAgcmV0dXJuIGIucHJvZHVjdENvdW50IC0gYS5wcm9kdWN0Q291bnQ7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFhbGlkIHNlYXJjaCBmaWx0ZXIgY29uZmlndXJhdGlvbicpO1xufTtcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3RGaWx0ZXJzIHtcbiAgc3RhdGljIGdldEZpbHRlcnNGb3JQcm9kdWN0cyhcbiAgICBwcm9kdWN0czogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddW10sXG4gICAgZmlsdGVyQ29uZmlnczogRmlsdGVyQXR0cmlidXRlW10sXG4gICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOiBTZWxlY3RlZEZpbHRlck9wdGlvbltdLFxuICApOiBDaGF0U2VhcmNoRmlsdGVyW10ge1xuICAgIGlmICghcHJvZHVjdHMgfHwgcHJvZHVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVycyA9IGZpbHRlckNvbmZpZ3MubWFwKChmaWx0ZXJDb25maWcpID0+XG4gICAgICBwcm9kdWN0cy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAvLyBQcmljZSBoYXMgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlIGZpbHRlcnNcbiAgICAgICAgICBpZiAoZmlsdGVyQ29uZmlnLnR5cGUgPT09ICdwcmljZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHByaWNlQnVja2V0ID0gZ2V0UHJpY2VCdWNrZXQoXG4gICAgICAgICAgICAgIHByb2R1Y3Quc2FsZVByaWNlID8/IHByb2R1Y3Qub3JpZ2luYWxQcmljZSA/PyAwLFxuICAgICAgICAgICAgICBmaWx0ZXJDb25maWcuYnVja2V0U2l6ZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gYWNjLm1hcFtwcmljZUJ1Y2tldF0gPz8ge1xuICAgICAgICAgICAgICBmaWx0ZXJJdGVtSWQ6IHByaWNlQnVja2V0LFxuICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogYCQke3ByaWNlQnVja2V0fS0kJHtwcmljZUJ1Y2tldCArIGZpbHRlckNvbmZpZy5idWNrZXRTaXplfWAsXG4gICAgICAgICAgICAgIHByb2R1Y3RDb3VudDogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhY2MubWFwW3ByaWNlQnVja2V0XSA9IHsgLi4uY3VycmVudCwgcHJvZHVjdENvdW50OiBjdXJyZW50LnByb2R1Y3RDb3VudCArIDEgfTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQXNzdW1lIHRoYXQgdGhlIFwiYXR0cmlidXRlXCIgaXMgYW4gYXJyYXkgb2YgdmFsdWVzXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWVzID1cbiAgICAgICAgICAgIChwcm9kdWN0LmZpbHRlcnMgJiYgcHJvZHVjdC5maWx0ZXJzPy5bZmlsdGVyQ29uZmlnLmF0dHJpYnV0ZV0pID8/IFtdO1xuICAgICAgICAgIGlmIChpc1N0cmluZ0FycmF5KGF0dHJpYnV0ZVZhbHVlcykpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbCA9IHZhbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gYWNjLm1hcFtub3JtYWxpemVkVmFsXSA/PyB7XG4gICAgICAgICAgICAgICAgZmlsdGVySXRlbUlkOiBub3JtYWxpemVkVmFsLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZSh2YWwpLCAvLyBLZWVwIG9yaWdpbmFsIGNhc2UgZm9yIGRpc3BsYXlcbiAgICAgICAgICAgICAgICBwcm9kdWN0Q291bnQ6IDAsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGFjYy5tYXBbbm9ybWFsaXplZFZhbF0gPSB7IC4uLmN1cnJlbnQsIHByb2R1Y3RDb3VudDogY3VycmVudC5wcm9kdWN0Q291bnQgKyAxIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmlsdGVyQ29uZmlnLFxuICAgICAgICAgIG1hcDoge30gYXMgUmVjb3JkPHN0cmluZywgQ2hhdFNlYXJjaEZpbHRlckl0ZW0+LFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRGaWx0ZXJzOiBDaGF0U2VhcmNoRmlsdGVyW10gPSBmaWx0ZXJzLm1hcCgoeyBmaWx0ZXJDb25maWcsIG1hcCB9KSA9PiAoe1xuICAgICAgZmlsdGVySWQ6IGZpbHRlckNvbmZpZy5maWx0ZXJJZCxcbiAgICAgIGRpc3BsYXlOYW1lOiBmaWx0ZXJDb25maWcuZGlzcGxheU5hbWUsXG4gICAgICBpdGVtczogT2JqZWN0LnZhbHVlcyhtYXApXG4gICAgICAgIC5tYXAoKGZpbHRlcikgPT4gKHtcbiAgICAgICAgICBmaWx0ZXJJdGVtSWQ6IGZpbHRlci5maWx0ZXJJdGVtSWQsXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGZpbHRlci5kaXNwbGF5TmFtZSxcbiAgICAgICAgICBwcm9kdWN0Q291bnQ6IGZpbHRlci5wcm9kdWN0Q291bnQsXG4gICAgICAgICAgaXNTZWxlY3RlZDpcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5zb21lKFxuICAgICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IGAke2ZpbHRlckNvbmZpZy5maWx0ZXJJZH06JHtmaWx0ZXIuZmlsdGVySXRlbUlkfWAsXG4gICAgICAgICAgICApID8/IGZhbHNlLFxuICAgICAgICB9KSlcbiAgICAgICAgLnNvcnQoc29ydEZpbHRlcihmaWx0ZXJDb25maWcpKSxcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gWy4uLnRyYW5zZm9ybWVkRmlsdGVyc107XG4gIH1cblxuICBzdGF0aWMgZmlsdGVyUHJvZHVjdHMoXG4gICAgcHJvZHVjdHM6IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXVtdLFxuICAgIGZpbHRlckNvbmZpZ3M6IEZpbHRlckF0dHJpYnV0ZVtdLFxuICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogU2VsZWN0ZWRGaWx0ZXJPcHRpb25bXSxcbiAgICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzID0gZmFsc2UsIC8vIFNldCB0aGlzIHRvIHRydWUgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYmVoYXZpb3Igd2hlcmUgc3RhY2tpbmcgZmlsdGVycyBoYXMgT1IgbG9naWMuXG4gICkge1xuICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVycyA9IGZpbHRlckNvbmZpZ3NcbiAgICAgIC5tYXAoKGZpbHRlckNvbmZpZykgPT4gKHtcbiAgICAgICAgZmlsdGVyQ29uZmlnLFxuICAgICAgICBoYXNTZWxlY3RlZE9wdGlvbnM6IHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5maWx0ZXJJZCA9PT0gZmlsdGVyQ29uZmlnLmZpbHRlcklkLFxuICAgICAgICApLFxuICAgICAgfSkpXG4gICAgICAuZmlsdGVyKCh7IGhhc1NlbGVjdGVkT3B0aW9ucyB9KSA9PiBoYXNTZWxlY3RlZE9wdGlvbnMpO1xuICAgIHJldHVybiBzZWxlY3RlZEZpbHRlck9wdGlvbnMubGVuZ3RoID09PSAwXG4gICAgICA/IHByb2R1Y3RzXG4gICAgICA6IHByb2R1Y3RzLmZpbHRlcigocHJvZHVjdCkgPT5cbiAgICAgICAgICBzZWxlY3RlZEZpbHRlcnMucmVkdWNlKChhY2MsIHNlbGVjdGVkRmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAvLyBGaW5kaW5nIG9uZSBmYWxzZSByZW1vdmVzIHRoZSBwcm9kdWN0XG4gICAgICAgICAgICBpZiAoIWFjYykge1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUHJpY2UgaXMgc3BlY2lhbFxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRmlsdGVyLmZpbHRlckNvbmZpZy50eXBlID09PSAncHJpY2UnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByaWNlQnVja2V0ID0gZ2V0UHJpY2VCdWNrZXQoXG4gICAgICAgICAgICAgICAgcHJvZHVjdC5zYWxlUHJpY2UgPz8gcHJvZHVjdC5vcmlnaW5hbFByaWNlID8/IDAsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLmJ1Y2tldFNpemUsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoZXNQcmljZUZpbHRlciA9IHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5zb21lKFxuICAgICAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gYHByaWNlOiR7cHJpY2VCdWNrZXR9YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzUHJpY2VGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRmlsdGVyLmZpbHRlckNvbmZpZy50eXBlID09PSAnZHluYW1pYycpIHtcbiAgICAgICAgICAgICAgLy8gZHluYW1pYyBpcyBtaXNsZWFkaW5nIGhlcmUuIEl0cyBub3QganVzdCBkeW5hbWljIGZpbHRlcnMsIGJ1dCBzdGF0aWMgZmlsdGVycyBiZWNhdXNlIHRoZSBjb25maWcgY291bnRzIHN0YXRpYyBmaWx0ZXJzIGFzIHR5cGU6IGR5bmFtaWMuXG4gICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVySWQsIGF0dHJpYnV0ZSB9ID0gc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZXMgPSBwcm9kdWN0LmZpbHRlcnM/LlthdHRyaWJ1dGVdO1xuXG4gICAgICAgICAgICAgIGlmICghaXNTdHJpbmdBcnJheShhdHRyaWJ1dGVWYWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgaXNEeW5hbWljRmlsdGVyID0gc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLmF0dHJpYnV0ZSA9PT0gJ2R5bmFtaWMnOyAvLyBUcnVlIGR5bmFtaWMgZmlsdGVycyAodGhlIG9uZXMgdGhhdCBhcHBlYXIgYmVuZWF0aCB0aGUgc2VhcmNoIGlucHV0KVxuICAgICAgICAgICAgICBjb25zdCBpc1N1YnRyYWN0aXZlTG9naWMgPSBpc0R5bmFtaWNGaWx0ZXIgJiYgIWFkZGl0aXZlRHluYW1pY0ZpbHRlcnM7XG5cbiAgICAgICAgICAgICAgaWYgKGlzU3VidHJhY3RpdmVMb2dpYykge1xuICAgICAgICAgICAgICAgIC8vIEFORCBsb2dpYyBmb3Igc3VidHJhY3RpdmUgZHluYW1pYyBmaWx0ZXJzIGFuZCBiZXR3ZWVuIHN0YXRpYyBmaWx0ZXIgY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uc0ZvclRoaXNGaWx0ZXIgPSBzZWxlY3RlZEZpbHRlck9wdGlvbnNcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlcklkID09PSBmaWx0ZXJJZClcbiAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlckl0ZW1JZC50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0FsbFNlbGVjdGVkVmFsdWVzID0gc2VsZWN0ZWRPcHRpb25zRm9yVGhpc0ZpbHRlci5ldmVyeSgoc2VsZWN0ZWRWYWx1ZSkgPT5cbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlcy5zb21lKCh2YWwpID0+IHZhbC50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFZhbHVlKSxcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNBbGxTZWxlY3RlZFZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBPUiBsb2dpYyBmb3Igc3RhdGljIGZpbHRlcnMgaW4gdGhlIHNpZGViYXIgd2l0aGluIGEgY2F0ZWdvcnkuXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGF0dHJpYnV0ZVZhbHVlcy5zb21lKCh2YWwpID0+XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSBgJHtmaWx0ZXJJZH06JHt2YWwudG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSwgdHJ1ZSksXG4gICAgICAgICk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IFByb2R1Y3RTb3J0aW5nIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0U29ydGVyIHtcbiAgc3RhdGljIHNvcnQocHJvZHVjdHM6IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXVtdLCBzb3J0aW5nOiBQcm9kdWN0U29ydGluZykge1xuICAgIHN3aXRjaCAoc29ydGluZykge1xuICAgICAgY2FzZSBQcm9kdWN0U29ydGluZy5QUklDRV9BU0M6XG4gICAgICAgIHJldHVybiBbLi4ucHJvZHVjdHNdLnNvcnQoXG4gICAgICAgICAgKHAxLCBwMikgPT5cbiAgICAgICAgICAgIChwMS5zYWxlUHJpY2UgPz8gcDEub3JpZ2luYWxQcmljZSA/PyAwKSAtIChwMi5zYWxlUHJpY2UgPz8gcDIub3JpZ2luYWxQcmljZSA/PyAwKSxcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSBQcm9kdWN0U29ydGluZy5QUklDRV9ERVNDOlxuICAgICAgICByZXR1cm4gWy4uLnByb2R1Y3RzXS5zb3J0KFxuICAgICAgICAgIChwMSwgcDIpID0+XG4gICAgICAgICAgICAocDIuc2FsZVByaWNlID8/IHAyLm9yaWdpbmFsUHJpY2UgPz8gMCkgLSAocDEuc2FsZVByaWNlID8/IHAxLm9yaWdpbmFsUHJpY2UgPz8gMCksXG4gICAgICAgICk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBwcm9kdWN0cztcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBNZXNzYWdlUm9sZSxcbiAgTWVzc2FnZVR5cGUsXG4gIFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMsXG59IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzXCI7XG5pbXBvcnQge1xuICBtZXNzYWdlc0F0b20sXG4gIHJlcGx5RXZlbnRDYXRlZ29yeUF0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgdXNlclF1ZXJ5QXRvbSxcbn0gZnJvbSBcInNyYy9hdG9tcy9jaGF0XCI7XG5pbXBvcnQgeyBxdWV1ZVVzZXJFdmVudEF0b20gfSBmcm9tIFwiLi4vY2hhdC9tZXNzYWdlUXVldWVcIjtcbmltcG9ydCB7IG5ld09yZ0NvbmZpZ0F0b20gfSBmcm9tIFwiLi4vb3JnXCI7XG5pbXBvcnQgeyBQcm9kdWN0RmlsdGVycyB9IGZyb20gXCIuL3Byb2R1Y3RGaWx0ZXJzXCI7XG5pbXBvcnQgeyBQcm9kdWN0U29ydGVyIH0gZnJvbSBcIi4vcHJvZHVjdFNvcnRlclwiO1xuaW1wb3J0IHsgQ2hhdFNlYXJjaFN0YXRlVHlwZSwgUHJvZHVjdFNvcnRpbmcgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vLyBOT1RFOlxuLy8gVGhpcyBpcyBhIGxlZ2FjeSB2ZXJzaW9uIG9mIHNlYXJjaCB0aGF0IG5lZWRzIHRvIGJlIGRlY291cGxlZCBhbmQgcmVtb3ZlZC5cbi8vIHRoZSBuZXcgc2VhcmNoLnRzIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkgaXMgbGlrZWx5IHdoYXQgeW91J3JlIGxvb2tpbmcgZm9yLlxuXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaFN0YXRlQXRvbSA9IGF0b208Q2hhdFNlYXJjaFN0YXRlVHlwZT4oXCJlbnRyeXBvaW50XCIpO1xuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hIYXNQcm9kdWN0c0F0b20gPSBhdG9tPGJvb2xlYW4+KGZhbHNlKTtcbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tID0gYXRvbTxQcm9kdWN0U29ydGluZz4oXG4gIFByb2R1Y3RTb3J0aW5nLkZFQVRVUkVEXG4pO1xuXG5jb25zdCBmaWx0ZXJQcm9kdWN0TGlzdCA9IChtZXNzYWdlOiBNZXNzYWdlKSA9PlxuICBtZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlByb2R1Y3QgJiYgbWVzc2FnZS5tZXRhZGF0YS5pc0ZvckdyaWQgPT09IHRydWU7XG5jb25zdCBmaWx0ZXJGaWx0ZXJMaXN0ID0gKG1lc3NhZ2U6IE1lc3NhZ2UpID0+XG4gIG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaEZpbHRlcjtcblxuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaFR1cm4gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGdlbmVyYXRlZFF1ZXJ5Pzogc3RyaW5nO1xuICBwcm9kdWN0Q291bnQ6IG51bWJlcjtcbiAgcHJvZHVjdExpc3Q6IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXNbXCJhdHRyaWJ1dGVzXCJdW107XG4gIGZpbHRlckxpc3Q6IHN0cmluZ1tdO1xuICBtZXNzYWdlczogTWVzc2FnZVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hJc0xvYWRpbmdBdG9tID0gYXRvbShmYWxzZSk7XG5cbmNvbnN0IGJ1aWxkQ2hhdFNlYXJjaFR1cm4gPSAoXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW11cbik6IFtzdHJpbmcsIENoYXRTZWFyY2hUdXJuXSB8IG51bGwgPT4ge1xuICBjb25zdCBxdWVyeU1lc3NhZ2UgPSBtZXNzYWdlcy5maW5kKFxuICAgIChtZXNzYWdlKSA9PiBtZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlByb2R1Y3RTZWFyY2hcbiAgKTtcbiAgaWYgKCFxdWVyeU1lc3NhZ2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCB7IGdlbmVyYXRlZFF1ZXJ5LCBwcm9kdWN0Q291bnQgfSA9IHF1ZXJ5TWVzc2FnZS5tZXRhZGF0YSA/PyB7fTtcbiAgY29uc3QgcHJvZHVjdExpc3QgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIoZmlsdGVyUHJvZHVjdExpc3QpXG4gICAgLm1hcCgobWVzc2FnZSkgPT4gKG1lc3NhZ2UgYXMgYW55KS5tZXRhZGF0YSk7XG4gIGNvbnN0IGZpbHRlckxpc3QgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIoZmlsdGVyRmlsdGVyTGlzdClcbiAgICAubWFwKChtZXNzYWdlKSA9PiBtZXNzYWdlLm1ldGFkYXRhLmZpbHRlck5hbWUpO1xuICByZXR1cm4gW1xuICAgIHF1ZXJ5TWVzc2FnZS5pZCxcbiAgICB7XG4gICAgICBpZDogcXVlcnlNZXNzYWdlLmlkLFxuICAgICAgZ2VuZXJhdGVkUXVlcnksXG4gICAgICBwcm9kdWN0Q291bnQ6IHByb2R1Y3RDb3VudCB8fCBwcm9kdWN0TGlzdC5sZW5ndGgsXG4gICAgICBwcm9kdWN0TGlzdCxcbiAgICAgIGZpbHRlckxpc3QsXG4gICAgICBtZXNzYWdlcyxcbiAgICB9LFxuICBdO1xufTtcblxuY29uc3QgY2hhdFNlYXJjaEZpbHRlckNvbmZpZ0F0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgbmV3T3JnQ29uZmlnID0gZ2V0KG5ld09yZ0NvbmZpZ0F0b20pO1xuICByZXR1cm4gKFxuICAgIG5ld09yZ0NvbmZpZz8uZnJvbnRlbmRDb25maWc/LnVpQ29uZmlncz8uc2VhcmNoQ29uZmlnPy5zZWFyY2hGaWx0ZXJDb25maWcgfHxcbiAgICBbXVxuICApO1xufSk7XG5cbmNvbnN0IHNlYXJjaE1hcEF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXQobWVzc2FnZXNBdG9tKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBtZXNzYWdlcy5tYXAoYnVpbGRDaGF0U2VhcmNoVHVybikuZmlsdGVyKCh2KSA9PiB2ICE9PSBudWxsKVxuICApO1xufSk7XG5cbmNvbnN0IGludGVybmFsQ2hhdFNlYXJjaFBhcmFtc0F0b20gPSBhdG9tPHtcbiAgaWQ6IHN0cmluZyB8IG51bGw7XG4gIHF1ZXJ5OiBzdHJpbmcgfCBudWxsO1xufT4oe1xuICBpZDogbnVsbCxcbiAgcXVlcnk6IG51bGwsXG59KTtcblxuLy8gU2VsZWN0ZWQgZmlsdGVyIG9wdGlvbnMgd2l0aCBjb21wb3VuZCBvYmplY3RzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkgYW5kIGRpc3BsYXlcbmV4cG9ydCB0eXBlIFNlbGVjdGVkQ2hhdFNlYXJjaEZpbHRlck9wdGlvbiA9IHtcbiAgaWQ6IHN0cmluZzsgLy8gXCJmaWx0ZXJJZDpmaWx0ZXJJdGVtSWRcIiAtIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBjb21wYXJpc29uc1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBmaWx0ZXJJZDogc3RyaW5nOyAvLyBGaWx0ZXIgY2F0ZWdvcnlcbiAgZmlsdGVySXRlbUlkOiBzdHJpbmc7IC8vIEZpbHRlciB2YWx1ZVxufTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b20gPSBhdG9tPFNlbGVjdGVkQ2hhdFNlYXJjaEZpbHRlck9wdGlvbltdPihcbiAgW11cbik7XG5cbmV4cG9ydCBjb25zdCBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBuZXdPcmdDb25maWcgPSBnZXQobmV3T3JnQ29uZmlnQXRvbSk7XG4gIHJldHVybiAoXG4gICAgbmV3T3JnQ29uZmlnPy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzPy5zZWFyY2hDb25maWdcbiAgICAgID8uYWRkaXRpdmVEeW5hbWljRmlsdGVycyA/PyBmYWxzZVxuICApO1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDaGF0U2VhcmNoRmlsdGVyT3B0aW9uID0gKFxuICBmaWx0ZXJJZDogc3RyaW5nLFxuICBmaWx0ZXJJdGVtSWQ6IHN0cmluZyxcbiAgZGlzcGxheU5hbWU6IHN0cmluZ1xuKTogU2VsZWN0ZWRDaGF0U2VhcmNoRmlsdGVyT3B0aW9uID0+ICh7XG4gIGlkOiBgJHtmaWx0ZXJJZH06JHtmaWx0ZXJJdGVtSWR9YCxcbiAgZGlzcGxheU5hbWUsXG4gIGZpbHRlcklkLFxuICBmaWx0ZXJJdGVtSWQsXG59KTtcblxuY29uc3QgaGFuZGxlU2VhcmNoQXRvbSA9IGF0b20obnVsbCwgKGdldCwgc2V0LCBtZXNzYWdlOiBNZXNzYWdlKSA9PiB7XG4gIGlmIChtZXNzYWdlLnR5cGUgIT09IE1lc3NhZ2VUeXBlLlNlYXJjaCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHF1ZXJ5U2VhcmNoID0gbWVzc2FnZS5tZXRhZGF0YS5zZWFyY2hUZXJtO1xuXG4gIHNldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLCBVc2VyRXZlbnRDYXRlZ29yeS5TZWFyY2gpO1xuICBzZXQodXNlclF1ZXJ5QXRvbSwgcXVlcnlTZWFyY2gpO1xuICBzZXQobWVzc2FnZXNBdG9tLCBbLi4uZ2V0KG1lc3NhZ2VzQXRvbSksIFttZXNzYWdlXV0pO1xuICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcblxuICBzZXQocXVldWVVc2VyRXZlbnRBdG9tLCB7XG4gICAgZXZlbnRJZDogbWVzc2FnZS5pZCxcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuU2VhcmNoLFxuICAgIGNyZWF0ZWRBdDogbWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgc2VhcmNoVGVybTogbWVzc2FnZS5tZXRhZGF0YS5zZWFyY2hUZXJtLFxuICAgICAgc2VsZWN0ZWRGaWx0ZXJzOiBtZXNzYWdlLm1ldGFkYXRhLnNlbGVjdGVkRmlsdGVycyxcbiAgICB9LFxuICB9KTtcbn0pO1xuXG4vLyBUaGlzIGludGVybmFsIGF0b20gaXMgdXNlZCB0byBzdG9yZSB0aGUgc2VhcmNoIHBhcmFtc1xuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hQYXJhbXNBdG9tID0gYXRvbShcbiAgKGdldCkgPT4gZ2V0KGludGVybmFsQ2hhdFNlYXJjaFBhcmFtc0F0b20pLFxuICAoXywgc2V0LCB2YWx1ZTogeyBpZDogc3RyaW5nIHwgbnVsbDsgcXVlcnk6IHN0cmluZyB8IG51bGwgfSkgPT4ge1xuICAgIHNldChpbnRlcm5hbENoYXRTZWFyY2hQYXJhbXNBdG9tLCB2YWx1ZSk7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoUXVlcnlBdG9tID0gYXRvbShcbiAgKGdldCkgPT4gZ2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tKT8ucXVlcnkgPz8gbnVsbCxcbiAgKGdldCwgc2V0LCB2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IGdldChjaGF0U2VhcmNoUGFyYW1zQXRvbSk7XG4gICAgc2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tLCB7IGlkOiBzZWFyY2hQYXJhbXMuaWQsIHF1ZXJ5OiB2YWx1ZSB9KTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hJZEF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20pPy5pZCA/PyBudWxsLFxuICAoZ2V0LCBzZXQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gZ2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tKTtcbiAgICBzZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20sIHsgaWQ6IHZhbHVlLCBxdWVyeTogc2VhcmNoUGFyYW1zLnF1ZXJ5IH0pO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgQ2hhdFNlYXJjaFR1cm5BdG9tID0gYXRvbSgoZ2V0KSA9PiB7XG4gIGNvbnN0IHNlYXJjaEZpbHRlckNvbmZpZyA9IGdldChjaGF0U2VhcmNoRmlsdGVyQ29uZmlnQXRvbSk7XG4gIGNvbnN0IHNlYXJjaE1hcCA9IGdldChzZWFyY2hNYXBBdG9tKTtcbiAgY29uc3QgY2hhdFNlYXJjaElkID0gZ2V0KGNoYXRTZWFyY2hJZEF0b20pO1xuICBpZiAoIWNoYXRTZWFyY2hJZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IENoYXRTZWFyY2hUdXJuID0gc2VhcmNoTWFwW2NoYXRTZWFyY2hJZF07XG4gIGlmICghQ2hhdFNlYXJjaFR1cm4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBwcm9kdWN0U29ydGluZyA9IGdldChjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tKTtcbiAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gZ2V0KHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b20pO1xuICBjb25zdCBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzID0gZ2V0KGFkZGl0aXZlRHluYW1pY0ZpbHRlcnNBdG9tKTtcbiAgY29uc3QgZmlsdGVyZWRQcm9kdWN0cyA9IFByb2R1Y3RGaWx0ZXJzLmZpbHRlclByb2R1Y3RzKFxuICAgIENoYXRTZWFyY2hUdXJuLnByb2R1Y3RMaXN0LFxuICAgIHNlYXJjaEZpbHRlckNvbmZpZyxcbiAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnMsXG4gICAgYWRkaXRpdmVEeW5hbWljRmlsdGVyc1xuICApO1xuXG4gIGNvbnN0IGZpbHRlcmVkQW5kU29ydGVkUHJvZHVjdHMgPSBQcm9kdWN0U29ydGVyLnNvcnQoXG4gICAgZmlsdGVyZWRQcm9kdWN0cyxcbiAgICBwcm9kdWN0U29ydGluZ1xuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc2VhcmNoTWFwW2NoYXRTZWFyY2hJZF0sXG4gICAgcHJvZHVjdExpc3Q6IGZpbHRlcmVkQW5kU29ydGVkUHJvZHVjdHMsXG4gICAgcHJvZHVjdENvdW50OiBmaWx0ZXJlZEFuZFNvcnRlZFByb2R1Y3RzLmxlbmd0aCxcbiAgfTtcbn0pO1xuXG4vLyBUT0RPOiBXb3JrIG9uIGRlcHJlY2F0aW5nIHRoaXMgYXRvbSBpbiBmYXZvciBvZiB1c2luZyBDaGF0U2VhcmNoVHVybkF0b20gZGlyZWN0bHlcbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoUHJvZHVjdHMgPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgQ2hhdFNlYXJjaFR1cm4gPSBnZXQoQ2hhdFNlYXJjaFR1cm5BdG9tKTtcbiAgcmV0dXJuIENoYXRTZWFyY2hUdXJuPy5wcm9kdWN0TGlzdCA/PyBbXTtcbn0pO1xuXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaEZpbHRlcnNBdG9tID0gYXRvbSgoZ2V0KSA9PiB7XG4gIGNvbnN0IHNlYXJjaEZpbHRlckNvbmZpZyA9IGdldChjaGF0U2VhcmNoRmlsdGVyQ29uZmlnQXRvbSk7XG4gIGNvbnN0IHNlYXJjaE1hcCA9IGdldChzZWFyY2hNYXBBdG9tKTtcbiAgY29uc3QgY2hhdFNlYXJjaElkID0gZ2V0KGNoYXRTZWFyY2hJZEF0b20pO1xuXG4gIGlmIChjaGF0U2VhcmNoSWQgJiYgc2VhcmNoTWFwW2NoYXRTZWFyY2hJZF0pIHtcbiAgICBjb25zdCBwcm9kdWN0cyA9IHNlYXJjaE1hcFtjaGF0U2VhcmNoSWRdLnByb2R1Y3RMaXN0O1xuICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IGdldChzZWxlY3RlZEZpbHRlck9wdGlvbnNBdG9tKTtcbiAgICByZXR1cm4gUHJvZHVjdEZpbHRlcnMuZ2V0RmlsdGVyc0ZvclByb2R1Y3RzKFxuICAgICAgcHJvZHVjdHMsXG4gICAgICBzZWFyY2hGaWx0ZXJDb25maWcsXG4gICAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiBbXTtcbn0pO1xuXG4vLyBGb3Igc2VhcmNoIHdlIHVzZSB0aGUgZm9sbG93aW5nIHF1ZXJ5IHBhcmFtczpcbi8vIGVzOiB0cnVlIC0gdGhpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgaW4gYSBzZWFyY2ggc3RhdGVcbi8vIGVzcTogcXVlcnkgLSB0aGlzIGlzIHRoZSBjdXJyZW50IHNlYXJjaCBxdWVyeVxuLy8gZXNpOiBzZWFyY2ggaWQgLSB0aGlzIGlzIHRoZSB1bmlxdWUgaWQgZm9yIHRoZSBzZWFyY2ggcmVzdWx0cyB0aGF0IHdlIGFyZSBkaXNwbGF5aW5nLiBJdCBpcyBwdWxsZWQgZnJvbSB0aGUgbWVzc2FnZSBpZCBmcm9tIHRoZSB0dXJuIHRoYXQgaW5jbHVkZXMgdGhlIHNlYXJjaCByZXN1bHRzXG5cbmV4cG9ydCBjb25zdCBzZXRTZWFyY2hQYXJhbXMgPSAocXVlcnk6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc1wiLCBcInRydWVcIik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNxXCIsIHF1ZXJ5KTtcbiAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBcIlwiLCB1cmwpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlYXJjaFBhcmFtc0F0b20gPSBhdG9tKCgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgcmV0dXJuIHtcbiAgICBlczogcGFyYW1zLmdldChcImVzXCIpLFxuICAgIGVzcTogcGFyYW1zLmdldChcImVzcVwiKSxcbiAgfTtcbn0pO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhdGVDaGF0U2VhcmNoQXRvbSA9IGF0b20obnVsbCwgKF8sIHNldCwgcXVlcnk6IHN0cmluZykgPT4ge1xuICBzZXQoY2hhdFNlYXJjaElzTG9hZGluZ0F0b20sIHRydWUpO1xuICAvLyBVcGRhdGUgVVJMIGFuZCBtYW51YWxseSB0cmlnZ2VyIHN0YXRlIGNoYW5nZSAoc2luY2UgcHVzaFN0YXRlIGRvZXNuJ3QgdHJpZ2dlciBwb3BzdGF0ZSlcbiAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNcIiwgXCJ0cnVlXCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzcVwiLCBxdWVyeSk7XG4gIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgXCJcIiwgdXJsKTtcblxuICAvLyBNYW51YWxseSB0cmlnZ2VyIHBhZ2UgdmFyaWFudCByZS1ldmFsdWF0aW9uIGJ5IGRpc3BhdGNoaW5nIGEgcG9wc3RhdGUgZXZlbnRcbiAgLy8gVGhpcyBlbnN1cmVzIHRoZSBwYWdlIHZhcmlhbnQgc3lzdGVtIGRldGVjdHMgdGhlIFVSTCBjaGFuZ2UgYW5kIG1vdW50cyBzZWFyY2ggcmVzdWx0c1xuICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgUG9wU3RhdGVFdmVudChcInBvcHN0YXRlXCIsIHsgc3RhdGU6IHt9IH0pKTtcblxuICBzZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20sIHsgaWQ6IG51bGwsIHF1ZXJ5IH0pO1xuICBzZXQoaGFuZGxlU2VhcmNoQXRvbSwge1xuICAgIGlkOiB1dWlkKCksXG4gICAgcm9sZTogTWVzc2FnZVJvbGUuVXNlcixcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5TZWFyY2gsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHNlYXJjaFRlcm06IHF1ZXJ5LFxuICAgICAgLy8gRW5hYmxpbmcgdGhpcyB3aWxsIGVuYWJsZSB0aGUgbmV3IGJhY2tlbmQgc2VhcmNoXG4gICAgICBzZWxlY3RlZEZpbHRlcnM6IFtdLFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVTZWFyY2hSZXN1bHRzQXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgbWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmICghbWVzc2FnZSB8fCBtZXNzYWdlLnR5cGUgIT09IE1lc3NhZ2VUeXBlLlByb2R1Y3RTZWFyY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHByb2R1Y3RDb3VudCwgZ2VuZXJhdGVkUXVlcnkgfSA9IG1lc3NhZ2UubWV0YWRhdGE7XG4gICAgaWYgKHByb2R1Y3RDb3VudCAhPT0gMCkge1xuICAgICAgLy8gQ2xlYXIgdGhlIGZpbHRlciBvcHRpb25zIHdoZW4gd2UgZ2V0IG5ldyBwcm9kdWN0c1xuICAgICAgc2V0KHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b20sIFtdKTtcbiAgICAgIC8vIFRPRE86IFNob3VsZCB3ZSBzdGlsbCBkbyBhbnkgb2YgdGhlc2UgdGhpbmdzP1xuICAgICAgc2V0KGNoYXRTZWFyY2hTdGF0ZUF0b20sIFwicHJvZHVjdC1wYWdlXCIpO1xuICAgICAgY29uc3QgY3VycmVudFNlYXJjaFBhcmFtcyA9IGdldChjaGF0U2VhcmNoUGFyYW1zQXRvbSk7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNcIiwgXCJ0cnVlXCIpO1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc3FcIiwgZ2VuZXJhdGVkUXVlcnkpO1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc2lcIiwgbWVzc2FnZS5pZCk7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIFwiXCIsIHVybCk7XG4gICAgICBpZiAoY3VycmVudFNlYXJjaFBhcmFtcy5pZCA9PT0gbnVsbCkge1xuICAgICAgICAvLyBJZiB0aGUgaWQgaXMgbnVsbCwgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBzdGF0ZVxuICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHRoZSBxdWVyeSBpcyBkaWZmZXJlbnQsIHdlIG5lZWQgdG8gcHVzaCBhIG5ldyBzdGF0ZVxuICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICAgIH1cbiAgICAgIHNldChjaGF0U2VhcmNoUGFyYW1zQXRvbSwgeyBpZDogbWVzc2FnZS5pZCwgcXVlcnk6IGdlbmVyYXRlZFF1ZXJ5IH0pO1xuICAgIH1cbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IHNldENoYXRTZWFyY2hQYXJhbXNBdG9tID0gYXRvbShudWxsLCAoXywgc2V0LCBxdWVyeTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzXCIsIFwidHJ1ZVwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc3FcIiwgcXVlcnkpO1xuICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIFwiXCIsIHVybCk7XG4gIHNldChjaGF0U2VhcmNoUGFyYW1zQXRvbSwgeyBpZDogbnVsbCwgcXVlcnkgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFNQSxNQUFNLGtCQUFrQixPQUFlLGVBQXVCO0FBRTVELFFBRGUsS0FBSyxNQUFNLFFBQVEsV0FBVyxHQUM3Qjs7QUFHbEIsTUFBTSxpQkFBaUIsVUFBc0M7QUFDM0QsS0FBSSxDQUFDLE1BQU0sUUFBUSxNQUFNLENBQ3ZCLFFBQU87QUFFVCxRQUFPLE1BQU0sT0FBTyxTQUFTLE9BQU8sU0FBUyxTQUFTOztBQUt4RCxNQUFNLGNBQWMsaUJBQXNEO0FBQ3hFLEtBQUksYUFBYSxTQUFTLFFBQ3hCLFNBQVEsR0FBRyxNQUFNLE9BQU8sRUFBRSxhQUFhLEdBQUcsT0FBTyxFQUFFLGFBQWE7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
295
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFNlYXJjaC1CR1drSzVGRC5qcyIsIm5hbWVzIjpbInV1aWQiXSwic291cmNlcyI6WyIuLi9zcmMvYXRvbXMvc2VhcmNoL3Byb2R1Y3RGaWx0ZXJzLnRzIiwiLi4vc3JjL2F0b21zL3NlYXJjaC9wcm9kdWN0U29ydGVyLnRzIiwiLi4vc3JjL2F0b21zL3NlYXJjaC9jaGF0U2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZpbHRlckF0dHJpYnV0ZSB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5pbXBvcnQgeyBTZWxlY3RlZEZpbHRlck9wdGlvbiB9IGZyb20gJ3NyYy9hdG9tcy9zZWFyY2gvc2VhcmNoQVBJJztcbmltcG9ydCB7IENoYXRTZWFyY2hGaWx0ZXIsIENoYXRTZWFyY2hGaWx0ZXJJdGVtIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBnZXRQcmljZUJ1Y2tldCA9IChwcmljZTogbnVtYmVyLCBidWNrZXRTaXplOiBudW1iZXIpID0+IHtcbiAgY29uc3QgYnVja2V0ID0gTWF0aC5mbG9vcihwcmljZSAvIGJ1Y2tldFNpemUpO1xuICByZXR1cm4gYnVja2V0ICogYnVja2V0U2l6ZTtcbn07XG5cbmNvbnN0IGlzU3RyaW5nQXJyYXkgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmdbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpO1xufTtcblxudHlwZSBGaWx0ZXJTb3J0RnVuY3Rpb24gPSAoYTogQ2hhdFNlYXJjaEZpbHRlckl0ZW0sIGI6IENoYXRTZWFyY2hGaWx0ZXJJdGVtKSA9PiBudW1iZXI7XG5cbmNvbnN0IHNvcnRGaWx0ZXIgPSAoZmlsdGVyQ29uZmlnOiBGaWx0ZXJBdHRyaWJ1dGUpOiBGaWx0ZXJTb3J0RnVuY3Rpb24gPT4ge1xuICBpZiAoZmlsdGVyQ29uZmlnLnR5cGUgPT09ICdwcmljZScpIHtcbiAgICByZXR1cm4gKGEsIGIpID0+IE51bWJlcihhLmZpbHRlckl0ZW1JZCkgLSBOdW1iZXIoYi5maWx0ZXJJdGVtSWQpO1xuICB9XG4gIGlmIChmaWx0ZXJDb25maWcudHlwZSA9PT0gJ2R5bmFtaWMnKSB7XG4gICAgaWYgKGZpbHRlckNvbmZpZy5zb3J0aW5nLnR5cGUgPT09ICdhbHBoYWJldGljJykge1xuICAgICAgcmV0dXJuIChhLCBiKSA9PiBhLmRpc3BsYXlOYW1lLmxvY2FsZUNvbXBhcmUoYi5kaXNwbGF5TmFtZSk7XG4gICAgfVxuICAgIC8vIFNvcnQgYnkgdGhlIG51bWJlciBvZiBwcm9kdWN0cywgaWYgdGhleSBtYXRjaCwgc29ydCBieSBhbHBoYWJldGljYWxcbiAgICBpZiAoZmlsdGVyQ29uZmlnLnNvcnRpbmcudHlwZSA9PT0gJ3Byb2R1Y3RDb3VudCcpIHtcbiAgICAgIHJldHVybiAoYSwgYikgPT5cbiAgICAgICAgYS5wcm9kdWN0Q291bnQgPT09IGIucHJvZHVjdENvdW50XG4gICAgICAgICAgPyBhLmRpc3BsYXlOYW1lLmxvY2FsZUNvbXBhcmUoYi5kaXNwbGF5TmFtZSlcbiAgICAgICAgICA6IGIucHJvZHVjdENvdW50IC0gYS5wcm9kdWN0Q291bnQ7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJDb25maWcuc29ydGluZy50eXBlID09PSAnY3VzdG9tJykge1xuICAgICAgY29uc3Qgc29ydGVkS2V5cyA9IGZpbHRlckNvbmZpZy5zb3J0aW5nLm1hcDtcbiAgICAgIHJldHVybiAoYSwgYikgPT4ge1xuICAgICAgICBpZiAoc29ydGVkS2V5c1thLmRpc3BsYXlOYW1lXSAmJiBzb3J0ZWRLZXlzW2IuZGlzcGxheU5hbWVdKSB7XG4gICAgICAgICAgLy8gSWYgYm90aCBhcmUgaW4gdGhlIHNvcnRlZEtleXMsIHNvcnQgYnkgdGhlIGluZGV4XG4gICAgICAgICAgcmV0dXJuIHNvcnRlZEtleXNbYS5kaXNwbGF5TmFtZV0gLSBzb3J0ZWRLZXlzW2IuZGlzcGxheU5hbWVdO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG9ubHkgJ2EnIGlzIGluIHRoZSBzb3J0ZWRLZXlzLCBwdXQgaXQgYmVmb3JlIHRoZSBvdGhlclxuICAgICAgICBpZiAoc29ydGVkS2V5c1thLmRpc3BsYXlOYW1lXSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBvbmx5ICdiJyBpcyBpbiB0aGUgc29ydGVkS2V5cywgcHV0IGl0IGJlZm9yZSB0aGUgb3RoZXJcbiAgICAgICAgaWYgKHNvcnRlZEtleXNbYi5kaXNwbGF5TmFtZV0pIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBuZWl0aGVyIGFyZSBpbiB0aGUgc29ydGVkS2V5cywgc29ydCBieSBwcm9kdWN0Q291bnRcbiAgICAgICAgcmV0dXJuIGIucHJvZHVjdENvdW50IC0gYS5wcm9kdWN0Q291bnQ7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFhbGlkIHNlYXJjaCBmaWx0ZXIgY29uZmlndXJhdGlvbicpO1xufTtcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3RGaWx0ZXJzIHtcbiAgc3RhdGljIGdldEZpbHRlcnNGb3JQcm9kdWN0cyhcbiAgICBwcm9kdWN0czogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddW10sXG4gICAgZmlsdGVyQ29uZmlnczogRmlsdGVyQXR0cmlidXRlW10sXG4gICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOiBTZWxlY3RlZEZpbHRlck9wdGlvbltdLFxuICApOiBDaGF0U2VhcmNoRmlsdGVyW10ge1xuICAgIGlmICghcHJvZHVjdHMgfHwgcHJvZHVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVycyA9IGZpbHRlckNvbmZpZ3MubWFwKChmaWx0ZXJDb25maWcpID0+XG4gICAgICBwcm9kdWN0cy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAvLyBQcmljZSBoYXMgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlIGZpbHRlcnNcbiAgICAgICAgICBpZiAoZmlsdGVyQ29uZmlnLnR5cGUgPT09ICdwcmljZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHByaWNlQnVja2V0ID0gZ2V0UHJpY2VCdWNrZXQoXG4gICAgICAgICAgICAgIHByb2R1Y3Quc2FsZVByaWNlID8/IHByb2R1Y3Qub3JpZ2luYWxQcmljZSA/PyAwLFxuICAgICAgICAgICAgICBmaWx0ZXJDb25maWcuYnVja2V0U2l6ZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gYWNjLm1hcFtwcmljZUJ1Y2tldF0gPz8ge1xuICAgICAgICAgICAgICBmaWx0ZXJJdGVtSWQ6IHByaWNlQnVja2V0LFxuICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogYCQke3ByaWNlQnVja2V0fS0kJHtwcmljZUJ1Y2tldCArIGZpbHRlckNvbmZpZy5idWNrZXRTaXplfWAsXG4gICAgICAgICAgICAgIHByb2R1Y3RDb3VudDogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhY2MubWFwW3ByaWNlQnVja2V0XSA9IHsgLi4uY3VycmVudCwgcHJvZHVjdENvdW50OiBjdXJyZW50LnByb2R1Y3RDb3VudCArIDEgfTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQXNzdW1lIHRoYXQgdGhlIFwiYXR0cmlidXRlXCIgaXMgYW4gYXJyYXkgb2YgdmFsdWVzXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWVzID1cbiAgICAgICAgICAgIChwcm9kdWN0LmZpbHRlcnMgJiYgcHJvZHVjdC5maWx0ZXJzPy5bZmlsdGVyQ29uZmlnLmF0dHJpYnV0ZV0pID8/IFtdO1xuICAgICAgICAgIGlmIChpc1N0cmluZ0FycmF5KGF0dHJpYnV0ZVZhbHVlcykpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbCA9IHZhbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gYWNjLm1hcFtub3JtYWxpemVkVmFsXSA/PyB7XG4gICAgICAgICAgICAgICAgZmlsdGVySXRlbUlkOiBub3JtYWxpemVkVmFsLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBmb3JtYXRGaWx0ZXJEaXNwbGF5TmFtZSh2YWwpLCAvLyBLZWVwIG9yaWdpbmFsIGNhc2UgZm9yIGRpc3BsYXlcbiAgICAgICAgICAgICAgICBwcm9kdWN0Q291bnQ6IDAsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGFjYy5tYXBbbm9ybWFsaXplZFZhbF0gPSB7IC4uLmN1cnJlbnQsIHByb2R1Y3RDb3VudDogY3VycmVudC5wcm9kdWN0Q291bnQgKyAxIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmlsdGVyQ29uZmlnLFxuICAgICAgICAgIG1hcDoge30gYXMgUmVjb3JkPHN0cmluZywgQ2hhdFNlYXJjaEZpbHRlckl0ZW0+LFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRGaWx0ZXJzOiBDaGF0U2VhcmNoRmlsdGVyW10gPSBmaWx0ZXJzLm1hcCgoeyBmaWx0ZXJDb25maWcsIG1hcCB9KSA9PiAoe1xuICAgICAgZmlsdGVySWQ6IGZpbHRlckNvbmZpZy5maWx0ZXJJZCxcbiAgICAgIGRpc3BsYXlOYW1lOiBmaWx0ZXJDb25maWcuZGlzcGxheU5hbWUsXG4gICAgICBpdGVtczogT2JqZWN0LnZhbHVlcyhtYXApXG4gICAgICAgIC5tYXAoKGZpbHRlcikgPT4gKHtcbiAgICAgICAgICBmaWx0ZXJJdGVtSWQ6IGZpbHRlci5maWx0ZXJJdGVtSWQsXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGZpbHRlci5kaXNwbGF5TmFtZSxcbiAgICAgICAgICBwcm9kdWN0Q291bnQ6IGZpbHRlci5wcm9kdWN0Q291bnQsXG4gICAgICAgICAgaXNTZWxlY3RlZDpcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5zb21lKFxuICAgICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IGAke2ZpbHRlckNvbmZpZy5maWx0ZXJJZH06JHtmaWx0ZXIuZmlsdGVySXRlbUlkfWAsXG4gICAgICAgICAgICApID8/IGZhbHNlLFxuICAgICAgICB9KSlcbiAgICAgICAgLnNvcnQoc29ydEZpbHRlcihmaWx0ZXJDb25maWcpKSxcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gWy4uLnRyYW5zZm9ybWVkRmlsdGVyc107XG4gIH1cblxuICBzdGF0aWMgZmlsdGVyUHJvZHVjdHMoXG4gICAgcHJvZHVjdHM6IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXVtdLFxuICAgIGZpbHRlckNvbmZpZ3M6IEZpbHRlckF0dHJpYnV0ZVtdLFxuICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogU2VsZWN0ZWRGaWx0ZXJPcHRpb25bXSxcbiAgICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzID0gZmFsc2UsIC8vIFNldCB0aGlzIHRvIHRydWUgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYmVoYXZpb3Igd2hlcmUgc3RhY2tpbmcgZmlsdGVycyBoYXMgT1IgbG9naWMuXG4gICkge1xuICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVycyA9IGZpbHRlckNvbmZpZ3NcbiAgICAgIC5tYXAoKGZpbHRlckNvbmZpZykgPT4gKHtcbiAgICAgICAgZmlsdGVyQ29uZmlnLFxuICAgICAgICBoYXNTZWxlY3RlZE9wdGlvbnM6IHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5maWx0ZXJJZCA9PT0gZmlsdGVyQ29uZmlnLmZpbHRlcklkLFxuICAgICAgICApLFxuICAgICAgfSkpXG4gICAgICAuZmlsdGVyKCh7IGhhc1NlbGVjdGVkT3B0aW9ucyB9KSA9PiBoYXNTZWxlY3RlZE9wdGlvbnMpO1xuICAgIHJldHVybiBzZWxlY3RlZEZpbHRlck9wdGlvbnMubGVuZ3RoID09PSAwXG4gICAgICA/IHByb2R1Y3RzXG4gICAgICA6IHByb2R1Y3RzLmZpbHRlcigocHJvZHVjdCkgPT5cbiAgICAgICAgICBzZWxlY3RlZEZpbHRlcnMucmVkdWNlKChhY2MsIHNlbGVjdGVkRmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAvLyBGaW5kaW5nIG9uZSBmYWxzZSByZW1vdmVzIHRoZSBwcm9kdWN0XG4gICAgICAgICAgICBpZiAoIWFjYykge1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUHJpY2UgaXMgc3BlY2lhbFxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRmlsdGVyLmZpbHRlckNvbmZpZy50eXBlID09PSAncHJpY2UnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByaWNlQnVja2V0ID0gZ2V0UHJpY2VCdWNrZXQoXG4gICAgICAgICAgICAgICAgcHJvZHVjdC5zYWxlUHJpY2UgPz8gcHJvZHVjdC5vcmlnaW5hbFByaWNlID8/IDAsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLmJ1Y2tldFNpemUsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoZXNQcmljZUZpbHRlciA9IHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5zb21lKFxuICAgICAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gYHByaWNlOiR7cHJpY2VCdWNrZXR9YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzUHJpY2VGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRmlsdGVyLmZpbHRlckNvbmZpZy50eXBlID09PSAnZHluYW1pYycpIHtcbiAgICAgICAgICAgICAgLy8gZHluYW1pYyBpcyBtaXNsZWFkaW5nIGhlcmUuIEl0cyBub3QganVzdCBkeW5hbWljIGZpbHRlcnMsIGJ1dCBzdGF0aWMgZmlsdGVycyBiZWNhdXNlIHRoZSBjb25maWcgY291bnRzIHN0YXRpYyBmaWx0ZXJzIGFzIHR5cGU6IGR5bmFtaWMuXG4gICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVySWQsIGF0dHJpYnV0ZSB9ID0gc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZXMgPSBwcm9kdWN0LmZpbHRlcnM/LlthdHRyaWJ1dGVdO1xuXG4gICAgICAgICAgICAgIGlmICghaXNTdHJpbmdBcnJheShhdHRyaWJ1dGVWYWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgaXNEeW5hbWljRmlsdGVyID0gc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLmF0dHJpYnV0ZSA9PT0gJ2R5bmFtaWMnOyAvLyBUcnVlIGR5bmFtaWMgZmlsdGVycyAodGhlIG9uZXMgdGhhdCBhcHBlYXIgYmVuZWF0aCB0aGUgc2VhcmNoIGlucHV0KVxuICAgICAgICAgICAgICBjb25zdCBpc1N1YnRyYWN0aXZlTG9naWMgPSBpc0R5bmFtaWNGaWx0ZXIgJiYgIWFkZGl0aXZlRHluYW1pY0ZpbHRlcnM7XG5cbiAgICAgICAgICAgICAgaWYgKGlzU3VidHJhY3RpdmVMb2dpYykge1xuICAgICAgICAgICAgICAgIC8vIEFORCBsb2dpYyBmb3Igc3VidHJhY3RpdmUgZHluYW1pYyBmaWx0ZXJzIGFuZCBiZXR3ZWVuIHN0YXRpYyBmaWx0ZXIgY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uc0ZvclRoaXNGaWx0ZXIgPSBzZWxlY3RlZEZpbHRlck9wdGlvbnNcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlcklkID09PSBmaWx0ZXJJZClcbiAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlckl0ZW1JZC50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0FsbFNlbGVjdGVkVmFsdWVzID0gc2VsZWN0ZWRPcHRpb25zRm9yVGhpc0ZpbHRlci5ldmVyeSgoc2VsZWN0ZWRWYWx1ZSkgPT5cbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlcy5zb21lKCh2YWwpID0+IHZhbC50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFZhbHVlKSxcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNBbGxTZWxlY3RlZFZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBPUiBsb2dpYyBmb3Igc3RhdGljIGZpbHRlcnMgaW4gdGhlIHNpZGViYXIgd2l0aGluIGEgY2F0ZWdvcnkuXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGF0dHJpYnV0ZVZhbHVlcy5zb21lKCh2YWwpID0+XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSBgJHtmaWx0ZXJJZH06JHt2YWwudG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSwgdHJ1ZSksXG4gICAgICAgICk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IFByb2R1Y3RTb3J0aW5nIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0U29ydGVyIHtcbiAgc3RhdGljIHNvcnQocHJvZHVjdHM6IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXVtdLCBzb3J0aW5nOiBQcm9kdWN0U29ydGluZykge1xuICAgIHN3aXRjaCAoc29ydGluZykge1xuICAgICAgY2FzZSBQcm9kdWN0U29ydGluZy5QUklDRV9BU0M6XG4gICAgICAgIHJldHVybiBbLi4ucHJvZHVjdHNdLnNvcnQoXG4gICAgICAgICAgKHAxLCBwMikgPT5cbiAgICAgICAgICAgIChwMS5zYWxlUHJpY2UgPz8gcDEub3JpZ2luYWxQcmljZSA/PyAwKSAtIChwMi5zYWxlUHJpY2UgPz8gcDIub3JpZ2luYWxQcmljZSA/PyAwKSxcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSBQcm9kdWN0U29ydGluZy5QUklDRV9ERVNDOlxuICAgICAgICByZXR1cm4gWy4uLnByb2R1Y3RzXS5zb3J0KFxuICAgICAgICAgIChwMSwgcDIpID0+XG4gICAgICAgICAgICAocDIuc2FsZVByaWNlID8/IHAyLm9yaWdpbmFsUHJpY2UgPz8gMCkgLSAocDEuc2FsZVByaWNlID8/IHAxLm9yaWdpbmFsUHJpY2UgPz8gMCksXG4gICAgICAgICk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBwcm9kdWN0cztcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBNZXNzYWdlUm9sZSxcbiAgTWVzc2FnZVR5cGUsXG4gIFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMsXG59IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzXCI7XG5pbXBvcnQge1xuICBtZXNzYWdlc0F0b20sXG4gIHJlcGx5RXZlbnRDYXRlZ29yeUF0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgdXNlclF1ZXJ5QXRvbSxcbn0gZnJvbSBcInNyYy9hdG9tcy9jaGF0XCI7XG5pbXBvcnQgeyBxdWV1ZVVzZXJFdmVudEF0b20gfSBmcm9tIFwiLi4vY2hhdC9tZXNzYWdlUXVldWVcIjtcbmltcG9ydCB7IG5ld09yZ0NvbmZpZ0F0b20gfSBmcm9tIFwiLi4vb3JnXCI7XG5pbXBvcnQgeyBQcm9kdWN0RmlsdGVycyB9IGZyb20gXCIuL3Byb2R1Y3RGaWx0ZXJzXCI7XG5pbXBvcnQgeyBQcm9kdWN0U29ydGVyIH0gZnJvbSBcIi4vcHJvZHVjdFNvcnRlclwiO1xuaW1wb3J0IHsgQ2hhdFNlYXJjaFN0YXRlVHlwZSwgUHJvZHVjdFNvcnRpbmcgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vLyBOT1RFOlxuLy8gVGhpcyBpcyBhIGxlZ2FjeSB2ZXJzaW9uIG9mIHNlYXJjaCB0aGF0IG5lZWRzIHRvIGJlIGRlY291cGxlZCBhbmQgcmVtb3ZlZC5cbi8vIHRoZSBuZXcgc2VhcmNoLnRzIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkgaXMgbGlrZWx5IHdoYXQgeW91J3JlIGxvb2tpbmcgZm9yLlxuXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaFN0YXRlQXRvbSA9IGF0b208Q2hhdFNlYXJjaFN0YXRlVHlwZT4oXCJlbnRyeXBvaW50XCIpO1xuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hIYXNQcm9kdWN0c0F0b20gPSBhdG9tPGJvb2xlYW4+KGZhbHNlKTtcbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tID0gYXRvbTxQcm9kdWN0U29ydGluZz4oXG4gIFByb2R1Y3RTb3J0aW5nLkZFQVRVUkVEXG4pO1xuXG5jb25zdCBmaWx0ZXJQcm9kdWN0TGlzdCA9IChtZXNzYWdlOiBNZXNzYWdlKSA9PlxuICBtZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlByb2R1Y3QgJiYgbWVzc2FnZS5tZXRhZGF0YS5pc0ZvckdyaWQgPT09IHRydWU7XG5jb25zdCBmaWx0ZXJGaWx0ZXJMaXN0ID0gKG1lc3NhZ2U6IE1lc3NhZ2UpID0+XG4gIG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaEZpbHRlcjtcblxuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaFR1cm4gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGdlbmVyYXRlZFF1ZXJ5Pzogc3RyaW5nO1xuICBwcm9kdWN0Q291bnQ6IG51bWJlcjtcbiAgcHJvZHVjdExpc3Q6IFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXNbXCJhdHRyaWJ1dGVzXCJdW107XG4gIGZpbHRlckxpc3Q6IHN0cmluZ1tdO1xuICBtZXNzYWdlczogTWVzc2FnZVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hJc0xvYWRpbmdBdG9tID0gYXRvbShmYWxzZSk7XG5cbmNvbnN0IGJ1aWxkQ2hhdFNlYXJjaFR1cm4gPSAoXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW11cbik6IFtzdHJpbmcsIENoYXRTZWFyY2hUdXJuXSB8IG51bGwgPT4ge1xuICBjb25zdCBxdWVyeU1lc3NhZ2UgPSBtZXNzYWdlcy5maW5kKFxuICAgIChtZXNzYWdlKSA9PiBtZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlByb2R1Y3RTZWFyY2hcbiAgKTtcbiAgaWYgKCFxdWVyeU1lc3NhZ2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCB7IGdlbmVyYXRlZFF1ZXJ5LCBwcm9kdWN0Q291bnQgfSA9IHF1ZXJ5TWVzc2FnZS5tZXRhZGF0YSA/PyB7fTtcbiAgY29uc3QgcHJvZHVjdExpc3QgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIoZmlsdGVyUHJvZHVjdExpc3QpXG4gICAgLm1hcCgobWVzc2FnZSkgPT4gKG1lc3NhZ2UgYXMgYW55KS5tZXRhZGF0YSk7XG4gIGNvbnN0IGZpbHRlckxpc3QgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIoZmlsdGVyRmlsdGVyTGlzdClcbiAgICAubWFwKChtZXNzYWdlKSA9PiBtZXNzYWdlLm1ldGFkYXRhLmZpbHRlck5hbWUpO1xuICByZXR1cm4gW1xuICAgIHF1ZXJ5TWVzc2FnZS5pZCxcbiAgICB7XG4gICAgICBpZDogcXVlcnlNZXNzYWdlLmlkLFxuICAgICAgZ2VuZXJhdGVkUXVlcnksXG4gICAgICBwcm9kdWN0Q291bnQ6IHByb2R1Y3RDb3VudCB8fCBwcm9kdWN0TGlzdC5sZW5ndGgsXG4gICAgICBwcm9kdWN0TGlzdCxcbiAgICAgIGZpbHRlckxpc3QsXG4gICAgICBtZXNzYWdlcyxcbiAgICB9LFxuICBdO1xufTtcblxuY29uc3QgY2hhdFNlYXJjaEZpbHRlckNvbmZpZ0F0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgbmV3T3JnQ29uZmlnID0gZ2V0KG5ld09yZ0NvbmZpZ0F0b20pO1xuICByZXR1cm4gKFxuICAgIG5ld09yZ0NvbmZpZz8uZnJvbnRlbmRDb25maWc/LnVpQ29uZmlncz8uc2VhcmNoQ29uZmlnPy5zZWFyY2hGaWx0ZXJDb25maWcgfHxcbiAgICBbXVxuICApO1xufSk7XG5cbmNvbnN0IHNlYXJjaE1hcEF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgbWVzc2FnZXMgPSBnZXQobWVzc2FnZXNBdG9tKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBtZXNzYWdlcy5tYXAoYnVpbGRDaGF0U2VhcmNoVHVybikuZmlsdGVyKCh2KSA9PiB2ICE9PSBudWxsKVxuICApO1xufSk7XG5cbmNvbnN0IGludGVybmFsQ2hhdFNlYXJjaFBhcmFtc0F0b20gPSBhdG9tPHtcbiAgaWQ6IHN0cmluZyB8IG51bGw7XG4gIHF1ZXJ5OiBzdHJpbmcgfCBudWxsO1xufT4oe1xuICBpZDogbnVsbCxcbiAgcXVlcnk6IG51bGwsXG59KTtcblxuLy8gU2VsZWN0ZWQgZmlsdGVyIG9wdGlvbnMgd2l0aCBjb21wb3VuZCBvYmplY3RzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkgYW5kIGRpc3BsYXlcbmV4cG9ydCB0eXBlIFNlbGVjdGVkQ2hhdFNlYXJjaEZpbHRlck9wdGlvbiA9IHtcbiAgaWQ6IHN0cmluZzsgLy8gXCJmaWx0ZXJJZDpmaWx0ZXJJdGVtSWRcIiAtIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBjb21wYXJpc29uc1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBmaWx0ZXJJZDogc3RyaW5nOyAvLyBGaWx0ZXIgY2F0ZWdvcnlcbiAgZmlsdGVySXRlbUlkOiBzdHJpbmc7IC8vIEZpbHRlciB2YWx1ZVxufTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b20gPSBhdG9tPFNlbGVjdGVkQ2hhdFNlYXJjaEZpbHRlck9wdGlvbltdPihcbiAgW11cbik7XG5cbmV4cG9ydCBjb25zdCBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBuZXdPcmdDb25maWcgPSBnZXQobmV3T3JnQ29uZmlnQXRvbSk7XG4gIHJldHVybiAoXG4gICAgbmV3T3JnQ29uZmlnPy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzPy5zZWFyY2hDb25maWdcbiAgICAgID8uYWRkaXRpdmVEeW5hbWljRmlsdGVycyA/PyBmYWxzZVxuICApO1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDaGF0U2VhcmNoRmlsdGVyT3B0aW9uID0gKFxuICBmaWx0ZXJJZDogc3RyaW5nLFxuICBmaWx0ZXJJdGVtSWQ6IHN0cmluZyxcbiAgZGlzcGxheU5hbWU6IHN0cmluZ1xuKTogU2VsZWN0ZWRDaGF0U2VhcmNoRmlsdGVyT3B0aW9uID0+ICh7XG4gIGlkOiBgJHtmaWx0ZXJJZH06JHtmaWx0ZXJJdGVtSWR9YCxcbiAgZGlzcGxheU5hbWUsXG4gIGZpbHRlcklkLFxuICBmaWx0ZXJJdGVtSWQsXG59KTtcblxuY29uc3QgaGFuZGxlU2VhcmNoQXRvbSA9IGF0b20obnVsbCwgKGdldCwgc2V0LCBtZXNzYWdlOiBNZXNzYWdlKSA9PiB7XG4gIGlmIChtZXNzYWdlLnR5cGUgIT09IE1lc3NhZ2VUeXBlLlNlYXJjaCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHF1ZXJ5U2VhcmNoID0gbWVzc2FnZS5tZXRhZGF0YS5zZWFyY2hUZXJtO1xuXG4gIHNldChyZXBseUV2ZW50Q2F0ZWdvcnlBdG9tLCBVc2VyRXZlbnRDYXRlZ29yeS5TZWFyY2gpO1xuICBzZXQodXNlclF1ZXJ5QXRvbSwgcXVlcnlTZWFyY2gpO1xuICBzZXQobWVzc2FnZXNBdG9tLCBbLi4uZ2V0KG1lc3NhZ2VzQXRvbSksIFttZXNzYWdlXV0pO1xuICBzZXQodXNlckhhc1JlcGxpZWRBdG9tLCB0cnVlKTtcblxuICBzZXQocXVldWVVc2VyRXZlbnRBdG9tLCB7XG4gICAgZXZlbnRJZDogbWVzc2FnZS5pZCxcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuU2VhcmNoLFxuICAgIGNyZWF0ZWRBdDogbWVzc2FnZS5jcmVhdGVkQXQsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgc2VhcmNoVGVybTogbWVzc2FnZS5tZXRhZGF0YS5zZWFyY2hUZXJtLFxuICAgICAgc2VsZWN0ZWRGaWx0ZXJzOiBtZXNzYWdlLm1ldGFkYXRhLnNlbGVjdGVkRmlsdGVycyxcbiAgICB9LFxuICB9KTtcbn0pO1xuXG4vLyBUaGlzIGludGVybmFsIGF0b20gaXMgdXNlZCB0byBzdG9yZSB0aGUgc2VhcmNoIHBhcmFtc1xuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hQYXJhbXNBdG9tID0gYXRvbShcbiAgKGdldCkgPT4gZ2V0KGludGVybmFsQ2hhdFNlYXJjaFBhcmFtc0F0b20pLFxuICAoXywgc2V0LCB2YWx1ZTogeyBpZDogc3RyaW5nIHwgbnVsbDsgcXVlcnk6IHN0cmluZyB8IG51bGwgfSkgPT4ge1xuICAgIHNldChpbnRlcm5hbENoYXRTZWFyY2hQYXJhbXNBdG9tLCB2YWx1ZSk7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoUXVlcnlBdG9tID0gYXRvbShcbiAgKGdldCkgPT4gZ2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tKT8ucXVlcnkgPz8gbnVsbCxcbiAgKGdldCwgc2V0LCB2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IGdldChjaGF0U2VhcmNoUGFyYW1zQXRvbSk7XG4gICAgc2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tLCB7IGlkOiBzZWFyY2hQYXJhbXMuaWQsIHF1ZXJ5OiB2YWx1ZSB9KTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hJZEF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20pPy5pZCA/PyBudWxsLFxuICAoZ2V0LCBzZXQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gZ2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tKTtcbiAgICBzZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20sIHsgaWQ6IHZhbHVlLCBxdWVyeTogc2VhcmNoUGFyYW1zLnF1ZXJ5IH0pO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgQ2hhdFNlYXJjaFR1cm5BdG9tID0gYXRvbSgoZ2V0KSA9PiB7XG4gIGNvbnN0IHNlYXJjaEZpbHRlckNvbmZpZyA9IGdldChjaGF0U2VhcmNoRmlsdGVyQ29uZmlnQXRvbSk7XG4gIGNvbnN0IHNlYXJjaE1hcCA9IGdldChzZWFyY2hNYXBBdG9tKTtcbiAgY29uc3QgY2hhdFNlYXJjaElkID0gZ2V0KGNoYXRTZWFyY2hJZEF0b20pO1xuICBpZiAoIWNoYXRTZWFyY2hJZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IENoYXRTZWFyY2hUdXJuID0gc2VhcmNoTWFwW2NoYXRTZWFyY2hJZF07XG4gIGlmICghQ2hhdFNlYXJjaFR1cm4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBwcm9kdWN0U29ydGluZyA9IGdldChjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tKTtcbiAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gZ2V0KHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b20pO1xuICBjb25zdCBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzID0gZ2V0KGFkZGl0aXZlRHluYW1pY0ZpbHRlcnNBdG9tKTtcbiAgY29uc3QgZmlsdGVyZWRQcm9kdWN0cyA9IFByb2R1Y3RGaWx0ZXJzLmZpbHRlclByb2R1Y3RzKFxuICAgIENoYXRTZWFyY2hUdXJuLnByb2R1Y3RMaXN0LFxuICAgIHNlYXJjaEZpbHRlckNvbmZpZyxcbiAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnMsXG4gICAgYWRkaXRpdmVEeW5hbWljRmlsdGVyc1xuICApO1xuXG4gIGNvbnN0IGZpbHRlcmVkQW5kU29ydGVkUHJvZHVjdHMgPSBQcm9kdWN0U29ydGVyLnNvcnQoXG4gICAgZmlsdGVyZWRQcm9kdWN0cyxcbiAgICBwcm9kdWN0U29ydGluZ1xuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc2VhcmNoTWFwW2NoYXRTZWFyY2hJZF0sXG4gICAgcHJvZHVjdExpc3Q6IGZpbHRlcmVkQW5kU29ydGVkUHJvZHVjdHMsXG4gICAgcHJvZHVjdENvdW50OiBmaWx0ZXJlZEFuZFNvcnRlZFByb2R1Y3RzLmxlbmd0aCxcbiAgfTtcbn0pO1xuXG4vLyBUT0RPOiBXb3JrIG9uIGRlcHJlY2F0aW5nIHRoaXMgYXRvbSBpbiBmYXZvciBvZiB1c2luZyBDaGF0U2VhcmNoVHVybkF0b20gZGlyZWN0bHlcbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoUHJvZHVjdHMgPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgQ2hhdFNlYXJjaFR1cm4gPSBnZXQoQ2hhdFNlYXJjaFR1cm5BdG9tKTtcbiAgcmV0dXJuIENoYXRTZWFyY2hUdXJuPy5wcm9kdWN0TGlzdCA/PyBbXTtcbn0pO1xuXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaEZpbHRlcnNBdG9tID0gYXRvbSgoZ2V0KSA9PiB7XG4gIGNvbnN0IHNlYXJjaEZpbHRlckNvbmZpZyA9IGdldChjaGF0U2VhcmNoRmlsdGVyQ29uZmlnQXRvbSk7XG4gIGNvbnN0IHNlYXJjaE1hcCA9IGdldChzZWFyY2hNYXBBdG9tKTtcbiAgY29uc3QgY2hhdFNlYXJjaElkID0gZ2V0KGNoYXRTZWFyY2hJZEF0b20pO1xuXG4gIGlmIChjaGF0U2VhcmNoSWQgJiYgc2VhcmNoTWFwW2NoYXRTZWFyY2hJZF0pIHtcbiAgICBjb25zdCBwcm9kdWN0cyA9IHNlYXJjaE1hcFtjaGF0U2VhcmNoSWRdLnByb2R1Y3RMaXN0O1xuICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IGdldChzZWxlY3RlZEZpbHRlck9wdGlvbnNBdG9tKTtcbiAgICByZXR1cm4gUHJvZHVjdEZpbHRlcnMuZ2V0RmlsdGVyc0ZvclByb2R1Y3RzKFxuICAgICAgcHJvZHVjdHMsXG4gICAgICBzZWFyY2hGaWx0ZXJDb25maWcsXG4gICAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiBbXTtcbn0pO1xuXG4vLyBGb3Igc2VhcmNoIHdlIHVzZSB0aGUgZm9sbG93aW5nIHF1ZXJ5IHBhcmFtczpcbi8vIGVzOiB0cnVlIC0gdGhpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgaW4gYSBzZWFyY2ggc3RhdGVcbi8vIGVzcTogcXVlcnkgLSB0aGlzIGlzIHRoZSBjdXJyZW50IHNlYXJjaCBxdWVyeVxuLy8gZXNpOiBzZWFyY2ggaWQgLSB0aGlzIGlzIHRoZSB1bmlxdWUgaWQgZm9yIHRoZSBzZWFyY2ggcmVzdWx0cyB0aGF0IHdlIGFyZSBkaXNwbGF5aW5nLiBJdCBpcyBwdWxsZWQgZnJvbSB0aGUgbWVzc2FnZSBpZCBmcm9tIHRoZSB0dXJuIHRoYXQgaW5jbHVkZXMgdGhlIHNlYXJjaCByZXN1bHRzXG5cbmV4cG9ydCBjb25zdCBzZXRTZWFyY2hQYXJhbXMgPSAocXVlcnk6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc1wiLCBcInRydWVcIik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNxXCIsIHF1ZXJ5KTtcbiAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBcIlwiLCB1cmwpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlYXJjaFBhcmFtc0F0b20gPSBhdG9tKCgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgcmV0dXJuIHtcbiAgICBlczogcGFyYW1zLmdldChcImVzXCIpLFxuICAgIGVzcTogcGFyYW1zLmdldChcImVzcVwiKSxcbiAgfTtcbn0pO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhdGVDaGF0U2VhcmNoQXRvbSA9IGF0b20obnVsbCwgKF8sIHNldCwgcXVlcnk6IHN0cmluZykgPT4ge1xuICBzZXQoY2hhdFNlYXJjaElzTG9hZGluZ0F0b20sIHRydWUpO1xuICAvLyBVcGRhdGUgVVJMIGFuZCBtYW51YWxseSB0cmlnZ2VyIHN0YXRlIGNoYW5nZSAoc2luY2UgcHVzaFN0YXRlIGRvZXNuJ3QgdHJpZ2dlciBwb3BzdGF0ZSlcbiAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNcIiwgXCJ0cnVlXCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzcVwiLCBxdWVyeSk7XG4gIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgXCJcIiwgdXJsKTtcblxuICAvLyBNYW51YWxseSB0cmlnZ2VyIHBhZ2UgdmFyaWFudCByZS1ldmFsdWF0aW9uIGJ5IGRpc3BhdGNoaW5nIGEgcG9wc3RhdGUgZXZlbnRcbiAgLy8gVGhpcyBlbnN1cmVzIHRoZSBwYWdlIHZhcmlhbnQgc3lzdGVtIGRldGVjdHMgdGhlIFVSTCBjaGFuZ2UgYW5kIG1vdW50cyBzZWFyY2ggcmVzdWx0c1xuICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgUG9wU3RhdGVFdmVudChcInBvcHN0YXRlXCIsIHsgc3RhdGU6IHt9IH0pKTtcblxuICBzZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20sIHsgaWQ6IG51bGwsIHF1ZXJ5IH0pO1xuICBzZXQoaGFuZGxlU2VhcmNoQXRvbSwge1xuICAgIGlkOiB1dWlkKCksXG4gICAgcm9sZTogTWVzc2FnZVJvbGUuVXNlcixcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5TZWFyY2gsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHNlYXJjaFRlcm06IHF1ZXJ5LFxuICAgICAgLy8gRW5hYmxpbmcgdGhpcyB3aWxsIGVuYWJsZSB0aGUgbmV3IGJhY2tlbmQgc2VhcmNoXG4gICAgICBzZWxlY3RlZEZpbHRlcnM6IFtdLFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVTZWFyY2hSZXN1bHRzQXRvbSA9IGF0b20oXG4gIG51bGwsXG4gIChnZXQsIHNldCwgbWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmICghbWVzc2FnZSB8fCBtZXNzYWdlLnR5cGUgIT09IE1lc3NhZ2VUeXBlLlByb2R1Y3RTZWFyY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHByb2R1Y3RDb3VudCwgZ2VuZXJhdGVkUXVlcnkgfSA9IG1lc3NhZ2UubWV0YWRhdGE7XG4gICAgaWYgKHByb2R1Y3RDb3VudCAhPT0gMCkge1xuICAgICAgLy8gQ2xlYXIgdGhlIGZpbHRlciBvcHRpb25zIHdoZW4gd2UgZ2V0IG5ldyBwcm9kdWN0c1xuICAgICAgc2V0KHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b20sIFtdKTtcbiAgICAgIC8vIFRPRE86IFNob3VsZCB3ZSBzdGlsbCBkbyBhbnkgb2YgdGhlc2UgdGhpbmdzP1xuICAgICAgc2V0KGNoYXRTZWFyY2hTdGF0ZUF0b20sIFwicHJvZHVjdC1wYWdlXCIpO1xuICAgICAgY29uc3QgY3VycmVudFNlYXJjaFBhcmFtcyA9IGdldChjaGF0U2VhcmNoUGFyYW1zQXRvbSk7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNcIiwgXCJ0cnVlXCIpO1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc3FcIiwgZ2VuZXJhdGVkUXVlcnkpO1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc2lcIiwgbWVzc2FnZS5pZCk7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIFwiXCIsIHVybCk7XG4gICAgICBpZiAoY3VycmVudFNlYXJjaFBhcmFtcy5pZCA9PT0gbnVsbCkge1xuICAgICAgICAvLyBJZiB0aGUgaWQgaXMgbnVsbCwgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBzdGF0ZVxuICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHRoZSBxdWVyeSBpcyBkaWZmZXJlbnQsIHdlIG5lZWQgdG8gcHVzaCBhIG5ldyBzdGF0ZVxuICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICAgIH1cbiAgICAgIHNldChjaGF0U2VhcmNoUGFyYW1zQXRvbSwgeyBpZDogbWVzc2FnZS5pZCwgcXVlcnk6IGdlbmVyYXRlZFF1ZXJ5IH0pO1xuICAgIH1cbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IHNldENoYXRTZWFyY2hQYXJhbXNBdG9tID0gYXRvbShudWxsLCAoXywgc2V0LCBxdWVyeTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzXCIsIFwidHJ1ZVwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc3FcIiwgcXVlcnkpO1xuICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIFwiXCIsIHVybCk7XG4gIHNldChjaGF0U2VhcmNoUGFyYW1zQXRvbSwgeyBpZDogbnVsbCwgcXVlcnkgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFNQSxNQUFNLGtCQUFrQixPQUFlLGVBQXVCO0FBRTVELFFBRGUsS0FBSyxNQUFNLFFBQVEsV0FBVyxHQUM3Qjs7QUFHbEIsTUFBTSxpQkFBaUIsVUFBc0M7QUFDM0QsS0FBSSxDQUFDLE1BQU0sUUFBUSxNQUFNLENBQ3ZCLFFBQU87QUFFVCxRQUFPLE1BQU0sT0FBTyxTQUFTLE9BQU8sU0FBUyxTQUFTOztBQUt4RCxNQUFNLGNBQWMsaUJBQXNEO0FBQ3hFLEtBQUksYUFBYSxTQUFTLFFBQ3hCLFNBQVEsR0FBRyxNQUFNLE9BQU8sRUFBRSxhQUFhLEdBQUcsT0FBTyxFQUFFLGFBQWE7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