@envive-ai/react-hooks 0.1.7 → 0.1.8

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 (368) hide show
  1. package/dist/{NewOrgConfig-CRyIfb_l.js → NewOrgConfig-BU6uJT74.js} +2 -2
  2. package/dist/{NewOrgConfig-C5YL4Y62.cjs → NewOrgConfig-DmidHiyj.cjs} +2 -2
  3. package/dist/{SystemSettingsContext-Cb9YHln8.cjs → SystemSettingsContext-BbobkM82.cjs} +2 -2
  4. package/dist/{SystemSettingsContext-D3mmGGcv.js → SystemSettingsContext-gtrccL_q.js} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-C7c_rHFW.cjs → TrackComponentVisibleEvent-CqjMiZCS.cjs} +3 -3
  6. package/dist/{TrackComponentVisibleEvent-DXTEBjGM.js → TrackComponentVisibleEvent-D9kpqKM4.js} +3 -3
  7. package/dist/{amplitudeContext-CB_F-nJY.d.cts → amplitudeContext-B73xamNe.d.cts} +1 -1
  8. package/dist/{amplitudeContext-DFYBDc0h.d.ts → amplitudeContext-BhhYPJSL.d.ts} +1 -1
  9. package/dist/{amplitudeContext-sTEsPaVG.cjs → amplitudeContext-Dr1jHI13.cjs} +9 -9
  10. package/dist/{amplitudeContext-Cak6ijMq.js → amplitudeContext-YRS1QOO3.js} +9 -9
  11. package/dist/api-DYjHj_hR.cjs +239 -0
  12. package/dist/api-d5uWvb3-.js +166 -0
  13. package/dist/{app-D_upYeqF.js → app-B9r0MF9n.js} +6 -6
  14. package/dist/{app-KXTMPa4s.cjs → app-Bgr-mAvr.cjs} +7 -7
  15. package/dist/application/models/graphql/index.cjs +2 -2
  16. package/dist/application/models/graphql/index.d.ts +1 -1
  17. package/dist/application/models/graphql/index.js +2 -2
  18. package/dist/application/models/guards/api/index.cjs +3 -2
  19. package/dist/application/models/guards/api/index.d.ts +2 -2
  20. package/dist/application/models/guards/api/index.js +3 -2
  21. package/dist/application/models/guards/utils.cjs +3 -0
  22. package/dist/application/models/guards/utils.d.cts +2 -0
  23. package/dist/application/models/guards/utils.d.ts +2 -0
  24. package/dist/application/models/guards/utils.js +3 -0
  25. package/dist/application/models/index.cjs +10 -9
  26. package/dist/application/models/index.d.cts +8 -7
  27. package/dist/application/models/index.d.ts +11 -10
  28. package/dist/application/models/index.js +9 -8
  29. package/dist/application/models/utilityTypes/index.cjs +1 -1
  30. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  31. package/dist/application/models/utilityTypes/index.js +1 -1
  32. package/dist/application/models/variantInfo/index.cjs +1 -1
  33. package/dist/application/models/variantInfo/index.d.cts +1 -1
  34. package/dist/application/models/variantInfo/index.d.ts +1 -1
  35. package/dist/application/models/variantInfo/index.js +1 -1
  36. package/dist/application/utils/index.cjs +36 -35
  37. package/dist/application/utils/index.d.cts +11 -10
  38. package/dist/application/utils/index.d.ts +16 -15
  39. package/dist/application/utils/index.js +18 -17
  40. package/dist/{atomStore-DnPEioF4.js → atomStore-BuopbV9k.js} +1 -1
  41. package/dist/{atomStore-DEZyFCNz.cjs → atomStore-CZKe3itM.cjs} +1 -1
  42. package/dist/atoms/app/index.cjs +13 -12
  43. package/dist/atoms/app/index.d.cts +10 -9
  44. package/dist/atoms/app/index.d.ts +19 -18
  45. package/dist/atoms/app/index.js +13 -12
  46. package/dist/atoms/atomStore/index.cjs +2 -2
  47. package/dist/atoms/atomStore/index.js +2 -2
  48. package/dist/atoms/chat/index.cjs +19 -18
  49. package/dist/atoms/chat/index.d.cts +36 -35
  50. package/dist/atoms/chat/index.d.ts +39 -38
  51. package/dist/atoms/chat/index.js +19 -18
  52. package/dist/atoms/globalSearch/index.cjs +1 -1
  53. package/dist/atoms/globalSearch/index.d.cts +5 -5
  54. package/dist/atoms/globalSearch/index.d.ts +6 -6
  55. package/dist/atoms/globalSearch/index.js +1 -1
  56. package/dist/atoms/org/index.cjs +4 -4
  57. package/dist/atoms/org/index.d.cts +26 -25
  58. package/dist/atoms/org/index.d.ts +29 -28
  59. package/dist/atoms/org/index.js +4 -4
  60. package/dist/atoms/search/index.cjs +26 -24
  61. package/dist/atoms/search/index.d.cts +10 -9
  62. package/dist/atoms/search/index.d.ts +13 -12
  63. package/dist/atoms/search/index.js +26 -24
  64. package/dist/atoms/search/types.cjs +1 -1
  65. package/dist/atoms/search/types.d.cts +1 -1
  66. package/dist/atoms/search/types.d.ts +1 -1
  67. package/dist/atoms/search/types.js +1 -1
  68. package/dist/atoms/search/utils.cjs +3 -0
  69. package/dist/atoms/search/utils.d.cts +5 -0
  70. package/dist/atoms/search/utils.d.ts +5 -0
  71. package/dist/atoms/search/utils.js +3 -0
  72. package/dist/{cdnContext-BMjVfBft.cjs → cdnContext-CVgXkdV2.cjs} +2 -2
  73. package/dist/{cdnContext-DgsJ00Tb.js → cdnContext-DdE6VPIF.js} +2 -2
  74. package/dist/{chat-DPJGdUkz.js → chat-BNDYKsqF.js} +10 -10
  75. package/dist/{chat-zA-K4tR_.cjs → chat-BkjIKhc5.cjs} +1 -1
  76. package/dist/{chat-D1Eat8Ih.cjs → chat-Br5FhtRs.cjs} +11 -11
  77. package/dist/{chat-B4lkFIxz.js → chat-CgLypC3w.js} +1 -1
  78. package/dist/{chatElementDisplayLocation-C1tRM5OD.d.ts → chatElementDisplayLocation-BwiXrkN7.d.ts} +1 -1
  79. package/dist/{chatElementDisplayLocation-9SW40Dd3.d.cts → chatElementDisplayLocation-DWmfNX_u.d.cts} +1 -1
  80. package/dist/chatSearch-BiF2__V0.js +295 -0
  81. package/dist/chatSearch-BrzfJOto.cjs +418 -0
  82. package/dist/{chatState-BisPJd5g.cjs → chatState-BDsqKE-B.cjs} +3 -3
  83. package/dist/{chatState-BrmBYY8l.js → chatState-ie771Hwy.js} +3 -3
  84. package/dist/{commerce-api-DagLj3D_.js → commerce-api-Dz1jxPOJ.js} +9 -9
  85. package/dist/{commerce-api-CxDIfeME.cjs → commerce-api-KoiUki51.cjs} +9 -9
  86. package/dist/{components-g0G58Kat.cjs → components-Cby-Cma3.cjs} +1 -1
  87. package/dist/{components-B1edduHz.js → components-D1mg1-Br.js} +1 -1
  88. package/dist/config/locators/components/chat/index.cjs +1 -1
  89. package/dist/config/locators/components/chat/index.d.cts +1 -1
  90. package/dist/config/locators/components/chat/index.d.ts +1 -1
  91. package/dist/config/locators/components/chat/index.js +1 -1
  92. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  93. package/dist/config/locators/components/index.cjs +1 -1
  94. package/dist/config/locators/components/index.d.cts +1 -1
  95. package/dist/config/locators/components/index.d.ts +1 -1
  96. package/dist/config/locators/components/index.js +1 -1
  97. package/dist/config/locators/components/search/index.d.ts +1 -1
  98. package/dist/config/locators/index.cjs +2 -2
  99. package/dist/config/locators/index.d.cts +2 -2
  100. package/dist/config/locators/index.d.ts +2 -2
  101. package/dist/config/locators/index.js +2 -2
  102. package/dist/contexts/amplitudeContext/index.cjs +16 -15
  103. package/dist/contexts/amplitudeContext/index.d.cts +1 -1
  104. package/dist/contexts/amplitudeContext/index.d.ts +1 -1
  105. package/dist/contexts/amplitudeContext/index.js +16 -15
  106. package/dist/contexts/cdnContext/index.cjs +4 -4
  107. package/dist/contexts/cdnContext/index.js +4 -4
  108. package/dist/contexts/chatContext/index.cjs +40 -38
  109. package/dist/contexts/chatContext/index.d.cts +2 -2
  110. package/dist/contexts/chatContext/index.d.ts +2 -2
  111. package/dist/contexts/chatContext/index.js +36 -34
  112. package/dist/contexts/enviveConfigContext/index.cjs +4 -4
  113. package/dist/contexts/enviveConfigContext/index.d.cts +3 -3
  114. package/dist/contexts/enviveConfigContext/index.d.ts +3 -3
  115. package/dist/contexts/enviveConfigContext/index.js +4 -4
  116. package/dist/contexts/enviveCssContext/index.cjs +18 -17
  117. package/dist/contexts/enviveCssContext/index.js +18 -17
  118. package/dist/contexts/featureFlagContext/index.cjs +6 -6
  119. package/dist/contexts/featureFlagContext/index.d.cts +3 -3
  120. package/dist/contexts/featureFlagContext/index.d.ts +3 -3
  121. package/dist/contexts/featureFlagContext/index.js +6 -6
  122. package/dist/contexts/featureFlagServiceContext/index.cjs +3 -3
  123. package/dist/contexts/featureFlagServiceContext/index.d.cts +4 -4
  124. package/dist/contexts/featureFlagServiceContext/index.d.ts +4 -4
  125. package/dist/contexts/featureFlagServiceContext/index.js +3 -3
  126. package/dist/contexts/graphqlContext/index.cjs +12 -11
  127. package/dist/contexts/graphqlContext/index.d.cts +9 -8
  128. package/dist/contexts/graphqlContext/index.d.ts +12 -11
  129. package/dist/contexts/graphqlContext/index.js +12 -11
  130. package/dist/contexts/localStorageContext/index.cjs +2 -2
  131. package/dist/contexts/localStorageContext/index.js +2 -2
  132. package/dist/contexts/newOrgConfigContext/index.cjs +16 -15
  133. package/dist/contexts/newOrgConfigContext/index.d.cts +10 -9
  134. package/dist/contexts/newOrgConfigContext/index.d.ts +13 -12
  135. package/dist/contexts/newOrgConfigContext/index.js +16 -15
  136. package/dist/contexts/searchContext/index.cjs +20 -19
  137. package/dist/contexts/searchContext/index.d.cts +1 -1
  138. package/dist/contexts/searchContext/index.d.ts +2 -2
  139. package/dist/contexts/searchContext/index.js +20 -19
  140. package/dist/contexts/sessionStorageContext/index.cjs +2 -2
  141. package/dist/contexts/sessionStorageContext/index.js +2 -2
  142. package/dist/contexts/shopifyUrlContext/index.cjs +2 -2
  143. package/dist/contexts/shopifyUrlContext/index.d.cts +3 -3
  144. package/dist/contexts/shopifyUrlContext/index.d.ts +3 -3
  145. package/dist/contexts/shopifyUrlContext/index.js +2 -2
  146. package/dist/contexts/systemSettingsContext/index.cjs +4 -4
  147. package/dist/contexts/systemSettingsContext/index.d.cts +11 -10
  148. package/dist/contexts/systemSettingsContext/index.d.ts +12 -11
  149. package/dist/contexts/systemSettingsContext/index.js +4 -4
  150. package/dist/contexts/types.d.cts +3 -3
  151. package/dist/contexts/types.d.ts +3 -3
  152. package/dist/contexts/userIdentityContext/index.cjs +22 -21
  153. package/dist/contexts/userIdentityContext/index.d.cts +1 -1
  154. package/dist/contexts/userIdentityContext/index.d.ts +1 -1
  155. package/dist/contexts/userIdentityContext/index.js +22 -21
  156. package/dist/{domObserver-B6cRGTny.js → domObserver-B19-69gW.js} +1 -1
  157. package/dist/{domObserver-DQZwhPrc.cjs → domObserver-CwieVNgj.cjs} +1 -1
  158. package/dist/{enviveConfig-BJZ4zTJo.js → enviveConfig-BQB14yuH.js} +3 -3
  159. package/dist/{enviveConfig-DdBrcGSQ.cjs → enviveConfig-DAA9sozZ.cjs} +3 -3
  160. package/dist/{enviveConfigContext-jBCCWQH9.js → enviveConfigContext-BCpBKqsz.js} +3 -3
  161. package/dist/{enviveConfigContext-78orE_uH.cjs → enviveConfigContext-Btg5JUMG.cjs} +3 -3
  162. package/dist/{featureFlagServiceContext-ChL7DJ53.cjs → featureFlagServiceContext-Bcx5yh4S.cjs} +3 -3
  163. package/dist/{featureFlagServiceContext-D1PzHsEs.d.ts → featureFlagServiceContext-Cpw8omUr.d.ts} +2 -2
  164. package/dist/{featureFlagServiceContext-DQwlCTde.d.cts → featureFlagServiceContext-Cvn6fcdB.d.cts} +2 -2
  165. package/dist/{featureFlagServiceContext-DzFfmb1Z.js → featureFlagServiceContext-_tXX5iro.js} +3 -3
  166. package/dist/{featureGates-Blx10fwB.js → featureGates-2Zea2D2S.js} +1 -1
  167. package/dist/{featureGates-DcZNrUma.cjs → featureGates-BY2Zy7x_.cjs} +1 -1
  168. package/dist/{frontendConfig-wg41mBok.d.cts → frontendConfig-DnMZfvcA.d.cts} +3 -3
  169. package/dist/{frontendConfig-DrvrQSm8.d.ts → frontendConfig-Dqxbqo8G.d.ts} +3 -3
  170. package/dist/{globalSearch-Bnjlxtr5.cjs → globalSearch-C94-vEVh.cjs} +1 -1
  171. package/dist/{globalSearch-CRWUqnjq.js → globalSearch-Dlbnfasm.js} +1 -1
  172. package/dist/{graphql-W7GMIHUu.js → graphql-DRLWdYEk.js} +2 -2
  173. package/dist/{graphql-B9HhDXYt.cjs → graphql-xPDT7ZkK.cjs} +2 -2
  174. package/dist/{graphqlConfig-Bn-HLHsh.cjs → graphqlConfig-B4ddz1vH.cjs} +1 -1
  175. package/dist/{graphqlConfig-DtZm_YaH.js → graphqlConfig-BnjOdeX7.js} +1 -1
  176. package/dist/{graphqlContext-BJg7B--J.js → graphqlContext-B-9g2vOb.js} +5 -5
  177. package/dist/{graphqlContext-DI-_VRmb.cjs → graphqlContext-B7PEKDJs.cjs} +5 -5
  178. package/dist/hooks/AmplitudeOperations/index.cjs +18 -17
  179. package/dist/hooks/AmplitudeOperations/index.d.cts +1 -1
  180. package/dist/hooks/AmplitudeOperations/index.d.ts +1 -1
  181. package/dist/hooks/AmplitudeOperations/index.js +18 -17
  182. package/dist/hooks/AppDetails/index.cjs +16 -15
  183. package/dist/hooks/AppDetails/index.d.cts +9 -8
  184. package/dist/hooks/AppDetails/index.d.ts +12 -11
  185. package/dist/hooks/AppDetails/index.js +16 -15
  186. package/dist/hooks/CdnOperations/index.cjs +4 -4
  187. package/dist/hooks/CdnOperations/index.js +4 -4
  188. package/dist/hooks/ChatToggle/index.cjs +20 -19
  189. package/dist/hooks/ChatToggle/index.d.cts +1 -1
  190. package/dist/hooks/ChatToggle/index.d.ts +1 -1
  191. package/dist/hooks/ChatToggle/index.js +20 -19
  192. package/dist/hooks/ChatToggleAnalytics/index.cjs +20 -19
  193. package/dist/hooks/ChatToggleAnalytics/index.d.cts +1 -1
  194. package/dist/hooks/ChatToggleAnalytics/index.d.ts +1 -1
  195. package/dist/hooks/ChatToggleAnalytics/index.js +20 -19
  196. package/dist/hooks/CustomerSupportHandoff/index.cjs +1 -1
  197. package/dist/hooks/CustomerSupportHandoff/index.js +1 -1
  198. package/dist/hooks/Debounce/index.cjs +1 -1
  199. package/dist/hooks/Debounce/index.js +1 -1
  200. package/dist/hooks/ElementObserver/index.cjs +1 -1
  201. package/dist/hooks/ElementObserver/index.d.cts +1 -1
  202. package/dist/hooks/ElementObserver/index.d.ts +1 -1
  203. package/dist/hooks/ElementObserver/index.js +1 -1
  204. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  205. package/dist/hooks/GraphQLConfig/index.cjs +13 -12
  206. package/dist/hooks/GraphQLConfig/index.js +13 -12
  207. package/dist/hooks/IdentifyUser/index.cjs +23 -22
  208. package/dist/hooks/IdentifyUser/index.js +23 -22
  209. package/dist/hooks/ImageResolver/index.cjs +12 -11
  210. package/dist/hooks/ImageResolver/index.js +12 -11
  211. package/dist/hooks/Intersection/index.cjs +1 -1
  212. package/dist/hooks/Intersection/index.js +1 -1
  213. package/dist/hooks/LocalStorageOperations/index.cjs +2 -2
  214. package/dist/hooks/LocalStorageOperations/index.js +2 -2
  215. package/dist/hooks/MessageFilter/index.cjs +10 -9
  216. package/dist/hooks/MessageFilter/index.d.cts +9 -8
  217. package/dist/hooks/MessageFilter/index.d.ts +12 -11
  218. package/dist/hooks/MessageFilter/index.js +10 -9
  219. package/dist/hooks/NewOrgConfig/index.cjs +17 -16
  220. package/dist/hooks/NewOrgConfig/index.d.cts +10 -9
  221. package/dist/hooks/NewOrgConfig/index.d.ts +13 -12
  222. package/dist/hooks/NewOrgConfig/index.js +17 -16
  223. package/dist/hooks/Search/index.cjs +38 -36
  224. package/dist/hooks/Search/index.d.cts +13 -18
  225. package/dist/hooks/Search/index.d.ts +16 -21
  226. package/dist/hooks/Search/index.js +37 -35
  227. package/dist/hooks/SearchOperations/index.cjs +21 -20
  228. package/dist/hooks/SearchOperations/index.d.cts +1 -1
  229. package/dist/hooks/SearchOperations/index.d.ts +2 -2
  230. package/dist/hooks/SearchOperations/index.js +21 -20
  231. package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
  232. package/dist/hooks/SessionStorageOperations/index.js +2 -2
  233. package/dist/hooks/ShopifyUrlOperations/index.cjs +2 -2
  234. package/dist/hooks/ShopifyUrlOperations/index.d.cts +5 -5
  235. package/dist/hooks/ShopifyUrlOperations/index.d.ts +5 -5
  236. package/dist/hooks/ShopifyUrlOperations/index.js +2 -2
  237. package/dist/hooks/SystemSettingsContext/index.cjs +5 -5
  238. package/dist/hooks/SystemSettingsContext/index.d.cts +11 -10
  239. package/dist/hooks/SystemSettingsContext/index.d.ts +14 -13
  240. package/dist/hooks/SystemSettingsContext/index.js +5 -5
  241. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +18 -17
  242. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -2
  243. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -2
  244. package/dist/hooks/TrackComponentVisibleEvent/index.js +18 -17
  245. package/dist/hooks/UpdateAnalyticsProps/index.cjs +17 -16
  246. package/dist/hooks/UpdateAnalyticsProps/index.js +17 -16
  247. package/dist/hooks/utils.cjs +8 -0
  248. package/dist/hooks/utils.d.cts +13 -0
  249. package/dist/hooks/utils.d.ts +13 -0
  250. package/dist/hooks/utils.js +3 -0
  251. package/dist/{index-CyXULMyI.d.cts → index-B9HUPS_i.d.cts} +33 -33
  252. package/dist/{index-DuyZQOE1.d.ts → index-BN-3ctk_.d.ts} +2 -2
  253. package/dist/{index-Cz10TYQA.d.cts → index-BNiYL8h0.d.cts} +2 -2
  254. package/dist/{index-DO0s5KNA.d.cts → index-BW6pHibZ.d.cts} +1 -1
  255. package/dist/{index-fKJB9EFb.d.ts → index-BirtCYN3.d.ts} +5 -5
  256. package/dist/{index-DNUKSg6R.d.ts → index-BoYC9XLW.d.ts} +1 -1
  257. package/dist/{index-CKeS9dud.d.ts → index-C9zXP5bg.d.ts} +3 -3
  258. package/dist/index-CK_J3QMY.d.ts +676 -0
  259. package/dist/index-C_MIfxF0.d.cts +676 -0
  260. package/dist/{index-D8ThXrqI.d.ts → index-Da0UzyI9.d.ts} +1 -1
  261. package/dist/{index-BS7-_CW4.d.ts → index-Dr_c2DDq.d.ts} +1 -1
  262. package/dist/{index-D9VegTU-.d.ts → index-DsiilEj-.d.ts} +1 -1
  263. package/dist/{index-REhT-Pls.d.cts → index-MOOZ2oxZ.d.cts} +1 -1
  264. package/dist/{index-DBqgBV9N.d.ts → index-ghzD_356.d.ts} +1 -1
  265. package/dist/{index-D46Rd0io.d.cts → index-hdbCEjYy.d.cts} +1 -1
  266. package/dist/interceptors/index.cjs +2 -2
  267. package/dist/interceptors/index.d.cts +10 -9
  268. package/dist/interceptors/index.d.ts +13 -12
  269. package/dist/interceptors/index.js +2 -2
  270. package/dist/interceptors/types.cjs +1 -1
  271. package/dist/interceptors/types.d.cts +9 -8
  272. package/dist/interceptors/types.d.ts +12 -11
  273. package/dist/interceptors/types.js +1 -1
  274. package/dist/{localStorageContext-6OrGDFid.js → localStorageContext-DiTziaPa.js} +2 -2
  275. package/dist/{localStorageContext-Bld0OWmG.cjs → localStorageContext-S38L0OSP.cjs} +2 -2
  276. package/dist/{logger-D5MFf3nW.js → logger-CkhQayOW.js} +1 -1
  277. package/dist/{logger-CSL2jqI9.cjs → logger-DQ0WfCcD.cjs} +1 -1
  278. package/dist/{models-Dn8Emdzc.js → models-C48U9q70.js} +4 -3
  279. package/dist/{models-ZpQcRZQK.cjs → models-Ctn-pmug.cjs} +25 -24
  280. package/dist/{newOrgConfigAtom-DkSi45_Q.cjs → newOrgConfigAtom-D6R-7HCk.cjs} +1 -1
  281. package/dist/{newOrgConfigAtom--tewb_G0.js → newOrgConfigAtom-bn1lnljf.js} +1 -1
  282. package/dist/{newOrgConfigContext-B3aeblfE.cjs → newOrgConfigContext-D3WoaBVU.cjs} +5 -5
  283. package/dist/{newOrgConfigContext-B5mzHKTG.js → newOrgConfigContext-rWOYz0E8.js} +5 -5
  284. package/dist/{nodeSelector-XsUa5vNH.d.cts → nodeSelector-B3bPtEjX.d.cts} +1 -1
  285. package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-D5gjDWZ3.d.ts} +1 -1
  286. package/dist/{org-ClUxpHPZ.cjs → org-CIhjzxWr.cjs} +1 -1
  287. package/dist/{org-B2uRkPt3.js → org-CeWXnpwF.js} +1 -1
  288. package/dist/{orgAnalyticsConfig-DOceTdNp.js → orgAnalyticsConfig-BC4_sEmn.js} +1 -1
  289. package/dist/{orgAnalyticsConfig-CuWXijsr.cjs → orgAnalyticsConfig-DsGbyFhO.cjs} +1 -1
  290. package/dist/{search-DsQm_pAi.cjs → search--NZPZkK3.cjs} +5 -5
  291. package/dist/{search-BIomqYy6.d.ts → search-BLShhjvR.d.ts} +2 -2
  292. package/dist/{search-Bn4x-3TG.js → search-CxZl7iQF.js} +5 -5
  293. package/dist/{search-filter-types-B5xcaEit.d.ts → search-filter-types-DPgeG8FS.d.ts} +1 -1
  294. package/dist/{search-filter-types-Byd0lEUa.d.cts → search-filter-types-_mprCnBi.d.cts} +1 -1
  295. package/dist/{search-B_Hg-Es2.d.cts → search-y-ioX5Mz.d.cts} +1 -1
  296. package/dist/{searchContext-Cn-pCoDy.cjs → searchContext-C4Glr8Nv.cjs} +7 -7
  297. package/dist/{searchContext-fQDGSvUF.js → searchContext-VnjhV7Lk.js} +7 -7
  298. package/dist/{searchServiceAdapter-DrjFCiw8.cjs → searchServiceAdapter-DEv1tTn0.cjs} +1 -1
  299. package/dist/{searchServiceAdapter-BSPZOg1r.js → searchServiceAdapter-WyCU55NV.js} +1 -1
  300. package/dist/{sessionStorageContext-CXE7iHtP.cjs → sessionStorageContext-BJ05_j7l.cjs} +2 -2
  301. package/dist/{sessionStorageContext-C5MUl2zf.js → sessionStorageContext-Dp_bhXQP.js} +2 -2
  302. package/dist/{shopifyUrlContext-BSYWsoX9.js → shopifyUrlContext-CGqpJl1o.js} +2 -2
  303. package/dist/{shopifyUrlContext-7ppKx1jJ.cjs → shopifyUrlContext-Cob4L7Dt.cjs} +2 -2
  304. package/dist/{spiffyWidgets-DxGuuuCG.d.cts → spiffyWidgets-BuS00VaQ.d.cts} +1 -1
  305. package/dist/{spiffyWidgets-CdxRcXhW.d.ts → spiffyWidgets-GILaqHv6.d.ts} +1 -1
  306. package/dist/{systemSettingsContext-BdAe_3Ll.cjs → systemSettingsContext-BDKWrrco.cjs} +2 -2
  307. package/dist/{systemSettingsContext-Cjyo2o3N.js → systemSettingsContext-Dqng3YSZ.js} +2 -2
  308. package/dist/{test-types-ZuRAYwox.d.ts → test-types-EzMFw_U3.d.ts} +1 -1
  309. package/dist/{test-types-DQB1JqOf.d.cts → test-types-ThQiO_cc.d.cts} +1 -1
  310. package/dist/types/index.d.cts +2 -2
  311. package/dist/types/index.d.ts +2 -2
  312. package/dist/{types-DzwBmZHy.d.cts → types-BUeRbZUk.d.cts} +1 -1
  313. package/dist/{types-YvACLe2e.d.ts → types-CMuTSKrW.d.ts} +2 -2
  314. package/dist/{types-DIk0FLwd.js → types-CS0Hrzja.js} +1 -1
  315. package/dist/{types-DNLkuGWZ.cjs → types-CxObxLKs.cjs} +1 -1
  316. package/dist/{types-BCz-hOvv.d.ts → types-fsXBIQwO.d.ts} +1 -1
  317. package/dist/{types-Eip78dWv.d.cts → types-zuWLkBJ3.d.cts} +1 -1
  318. package/dist/types.d.cts +4 -4
  319. package/dist/types.d.ts +4 -4
  320. package/dist/{unsupportedProductExceptions-Dak4AD-t.cjs → unsupportedProductExceptions-CKiri_vO.cjs} +1 -1
  321. package/dist/{unsupportedProductExceptions--t7AQFou.js → unsupportedProductExceptions-ClxlJ6cU.js} +1 -1
  322. package/dist/{urlsParser-BV5yF8sa.cjs → urlsParser-D1nsJgQG.cjs} +1 -1
  323. package/dist/{urlsParser-DUgV_Qy9.js → urlsParser-DzEetiey.js} +1 -1
  324. package/dist/{useAmplitudeOperations-Cco_B3A5.cjs → useAmplitudeOperations-BSsyvkQ2.cjs} +2 -2
  325. package/dist/{useAmplitudeOperations-C6Osqkso.js → useAmplitudeOperations-BottjwT9.js} +2 -2
  326. package/dist/{useAppDetails-CGqtN6sJ.cjs → useAppDetails-BpiBxS_5.cjs} +4 -4
  327. package/dist/{useAppDetails-DwX2Rhed.js → useAppDetails-DDNIsM46.js} +4 -4
  328. package/dist/{useDebounce-BJqnCBcl.cjs → useDebounce-BaIp-A1W.cjs} +1 -1
  329. package/dist/{useDebounce-Ce31ph7m.js → useDebounce-CxPj9WmE.js} +1 -1
  330. package/dist/{useGraphQLConfig-ByOZb3oZ.js → useGraphQLConfig-DZ0ZannB.js} +2 -2
  331. package/dist/{useGraphQLConfig-DItL4BgM.cjs → useGraphQLConfig-Dw8dDh3T.cjs} +2 -2
  332. package/dist/{useIntersection-Czeo04jt.js → useIntersection-B4J9UhaG.js} +1 -1
  333. package/dist/{useIntersection-DnZNLcnu.cjs → useIntersection-DKWc5MY6.cjs} +1 -1
  334. package/dist/{useMessageInterceptor-C9p9No1n.cjs → useMessageInterceptor-CstX10ih.cjs} +1 -1
  335. package/dist/{useMessageInterceptor-tntd2rvB.js → useMessageInterceptor-D5oAekXn.js} +1 -1
  336. package/dist/{userIdentityContext-DBXoLrFu.d.cts → userIdentityContext-D2oFVFzo.d.cts} +1 -1
  337. package/dist/{userIdentityContext-C1HzZFb2.cjs → userIdentityContext-DPFkCSCu.cjs} +6 -6
  338. package/dist/{userIdentityContext-CDfosvOO.js → userIdentityContext-Z65zM-Ae.js} +5 -5
  339. package/dist/{userIdentityContext-W1OWF3cG.d.ts → userIdentityContext-wYRpgkaJ.d.ts} +1 -1
  340. package/dist/utils-2SWrJ12w.cjs +29 -0
  341. package/dist/utils-B1xLx9S8.d.ts +15 -0
  342. package/dist/utils-B3x_9JTY.d.cts +15 -0
  343. package/dist/utils-BZtSmwgh.d.cts +22 -0
  344. package/dist/{utils-C7S9YiFp.js → utils-Bcz5kAgP.js} +40 -2
  345. package/dist/utils-CEKzBcN2.js +27 -0
  346. package/dist/{utils-BA5HXmkL.cjs → utils-CMqFfqZx.cjs} +57 -1
  347. package/dist/{utils-CF13DfA1.js → utils-CVovRwlw.js} +4 -4
  348. package/dist/utils-CqBxIpEV.js +23 -0
  349. package/dist/utils-CsMbZmRw.cjs +33 -0
  350. package/dist/{utils-BTDw2aMx.cjs → utils-DzPSXtmD.cjs} +4 -4
  351. package/dist/utils-bxOCg2i9.d.ts +22 -0
  352. package/package.json +13 -1
  353. package/dist/api-DSFlctlc.cjs +0 -269
  354. package/dist/api-JTNjuOfc.js +0 -190
  355. package/dist/chatSearch-B5jMnCYX.js +0 -315
  356. package/dist/chatSearch-DWMiyWN0.cjs +0 -444
  357. package/dist/index-BCLaqnc2.d.cts +0 -689
  358. package/dist/index-Bs0QtkSu.d.ts +0 -689
  359. /package/dist/{AmplitudeOperations-CgIVPUlr.cjs → AmplitudeOperations-CNyxbBY6.cjs} +0 -0
  360. /package/dist/{AmplitudeOperations-YpyaR7Mp.js → AmplitudeOperations-Oa2efWtF.js} +0 -0
  361. /package/dist/{atomStore-C2OI76yN.js → atomStore-BS6qtYZF.js} +0 -0
  362. /package/dist/{atomStore-DWmT1six.cjs → atomStore-BjRyLFEx.cjs} +0 -0
  363. /package/dist/{types-DQoXDiso.js → types-DtTnp0o0.js} +0 -0
  364. /package/dist/{types-o3zWarRp.cjs → types-a8gm_IaQ.cjs} +0 -0
  365. /package/dist/{utilityTypes-CWJZb9BZ.js → utilityTypes-DynzxjK3.js} +0 -0
  366. /package/dist/{utilityTypes-YGiMSyV7.cjs → utilityTypes-xb8SjKSV.cjs} +0 -0
  367. /package/dist/{variantInfo-DRFLcGc7.cjs → variantInfo-B7IwRpCg.cjs} +0 -0
  368. /package/dist/{variantInfo-58JLeDJb.js → variantInfo-BtOYUGWa.js} +0 -0
@@ -1,444 +0,0 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_models = require('./models-ZpQcRZQK.cjs');
3
- const require_chatState = require('./chatState-BisPJd5g.cjs');
4
- const require_chat = require('./chat-D1Eat8Ih.cjs');
5
- const require_newOrgConfigAtom = require('./newOrgConfigAtom-DkSi45_Q.cjs');
6
- const require_types = require('./types-DNLkuGWZ.cjs');
7
- let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
8
- __spiffy_ai_commerce_api_client = require_chunk.__toESM(__spiffy_ai_commerce_api_client);
9
- let jotai = require("jotai");
10
- jotai = require_chunk.__toESM(jotai);
11
- let uuid = require("uuid");
12
- uuid = require_chunk.__toESM(uuid);
13
-
14
- //#region src/atoms/search/utils.ts
15
- const formatFilterDisplayName = (displayName) => {
16
- const sizes = [
17
- "xxxs",
18
- "xxs",
19
- "xs",
20
- "s",
21
- "m",
22
- "l",
23
- "xl",
24
- "xxl",
25
- "xxxl",
26
- "xxxxl"
27
- ];
28
- return displayName.toLowerCase().split(" ").map((word) => {
29
- if (sizes.includes(word)) return word.toUpperCase();
30
- return word.charAt(0).toUpperCase() + word.slice(1);
31
- }).join(" ").replace(/Iphone/g, "iPhone");
32
- };
33
-
34
- //#endregion
35
- //#region src/atoms/search/productFilters.ts
36
- const getPriceBucket = (price, bucketSize) => {
37
- return Math.floor(price / bucketSize) * bucketSize;
38
- };
39
- const isStringArray = (value) => {
40
- if (!Array.isArray(value)) return false;
41
- return value.every((item) => typeof item === "string");
42
- };
43
- const sortFilter = (filterConfig) => {
44
- if (filterConfig.type === "price") return (a, b) => Number(a.filterItemId) - Number(b.filterItemId);
45
- if (filterConfig.type === "dynamic") {
46
- if (filterConfig.sorting.type === "alphabetic") return (a, b) => a.displayName.localeCompare(b.displayName);
47
- if (filterConfig.sorting.type === "productCount") return (a, b) => a.productCount === b.productCount ? a.displayName.localeCompare(b.displayName) : b.productCount - a.productCount;
48
- if (filterConfig.sorting.type === "custom") {
49
- const sortedKeys = filterConfig.sorting.map;
50
- return (a, b) => {
51
- if (sortedKeys[a.displayName] && sortedKeys[b.displayName]) return sortedKeys[a.displayName] - sortedKeys[b.displayName];
52
- if (sortedKeys[a.displayName]) return -1;
53
- if (sortedKeys[b.displayName]) return 1;
54
- return b.productCount - a.productCount;
55
- };
56
- }
57
- }
58
- throw new Error("Invaalid search filter configuration");
59
- };
60
- var ProductFilters = class {
61
- static getFiltersForProducts(products, filterConfigs, selectedFilterOptions) {
62
- if (!products || products.length === 0) return [];
63
- return [...filterConfigs.map((filterConfig) => products.reduce((acc, product) => {
64
- if (filterConfig.type === "price") {
65
- const priceBucket = getPriceBucket(product.salePrice ?? product.originalPrice ?? 0, filterConfig.bucketSize);
66
- const current = acc.map[priceBucket] ?? {
67
- filterItemId: priceBucket,
68
- displayName: `$${priceBucket}-$${priceBucket + filterConfig.bucketSize}`,
69
- productCount: 0
70
- };
71
- acc.map[priceBucket] = {
72
- ...current,
73
- productCount: current.productCount + 1
74
- };
75
- return acc;
76
- }
77
- const attributeValues = (product.filters && product.filters?.[filterConfig.attribute]) ?? [];
78
- if (isStringArray(attributeValues)) attributeValues.forEach((val) => {
79
- const normalizedVal = val.toLowerCase();
80
- const current = acc.map[normalizedVal] ?? {
81
- filterItemId: normalizedVal,
82
- displayName: formatFilterDisplayName(val),
83
- productCount: 0
84
- };
85
- acc.map[normalizedVal] = {
86
- ...current,
87
- productCount: current.productCount + 1
88
- };
89
- });
90
- return acc;
91
- }, {
92
- filterConfig,
93
- map: {}
94
- })).map(({ filterConfig, map }) => ({
95
- filterId: filterConfig.filterId,
96
- displayName: filterConfig.displayName,
97
- items: Object.values(map).map((filter) => ({
98
- filterItemId: filter.filterItemId,
99
- displayName: filter.displayName,
100
- productCount: filter.productCount,
101
- isSelected: selectedFilterOptions.some((option) => option.id === `${filterConfig.filterId}:${filter.filterItemId}`) ?? false
102
- })).sort(sortFilter(filterConfig))
103
- }))];
104
- }
105
- static filterProducts(products, filterConfigs, selectedFilterOptions, additiveDynamicFilters = false) {
106
- const selectedFilters = filterConfigs.map((filterConfig) => ({
107
- filterConfig,
108
- hasSelectedOptions: selectedFilterOptions.some((option) => option.filterId === filterConfig.filterId)
109
- })).filter(({ hasSelectedOptions }) => hasSelectedOptions);
110
- return selectedFilterOptions.length === 0 ? products : products.filter((product) => selectedFilters.reduce((acc, selectedFilter) => {
111
- if (!acc) return acc;
112
- if (selectedFilter.filterConfig.type === "price") {
113
- const priceBucket = getPriceBucket(product.salePrice ?? product.originalPrice ?? 0, selectedFilter.filterConfig.bucketSize);
114
- if (!selectedFilterOptions.some((option) => option.id === `price:${priceBucket}`)) return false;
115
- }
116
- if (selectedFilter.filterConfig.type === "dynamic") {
117
- const { filterId, attribute } = selectedFilter.filterConfig;
118
- const attributeValues = product.filters?.[attribute];
119
- if (!isStringArray(attributeValues)) return false;
120
- if (selectedFilter.filterConfig.attribute === "dynamic" && !additiveDynamicFilters) {
121
- if (!selectedFilterOptions.filter((option) => option.filterId === filterId).map((option) => option.filterItemId.toLowerCase()).every((selectedValue) => attributeValues.some((val) => val.toLowerCase() === selectedValue))) return false;
122
- } else if (!attributeValues.some((val) => selectedFilterOptions.some((option) => option.id === `${filterId}:${val.toLowerCase()}`))) return false;
123
- }
124
- return true;
125
- }, true));
126
- }
127
- };
128
-
129
- //#endregion
130
- //#region src/atoms/search/productSorter.ts
131
- var ProductSorter = class {
132
- static sort(products, sorting) {
133
- switch (sorting) {
134
- case require_types.ProductSorting.PRICE_ASC: return [...products].sort((p1, p2) => (p1.salePrice ?? p1.originalPrice ?? 0) - (p2.salePrice ?? p2.originalPrice ?? 0));
135
- case require_types.ProductSorting.PRICE_DESC: return [...products].sort((p1, p2) => (p2.salePrice ?? p2.originalPrice ?? 0) - (p1.salePrice ?? p1.originalPrice ?? 0));
136
- default: return products;
137
- }
138
- }
139
- };
140
-
141
- //#endregion
142
- //#region src/atoms/search/chatSearch.ts
143
- const chatSearchStateAtom = (0, jotai.atom)("entrypoint");
144
- const chatSearchHasProductsAtom = (0, jotai.atom)(false);
145
- const chatSearchProductSortingAtom = (0, jotai.atom)(require_types.ProductSorting.FEATURED);
146
- const filterProductList = (message) => message.type === require_models.MessageType.Product && message.metadata.isForGrid === true;
147
- const filterFilterList = (message) => message.type === require_models.MessageType.ProductSearchFilter;
148
- const chatSearchIsLoadingAtom = (0, jotai.atom)(false);
149
- const buildChatSearchTurn = (messages) => {
150
- const queryMessage = messages.find((message) => message.type === require_models.MessageType.ProductSearch);
151
- if (!queryMessage) return null;
152
- const { generatedQuery, productCount } = queryMessage.metadata ?? {};
153
- const productList = messages.filter(filterProductList).map((message) => message.metadata);
154
- const filterList = messages.filter(filterFilterList).map((message) => message.metadata.filterName);
155
- return [queryMessage.id, {
156
- id: queryMessage.id,
157
- generatedQuery,
158
- productCount: productCount || productList.length,
159
- productList,
160
- filterList,
161
- messages
162
- }];
163
- };
164
- const chatSearchFilterConfigAtom = (0, jotai.atom)((get) => {
165
- return get(require_newOrgConfigAtom.newOrgConfigAtom)?.frontendConfig?.uiConfigs?.searchConfig?.searchFilterConfig || [];
166
- });
167
- const searchMapAtom = (0, jotai.atom)((get) => {
168
- const messages = get(require_chatState.messagesAtom);
169
- return Object.fromEntries(messages.map(buildChatSearchTurn).filter((v) => v !== null));
170
- });
171
- const internalChatSearchParamsAtom = (0, jotai.atom)({
172
- id: null,
173
- query: null
174
- });
175
- const selectedFilterOptionsAtom = (0, jotai.atom)([]);
176
- const additiveDynamicFiltersAtom = (0, jotai.atom)((get) => {
177
- return get(require_newOrgConfigAtom.newOrgConfigAtom)?.frontendConfig?.uiConfigs?.searchConfig?.additiveDynamicFilters ?? false;
178
- });
179
- const createChatSearchFilterOption = (filterId, filterItemId, displayName) => ({
180
- id: `${filterId}:${filterItemId}`,
181
- displayName,
182
- filterId,
183
- filterItemId
184
- });
185
- const handleSearchAtom = (0, jotai.atom)(null, (get, set, message) => {
186
- if (message.type !== require_models.MessageType.Search) return;
187
- const querySearch = message.metadata.searchTerm;
188
- set(require_chatState.replyEventCategoryAtom, __spiffy_ai_commerce_api_client.UserEventCategory.Search);
189
- set(require_chatState.userQueryAtom, querySearch);
190
- set(require_chatState.messagesAtom, [...get(require_chatState.messagesAtom), [message]]);
191
- set(require_chatState.userHasRepliedAtom, true);
192
- set(require_chat.queueUserEventAtom, {
193
- eventId: message.id,
194
- category: __spiffy_ai_commerce_api_client.UserEventCategory.Search,
195
- createdAt: message.createdAt,
196
- attributes: {
197
- searchTerm: message.metadata.searchTerm,
198
- selectedFilters: message.metadata.selectedFilters
199
- }
200
- });
201
- });
202
- const chatSearchParamsAtom = (0, jotai.atom)((get) => get(internalChatSearchParamsAtom), (_, set, value) => {
203
- set(internalChatSearchParamsAtom, value);
204
- });
205
- const chatSearchQueryAtom = (0, jotai.atom)((get) => get(chatSearchParamsAtom)?.query ?? null, (get, set, value) => {
206
- const searchParams = get(chatSearchParamsAtom);
207
- set(chatSearchParamsAtom, {
208
- id: searchParams.id,
209
- query: value
210
- });
211
- });
212
- const chatSearchIdAtom = (0, jotai.atom)((get) => get(chatSearchParamsAtom)?.id ?? null, (get, set, value) => {
213
- const searchParams = get(chatSearchParamsAtom);
214
- set(chatSearchParamsAtom, {
215
- id: value,
216
- query: searchParams.query
217
- });
218
- });
219
- const ChatSearchTurnAtom = (0, jotai.atom)((get) => {
220
- const searchFilterConfig = get(chatSearchFilterConfigAtom);
221
- const searchMap = get(searchMapAtom);
222
- const chatSearchId = get(chatSearchIdAtom);
223
- if (!chatSearchId) return null;
224
- const ChatSearchTurn = searchMap[chatSearchId];
225
- if (!ChatSearchTurn) return null;
226
- const productSorting = get(chatSearchProductSortingAtom);
227
- const selectedFilterOptions = get(selectedFilterOptionsAtom);
228
- const additiveDynamicFilters = get(additiveDynamicFiltersAtom);
229
- const filteredProducts = ProductFilters.filterProducts(ChatSearchTurn.productList, searchFilterConfig, selectedFilterOptions, additiveDynamicFilters);
230
- const filteredAndSortedProducts = ProductSorter.sort(filteredProducts, productSorting);
231
- return {
232
- ...searchMap[chatSearchId],
233
- productList: filteredAndSortedProducts,
234
- productCount: filteredAndSortedProducts.length
235
- };
236
- });
237
- const chatSearchProducts = (0, jotai.atom)((get) => {
238
- return get(ChatSearchTurnAtom)?.productList ?? [];
239
- });
240
- const chatSearchFiltersAtom = (0, jotai.atom)((get) => {
241
- const searchFilterConfig = get(chatSearchFilterConfigAtom);
242
- const searchMap = get(searchMapAtom);
243
- const chatSearchId = get(chatSearchIdAtom);
244
- if (chatSearchId && searchMap[chatSearchId]) {
245
- const products = searchMap[chatSearchId].productList;
246
- const selectedFilterOptions = get(selectedFilterOptionsAtom);
247
- return ProductFilters.getFiltersForProducts(products, searchFilterConfig, selectedFilterOptions);
248
- }
249
- return [];
250
- });
251
- const setSearchParams = (query) => {
252
- const url = new URL(window.location.href);
253
- url.searchParams.set("es", "true");
254
- url.searchParams.set("esq", query);
255
- window.history.pushState({}, "", url);
256
- };
257
- const getSearchParamsAtom = (0, jotai.atom)(() => {
258
- const params = new URLSearchParams(window.location.search);
259
- return {
260
- es: params.get("es"),
261
- esq: params.get("esq")
262
- };
263
- });
264
- const initiateChatSearchAtom = (0, jotai.atom)(null, (_, set, query) => {
265
- set(chatSearchIsLoadingAtom, true);
266
- const url = new URL(window.location.href);
267
- url.searchParams.set("es", "true");
268
- url.searchParams.set("esq", query);
269
- window.history.pushState({}, "", url);
270
- window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
271
- set(chatSearchParamsAtom, {
272
- id: null,
273
- query
274
- });
275
- set(handleSearchAtom, {
276
- id: (0, uuid.v4)(),
277
- role: require_models.MessageRole.User,
278
- type: require_models.MessageType.Search,
279
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
280
- metadata: {
281
- searchTerm: query,
282
- selectedFilters: []
283
- }
284
- });
285
- });
286
- const handleSearchResultsAtom = (0, jotai.atom)(null, (get, set, message) => {
287
- if (!message || message.type !== require_models.MessageType.ProductSearch) return;
288
- const { productCount, generatedQuery } = message.metadata;
289
- if (productCount !== 0) {
290
- set(selectedFilterOptionsAtom, []);
291
- set(chatSearchStateAtom, "product-page");
292
- const currentSearchParams = get(chatSearchParamsAtom);
293
- const url = new URL(window.location.href);
294
- url.searchParams.set("es", "true");
295
- url.searchParams.set("esq", generatedQuery);
296
- url.searchParams.set("esi", message.id);
297
- window.history.pushState({}, "", url);
298
- if (currentSearchParams.id === null) window.history.replaceState(null, "", url);
299
- else window.history.pushState(null, "", url);
300
- set(chatSearchParamsAtom, {
301
- id: message.id,
302
- query: generatedQuery
303
- });
304
- }
305
- });
306
- const setChatSearchParamsAtom = (0, jotai.atom)(null, (_, set, query) => {
307
- const url = new URL(window.location.href);
308
- url.searchParams.set("es", "true");
309
- url.searchParams.set("esq", query);
310
- window.history.pushState({}, "", url);
311
- set(chatSearchParamsAtom, {
312
- id: null,
313
- query
314
- });
315
- });
316
-
317
- //#endregion
318
- Object.defineProperty(exports, 'ChatSearchTurnAtom', {
319
- enumerable: true,
320
- get: function () {
321
- return ChatSearchTurnAtom;
322
- }
323
- });
324
- Object.defineProperty(exports, 'ProductFilters', {
325
- enumerable: true,
326
- get: function () {
327
- return ProductFilters;
328
- }
329
- });
330
- Object.defineProperty(exports, 'ProductSorter', {
331
- enumerable: true,
332
- get: function () {
333
- return ProductSorter;
334
- }
335
- });
336
- Object.defineProperty(exports, 'additiveDynamicFiltersAtom', {
337
- enumerable: true,
338
- get: function () {
339
- return additiveDynamicFiltersAtom;
340
- }
341
- });
342
- Object.defineProperty(exports, 'chatSearchFiltersAtom', {
343
- enumerable: true,
344
- get: function () {
345
- return chatSearchFiltersAtom;
346
- }
347
- });
348
- Object.defineProperty(exports, 'chatSearchHasProductsAtom', {
349
- enumerable: true,
350
- get: function () {
351
- return chatSearchHasProductsAtom;
352
- }
353
- });
354
- Object.defineProperty(exports, 'chatSearchIdAtom', {
355
- enumerable: true,
356
- get: function () {
357
- return chatSearchIdAtom;
358
- }
359
- });
360
- Object.defineProperty(exports, 'chatSearchIsLoadingAtom', {
361
- enumerable: true,
362
- get: function () {
363
- return chatSearchIsLoadingAtom;
364
- }
365
- });
366
- Object.defineProperty(exports, 'chatSearchParamsAtom', {
367
- enumerable: true,
368
- get: function () {
369
- return chatSearchParamsAtom;
370
- }
371
- });
372
- Object.defineProperty(exports, 'chatSearchProductSortingAtom', {
373
- enumerable: true,
374
- get: function () {
375
- return chatSearchProductSortingAtom;
376
- }
377
- });
378
- Object.defineProperty(exports, 'chatSearchProducts', {
379
- enumerable: true,
380
- get: function () {
381
- return chatSearchProducts;
382
- }
383
- });
384
- Object.defineProperty(exports, 'chatSearchQueryAtom', {
385
- enumerable: true,
386
- get: function () {
387
- return chatSearchQueryAtom;
388
- }
389
- });
390
- Object.defineProperty(exports, 'chatSearchStateAtom', {
391
- enumerable: true,
392
- get: function () {
393
- return chatSearchStateAtom;
394
- }
395
- });
396
- Object.defineProperty(exports, 'createChatSearchFilterOption', {
397
- enumerable: true,
398
- get: function () {
399
- return createChatSearchFilterOption;
400
- }
401
- });
402
- Object.defineProperty(exports, 'formatFilterDisplayName', {
403
- enumerable: true,
404
- get: function () {
405
- return formatFilterDisplayName;
406
- }
407
- });
408
- Object.defineProperty(exports, 'getSearchParamsAtom', {
409
- enumerable: true,
410
- get: function () {
411
- return getSearchParamsAtom;
412
- }
413
- });
414
- Object.defineProperty(exports, 'handleSearchResultsAtom', {
415
- enumerable: true,
416
- get: function () {
417
- return handleSearchResultsAtom;
418
- }
419
- });
420
- Object.defineProperty(exports, 'initiateChatSearchAtom', {
421
- enumerable: true,
422
- get: function () {
423
- return initiateChatSearchAtom;
424
- }
425
- });
426
- Object.defineProperty(exports, 'selectedFilterOptionsAtom', {
427
- enumerable: true,
428
- get: function () {
429
- return selectedFilterOptionsAtom;
430
- }
431
- });
432
- Object.defineProperty(exports, 'setChatSearchParamsAtom', {
433
- enumerable: true,
434
- get: function () {
435
- return setChatSearchParamsAtom;
436
- }
437
- });
438
- Object.defineProperty(exports, 'setSearchParams', {
439
- enumerable: true,
440
- get: function () {
441
- return setSearchParams;
442
- }
443
- });
444
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFNlYXJjaC1EV01peVdOMC5janMiLCJuYW1lcyI6WyJQcm9kdWN0U29ydGluZyIsIlByb2R1Y3RTb3J0aW5nIiwiTWVzc2FnZVR5cGUiLCJuZXdPcmdDb25maWdBdG9tIiwibWVzc2FnZXNBdG9tIiwicmVwbHlFdmVudENhdGVnb3J5QXRvbSIsIlVzZXJFdmVudENhdGVnb3J5IiwidXNlclF1ZXJ5QXRvbSIsInVzZXJIYXNSZXBsaWVkQXRvbSIsInF1ZXVlVXNlckV2ZW50QXRvbSIsIk1lc3NhZ2VSb2xlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2F0b21zL3NlYXJjaC91dGlscy50cyIsIi4uL3NyYy9hdG9tcy9zZWFyY2gvcHJvZHVjdEZpbHRlcnMudHMiLCIuLi9zcmMvYXRvbXMvc2VhcmNoL3Byb2R1Y3RTb3J0ZXIudHMiLCIuLi9zcmMvYXRvbXMvc2VhcmNoL2NoYXRTZWFyY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGZvcm1hdEZpbHRlckRpc3BsYXlOYW1lID0gKGRpc3BsYXlOYW1lOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgc2l6ZXMgPSBbJ3h4eHMnLCAneHhzJywgJ3hzJywgJ3MnLCAnbScsICdsJywgJ3hsJywgJ3h4bCcsICd4eHhsJywgJ3h4eHhsJ107XG5cbiAgY29uc3QgcHJvY2Vzc2VkV29yZHMgPSBkaXNwbGF5TmFtZVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnNwbGl0KCcgJylcbiAgICAubWFwKCh3b3JkKSA9PiB7XG4gICAgICBpZiAoc2l6ZXMuaW5jbHVkZXMod29yZCkpIHtcbiAgICAgICAgcmV0dXJuIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKTtcbiAgICB9KTtcblxuICBjb25zdCB0aXRsZUNhc2VkTmFtZSA9IHByb2Nlc3NlZFdvcmRzLmpvaW4oJyAnKTtcblxuICAvLyBGaW5hbCByZXBsYWNlbWVudHMgZm9yIHNwZWNpYWwgY2FzZXNcbiAgcmV0dXJuIHRpdGxlQ2FzZWROYW1lLnJlcGxhY2UoL0lwaG9uZS9nLCAnaVBob25lJyk7XG59O1xuIiwiaW1wb3J0IHsgUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRmlsdGVyQXR0cmlidXRlIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzJztcbmltcG9ydCB7IFNlbGVjdGVkRmlsdGVyT3B0aW9uIH0gZnJvbSAnc3JjL2F0b21zL3NlYXJjaC9zZWFyY2hBUEknO1xuaW1wb3J0IHsgQ2hhdFNlYXJjaEZpbHRlciwgQ2hhdFNlYXJjaEZpbHRlckl0ZW0gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGZvcm1hdEZpbHRlckRpc3BsYXlOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGdldFByaWNlQnVja2V0ID0gKHByaWNlOiBudW1iZXIsIGJ1Y2tldFNpemU6IG51bWJlcikgPT4ge1xuICBjb25zdCBidWNrZXQgPSBNYXRoLmZsb29yKHByaWNlIC8gYnVja2V0U2l6ZSk7XG4gIHJldHVybiBidWNrZXQgKiBidWNrZXRTaXplO1xufTtcblxuY29uc3QgaXNTdHJpbmdBcnJheSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZ1tdID0+IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyk7XG59O1xuXG50eXBlIEZpbHRlclNvcnRGdW5jdGlvbiA9IChhOiBDaGF0U2VhcmNoRmlsdGVySXRlbSwgYjogQ2hhdFNlYXJjaEZpbHRlckl0ZW0pID0+IG51bWJlcjtcblxuY29uc3Qgc29ydEZpbHRlciA9IChmaWx0ZXJDb25maWc6IEZpbHRlckF0dHJpYnV0ZSk6IEZpbHRlclNvcnRGdW5jdGlvbiA9PiB7XG4gIGlmIChmaWx0ZXJDb25maWcudHlwZSA9PT0gJ3ByaWNlJykge1xuICAgIHJldHVybiAoYSwgYikgPT4gTnVtYmVyKGEuZmlsdGVySXRlbUlkKSAtIE51bWJlcihiLmZpbHRlckl0ZW1JZCk7XG4gIH1cbiAgaWYgKGZpbHRlckNvbmZpZy50eXBlID09PSAnZHluYW1pYycpIHtcbiAgICBpZiAoZmlsdGVyQ29uZmlnLnNvcnRpbmcudHlwZSA9PT0gJ2FscGhhYmV0aWMnKSB7XG4gICAgICByZXR1cm4gKGEsIGIpID0+IGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKTtcbiAgICB9XG4gICAgLy8gU29ydCBieSB0aGUgbnVtYmVyIG9mIHByb2R1Y3RzLCBpZiB0aGV5IG1hdGNoLCBzb3J0IGJ5IGFscGhhYmV0aWNhbFxuICAgIGlmIChmaWx0ZXJDb25maWcuc29ydGluZy50eXBlID09PSAncHJvZHVjdENvdW50Jykge1xuICAgICAgcmV0dXJuIChhLCBiKSA9PlxuICAgICAgICBhLnByb2R1Y3RDb3VudCA9PT0gYi5wcm9kdWN0Q291bnRcbiAgICAgICAgICA/IGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKVxuICAgICAgICAgIDogYi5wcm9kdWN0Q291bnQgLSBhLnByb2R1Y3RDb3VudDtcbiAgICB9XG4gICAgaWYgKGZpbHRlckNvbmZpZy5zb3J0aW5nLnR5cGUgPT09ICdjdXN0b20nKSB7XG4gICAgICBjb25zdCBzb3J0ZWRLZXlzID0gZmlsdGVyQ29uZmlnLnNvcnRpbmcubWFwO1xuICAgICAgcmV0dXJuIChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChzb3J0ZWRLZXlzW2EuZGlzcGxheU5hbWVdICYmIHNvcnRlZEtleXNbYi5kaXNwbGF5TmFtZV0pIHtcbiAgICAgICAgICAvLyBJZiBib3RoIGFyZSBpbiB0aGUgc29ydGVkS2V5cywgc29ydCBieSB0aGUgaW5kZXhcbiAgICAgICAgICByZXR1cm4gc29ydGVkS2V5c1thLmRpc3BsYXlOYW1lXSAtIHNvcnRlZEtleXNbYi5kaXNwbGF5TmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgb25seSAnYScgaXMgaW4gdGhlIHNvcnRlZEtleXMsIHB1dCBpdCBiZWZvcmUgdGhlIG90aGVyXG4gICAgICAgIGlmIChzb3J0ZWRLZXlzW2EuZGlzcGxheU5hbWVdKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG9ubHkgJ2InIGlzIGluIHRoZSBzb3J0ZWRLZXlzLCBwdXQgaXQgYmVmb3JlIHRoZSBvdGhlclxuICAgICAgICBpZiAoc29ydGVkS2V5c1tiLmRpc3BsYXlOYW1lXSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5laXRoZXIgYXJlIGluIHRoZSBzb3J0ZWRLZXlzLCBzb3J0IGJ5IHByb2R1Y3RDb3VudFxuICAgICAgICByZXR1cm4gYi5wcm9kdWN0Q291bnQgLSBhLnByb2R1Y3RDb3VudDtcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcignSW52YWFsaWQgc2VhcmNoIGZpbHRlciBjb25maWd1cmF0aW9uJyk7XG59O1xuXG5leHBvcnQgY2xhc3MgUHJvZHVjdEZpbHRlcnMge1xuICBzdGF0aWMgZ2V0RmlsdGVyc0ZvclByb2R1Y3RzKFxuICAgIHByb2R1Y3RzOiBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ11bXSxcbiAgICBmaWx0ZXJDb25maWdzOiBGaWx0ZXJBdHRyaWJ1dGVbXSxcbiAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnM6IFNlbGVjdGVkRmlsdGVyT3B0aW9uW10sXG4gICk6IENoYXRTZWFyY2hGaWx0ZXJbXSB7XG4gICAgaWYgKCFwcm9kdWN0cyB8fCBwcm9kdWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyQ29uZmlncy5tYXAoKGZpbHRlckNvbmZpZykgPT5cbiAgICAgIHByb2R1Y3RzLnJlZHVjZShcbiAgICAgICAgKGFjYywgcHJvZHVjdCkgPT4ge1xuICAgICAgICAgIC8vIFByaWNlIGhhcyBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGUgZmlsdGVyc1xuICAgICAgICAgIGlmIChmaWx0ZXJDb25maWcudHlwZSA9PT0gJ3ByaWNlJykge1xuICAgICAgICAgICAgY29uc3QgcHJpY2VCdWNrZXQgPSBnZXRQcmljZUJ1Y2tldChcbiAgICAgICAgICAgICAgcHJvZHVjdC5zYWxlUHJpY2UgPz8gcHJvZHVjdC5vcmlnaW5hbFByaWNlID8/IDAsXG4gICAgICAgICAgICAgIGZpbHRlckNvbmZpZy5idWNrZXRTaXplLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhY2MubWFwW3ByaWNlQnVja2V0XSA/PyB7XG4gICAgICAgICAgICAgIGZpbHRlckl0ZW1JZDogcHJpY2VCdWNrZXQsXG4gICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJCR7cHJpY2VCdWNrZXR9LSQke3ByaWNlQnVja2V0ICsgZmlsdGVyQ29uZmlnLmJ1Y2tldFNpemV9YCxcbiAgICAgICAgICAgICAgcHJvZHVjdENvdW50OiAwLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGFjYy5tYXBbcHJpY2VCdWNrZXRdID0geyAuLi5jdXJyZW50LCBwcm9kdWN0Q291bnQ6IGN1cnJlbnQucHJvZHVjdENvdW50ICsgMSB9O1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBc3N1bWUgdGhhdCB0aGUgXCJhdHRyaWJ1dGVcIiBpcyBhbiBhcnJheSBvZiB2YWx1ZXNcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZXMgPVxuICAgICAgICAgICAgKHByb2R1Y3QuZmlsdGVycyAmJiBwcm9kdWN0LmZpbHRlcnM/LltmaWx0ZXJDb25maWcuYXR0cmlidXRlXSkgPz8gW107XG4gICAgICAgICAgaWYgKGlzU3RyaW5nQXJyYXkoYXR0cmlidXRlVmFsdWVzKSkge1xuICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsID0gdmFsLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhY2MubWFwW25vcm1hbGl6ZWRWYWxdID8/IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJJdGVtSWQ6IG5vcm1hbGl6ZWRWYWwsXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IGZvcm1hdEZpbHRlckRpc3BsYXlOYW1lKHZhbCksIC8vIEtlZXAgb3JpZ2luYWwgY2FzZSBmb3IgZGlzcGxheVxuICAgICAgICAgICAgICAgIHByb2R1Y3RDb3VudDogMCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYWNjLm1hcFtub3JtYWxpemVkVmFsXSA9IHsgLi4uY3VycmVudCwgcHJvZHVjdENvdW50OiBjdXJyZW50LnByb2R1Y3RDb3VudCArIDEgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWx0ZXJDb25maWcsXG4gICAgICAgICAgbWFwOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBDaGF0U2VhcmNoRmlsdGVySXRlbT4sXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZEZpbHRlcnM6IENoYXRTZWFyY2hGaWx0ZXJbXSA9IGZpbHRlcnMubWFwKCh7IGZpbHRlckNvbmZpZywgbWFwIH0pID0+ICh7XG4gICAgICBmaWx0ZXJJZDogZmlsdGVyQ29uZmlnLmZpbHRlcklkLFxuICAgICAgZGlzcGxheU5hbWU6IGZpbHRlckNvbmZpZy5kaXNwbGF5TmFtZSxcbiAgICAgIGl0ZW1zOiBPYmplY3QudmFsdWVzKG1hcClcbiAgICAgICAgLm1hcCgoZmlsdGVyKSA9PiAoe1xuICAgICAgICAgIGZpbHRlckl0ZW1JZDogZmlsdGVyLmZpbHRlckl0ZW1JZCxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogZmlsdGVyLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIHByb2R1Y3RDb3VudDogZmlsdGVyLnByb2R1Y3RDb3VudCxcbiAgICAgICAgICBpc1NlbGVjdGVkOlxuICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gYCR7ZmlsdGVyQ29uZmlnLmZpbHRlcklkfToke2ZpbHRlci5maWx0ZXJJdGVtSWR9YCxcbiAgICAgICAgICAgICkgPz8gZmFsc2UsXG4gICAgICAgIH0pKVxuICAgICAgICAuc29ydChzb3J0RmlsdGVyKGZpbHRlckNvbmZpZykpLFxuICAgIH0pKTtcblxuICAgIHJldHVybiBbLi4udHJhbnNmb3JtZWRGaWx0ZXJzXTtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXJQcm9kdWN0cyhcbiAgICBwcm9kdWN0czogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddW10sXG4gICAgZmlsdGVyQ29uZmlnczogRmlsdGVyQXR0cmlidXRlW10sXG4gICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOiBTZWxlY3RlZEZpbHRlck9wdGlvbltdLFxuICAgIGFkZGl0aXZlRHluYW1pY0ZpbHRlcnMgPSBmYWxzZSwgLy8gU2V0IHRoaXMgdG8gdHJ1ZSB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBiZWhhdmlvciB3aGVyZSBzdGFja2luZyBmaWx0ZXJzIGhhcyBPUiBsb2dpYy5cbiAgKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJzID0gZmlsdGVyQ29uZmlnc1xuICAgICAgLm1hcCgoZmlsdGVyQ29uZmlnKSA9PiAoe1xuICAgICAgICBmaWx0ZXJDb25maWcsXG4gICAgICAgIGhhc1NlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlcklkID09PSBmaWx0ZXJDb25maWcuZmlsdGVySWQsXG4gICAgICAgICksXG4gICAgICB9KSlcbiAgICAgIC5maWx0ZXIoKHsgaGFzU2VsZWN0ZWRPcHRpb25zIH0pID0+IGhhc1NlbGVjdGVkT3B0aW9ucyk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICAgID8gcHJvZHVjdHNcbiAgICAgIDogcHJvZHVjdHMuZmlsdGVyKChwcm9kdWN0KSA9PlxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVycy5yZWR1Y2UoKGFjYywgc2VsZWN0ZWRGaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIC8vIEZpbmRpbmcgb25lIGZhbHNlIHJlbW92ZXMgdGhlIHByb2R1Y3RcbiAgICAgICAgICAgIGlmICghYWNjKSB7XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQcmljZSBpcyBzcGVjaWFsXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLnR5cGUgPT09ICdwcmljZScpIHtcbiAgICAgICAgICAgICAgY29uc3QgcHJpY2VCdWNrZXQgPSBnZXRQcmljZUJ1Y2tldChcbiAgICAgICAgICAgICAgICBwcm9kdWN0LnNhbGVQcmljZSA/PyBwcm9kdWN0Lm9yaWdpbmFsUHJpY2UgPz8gMCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWcuYnVja2V0U2l6ZSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlc1ByaWNlRmlsdGVyID0gc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSBgcHJpY2U6JHtwcmljZUJ1Y2tldH1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAoIW1hdGNoZXNQcmljZUZpbHRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLnR5cGUgPT09ICdkeW5hbWljJykge1xuICAgICAgICAgICAgICAvLyBkeW5hbWljIGlzIG1pc2xlYWRpbmcgaGVyZS4gSXRzIG5vdCBqdXN0IGR5bmFtaWMgZmlsdGVycywgYnV0IHN0YXRpYyBmaWx0ZXJzIGJlY2F1c2UgdGhlIGNvbmZpZyBjb3VudHMgc3RhdGljIGZpbHRlcnMgYXMgdHlwZTogZHluYW1pYy5cbiAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJJZCwgYXR0cmlidXRlIH0gPSBzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWc7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlcyA9IHByb2R1Y3QuZmlsdGVycz8uW2F0dHJpYnV0ZV07XG5cbiAgICAgICAgICAgICAgaWYgKCFpc1N0cmluZ0FycmF5KGF0dHJpYnV0ZVZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBpc0R5bmFtaWNGaWx0ZXIgPSBzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWcuYXR0cmlidXRlID09PSAnZHluYW1pYyc7IC8vIFRydWUgZHluYW1pYyBmaWx0ZXJzICh0aGUgb25lcyB0aGF0IGFwcGVhciBiZW5lYXRoIHRoZSBzZWFyY2ggaW5wdXQpXG4gICAgICAgICAgICAgIGNvbnN0IGlzU3VidHJhY3RpdmVMb2dpYyA9IGlzRHluYW1pY0ZpbHRlciAmJiAhYWRkaXRpdmVEeW5hbWljRmlsdGVycztcblxuICAgICAgICAgICAgICBpZiAoaXNTdWJ0cmFjdGl2ZUxvZ2ljKSB7XG4gICAgICAgICAgICAgICAgLy8gQU5EIGxvZ2ljIGZvciBzdWJ0cmFjdGl2ZSBkeW5hbWljIGZpbHRlcnMgYW5kIGJldHdlZW4gc3RhdGljIGZpbHRlciBjYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zRm9yVGhpc0ZpbHRlciA9IHNlbGVjdGVkRmlsdGVyT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uZmlsdGVySWQgPT09IGZpbHRlcklkKVxuICAgICAgICAgICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uZmlsdGVySXRlbUlkLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzQWxsU2VsZWN0ZWRWYWx1ZXMgPSBzZWxlY3RlZE9wdGlvbnNGb3JUaGlzRmlsdGVyLmV2ZXJ5KChzZWxlY3RlZFZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzLnNvbWUoKHZhbCkgPT4gdmFsLnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWhhc0FsbFNlbGVjdGVkVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIE9SIGxvZ2ljIGZvciBzdGF0aWMgZmlsdGVycyBpbiB0aGUgc2lkZWJhciB3aXRoaW4gYSBjYXRlZ29yeS5cbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gYXR0cmlidXRlVmFsdWVzLnNvbWUoKHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IGAke2ZpbHRlcklkfToke3ZhbC50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9LCB0cnVlKSxcbiAgICAgICAgKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgUHJvZHVjdFNvcnRpbmcgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3RTb3J0ZXIge1xuICBzdGF0aWMgc29ydChwcm9kdWN0czogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddW10sIHNvcnRpbmc6IFByb2R1Y3RTb3J0aW5nKSB7XG4gICAgc3dpdGNoIChzb3J0aW5nKSB7XG4gICAgICBjYXNlIFByb2R1Y3RTb3J0aW5nLlBSSUNFX0FTQzpcbiAgICAgICAgcmV0dXJuIFsuLi5wcm9kdWN0c10uc29ydChcbiAgICAgICAgICAocDEsIHAyKSA9PlxuICAgICAgICAgICAgKHAxLnNhbGVQcmljZSA/PyBwMS5vcmlnaW5hbFByaWNlID8/IDApIC0gKHAyLnNhbGVQcmljZSA/PyBwMi5vcmlnaW5hbFByaWNlID8/IDApLFxuICAgICAgICApO1xuXG4gICAgICBjYXNlIFByb2R1Y3RTb3J0aW5nLlBSSUNFX0RFU0M6XG4gICAgICAgIHJldHVybiBbLi4ucHJvZHVjdHNdLnNvcnQoXG4gICAgICAgICAgKHAxLCBwMikgPT5cbiAgICAgICAgICAgIChwMi5zYWxlUHJpY2UgPz8gcDIub3JpZ2luYWxQcmljZSA/PyAwKSAtIChwMS5zYWxlUHJpY2UgPz8gcDEub3JpZ2luYWxQcmljZSA/PyAwKSxcbiAgICAgICAgKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RzO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50XCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7XG4gIE1lc3NhZ2UsXG4gIE1lc3NhZ2VSb2xlLFxuICBNZXNzYWdlVHlwZSxcbiAgUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyxcbn0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVwbHlFdmVudENhdGVnb3J5QXRvbSxcbiAgdXNlckhhc1JlcGxpZWRBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2NoYXRcIjtcbmltcG9ydCB7IHF1ZXVlVXNlckV2ZW50QXRvbSB9IGZyb20gXCIuLi9jaGF0L21lc3NhZ2VRdWV1ZVwiO1xuaW1wb3J0IHsgbmV3T3JnQ29uZmlnQXRvbSB9IGZyb20gXCIuLi9vcmdcIjtcbmltcG9ydCB7IFByb2R1Y3RGaWx0ZXJzIH0gZnJvbSBcIi4vcHJvZHVjdEZpbHRlcnNcIjtcbmltcG9ydCB7IFByb2R1Y3RTb3J0ZXIgfSBmcm9tIFwiLi9wcm9kdWN0U29ydGVyXCI7XG5pbXBvcnQgeyBDaGF0U2VhcmNoU3RhdGVUeXBlLCBQcm9kdWN0U29ydGluZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8vIE5PVEU6XG4vLyBUaGlzIGlzIGEgbGVnYWN5IHZlcnNpb24gb2Ygc2VhcmNoIHRoYXQgbmVlZHMgdG8gYmUgZGVjb3VwbGVkIGFuZCByZW1vdmVkLlxuLy8gdGhlIG5ldyBzZWFyY2gudHMgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeSBpcyBsaWtlbHkgd2hhdCB5b3UncmUgbG9va2luZyBmb3IuXG5cbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoU3RhdGVBdG9tID0gYXRvbTxDaGF0U2VhcmNoU3RhdGVUeXBlPihcImVudHJ5cG9pbnRcIik7XG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaEhhc1Byb2R1Y3RzQXRvbSA9IGF0b208Ym9vbGVhbj4oZmFsc2UpO1xuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hQcm9kdWN0U29ydGluZ0F0b20gPSBhdG9tPFByb2R1Y3RTb3J0aW5nPihcbiAgUHJvZHVjdFNvcnRpbmcuRkVBVFVSRURcbik7XG5cbmNvbnN0IGZpbHRlclByb2R1Y3RMaXN0ID0gKG1lc3NhZ2U6IE1lc3NhZ2UpID0+XG4gIG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdCAmJiBtZXNzYWdlLm1ldGFkYXRhLmlzRm9yR3JpZCA9PT0gdHJ1ZTtcbmNvbnN0IGZpbHRlckZpbHRlckxpc3QgPSAobWVzc2FnZTogTWVzc2FnZSkgPT5cbiAgbWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoRmlsdGVyO1xuXG5leHBvcnQgdHlwZSBDaGF0U2VhcmNoVHVybiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgZ2VuZXJhdGVkUXVlcnk/OiBzdHJpbmc7XG4gIHByb2R1Y3RDb3VudDogbnVtYmVyO1xuICBwcm9kdWN0TGlzdDogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1tcImF0dHJpYnV0ZXNcIl1bXTtcbiAgZmlsdGVyTGlzdDogc3RyaW5nW107XG4gIG1lc3NhZ2VzOiBNZXNzYWdlW107XG59O1xuXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaElzTG9hZGluZ0F0b20gPSBhdG9tKGZhbHNlKTtcblxuY29uc3QgYnVpbGRDaGF0U2VhcmNoVHVybiA9IChcbiAgbWVzc2FnZXM6IE1lc3NhZ2VbXVxuKTogW3N0cmluZywgQ2hhdFNlYXJjaFR1cm5dIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHF1ZXJ5TWVzc2FnZSA9IG1lc3NhZ2VzLmZpbmQoXG4gICAgKG1lc3NhZ2UpID0+IG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaFxuICApO1xuICBpZiAoIXF1ZXJ5TWVzc2FnZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHsgZ2VuZXJhdGVkUXVlcnksIHByb2R1Y3RDb3VudCB9ID0gcXVlcnlNZXNzYWdlLm1ldGFkYXRhID8/IHt9O1xuICBjb25zdCBwcm9kdWN0TGlzdCA9IG1lc3NhZ2VzXG4gICAgLmZpbHRlcihmaWx0ZXJQcm9kdWN0TGlzdClcbiAgICAubWFwKChtZXNzYWdlKSA9PiAobWVzc2FnZSBhcyBhbnkpLm1ldGFkYXRhKTtcbiAgY29uc3QgZmlsdGVyTGlzdCA9IG1lc3NhZ2VzXG4gICAgLmZpbHRlcihmaWx0ZXJGaWx0ZXJMaXN0KVxuICAgIC5tYXAoKG1lc3NhZ2UpID0+IG1lc3NhZ2UubWV0YWRhdGEuZmlsdGVyTmFtZSk7XG4gIHJldHVybiBbXG4gICAgcXVlcnlNZXNzYWdlLmlkLFxuICAgIHtcbiAgICAgIGlkOiBxdWVyeU1lc3NhZ2UuaWQsXG4gICAgICBnZW5lcmF0ZWRRdWVyeSxcbiAgICAgIHByb2R1Y3RDb3VudDogcHJvZHVjdENvdW50IHx8IHByb2R1Y3RMaXN0Lmxlbmd0aCxcbiAgICAgIHByb2R1Y3RMaXN0LFxuICAgICAgZmlsdGVyTGlzdCxcbiAgICAgIG1lc3NhZ2VzLFxuICAgIH0sXG4gIF07XG59O1xuXG5jb25zdCBjaGF0U2VhcmNoRmlsdGVyQ29uZmlnQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBuZXdPcmdDb25maWcgPSBnZXQobmV3T3JnQ29uZmlnQXRvbSk7XG4gIHJldHVybiAoXG4gICAgbmV3T3JnQ29uZmlnPy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzPy5zZWFyY2hDb25maWc/LnNlYXJjaEZpbHRlckNvbmZpZyB8fFxuICAgIFtdXG4gICk7XG59KTtcblxuY29uc3Qgc2VhcmNoTWFwQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBtZXNzYWdlcyA9IGdldChtZXNzYWdlc0F0b20pO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIG1lc3NhZ2VzLm1hcChidWlsZENoYXRTZWFyY2hUdXJuKS5maWx0ZXIoKHYpID0+IHYgIT09IG51bGwpXG4gICk7XG59KTtcblxuY29uc3QgaW50ZXJuYWxDaGF0U2VhcmNoUGFyYW1zQXRvbSA9IGF0b208e1xuICBpZDogc3RyaW5nIHwgbnVsbDtcbiAgcXVlcnk6IHN0cmluZyB8IG51bGw7XG59Pih7XG4gIGlkOiBudWxsLFxuICBxdWVyeTogbnVsbCxcbn0pO1xuXG4vLyBTZWxlY3RlZCBmaWx0ZXIgb3B0aW9ucyB3aXRoIGNvbXBvdW5kIG9iamVjdHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eSBhbmQgZGlzcGxheVxuZXhwb3J0IHR5cGUgU2VsZWN0ZWRDaGF0U2VhcmNoRmlsdGVyT3B0aW9uID0ge1xuICBpZDogc3RyaW5nOyAvLyBcImZpbHRlcklkOmZpbHRlckl0ZW1JZFwiIC0gbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIGNvbXBhcmlzb25zXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGZpbHRlcklkOiBzdHJpbmc7IC8vIEZpbHRlciBjYXRlZ29yeVxuICBmaWx0ZXJJdGVtSWQ6IHN0cmluZzsgLy8gRmlsdGVyIHZhbHVlXG59O1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zQXRvbSA9IGF0b208U2VsZWN0ZWRDaGF0U2VhcmNoRmlsdGVyT3B0aW9uW10+KFxuICBbXVxuKTtcblxuZXhwb3J0IGNvbnN0IGFkZGl0aXZlRHluYW1pY0ZpbHRlcnNBdG9tID0gYXRvbSgoZ2V0KSA9PiB7XG4gIGNvbnN0IG5ld09yZ0NvbmZpZyA9IGdldChuZXdPcmdDb25maWdBdG9tKTtcbiAgcmV0dXJuIChcbiAgICBuZXdPcmdDb25maWc/LmZyb250ZW5kQ29uZmlnPy51aUNvbmZpZ3M/LnNlYXJjaENvbmZpZ1xuICAgICAgPy5hZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzID8/IGZhbHNlXG4gICk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNoYXRTZWFyY2hGaWx0ZXJPcHRpb24gPSAoXG4gIGZpbHRlcklkOiBzdHJpbmcsXG4gIGZpbHRlckl0ZW1JZDogc3RyaW5nLFxuICBkaXNwbGF5TmFtZTogc3RyaW5nXG4pOiBTZWxlY3RlZENoYXRTZWFyY2hGaWx0ZXJPcHRpb24gPT4gKHtcbiAgaWQ6IGAke2ZpbHRlcklkfToke2ZpbHRlckl0ZW1JZH1gLFxuICBkaXNwbGF5TmFtZSxcbiAgZmlsdGVySWQsXG4gIGZpbHRlckl0ZW1JZCxcbn0pO1xuXG5jb25zdCBoYW5kbGVTZWFyY2hBdG9tID0gYXRvbShudWxsLCAoZ2V0LCBzZXQsIG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcbiAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gTWVzc2FnZVR5cGUuU2VhcmNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcXVlcnlTZWFyY2ggPSBtZXNzYWdlLm1ldGFkYXRhLnNlYXJjaFRlcm07XG5cbiAgc2V0KHJlcGx5RXZlbnRDYXRlZ29yeUF0b20sIFVzZXJFdmVudENhdGVnb3J5LlNlYXJjaCk7XG4gIHNldCh1c2VyUXVlcnlBdG9tLCBxdWVyeVNlYXJjaCk7XG4gIHNldChtZXNzYWdlc0F0b20sIFsuLi5nZXQobWVzc2FnZXNBdG9tKSwgW21lc3NhZ2VdXSk7XG4gIHNldCh1c2VySGFzUmVwbGllZEF0b20sIHRydWUpO1xuXG4gIHNldChxdWV1ZVVzZXJFdmVudEF0b20sIHtcbiAgICBldmVudElkOiBtZXNzYWdlLmlkLFxuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5TZWFyY2gsXG4gICAgY3JlYXRlZEF0OiBtZXNzYWdlLmNyZWF0ZWRBdCxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICBzZWFyY2hUZXJtOiBtZXNzYWdlLm1ldGFkYXRhLnNlYXJjaFRlcm0sXG4gICAgICBzZWxlY3RlZEZpbHRlcnM6IG1lc3NhZ2UubWV0YWRhdGEuc2VsZWN0ZWRGaWx0ZXJzLFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbi8vIFRoaXMgaW50ZXJuYWwgYXRvbSBpcyB1c2VkIHRvIHN0b3JlIHRoZSBzZWFyY2ggcGFyYW1zXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaFBhcmFtc0F0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQoaW50ZXJuYWxDaGF0U2VhcmNoUGFyYW1zQXRvbSksXG4gIChfLCBzZXQsIHZhbHVlOiB7IGlkOiBzdHJpbmcgfCBudWxsOyBxdWVyeTogc3RyaW5nIHwgbnVsbCB9KSA9PiB7XG4gICAgc2V0KGludGVybmFsQ2hhdFNlYXJjaFBhcmFtc0F0b20sIHZhbHVlKTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hRdWVyeUF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20pPy5xdWVyeSA/PyBudWxsLFxuICAoZ2V0LCBzZXQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gZ2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tKTtcbiAgICBzZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20sIHsgaWQ6IHNlYXJjaFBhcmFtcy5pZCwgcXVlcnk6IHZhbHVlIH0pO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaElkQXRvbSA9IGF0b20oXG4gIChnZXQpID0+IGdldChjaGF0U2VhcmNoUGFyYW1zQXRvbSk/LmlkID8/IG51bGwsXG4gIChnZXQsIHNldCwgdmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBnZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20pO1xuICAgIHNldChjaGF0U2VhcmNoUGFyYW1zQXRvbSwgeyBpZDogdmFsdWUsIHF1ZXJ5OiBzZWFyY2hQYXJhbXMucXVlcnkgfSk7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBDaGF0U2VhcmNoVHVybkF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3Qgc2VhcmNoRmlsdGVyQ29uZmlnID0gZ2V0KGNoYXRTZWFyY2hGaWx0ZXJDb25maWdBdG9tKTtcbiAgY29uc3Qgc2VhcmNoTWFwID0gZ2V0KHNlYXJjaE1hcEF0b20pO1xuICBjb25zdCBjaGF0U2VhcmNoSWQgPSBnZXQoY2hhdFNlYXJjaElkQXRvbSk7XG4gIGlmICghY2hhdFNlYXJjaElkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgQ2hhdFNlYXJjaFR1cm4gPSBzZWFyY2hNYXBbY2hhdFNlYXJjaElkXTtcbiAgaWYgKCFDaGF0U2VhcmNoVHVybikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHByb2R1Y3RTb3J0aW5nID0gZ2V0KGNoYXRTZWFyY2hQcm9kdWN0U29ydGluZ0F0b20pO1xuICBjb25zdCBzZWxlY3RlZEZpbHRlck9wdGlvbnMgPSBnZXQoc2VsZWN0ZWRGaWx0ZXJPcHRpb25zQXRvbSk7XG4gIGNvbnN0IGFkZGl0aXZlRHluYW1pY0ZpbHRlcnMgPSBnZXQoYWRkaXRpdmVEeW5hbWljRmlsdGVyc0F0b20pO1xuICBjb25zdCBmaWx0ZXJlZFByb2R1Y3RzID0gUHJvZHVjdEZpbHRlcnMuZmlsdGVyUHJvZHVjdHMoXG4gICAgQ2hhdFNlYXJjaFR1cm4ucHJvZHVjdExpc3QsXG4gICAgc2VhcmNoRmlsdGVyQ29uZmlnLFxuICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9ucyxcbiAgICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzXG4gICk7XG5cbiAgY29uc3QgZmlsdGVyZWRBbmRTb3J0ZWRQcm9kdWN0cyA9IFByb2R1Y3RTb3J0ZXIuc29ydChcbiAgICBmaWx0ZXJlZFByb2R1Y3RzLFxuICAgIHByb2R1Y3RTb3J0aW5nXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zZWFyY2hNYXBbY2hhdFNlYXJjaElkXSxcbiAgICBwcm9kdWN0TGlzdDogZmlsdGVyZWRBbmRTb3J0ZWRQcm9kdWN0cyxcbiAgICBwcm9kdWN0Q291bnQ6IGZpbHRlcmVkQW5kU29ydGVkUHJvZHVjdHMubGVuZ3RoLFxuICB9O1xufSk7XG5cbi8vIFRPRE86IFdvcmsgb24gZGVwcmVjYXRpbmcgdGhpcyBhdG9tIGluIGZhdm9yIG9mIHVzaW5nIENoYXRTZWFyY2hUdXJuQXRvbSBkaXJlY3RseVxuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hQcm9kdWN0cyA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBDaGF0U2VhcmNoVHVybiA9IGdldChDaGF0U2VhcmNoVHVybkF0b20pO1xuICByZXR1cm4gQ2hhdFNlYXJjaFR1cm4/LnByb2R1Y3RMaXN0ID8/IFtdO1xufSk7XG5cbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoRmlsdGVyc0F0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3Qgc2VhcmNoRmlsdGVyQ29uZmlnID0gZ2V0KGNoYXRTZWFyY2hGaWx0ZXJDb25maWdBdG9tKTtcbiAgY29uc3Qgc2VhcmNoTWFwID0gZ2V0KHNlYXJjaE1hcEF0b20pO1xuICBjb25zdCBjaGF0U2VhcmNoSWQgPSBnZXQoY2hhdFNlYXJjaElkQXRvbSk7XG5cbiAgaWYgKGNoYXRTZWFyY2hJZCAmJiBzZWFyY2hNYXBbY2hhdFNlYXJjaElkXSkge1xuICAgIGNvbnN0IHByb2R1Y3RzID0gc2VhcmNoTWFwW2NoYXRTZWFyY2hJZF0ucHJvZHVjdExpc3Q7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gZ2V0KHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b20pO1xuICAgIHJldHVybiBQcm9kdWN0RmlsdGVycy5nZXRGaWx0ZXJzRm9yUHJvZHVjdHMoXG4gICAgICBwcm9kdWN0cyxcbiAgICAgIHNlYXJjaEZpbHRlckNvbmZpZyxcbiAgICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9uc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufSk7XG5cbi8vIEZvciBzZWFyY2ggd2UgdXNlIHRoZSBmb2xsb3dpbmcgcXVlcnkgcGFyYW1zOlxuLy8gZXM6IHRydWUgLSB0aGlzIGluZGljYXRlcyB0aGF0IHdlIGFyZSBpbiBhIHNlYXJjaCBzdGF0ZVxuLy8gZXNxOiBxdWVyeSAtIHRoaXMgaXMgdGhlIGN1cnJlbnQgc2VhcmNoIHF1ZXJ5XG4vLyBlc2k6IHNlYXJjaCBpZCAtIHRoaXMgaXMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIHNlYXJjaCByZXN1bHRzIHRoYXQgd2UgYXJlIGRpc3BsYXlpbmcuIEl0IGlzIHB1bGxlZCBmcm9tIHRoZSBtZXNzYWdlIGlkIGZyb20gdGhlIHR1cm4gdGhhdCBpbmNsdWRlcyB0aGUgc2VhcmNoIHJlc3VsdHNcblxuZXhwb3J0IGNvbnN0IHNldFNlYXJjaFBhcmFtcyA9IChxdWVyeTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzXCIsIFwidHJ1ZVwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc3FcIiwgcXVlcnkpO1xuICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIFwiXCIsIHVybCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoUGFyYW1zQXRvbSA9IGF0b20oKCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICByZXR1cm4ge1xuICAgIGVzOiBwYXJhbXMuZ2V0KFwiZXNcIiksXG4gICAgZXNxOiBwYXJhbXMuZ2V0KFwiZXNxXCIpLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBpbml0aWF0ZUNoYXRTZWFyY2hBdG9tID0gYXRvbShudWxsLCAoXywgc2V0LCBxdWVyeTogc3RyaW5nKSA9PiB7XG4gIHNldChjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSwgdHJ1ZSk7XG4gIC8vIFVwZGF0ZSBVUkwgYW5kIG1hbnVhbGx5IHRyaWdnZXIgc3RhdGUgY2hhbmdlIChzaW5jZSBwdXNoU3RhdGUgZG9lc24ndCB0cmlnZ2VyIHBvcHN0YXRlKVxuICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc1wiLCBcInRydWVcIik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNxXCIsIHF1ZXJ5KTtcbiAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBcIlwiLCB1cmwpO1xuXG4gIC8vIE1hbnVhbGx5IHRyaWdnZXIgcGFnZSB2YXJpYW50IHJlLWV2YWx1YXRpb24gYnkgZGlzcGF0Y2hpbmcgYSBwb3BzdGF0ZSBldmVudFxuICAvLyBUaGlzIGVuc3VyZXMgdGhlIHBhZ2UgdmFyaWFudCBzeXN0ZW0gZGV0ZWN0cyB0aGUgVVJMIGNoYW5nZSBhbmQgbW91bnRzIHNlYXJjaCByZXN1bHRzXG4gIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBQb3BTdGF0ZUV2ZW50KFwicG9wc3RhdGVcIiwgeyBzdGF0ZToge30gfSkpO1xuXG4gIHNldChjaGF0U2VhcmNoUGFyYW1zQXRvbSwgeyBpZDogbnVsbCwgcXVlcnkgfSk7XG4gIHNldChoYW5kbGVTZWFyY2hBdG9tLCB7XG4gICAgaWQ6IHV1aWQoKSxcbiAgICByb2xlOiBNZXNzYWdlUm9sZS5Vc2VyLFxuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlNlYXJjaCxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBtZXRhZGF0YToge1xuICAgICAgc2VhcmNoVGVybTogcXVlcnksXG4gICAgICAvLyBFbmFibGluZyB0aGlzIHdpbGwgZW5hYmxlIHRoZSBuZXcgYmFja2VuZCBzZWFyY2hcbiAgICAgIHNlbGVjdGVkRmlsdGVyczogW10sXG4gICAgfSxcbiAgfSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVNlYXJjaFJlc3VsdHNBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCBtZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2UudHlwZSAhPT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcHJvZHVjdENvdW50LCBnZW5lcmF0ZWRRdWVyeSB9ID0gbWVzc2FnZS5tZXRhZGF0YTtcbiAgICBpZiAocHJvZHVjdENvdW50ICE9PSAwKSB7XG4gICAgICAvLyBDbGVhciB0aGUgZmlsdGVyIG9wdGlvbnMgd2hlbiB3ZSBnZXQgbmV3IHByb2R1Y3RzXG4gICAgICBzZXQoc2VsZWN0ZWRGaWx0ZXJPcHRpb25zQXRvbSwgW10pO1xuICAgICAgLy8gVE9ETzogU2hvdWxkIHdlIHN0aWxsIGRvIGFueSBvZiB0aGVzZSB0aGluZ3M/XG4gICAgICBzZXQoY2hhdFNlYXJjaFN0YXRlQXRvbSwgXCJwcm9kdWN0LXBhZ2VcIik7XG4gICAgICBjb25zdCBjdXJyZW50U2VhcmNoUGFyYW1zID0gZ2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tKTtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc1wiLCBcInRydWVcIik7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzcVwiLCBnZW5lcmF0ZWRRdWVyeSk7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzaVwiLCBtZXNzYWdlLmlkKTtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgXCJcIiwgdXJsKTtcbiAgICAgIGlmIChjdXJyZW50U2VhcmNoUGFyYW1zLmlkID09PSBudWxsKSB7XG4gICAgICAgIC8vIElmIHRoZSBpZCBpcyBudWxsLCB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlIHN0YXRlXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlIHF1ZXJ5IGlzIGRpZmZlcmVudCwgd2UgbmVlZCB0byBwdXNoIGEgbmV3IHN0YXRlXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgICAgfVxuICAgICAgc2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tLCB7IGlkOiBtZXNzYWdlLmlkLCBxdWVyeTogZ2VuZXJhdGVkUXVlcnkgfSk7XG4gICAgfVxuICB9XG4pO1xuXG5leHBvcnQgY29uc3Qgc2V0Q2hhdFNlYXJjaFBhcmFtc0F0b20gPSBhdG9tKG51bGwsIChfLCBzZXQsIHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNcIiwgXCJ0cnVlXCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzcVwiLCBxdWVyeSk7XG4gIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgXCJcIiwgdXJsKTtcbiAgc2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tLCB7IGlkOiBudWxsLCBxdWVyeSB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE1BQWEsMkJBQTJCLGdCQUF3QjtDQUM5RCxNQUFNLFFBQVE7RUFBQztFQUFRO0VBQU87RUFBTTtFQUFLO0VBQUs7RUFBSztFQUFNO0VBQU87RUFBUTtFQUFRO0FBZWhGLFFBYnVCLFlBQ3BCLGFBQWEsQ0FDYixNQUFNLElBQUksQ0FDVixLQUFLLFNBQVM7QUFDYixNQUFJLE1BQU0sU0FBUyxLQUFLLENBQ3RCLFFBQU8sS0FBSyxhQUFhO0FBRTNCLFNBQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEdBQUcsS0FBSyxNQUFNLEVBQUU7R0FDbkQsQ0FFa0MsS0FBSyxJQUFJLENBR3pCLFFBQVEsV0FBVyxTQUFTOzs7OztBQ1ZwRCxNQUFNLGtCQUFrQixPQUFlLGVBQXVCO0FBRTVELFFBRGUsS0FBSyxNQUFNLFFBQVEsV0FBVyxHQUM3Qjs7QUFHbEIsTUFBTSxpQkFBaUIsVUFB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